Skip to content

πŸ”§ chore(release): sync dev/v1.6 into main for v1.6.0-rc.8 - #629

Merged
scttbnsn merged 1 commit into
mainfrom
sync/main-20260728
Jul 28, 2026
Merged

πŸ”§ chore(release): sync dev/v1.6 into main for v1.6.0-rc.8#629
scttbnsn merged 1 commit into
mainfrom
sync/main-20260728

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Wholesale-tree sync: brings main tree-identical to dev/v1.6 at 33310002 ahead of the v1.6.0-rc.8 cut.

Since rc.7's sync, dev/v1.6 landed:

Head is a server-side commit on top of main whose tree equals dev's tip tree (raw dev tips conflict against main's squash history). After merge, git diff --quiet origin/main origin/dev/v1.6 must pass β€” that's the release-cut drift-guard invariant.

Cut follows: release-cut.yml --ref main -f release_tag=v1.6.0-rc.8.

Changelog

✨ Added

  • GA release promotion flow with candidate artifact download, verification, reproducibility checks, and RC-to-GA renaming.
  • Regression tests for update-policy overrides, action-trigger allow-list exemptions, release promotion, and workflow behavior.
  • Crowdin integration-branch checkout before synchronization.

πŸ”§ Changed

  • Synced main with dev/v1.6 for v1.6.0-rc.8.
  • Updated GitHub Actions, Docker tooling, security scanning, development dependencies, and package overrides.
  • Updated release metadata, documentation, README content, demo fixtures, and API examples to v1.6.0-rc.8.
  • Added support for authoritative empty update-policy override layers.
  • Updated changelog and release-note generation to use the target commit snapshot.
  • Refactored numerous parameterized tests for consistent formatting.

πŸ› Fixed

  • Preserved controller-owned update-policy overrides when ingesting agent reports.
  • Enabled action triggers to continue executing when notification allow-lists exclude them.
  • Correctly cleared overrides only when explicitly requested by the update-policy API.
  • Prevented SSE response bodies from being cloned by the demo mock service worker.

πŸ”’ Security

  • Refreshed Harden Runner, CodeQL, Scorecard, Grype, ZAP, Nuclei, and related action pins.
  • Updated vulnerable dependency overrides and corresponding security-test expectations.

Concerns

  • Verify that main and dev/v1.6 have identical trees after merging.
  • Validate GA promotion and provenance verification paths for both prerelease and GA runs.
  • Confirm all updated action SHAs and dependency versions are approved.
  • Run release, workflow, policy, trigger, and security test suites before cutting the release.

Wholesale-tree sync: this commit's tree is dev/v1.6 at 3331000.
@vercel

vercel Bot commented Jul 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
drydock-website Ready Ready Preview, Comment Jul 28, 2026 5:17pm
drydockdemo-website Ready Ready Preview, Comment Jul 28, 2026 5:17pm

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

πŸ“ Walkthrough

Walkthrough

The PR updates Crowdin integration-branch checkout and release artifact promotion workflows, including changelog snapshots and prerelease-only signing. It refreshes GitHub Action and dependency pins, advances release metadata to 1.6.0-rc.8, updates generated mock-worker SSE handling, preserves controller update-policy overrides during agent ingestion, and exempts action triggers from notification allow-list filtering. Numerous parameterized tests are reformatted or expanded to cover these behaviors.

Possibly related PRs

πŸš₯ 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
πŸ“ Generate docstrings
  • Create stacked PR
  • Commit on current branch
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/main-20260728

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: 1

🧹 Nitpick comments (1)
app/triggers/providers/Trigger.ts (1)

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

Use existing getCategory() helper instead of calling getTriggerCategoryForType directly.

Every other call site in this class (getMustTriggerDecision, isAutomaticActionDispatchBlocked) goes through this.getCategory(). This new check bypasses it.

♻️ Proposed fix
     if (
       !dispatchDecision.enabled &&
       dispatchDecision.reason === 'excluded-from-allow-list' &&
-      getTriggerCategoryForType(this.type) === 'action'
+      this.getCategory() === 'action'
     ) {
πŸ€– 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/triggers/providers/Trigger.ts` around lines 937 - 950, Update the new
allow-list exemption check to use this.getCategory() instead of calling
getTriggerCategoryForType(this.type) directly, matching the existing
getMustTriggerDecision and isAutomaticActionDispatchBlocked call sites while
preserving the action-category condition.
πŸ€– 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/portwing-ws.test.ts`:
- Line 1353: Remove the duplicate errorFrame declarations in the affected test
callback, retaining a single const errorFrame declaration and updating
subsequent assertions to reuse it so the callback compiles.

---

Nitpick comments:
In `@app/triggers/providers/Trigger.ts`:
- Around line 937-950: Update the new allow-list exemption check to use
this.getCategory() instead of calling getTriggerCategoryForType(this.type)
directly, matching the existing getMustTriggerDecision and
isAutomaticActionDispatchBlocked call sites while preserving the action-category
condition.
πŸͺ„ Autofix (Beta)

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: e4f01de4-18e8-45bf-a540-5654747d9eda

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 8e8ed1f and f4a7fc0.

β›” Files ignored due to path filters (5)
  • CHANGELOG.md is excluded by !CHANGELOG.md
  • 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
πŸ“’ Files selected for processing (99)
  • .github/tests/crowdin-workflow.test.ts
  • .github/tests/harden-runner-workflow.test.ts
  • .github/tests/release-cut-ga-promotion.test.ts
  • .github/tests/release-cut-retry-workflow.test.ts
  • .github/workflows/ci-verify.yml
  • .github/workflows/e2e-playwright.yml
  • .github/workflows/i18n-crowdin.yml
  • .github/workflows/quality-mutation-monthly.yml
  • .github/workflows/release-cut.yml
  • .github/workflows/security-grype.yml
  • .github/workflows/security-scorecard.yml
  • .gitleaksignore
  • README.md
  • app/agent/AgentClient.test.ts
  • app/agent/AgentClient.ts
  • app/agent/api/index.test.ts
  • app/api/agent.test.ts
  • app/api/container.test.ts
  • app/api/container.ts
  • app/api/container/crud.test.ts
  • app/api/container/handlers/list.test.ts
  • app/api/container/security.test.ts
  • app/api/container/update-policy.test.ts
  • app/api/container/update-policy.ts
  • app/api/group.test.ts
  • app/api/portwing-ws.test.ts
  • app/api/preferences.test.ts
  • app/api/preview-errors.test.ts
  • app/authentications/providers/basic/Basic.test.ts
  • app/authentications/providers/oidc/Oidc.test.ts
  • app/configuration/index.test.ts
  • app/debug/dump.test.ts
  • app/event/index.test.ts
  • app/model/container.test.ts
  • app/registries/providers/ecr/Ecr.test.ts
  • app/registries/providers/shared/basicAuthProviderErrorPaths.test.ts
  • app/registries/token-bucket.test.ts
  • app/registry/index.test.ts
  • app/security/backends/docker.test.ts
  • app/security/runtime.test.ts
  • app/security/sbom-storage.test.ts
  • app/security/scan.test.ts
  • app/store/container.test.ts
  • app/store/container.ts
  • app/store/notification.ts
  • app/tag/index.test.ts
  • app/triggers/providers/Trigger.test.ts
  • app/triggers/providers/Trigger.ts
  • app/triggers/providers/docker/Docker.configuration-container-ops.test.ts
  • app/triggers/providers/docker/self-update-finalize-entrypoint.test.ts
  • app/triggers/providers/dockercompose/Dockercompose.test.ts
  • app/triggers/providers/kafka/Kafka.test.ts
  • app/triggers/providers/mqtt/Hass.test.ts
  • app/triggers/providers/mqtt/Mqtt.test.ts
  • app/triggers/providers/mqtt/hass-commands.test.ts
  • app/triggers/providers/smtp/Smtp.test.ts
  • app/triggers/trigger-category.test.ts
  • app/watchers/providers/docker/Docker.containers.labels-version-finding.test.ts
  • app/watchers/providers/docker/Docker.containers.test.ts
  • app/watchers/providers/docker/Docker.test.ts
  • app/watchers/providers/docker/docker-image-details-orchestration.test.ts
  • apps/demo/package.json
  • apps/demo/public/mockServiceWorker.js
  • 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
  • biome.json
  • content/docs/current/api/agent.mdx
  • content/docs/current/api/app.mdx
  • content/docs/current/api/portwing.mdx
  • content/docs/current/configuration/triggers/index.mdx
  • content/docs/current/quickstart/index.mdx
  • content/docs/current/updates/index.mdx
  • e2e/package.json
  • e2e/tests/security/picomatch-lockfile.test.js
  • e2e/tests/security/yaml-lockfile.test.js
  • package.json
  • scripts/changelog-links.test.mjs
  • scripts/release-docs-identity.test.mjs
  • scripts/release-identity.test.mjs
  • ui/tests/components/containers/ContainerLinkActions.spec.ts
  • ui/tests/components/containers/ContainersGroupedViews.button-states.spec.ts
  • ui/tests/components/containers/ContainersGroupedViews.spec.ts
  • ui/tests/composables/useUpdateStatus.spec.ts
  • ui/tests/layouts/AppLayout.spec.ts
  • ui/tests/preferences/migrate.spec.ts
  • ui/tests/preferences/sync.spec.ts
  • ui/tests/security/mockServiceWorker-origin-check.spec.ts
  • ui/tests/services/preview.spec.ts
  • ui/tests/views/ConfigView.spec.ts
  • ui/tests/views/ContainersView.spec.ts
  • ui/tests/views/containers/useContainerActions.spec.ts
  • ui/tests/views/dashboard/DashboardGrid.spec.ts
  • ui/tests/views/dashboard/useDashboardComputed.spec.ts

const ws = sendHelloWithAgentName(badValue);
await new Promise((r) => setTimeout(r, 0));

const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };

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 | πŸ”΄ Critical | ⚑ Quick win

Remove the duplicate errorFrame declarations.

The supplied final code declares const errorFrame three times in the same callback. Keep one declaration; otherwise the test will not compile.

Proposed fix
-      const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
-      const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
-      const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
+      const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
πŸ“ 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
const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
const errorFrame = JSON.parse(ws.sentMessages[0]) as { type: string; data: { code: string } };
πŸ€– 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/portwing-ws.test.ts` at line 1353, Remove the duplicate errorFrame
declarations in the affected test callback, retaining a single const errorFrame
declaration and updating subsequent assertions to reuse it so the callback
compiles.

@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 bcbbf71 into main Jul 28, 2026
29 of 30 checks passed
@scttbnsn
scttbnsn deleted the sync/main-20260728 branch July 28, 2026 17:37
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