Repository navigation
Move Activity back into the Messages sidebar - #3127
Conversation
Activity is a row at the top of the Messages sidebar again instead of a dock app. It keeps its hover preview, and its bell swaps for the latest reaction emoji at row size. Opening it keeps Messages selected with its sidebar, like other pages listed there. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: tulsi <[email protected]>
Browser journeys open Activity from its sidebar row through a shared activityRow() helper, or through Search at narrow widths where the sidebar is collapsed. Tests that only needed some dock app use Workflows, Reminders or Messages instead. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: tulsi <[email protected]>
tellaho
left a comment
There was a problem hiding this comment.
🤖 Princess Donut, reviewing on tho's behalf. Reviewed head 8519674 against merge base 2fd77b6. No concrete blocking correctness or security defect found in this review. The change reuses the shell's placement, navigation ownership, preview, and icon owners. One optional coverage suggestion is inline. Source review only; I did not rerun suites or exercise the built UI.
| .getByRole("tab", { name: "Activity", exact: true }) | ||
| .click(); | ||
| // At this width the Messages sidebar, and its Activity row, is collapsed. | ||
| await openPage(page, "Activity"); |
There was a problem hiding this comment.
🤖 Optional coverage suggestion: this switches the 390px journey to Search, so it bypasses the access path changed by this PR. Consider opening Messages → Show navigation → Activity here (or in the existing narrow sidebar journey), then asserting that Activity opens and the drawer closes. That would exercise the newly required navigation path at narrow widths.. This is a coverage suggestion, not a reproduced runtime defect.
There was a problem hiding this comment.
🤖 Good call, done in a3b2a99. The 390px case now opens Activity with Show navigation → the Activity row, then checks that Activity opens and the drawer closes (the row is hidden and Show navigation is back). The whole inbox.spec.mjs passes on Chromium (6/6).
tellaho
left a comment
There was a problem hiding this comment.
🤖 Princess Donut, approving on tho’s behalf at their explicit request. Reviewed head 8519674; no blocking findings. The inline narrow-navigation coverage suggestion is optional. Source review only; no local test reruns or live UI verification.
Activity can no longer be a dock page, so the dock's Activity icon branch and the icon's dock size go away; the icon is sized for a sidebar row. Help, shell design notes and Inbox comments no longer place Activity in the dock. Tests check that Activity has no dock tab, and the layout check uses Workflows so it still proves a non-Messages dock destination. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: tulsi <[email protected]>
Below 650px the Activity row sits in the collapsed Messages sidebar, so the narrow Inbox test now opens it with Show navigation and checks that the drawer closes once Activity opens, rather than going through Search. Co-authored-by: BasilBot <399581b6165ab01343e3a1324774b1024d76942aea563468f93c975e5ee5193c@buzz.block.builderlab.xyz> Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: tulsi <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
…Settings card tests The two Settings-card tests added in c125aeb waited for a tab named Activity before opening Settings. After the rebase onto main, "Move Activity back into the Messages sidebar" (#3127, 756d7b9) made Activity a row in the Messages sidebar rather than a dock tab, and the file's other tests moved to its findActivityRow() helper. These two kept the old barrier and failed on every CI run with "Unable to find role="tab" and name "Activity"". Use findActivityRow() like the neighbouring tests. The assertions are unchanged: inside Settings, Try again is alone and prominent on the not-available card, Manage plugins is alone on the turned-off card, and Go to Messages appears nowhere. Co-Authored-By: Claude Fable 5.1 <[email protected]> Signed-off-by: Matt Toohey <[email protected]>
Activity moves out of the dock and back into a row at the top of the Messages sidebar, where it was before #2626. Drafts & sent sits below it when that plugin is on.
ActivityNavigationIconis now sized for the row's 16px icon slot, and the dock's Activity-only icon code is gone.The change is host policy in
pagePlacement()(src/app/shell/presentation.ts):buzz.inbox/inboxresolves to"sidebar"whatever placement it registers, and it's dropped from the dock order. No FOUNDATION files are touched.Docs (
docs/inbox.md,docs/buzz-help.md,docs/shell-design.md, the Activity README) and Inbox code comments now say "Messages sidebar" where they said "app dock".Tradeoffs
Screenshots
Synthetic browser-fixture data only.
Hovering the Activity row, light:
Dark:
The row's bell swapped for a new reaction (✅):
Tests
PageNavigation.test.tsx: the sidebar Activity row swaps its bell for the emoji and keeps its accessible name.presentation.test.ts: bundled Activity resolves to the sidebar whatever placement it registers.navigation-owner.test.ts: Activity now belongs to Messages.entity-navigation.test.tsxalso checks that Activity has no dock tab.activityRow()helper intests/browser/navigation.mjs. No browser cases were added or removed.inbox-preview.spec.mjsnow covers hovering the sidebar row; on a selected row it checks for the row's title hint where it used to check for the dock's tooltip.inbox-tabs.spec.mjsexpects the 16px row emoji instead of the 18px dock one.Validation on this branch:
pnpm check(biome, typecheck, design checks) passed.vitest run: 20,129 passed, 1 failed. The failure,MemoryPanel.test.tsx > copies a memory from its context menu, passes when run on its own on both this branch and main.--project chromium) covering Activity or the dock (41 files): after the fixes, every case touched passes. Three cases fail identically on the base commit without this change, so they're out of scope here:layout.spec.mjs"Alt+ArrowUp from a message link preserves native scroll ownership", and bothtyping.spec.mjs"a growing … composer lifts history" cases (React error Add complete reaction toggles to the message menu #185).inbox.spec.mjs's 390px case opens Activity through Show navigation and checks that the drawer closes.916e24d3e): the vitest files touched (30 files, 689 tests) andtscpass; the Chromium specs rerun with 45 passed and 1 failed, the Alt+ArrowUp case that also fails on main.layout.spec.mjsnow uses Workflows as its non-Messages dock destination.Not run locally: WebKit browser projects and native builds. CI covers those.
🤖 Generated with Claude Code