fix(shell): simplify top-bar controls and refine profile dropdown - #435
Conversation
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
…followup * origin/main: Group inventory by community and use compact rows outside the current community (#290) chore: enable Cmd+R reload in production builds (#468) ci: run playwright jobs in the pinned docker image (#469) fix(profile): let the web profiling page follow the browser window size (#467) Let plugin pages publish NIP-AR artifacts and embed the host thread view (#434) Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
No changes requested: I found no concrete defect in the shell/profile changes or migrated companion coverage, and no privacy issue in the PR description or its four attached images.
Star Lord automated source review via Wes’s account — head 2080effc4c5811dae69dab39f560a075a69052e9, base 61d0bd57e097aae8755d306f6228ef76404056b4.
Source-only: no tests or app runs performed; the hosted snapshot reports required CI and DCO passing, but native visual acceptance remains pending and Windows validation was skipped.
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
Two changes requested in the new styling since 2080effc: preserve visible dark-mode menu highlights and pair the new white fills with readable foregrounds (details inline).
Star Lord automated source review via Wes’s account — head 5703486095e3dcb769c55efe304f9e0b4e7c8723, base 61d0bd57e097aae8755d306f6228ef76404056b4. Source-only; no tests or app runs. The single head-check snapshot contains successful security/DCO checks, not full runtime validation. The description and four attached fixture images were inspected; those light-mode images depict the earlier head, so current dark/native appearance remains unverified.
…followup * origin/main: fix(sidebar): save channel moves on desktop and move channels by drag (#474) perf(messages): stop re-rendering every row on each channel-list publish (#473) Unify workspace panels and add persistent channel tabs (#413) ci: prune expired preview releases after promotion (#461) feat(sidebar): show unread conversation counts and DM avatar previews (#472) fix(previews): dismiss hovered previews when their trigger scrolls (#460) perf(native): reduce crypto, upload and discovery overhead (#464) Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz> # Conflicts: # src/shared/design-system/icons/index.ts # tests/browser/layout.spec.mjs
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
No further source changes requested: both findings from the previous review are addressed, and I found no new defect in the fixes or privacy issue in the description and four fixture images.
Star Lord automated source review via Wes’s account — head 3ee0b1de4441d145acdf7a2dd41ff5069ac921dc, base e2fae50fa70a185653208f308452ed13aabd4918.
Source-only; no tests or app runs performed. The current-head snapshot has CI required failing (Chromium and WebKit shards 2/6 and 3/6); causes were not investigated, Windows validation was skipped, and native visual acceptance remains pending.
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
…followup * origin/main: fix(shell): remove sidebar toggle render and animation delays (#475) Fix unread catch-up and reading focus (#470) Refine shared surfaces, contrast, and relative UI sizing (#458) Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz> # Conflicts: # src/shared/design-system/styles/tokens.css # src/shared/styles/globals.css
Signed-off-by: Tree Trunks <6ba22921d9dc2ad0aa6ecdf63787ddd24726e266d866da31af69f2e4e146ace5@buzz.block.builderlab.xyz>
wesbillman
left a comment
There was a problem hiding this comment.
No further changes requested: the companion/presence test updates and direct Todos session fixture preserve the affected assertions, and the prior contrast fixes remain intact after main integration. No new privacy finding in the changed material, description or four fixture images.
Star Lord automated source follow-up via Wes’s account — head 91790a445862d7419eb63112cd13573cf5051d89, base 1a692d5d849145376be899fe0ecf7af195e3527c.
Source-only; no local tests or app runs. The hosted snapshot reports CI required and DCO passing; WebKit shard 3 passed all 86 cases. Windows validation was skipped, and native visual/human acceptance remains unverified. Non-blocking COMMENT, not approval.
Why
The top bar still has visible button containers, and the profile menu needs tighter sizing after #360.
What
How
Reuse ghost buttons and scope menu styling to the profile dropdown. Preserve the existing profile, presence, status, and settings actions.
Browser tests use a generic companion plugin for launcher lifecycle and layout coverage. Current main supplies the profile fixture and timeline restoration fixes; this PR retains those upstream tests.
Risk
Changes affect shell controls and the profile menu. Companion browser journeys now use an isolated test plugin, preserving panel lifecycle, focus, resizing, and link-panel coverage without restoring the removed Bestie launcher. Native visual acceptance remains pending.
Testing
CI repair and refreshed main at
7a39c048New panel-motion tests from main still opened the removed Bestie launcher. They now use the existing companion fixture and retain every transition, reduced-motion, drag, and resize assertion. Presence and surface-consumer tests now assert the approved Online foreground and theme-aware 6%/10%/14% fills; Away and Offline expectations stay intact. Browser cases added/removed: 0. Before the fix, the launcher lookup timed out and the presence test expected the old green. All four light/dark surface cases reproduced the old-fill mismatch across both engines.
Merged main through
1a692d5d, retaining its relative sizing, shared contrast, unread, and sidebar-animation fixes. Conflict resolution preserves equal top-bar spacing and unboxed controls.Ran
bin/pnpm test:browser:ci tests/browser/panel-motion.spec.mjs tests/browser/presence.spec.mjs tests/browser/surface-consumers.spec.mjs tests/browser/profile-avatar-gap.spec.mjs tests/browser/settings.spec.mjs tests/browser/sidebar-unread.spec.mjs tests/browser/layout.spec.mjs tests/browser/sidenav-polish.spec.mjs tests/browser/app-style-order.spec.mjs --project chromium --project webkit --no-deps: 106/106 passed on local macOS with two workers, 3.7 minutes wall time. Summed case execution was 415.48 seconds; the slowest case was the Chromium avatar-presence publishing journey at 22.1 seconds. These browser cases check real CSS, pointer/keyboard interaction, portals, focus, panel geometry, and live presence wiring. No assertion tolerance, retry, or timeout changed. Earlier local baseline runs were interrupted by machine/network suspension and cannot support a timing comparison. Hosted CI and native visual approval remain pending.Review and conflict fixes at
3ee0b1deMerged main through
e2fae50f, preserving the new panel tabs and generic companion coverage. The sidebar toggle keeps its unboxed resting state while expanded.On local macOS, ran
bin/pnpm test:browser tests/browser/profile-avatar-gap.spec.mjs tests/browser/user-status.spec.mjs tests/browser/layout.spec.mjs tests/browser/sidenav-polish.spec.mjs --project chromium --project webkit --no-deps. All 44 status, layout, and sidenav cases passed in both engines. That run took 1.6 minutes; those cases summed to 143.34 seconds, with the WebKit joined-surface journey slowest at 9.2 seconds. One new profile assertion sampled a theme transition too early. After waiting for the actual CSS transition and anchoring keyboard navigation to menu rows, the complete profile file passed 4/4 in both engines: 8.8 seconds wall time and 10.8 seconds summed execution. No timing comparison to hosted CI is implied.Added one browser case per engine; removed none. It exercises real portaled menu CSS and arrow-key highlights in both themes. The existing avatar case now also checks at least 4.5:1 text contrast for the fallback and Online badge at rest, hover, and press. Real CSS color resolution and paint require browser coverage. Before the fixes, dark highlights matched the popup background and the contrast assertion failed at 3.32:1 in light mode in both engines. Existing geometry and focus assertions remain intact; no retry, timeout, or tolerance was relaxed.
Native visual acceptance and hosted checks for this head remain pending. The images below depict
2080effc, before the latest badge and popup refinements.Before and after
Captured from PR base
61d0bd57(before) and head2080effc(after). Both use Chromium at 1440 × 950, light mode, the Settings view, and synthetic fixture data. These are browser captures, not native-app visual approval.Top bar — before
Top bar — after
On
09ae9afd, ranbin/pnpm test:browser tests/browser/plugins.spec.mjs tests/browser/layout.spec.mjs tests/browser/sidenav-polish.spec.mjs --no-deps --project=chromium --project=webkit: 50/50 passed on local macOS with two workers. Wall time was 1.5 minutes; summed case execution was 135.21 seconds. The slowest case was the WebKit bento layout journey at 8.7 seconds. These are local measurements, not hosted CI timings; no complete baseline timing comparison is available.Fail-then-pass: the original stale-close journey timed out waiting for the removed Bestie button in both engines (10.8 seconds each). Its corrected counterpart passed in Chromium (612ms) and WebKit (762ms), retaining the stale-handler assertion. The before run used the original test copied to a temporary spec; that file was removed afterward.
Browser cases added/removed by this fix: 0. Existing companion journeys retain real browser focus, geometry, resize, and navigation coverage through an opt-in plugin. The isolated build excludes the unrelated catch-all link fixture. The existing top-bar case continues to assert the absence of Bestie, 28px hover targets, 16px icons, and equal spacing. Current main adds one case per engine, accounting for 50 cases instead of the earlier 48.
On
83c3d217, fixed the missingcompanionFixturedeclaration in the standalone message fixture. Before the fix, CI discovery failed with “Fixture compiledApp has unknown parameter companionFixture” and collected zero tests. Afterward, full CI discovery collected 980 tests in 122 files, and all 8 browser-CI integration checks passed, including complete, nonduplicated discovery across all 12 functional shards. The entirenew-message.spec.mjspassed in Chromium and WebKit (4/4, local macOS, two workers, 14.3s wall time, 18.6s summed case execution; slowest case 7.5s in WebKit). No cases were added or removed.On
271036dd, updated the startup style-order regression to vary the shared ghost-button--interaction-hovertoken after switching Search to the requested ghost treatment. Chromium shard 4 reproduced the stale glass-hover assertion (79 passed, 1 failed; 2.9 minutes). The corrected full file passed in both engines (2/2, 4.9s wall time, 7.4s summed execution; slowest Chromium 3.8s), including search opening, dismissal and focus restoration. The test still rejects a copied feature-level hover color. No browser cases were added or removed.Hosted CI on
271036dd: JavaScript, Rust/tool integration, browser measurements, and 10 of 12 functional browser shards passed. Chromium shard 5 timed out during setup, and WebKit shard 6 timed out during functional journeys at the unchanged 15-minute job limit; CI required therefore remains red. Detailed hosted logs are currently inaccessible to the agent, so the timeout causes are not established. The same CI-selected serial measurements passed locally (9/9, 1.8 minutes). Native visual acceptance remains pending.On
2080effc, merged main including #469’s pinned Playwright container and shared native fixture build. Reproducing WebKit shard 6 on the previous snapshot found 77 passes and one failure: after plugin insertion,fill("base")retained the timestamp. The test now uses its existing keyboard-selection approach and asserts the replacement before testing plugin insertion. The full conversation file passes after the merge in Chromium and WebKit (2/2, local macOS, 26.1s wall time, 50.4s summed execution, 25.2s per case); all 8 CI-configuration integration checks pass. No browser cases were added or removed, and no retry, assertion tolerance, or CI timeout was changed. Hosted run 36777900779 passed on2080effc: all 12 Chromium/WebKit shards, JavaScript (8m42s), Rust/tool integration (6m34s), browser measurements (4m9s), native fixture (20s), and CI required. DCO Check also passed. Windows native validation was skipped by the workflow. The locally reproduced editor issue does not establish the cause of the earlier hosted timeout.Bigger picture
Follow-up to #360. The earlier top-bar and sidebar work is already on main. This PR includes the latest UI refinements, their test repairs, and a merge of main to retain newer page-navigation coverage.
Todos fixture follow-up at
91790a44route.fetch: read ECONNRESET. Its other 85 cases passed.bin/pnpm test:browser:ci tests/browser/todos.spec.mjs --project chromium --project webkit --no-deps. Before this fix, the complete WebKit shard passed locally (86 cases, 3.3 minutes), so the CI connection reset was not reproduced locally.Generated with Codex