Skip to content

πŸš€ release: sync dev/v1.6 β†’ main for v1.6.0-rc.12 - #667

Merged
scttbnsn merged 1 commit into
mainfrom
release/sync-main-v1.6.0-rc.12
Aug 5, 2026
Merged

πŸš€ release: sync dev/v1.6 β†’ main for v1.6.0-rc.12#667
scttbnsn merged 1 commit into
mainfrom
release/sync-main-v1.6.0-rc.12

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Wholesale-tree sync ahead of the v1.6.0-rc.12 cut: the head commit's tree is origin/dev/v1.6's tree verbatim (630c64ec), parented on main's current head (67f23419). Squash-merging makes main tree-identical to dev/v1.6, satisfying the release-cut drift guard (git diff --quiet origin/main origin/dev/v1.6).

Brings in since rc.11: #659 security pins, #662/#660/#661/#663 runtime fixes (#636/#604/#605/#637), #664 guard floor, #653–#656 deps, #665 Crowdin, #666 rc.12 prep.

After merge: dispatch release-cut.yml --ref main -f release_tag=v1.6.0-rc.12.

Changelog

  • πŸ”’ Updated dependency security pins and security-version tests.
  • ✨ Added anonymous-authenticated WebSocket log streams with IP-based rate limits.
  • ✨ Added agent component-registration state tracking.
  • πŸ”§ Downgraded selected update blockers during agent registration.
  • πŸ”§ Added controller-Docker transport detection.
  • πŸ› Added HTTP 501 responses for unsupported agent lifecycle actions.
  • πŸ› Fixed maturity filtering to use per-container thresholds.
  • πŸ› Changed Docker publish-date lookup failures to warning logs.
  • πŸ”§ Updated dependency versions, release metadata, documentation, mocks, and changelog links from v1.6.0-rc.11 to v1.6.0-rc.12.
  • ✨ Added release highlights for v1.6.0-rc.12.

Concerns

  • Fix the French containerLogs.stderr value if "sdterr" is not intentional.
  • Verify the release date August 4, 2026.
  • Dispatch the release-cut workflow for main with release_tag=v1.6.0-rc.12 after merging.

Wholesale-tree sync: this commit's tree is origin/dev/v1.6's tree
(0342fa6) verbatim, parented on main.
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

Deployment failed with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/codeswhat?upgradeToPro=build-rate-limit

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

πŸ“ Walkthrough

Walkthrough

The release updates version metadata to 1.6.0-rc.12. AgentClient now exposes component-registration state and controller Docker transport capability. Eligibility blockers become soft during registration, while update admission remains fail-closed. Lifecycle APIs return 501 for unsupported agent transport. WebSocket upgrades support active anonymous authentication with IP-based rate limits. Maturity filters use per-container thresholds. Docker registry lookup failures use warning logs. Dependency overrides, security checks, documentation, fixtures, and package versions were updated.

Possibly related PRs

  • CodesWhat/drydock#512: Adds the related agent registration, maturity, WebSocket authentication, and lifecycle behavior.
  • CodesWhat/drydock#650: Adds the controller-side Docker transport used by the lifecycle capability checks.
  • CodesWhat/drydock#661: Adds the related registration-state tracking and eligibility blocker changes.
πŸš₯ Pre-merge checks | βœ… 2
βœ… Passed checks (2 passed)
Check name Status Explanation
Linked Issues check βœ… Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check βœ… Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches πŸ’‘ 1
πŸ› οΈ Fix failing CI checks πŸ’‘
  • Create stacked PR
  • Commit on current branch
πŸ“ Generate docstrings
  • Create stacked PR
  • Commit on current branch
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch release/sync-main-v1.6.0-rc.12

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
app/api/log-stream.ts (1)

262-266: πŸ“ Maintainability & Code Quality | πŸ”΅ Trivial | ⚑ Quick win

Extract shared WebSocket authentication-state resolution.

Both gateways duplicate the Passport and anonymous gate calculation. Add a helper in app/api/ws-upgrade-utils.ts and use it in both gateways.

  • app/api/log-stream.ts#L262-L266: replace the local calculations with the shared helper.
  • app/api/container/log-stream.ts#L605-L609: replace the local calculations with the shared helper.
Proposed shape
-const passportAuthenticated = isAuthenticatedSession(upgradeRequest);
-const gateAuthenticated = isAuthenticatedSession(upgradeRequest, {
-  anonymousAuthActive: registry.isAnonymousAuthenticationActive(),
-});
+const { passportAuthenticated, gateAuthenticated } = getUpgradeAuthenticationState(
+  upgradeRequest,
+  registry.isAnonymousAuthenticationActive(),
+);
πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/api/log-stream.ts` around lines 262 - 266, Extract the duplicated
Passport and anonymous-gate authentication resolution into a shared helper in
app/api/ws-upgrade-utils.ts, returning both authentication states while
preserving the existing registry-based anonymous-auth flag. In
app/api/log-stream.ts lines 262-266 and app/api/container/log-stream.ts lines
605-609, replace the local calculations with the helper and continue deriving
each gateway’s rate-limit key from the returned Passport authentication state.
πŸ€– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/api/backup.ts`:
- Around line 90-92: Update the shared AGENT_LIFECYCLE_UNSUPPORTED_ERROR message
used by the isAgentLifecycleUnsupported check to include rollback alongside
start, stop, and restart, without changing the endpoint’s rejection flow.

In `@app/api/docker-trigger.ts`:
- Around line 8-9: Update the AGENT_LIFECYCLE_UNSUPPORTED_ERROR message to
include rollback alongside start, stop, and restart, so unsupported
rollbackContainer requests identify the rejected lifecycle operation.

In `@ui/src/locales/fr/containerComponents.json`:
- Line 172: Restore the "stderr" value in the French catalog entry for the
stderr channel, replacing the misspelled "sdterr" while keeping the surrounding
localization unchanged.

---

Nitpick comments:
In `@app/api/log-stream.ts`:
- Around line 262-266: Extract the duplicated Passport and anonymous-gate
authentication resolution into a shared helper in app/api/ws-upgrade-utils.ts,
returning both authentication states while preserving the existing
registry-based anonymous-auth flag. In app/api/log-stream.ts lines 262-266 and
app/api/container/log-stream.ts lines 605-609, replace the local calculations
with the helper and continue deriving each gateway’s rate-limit key from the
returned Passport authentication state.
πŸͺ„ Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 92016eb5-67a7-4a4d-ba9d-a17d4cb3d159

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 67f2341 and 34b5d9d.

β›” Files ignored due to path filters (7)
  • CHANGELOG.md is excluded by !CHANGELOG.md
  • app/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • apps/demo/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • apps/web/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • e2e/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • ui/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
πŸ“’ Files selected for processing (58)
  • README.md
  • app/agent/AgentClient.test.ts
  • app/agent/AgentClient.ts
  • app/api/backup.test.ts
  • app/api/backup.ts
  • app/api/container-actions.test.ts
  • app/api/container-actions.ts
  • app/api/container/handlers/list.test.ts
  • app/api/container/handlers/list.ts
  • app/api/container/log-stream.test.ts
  • app/api/container/log-stream.ts
  • app/api/container/maturity-filter.test.ts
  • app/api/container/maturity-filter.ts
  • app/api/docker-trigger.ts
  • app/api/log-stream.test.ts
  • app/api/log-stream.ts
  • app/api/openapi/paths/containers.test.ts
  • app/api/openapi/paths/containers.ts
  • app/api/sse-container-enrichment.test.ts
  • app/api/sse-container-enrichment.ts
  • app/api/ws-upgrade-utils.test.ts
  • app/api/ws-upgrade-utils.ts
  • app/model/container.test.ts
  • app/model/container.ts
  • app/model/update-eligibility.test.ts
  • app/model/update-eligibility.ts
  • app/package.json
  • app/registry/index.test.ts
  • app/registry/index.ts
  • app/updates/request-update.test.ts
  • app/updates/request-update.ts
  • app/watchers/providers/docker/Docker.containers.labels-version-finding.test.ts
  • app/watchers/providers/docker/Docker.containers.test.ts
  • app/watchers/providers/docker/image-comparison.test.ts
  • app/watchers/providers/docker/image-comparison.ts
  • apps/demo/package.json
  • apps/demo/src/mocks/data/agents.ts
  • apps/demo/src/mocks/data/audit.ts
  • apps/demo/src/mocks/data/containers.ts
  • apps/demo/src/mocks/data/server.ts
  • apps/demo/src/mocks/handlers/app.ts
  • apps/web/package.json
  • apps/web/src/lib/site-config.ts
  • apps/web/src/lib/site-content.ts
  • content/docs/current/api/agent.mdx
  • content/docs/current/api/app.mdx
  • content/docs/current/api/portwing.mdx
  • content/docs/current/quickstart/index.mdx
  • content/docs/current/updates/index.mdx
  • e2e/package.json
  • e2e/tests/security/brace-expansion-lockfile.test.js
  • package.json
  • scripts/changelog-links.test.mjs
  • scripts/release-docs-identity.test.mjs
  • scripts/release-identity.test.mjs
  • scripts/security-dependency-versions.test.mjs
  • ui/package.json
  • ui/src/locales/fr/containerComponents.json

Comment thread app/api/backup.ts
Comment on lines +90 to +92
if (isAgentLifecycleUnsupported(container)) {
sendErrorResponse(res, 501, AGENT_LIFECYCLE_UNSUPPORTED_ERROR);
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

Include rollback in AGENT_LIFECYCLE_UNSUPPORTED_ERROR.

Line 91 returns a message that lists only start/stop/restart. This endpoint rejects rollback. Add rollback to the shared error text.

Proposed fix
 export const AGENT_LIFECYCLE_UNSUPPORTED_ERROR =
-  "Lifecycle actions (start/stop/restart) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
+  "Lifecycle actions (start/stop/restart/rollback) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/api/backup.ts` around lines 90 - 92, Update the shared
AGENT_LIFECYCLE_UNSUPPORTED_ERROR message used by the
isAgentLifecycleUnsupported check to include rollback alongside start, stop, and
restart, without changing the endpoint’s rejection flow.

Comment thread app/api/docker-trigger.ts
Comment on lines +8 to +9
export const AGENT_LIFECYCLE_UNSUPPORTED_ERROR =
"Lifecycle actions (start/stop/restart) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

Include rollback in AGENT_LIFECYCLE_UNSUPPORTED_ERROR.

rollbackContainer returns this constant for unsupported rollback requests. The message lists only start, stop, and restart. Add rollback so the 501 response identifies the rejected operation.

Proposed fix
 export const AGENT_LIFECYCLE_UNSUPPORTED_ERROR =
-  "Lifecycle actions (start/stop/restart) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
+  "Lifecycle actions (start/stop/restart/rollback) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const AGENT_LIFECYCLE_UNSUPPORTED_ERROR =
"Lifecycle actions (start/stop/restart) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
export const AGENT_LIFECYCLE_UNSUPPORTED_ERROR =
"Lifecycle actions (start/stop/restart/rollback) are not supported over this container's agent connection, typically because the agent has not advertised the usesControllerDockerTransport capability.";
πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/api/docker-trigger.ts` around lines 8 - 9, Update the
AGENT_LIFECYCLE_UNSUPPORTED_ERROR message to include rollback alongside start,
stop, and restart, so unsupported rollbackContainer requests identify the
rejected lifecycle operation.

"statusOffline": "Hors ligne",
"stdout": "stdout",
"stderr": "stderr"
"stderr": "sdterr"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

Restore the stderr label spelling.

Line 172 changes the technical channel label to "sdterr". AppLogEntry.channel and the English catalog use "stderr", so the French log viewer will display a misspelled label. Restore the value.

Proposed fix
-      "stderr": "sdterr"
+      "stderr": "stderr"
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"stderr": "sdterr"
"stderr": "stderr"
πŸ€– Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ui/src/locales/fr/containerComponents.json` at line 172, Restore the "stderr"
value in the French catalog entry for the stderr channel, replacing the
misspelled "sdterr" while keeping the surrounding localization unchanged.

Source: Learnings

@biggest-littlest biggest-littlest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ALARGECOMPANY ALARGECOMPANY left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@scttbnsn
scttbnsn merged commit 4c2c7ed into main Aug 5, 2026
26 of 28 checks passed
@scttbnsn
scttbnsn deleted the release/sync-main-v1.6.0-rc.12 branch August 5, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants