Skip to content

πŸ› fix(ui): resolve #498 visual follow-ups#580

Merged
scttbnsn merged 3 commits into
mainfrom
fix/issue-498-visual-followups
Jul 22, 2026
Merged

πŸ› fix(ui): resolve #498 visual follow-ups#580
scttbnsn merged 3 commits into
mainfrom
fix/issue-498-visual-followups

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • render pinned newer-version insights as informational Major, Minor, or Patch states without exposing update actions
  • rename same-tag digest changes to Image update and explain the redeploy behavior
  • keep Host visible ahead of secondary Software Version metadata at constrained widths
  • add browser-managed container group overrides with preference migration, sync, and Docker-derived fallback
  • update current docs, changelog, translations fallback behavior, and v1.6 E2E coverage

Verification

  • 4,286 UI tests across 213 files with 100% coverage
  • backend coverage gate at 100%
  • full pre-push lint, typecheck, workflow, script, app build, and UI build gates passed
  • Playwright Host regression passed at 1197px
  • direct visual QA passed for desktop status and layout, explanatory tooltip, grouping set/clear flow, dark mode, and 390x844 DPR3 touch/mobile with zero horizontal overflow

Closes #498

Changelog

πŸ› Fixed

  • Render pinned newer-version insights as informational Major/Minor/Patch via the insight update status (no update CTA/actions for digest-only comparisons).
  • Ensure pinned-tag panels use the insight state (info tone + pinned summary) instead of incorrectly showing Up to date.
  • Correct β€œsame-tag digest changes” UX by renaming digest-only updates to Image update and aligning pinned tooltip/title + compact/table/card expectations.

πŸ”§ Changed

  • Renamed same-tag digest rebuild messaging across UI + docs + i18n from Digest update β†’ Image update (including tooltips and plain-English fallback label).
  • Updated grouped views rendering to treat container.updateInsight as the primary source for update label/color, with digest-kind special-casing for image-update tooltip behavior.
  • Improved constrained-width layout behavior: keep Host visible before hiding Software Version, and updated column metadata/priorities (Version β†’ Software Version, priority adjustments).
  • Added container grouping UI flow:
    • New β€œSet group” action opens ContainerGroupDialog.
    • containers.manualGroups manual overrides are prioritized over detected/Docker grouping.
    • Clearing/flattening behavior respects manual overrides vs stack-derived grouping rules.
  • Extended preferences schema to schemaVersion 12:
    • Added/sanitized containers.manualGroups: Record<identityKey, groupName>
    • Added migration + normalization (trim, drop empty keys/names, reject malformed non-record payloads).
  • Updated docs to reflect server-derived container groups vs browser/manual overrides, clarified watcher pin-info informational insights vs actionable updates, and adjusted update-eligibility β€œno-update-available” semantics.
  • Updated locale files to remove dashboardView.updateKind.digest and add/adjust image-update strings.

✨ Added

  • ContainerGroupDialog Vue component (modal with save/clear, trimming/normalization, and suggestion support).
  • Playwright coverage updates for mobile emulation pre-checks and expanded #498 scenarios (including digest-level test data, pinned tooltip/title checks, Host-vs-Software-Version responsive assertions).
  • Unit/UI test coverage for #498 pinned insight state, image-update labeling, grouped view updateInsight sourcing, and container grouping dialog + preference trimming behavior.
  • Documentation/changelog updates for pinned freshness, image-update redeploy messaging, and constrained-width Containers layout.

Concerns / Issues to Address

  • Confirm all removed digest locale keys (UI + any translation fallback paths) are fully covered so runtime never shows missing-key placeholders.
  • Verify informational updateInsight paths never enable update CTAs/actions across all update-eligibility flows and panel variants.
  • Ensure manual group override precedence and β€œsingle-container group flattening” match intended Docker/Compose-derived grouping behavior in all responsive and grouped-view scenarios.
  • Validate containers.manualGroups migration/sanitization + sync across devices preserves valid overrides and correctly clears back to server/Docker grouping.
  • Double-check responsive column-hide ordering at laptop/mobile breakpoints to ensure Host stays visible before Software Version is hidden.

@vercel

vercel Bot commented Jul 22, 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 22, 2026 12:50pm
drydockdemo-website Ready Ready Preview, Comment Jul 22, 2026 12:50pm

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. πŸŽ‰

ℹ️ Recent review info
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8cb231c3-4330-4846-af1d-c21b9cf84ea8

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between dc2ad5e and b27e5e9.

πŸ“’ Files selected for processing (2)
  • e2e/features/ui.feature
  • ui/tests/components/containers/ContainersGroupedViews.spec.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • ui/tests/components/containers/ContainersGroupedViews.spec.ts

πŸ“ Walkthrough

Walkthrough

Adds preference-backed manual container grouping with a dialog, More-menu entry, grouping precedence, sanitization, and schema migration to version 12. Pinned newer tags now render as informational insights rather than β€œUp to date,” while same-tag digest changes are labeled β€œImage update.” Container column metadata and responsive hiding priorities are updated so Host remains visible ahead of Software Version. Documentation, localization, unit tests, and Playwright coverage are updated accordingly.

Possibly related PRs

πŸš₯ Pre-merge checks | βœ… 2
βœ… Passed checks (2 passed)
Check name Status Explanation
Linked Issues check βœ… Passed The PR implements informational Major/Minor/Patch insight states and removes actionable update behavior for pinned tags, matching #498's requested current-vs-most-recent view.
Out of Scope Changes check βœ… Passed The added docs, tests, i18n, and manual-grouping UI all support the stated #498 follow-ups; no unrelated code changes stand out.
✨ 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 fix/issue-498-visual-followups

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

πŸ€– 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 `@e2e/playwright/v16-modes-pins.spec.ts`:
- Around line 221-227: The table assertions target the container instead of the
tooltip-bearing nested span. In e2e/playwright/v16-modes-pins.spec.ts lines
221-227 and 288-294, update both assertion groups to use
tableState.locator('.font-semibold') for the text, negated text, and title
checks.
πŸͺ„ 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: d6683de3-956e-49f0-9568-9a4ff18066f6

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 54d404a and 85de8fb.

β›” Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
πŸ“’ Files selected for processing (46)
  • content/docs/current/api/index.mdx
  • content/docs/current/configuration/actions/update-eligibility.mdx
  • content/docs/current/configuration/dashboard/index.mdx
  • content/docs/current/configuration/ui/index.mdx
  • content/docs/current/configuration/watchers/index.mdx
  • content/docs/current/faq/index.mdx
  • content/docs/current/updates/index.mdx
  • e2e/playwright/v16-mobile.spec.ts
  • e2e/playwright/v16-modes-pins.spec.ts
  • ui/src/components/containers/ContainerGroupDialog.vue
  • ui/src/components/containers/ContainersGroupedViews.vue
  • ui/src/components/containers/containersViewTemplateContext.ts
  • ui/src/composables/useColumnVisibility.ts
  • ui/src/composables/useUpdateStatus.ts
  • ui/src/locales/ar/dashboardView.json
  • ui/src/locales/de/dashboardView.json
  • ui/src/locales/en/containerComponents.json
  • ui/src/locales/en/containersView.json
  • ui/src/locales/en/dashboardView.json
  • ui/src/locales/es/dashboardView.json
  • ui/src/locales/fr/dashboardView.json
  • ui/src/locales/it/dashboardView.json
  • ui/src/locales/ja/dashboardView.json
  • ui/src/locales/ko/dashboardView.json
  • ui/src/locales/nl/dashboardView.json
  • ui/src/locales/pl/dashboardView.json
  • ui/src/locales/pt-BR/dashboardView.json
  • ui/src/locales/ru/dashboardView.json
  • ui/src/locales/tr/dashboardView.json
  • ui/src/locales/uk/dashboardView.json
  • ui/src/locales/vi/dashboardView.json
  • ui/src/locales/zh-CN/dashboardView.json
  • ui/src/locales/zh-TW/dashboardView.json
  • ui/src/preferences/migrate.ts
  • ui/src/preferences/schema.ts
  • ui/src/utils/update-kind-labels.ts
  • ui/src/views/ContainersView.vue
  • ui/tests/components/containers/ContainersGroupedViews.spec.ts
  • ui/tests/components/containers/UpdateStatusPanel.spec.ts
  • ui/tests/composables/useColumnVisibility.spec.ts
  • ui/tests/composables/useUpdateStatus.spec.ts
  • ui/tests/preferences/migrate.spec.ts
  • ui/tests/preferences/sync.spec.ts
  • ui/tests/utils/update-kind-labels.spec.ts
  • ui/tests/views/ContainersView.spec.ts
  • ui/tests/views/DashboardView.spec.ts

Comment thread e2e/playwright/v16-modes-pins.spec.ts

@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

πŸ€– 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 `@ui/tests/components/containers/ContainersGroupedViews.spec.ts`:
- Around line 717-719: Update the test named β€œopens the manual group editor from
the row and card More menu” to either exercise the row More-menu path with a
table-mode assertion in addition to the existing card setup, or rename it to
accurately describe card-only coverage if row behavior is covered separately.
πŸͺ„ 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: a30c471d-b047-471b-a4db-2a416b10b1de

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 85de8fb and dc2ad5e.

β›” Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
πŸ“’ Files selected for processing (46)
  • content/docs/current/api/index.mdx
  • content/docs/current/configuration/actions/update-eligibility.mdx
  • content/docs/current/configuration/dashboard/index.mdx
  • content/docs/current/configuration/ui/index.mdx
  • content/docs/current/configuration/watchers/index.mdx
  • content/docs/current/faq/index.mdx
  • content/docs/current/updates/index.mdx
  • e2e/playwright/v16-mobile.spec.ts
  • e2e/playwright/v16-modes-pins.spec.ts
  • ui/src/components/containers/ContainerGroupDialog.vue
  • ui/src/components/containers/ContainersGroupedViews.vue
  • ui/src/components/containers/containersViewTemplateContext.ts
  • ui/src/composables/useColumnVisibility.ts
  • ui/src/composables/useUpdateStatus.ts
  • ui/src/locales/ar/dashboardView.json
  • ui/src/locales/de/dashboardView.json
  • ui/src/locales/en/containerComponents.json
  • ui/src/locales/en/containersView.json
  • ui/src/locales/en/dashboardView.json
  • ui/src/locales/es/dashboardView.json
  • ui/src/locales/fr/dashboardView.json
  • ui/src/locales/it/dashboardView.json
  • ui/src/locales/ja/dashboardView.json
  • ui/src/locales/ko/dashboardView.json
  • ui/src/locales/nl/dashboardView.json
  • ui/src/locales/pl/dashboardView.json
  • ui/src/locales/pt-BR/dashboardView.json
  • ui/src/locales/ru/dashboardView.json
  • ui/src/locales/tr/dashboardView.json
  • ui/src/locales/uk/dashboardView.json
  • ui/src/locales/vi/dashboardView.json
  • ui/src/locales/zh-CN/dashboardView.json
  • ui/src/locales/zh-TW/dashboardView.json
  • ui/src/preferences/migrate.ts
  • ui/src/preferences/schema.ts
  • ui/src/utils/update-kind-labels.ts
  • ui/src/views/ContainersView.vue
  • ui/tests/components/containers/ContainersGroupedViews.spec.ts
  • ui/tests/components/containers/UpdateStatusPanel.spec.ts
  • ui/tests/composables/useColumnVisibility.spec.ts
  • ui/tests/composables/useUpdateStatus.spec.ts
  • ui/tests/preferences/migrate.spec.ts
  • ui/tests/preferences/sync.spec.ts
  • ui/tests/utils/update-kind-labels.spec.ts
  • ui/tests/views/ContainersView.spec.ts
  • ui/tests/views/DashboardView.spec.ts
🚧 Files skipped from review as they are similar to previous changes (41)
  • ui/src/locales/zh-CN/dashboardView.json
  • ui/src/locales/en/dashboardView.json
  • ui/src/locales/ko/dashboardView.json
  • ui/src/locales/ja/dashboardView.json
  • ui/src/locales/uk/dashboardView.json
  • ui/src/locales/vi/dashboardView.json
  • ui/src/locales/pl/dashboardView.json
  • ui/tests/preferences/sync.spec.ts
  • ui/src/locales/fr/dashboardView.json
  • ui/src/locales/es/dashboardView.json
  • ui/src/locales/de/dashboardView.json
  • ui/src/locales/nl/dashboardView.json
  • ui/src/locales/zh-TW/dashboardView.json
  • ui/src/utils/update-kind-labels.ts
  • ui/src/locales/tr/dashboardView.json
  • ui/tests/utils/update-kind-labels.spec.ts
  • ui/src/locales/ar/dashboardView.json
  • ui/src/locales/pt-BR/dashboardView.json
  • ui/src/locales/en/containersView.json
  • ui/src/locales/it/dashboardView.json
  • content/docs/current/configuration/dashboard/index.mdx
  • content/docs/current/updates/index.mdx
  • ui/tests/composables/useUpdateStatus.spec.ts
  • ui/src/locales/en/containerComponents.json
  • e2e/playwright/v16-mobile.spec.ts
  • ui/src/locales/ru/dashboardView.json
  • ui/tests/views/DashboardView.spec.ts
  • content/docs/current/api/index.mdx
  • ui/src/composables/useUpdateStatus.ts
  • ui/tests/components/containers/UpdateStatusPanel.spec.ts
  • e2e/playwright/v16-modes-pins.spec.ts
  • ui/src/components/containers/ContainerGroupDialog.vue
  • content/docs/current/configuration/actions/update-eligibility.mdx
  • content/docs/current/faq/index.mdx
  • ui/tests/views/ContainersView.spec.ts
  • ui/src/composables/useColumnVisibility.ts
  • content/docs/current/configuration/watchers/index.mdx
  • ui/src/views/ContainersView.vue
  • ui/src/preferences/migrate.ts
  • content/docs/current/configuration/ui/index.mdx
  • ui/src/components/containers/ContainersGroupedViews.vue

Comment thread ui/tests/components/containers/ContainersGroupedViews.spec.ts Outdated

@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.

Reviewed the issue #498 resolution against the full report, regression coverage, production Compose E2E, and direct desktop/mobile visual QA. Approved for merge.

ALARGECOMPANY
ALARGECOMPANY previously approved these changes Jul 22, 2026

@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.

Independent approval: issue #498 findings are resolved, documented, regression-tested, and visually verified in desktop and true mobile contexts.

@scttbnsn
scttbnsn dismissed stale reviews from ALARGECOMPANY and biggest-littlest via b27e5e9 July 22, 2026 12:48

@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.

Re-approved latest head b27e5e9 after the deterministic Cucumber assertion was corrected and the exact failed scenario passed locally against the real test stack.

@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.

Re-approved latest head b27e5e9: issue #498 fixes, regression suite, visual QA, and corrected Cucumber coverage are complete.

@scttbnsn
scttbnsn merged commit 9e104b8 into main Jul 22, 2026
25 checks passed
@scttbnsn
scttbnsn deleted the fix/issue-498-visual-followups branch July 22, 2026 13:11
scttbnsn added a commit that referenced this pull request Jul 22, 2026
## Summary

Prepare **v1.6.0-rc.4** from the latest `main`.

rc.4 delta over rc.3:

- **#580 issue #498 visual follow-ups** - informational pinned
Major/Minor/Patch states, "Image update" vocabulary and explanation,
Host-first constrained layout, explicit Software Version metadata,
browser-managed grouping, docs, regression coverage, and desktop/mobile
visual QA.
- **#581 Cucumber reliability** - complete retained-run audit, exact
build-artifact reuse, six-fixture readiness manifest, scenario state
restoration, structured reports/diagnostics, no blanket
Cucumber/Playwright retries, fail-closed remote fixture seeding, and the
targeted health-refresh product/race fixes.
- Release identity advanced across the changelog, README, website/demo,
current docs, API examples, quickstart, and guard tests.

## Verification

- 123/123 repository script tests
- 45/45 workflow invariant tests
- 44/44 website script tests
- Full pre-push gate: 100% app/UI coverage, type-check, Biome, Qlty, and
app/UI builds
- Local prerelease precheck completed; its five unchecked "shipped in
v1.6.0" Discussion follow-ups remain GA closeout actions and are not RC
blockers

After merge: verify exact-`main` CI Verify and Playwright, then dispatch
`release-cut.yml` with `release_tag=v1.6.0-rc.4`.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Changelog

### πŸ”§ Changed
- Prepared release identity for `v1.6.0-rc.4` across README,
website/demo mocks, API documentation, Portwing examples, quickstart
materials, and release updates.
- Updated changelog comparison links and release identity guard tests
for `v1.6.0-rc.4`.
- Added release-gated Cucumber E2E failure-reporting highlights to the
updates page.

## Concerns
- Verify exact CI Verify and Playwright workflows after merge.
- Post the five tracked Discussion replies against the published release
candidate.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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.

Alert: Pinned tag "1.5.2-rc.1" is compared by digest only. Set dd.tag.family=loose or add a dd.tag.include filter to allow semver version climbing.

3 participants