Skip to content

Unify Solo chat menus, rename workspaces, quieter membership notices - #1326

Merged
morgmart merged 2 commits into
mainfrom
morganm/solo-chat-improvements
Oct 19, 2026
Merged

morgmart merged 2 commits into
mainfrom
morganm/solo-chat-improvements

Conversation

@morgmart

@morgmart morgmart commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

What changed

One chat menu, everywhere. The chat header's "…" menu and the sidebar row's "…" menu now render the same list of actions, in the same order:

  • Mark as read (only where read sync is supported)
  • Share…
  • Convert to channel
  • Move to
  • Copy
  • Chat settings…
  • Archive chat / Delete chat

So the header gains Mark as read, Move and Copy. Share is disabled when the chat can't be shared, matching the header's Share button.

Projects are now Workspaces. All Solo sidebar, dialog and settings copy says "workspace".

Typing indicator stays inside the row. The working/typing indicator sits at the trailing end of the highlighted sidebar row. On hover, the "…" button replaces it.

Membership notices are back in Solo chats, quieter.

  • Solo chats show "added/removed" notices again. The exception is the agents the owner set the chat up with: the owner's agent additions and removals before the first message are hidden, once the full history has loaded.
  • People, agents added by someone else, and any later change still show.
  • Notices are more compact in both Solo and Team channels. A notice directly under a date divider no longer has the divider's extra gap.

Builds on #1311 (sidebar Archive/Delete/Mark as read), keeping its wording and its "return to a new draft" behavior when the open chat is archived or deleted.

Testing

  • New and updated tests:
    • The header and sidebar menus list identical actions.
    • The header's Move to and Chat settings… actions work, and focus returns to Chat actions.
    • The timeline hides starting agents only in a fully loaded personal chat, never in Team channels.
    • Unit edge cases for the add, remove and re-add sequence before the first message.
  • Header-started Move failures show a Retry/Dismiss toast even when the sidebar is hidden.
  • Starting agents stay visible when older history has been trimmed.
  • Workspace Canvas saved before this change still reads as unedited (literal upgrade fixture).
  • Ran the channels, channel navigation, messages, Solo and app shell suites: 160 files, 2,838 tests passing. Typecheck and design-system checks pass.
  • The pre-push hook's related-test, design-system and push-org checks passed on the review-fix push.

Screenshots

Captured from the browser test harness with fixture data.

The chat header's "…" menu:

Chat header actions menu

The sidebar row's "…" menu, with the same actions:

Sidebar row actions menu

A compact membership notice in a Team channel (the shared component Solo also uses):

Compact membership notice

🤖 Generated with Claude Code

- Header and sidebar row share one chat action menu (read state, share,
  convert, move, copy, settings, archive and delete).
- Rename Solo projects to workspaces throughout.
- Keep the typing indicator inside the painted row; the hover menu takes
  its place.
- Show membership notices in Solo chats again, hiding only the owner's
  starting agents, with a smaller shared footprint.

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@morgmart
morgmart requested a review from a team as a code owner October 18, 2026 23:33

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket, Mantis and Groot lanes.

Three actionable findings are attached inline: P2 regressions in saved workspace compatibility and header Move/Create recovery, plus a P3 history-completeness error in starting-agent filtering. Overall: 8/10 against the repository’s engineering standard; the shared action list is a useful simplification, but these failure paths need repair.

Optional consistency improvement: moving from the header into a collapsed workspace leaves that destination collapsed, while the sidebar path expands it (SoloWorkspaces.tsx:145–148). Reuse the existing reveal behavior without moving keyboard focus away from the header. Also update the remaining “Project settings” dialog title at WorkspaceSettings.tsx:294 to match its “Workspace settings…” menu label.

Reviewed head d3b742ad96d95bb20dff3658d8c689421d832b74, base 7d50425b7fda7c0bfdccb897df0507a286d6bbac. Inspected the 40-file source/test/docs diff, relevant callers and shared Menu/Dialog/Toast owners, plus the public PR description and commit message. No actionable public-material disclosure found; the description says screenshots are pending and contains no attached screenshots.

Validation is source-only: no PR code, tests, builds or app flows executed. A single hosted-check snapshot had JavaScript, native, browser and flake checks still running; Windows validation was skipped. Existing test assertions were inspected, but reported local test counts were not independently reproduced. Keyboard/screen-reader behavior, both themes, narrow/wide layouts, enlarged text, live persistence and native acceptance remain unverified. This COMMENT review is not an approval or merge authorization.

Comment thread src/features/solo/workspace.ts Outdated
Comment thread src/bundled/channels/SoloHeading.tsx Outdated
Comment thread src/features/messages/ChannelTimeline.tsx Outdated
- Keep the persisted "## Project folders" Canvas heading so existing
  workspace blocks still read as unedited; add a literal upgrade fixture.
- Report a failed Move or Create and move started from the chat header
  in a toast with Retry and Dismiss, since the sidebar may be hidden.
- Only hide starting agents when the window is neither paged nor trimmed.
- Title the workspace settings dialog "Workspace settings".

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@morgmart

Copy link
Copy Markdown
Contributor Author

🤖 On the optional notes: the dialog title now reads "Workspace settings" (b55b715). I left expand-on-move from the header out of this PR. The sidebar keeps its collapsed state locally, so revealing the destination from the header needs a shared owner for that state. That's a separate change.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket (systems/lifecycle), Mantis (correctness/security/concurrency), and Groot (product/accessibility) reviews.

No new actionable findings. The three findings in the previous review are repaired in source: the persisted ## Project folders Canvas format is restored with a literal upgrade fixture; header-started Move/Create failures expose the existing retained-intent Retry/Dismiss flow; and starting-agent suppression now requires both !hasMore and !historyLimited. The workspace settings title is also consistent. Source-review assessment: 9/10; no changes requested.

Optional cleanup: SoloHeading.tsx:74–79,106–111 leaves moving true after a successful header operation, so a later sidebar-started failure for that chat can also show the header toast. Both surfaces act on the correct retained intent, so this is duplicate feedback, not lost or incorrect state. If tightening origin ownership, bind/reset the latch to the latest header operation on success (including Create and Retry), guarding against an older promise clearing a newer operation; extend the component regression accordingly.

Reviewed head b55b715057e8d066c2eb4b08858a1b025f60f6d8, base 7d50425b7fda7c0bfdccb897df0507a286d6bbac. Follow-up scope is the seven-file diff from previously reviewed d3b742ad96d95bb20dff3658d8c689421d832b74, its prior findings, and affected callers/recovery owners. Public description and new commit material inspected; no attached images were present, and screenshots remain pending.

Source-only: no tests, builds, app launches, or PR code executed. Added tests and existing store/Toast coverage were inspected, not run. One hosted-check snapshot had JavaScript, Rust, browser journeys and flake checks still running; Windows was skipped. Rendered keyboard/focus behavior, both themes, narrow/wide layouts, enlarged text, live persistence, native behavior and human acceptance remain unverified. This COMMENT review is not approval or merge authorization.

@morgmart
morgmart merged commit 53414d3 into main Oct 19, 2026
33 checks passed
@morgmart
morgmart deleted the morganm/solo-chat-improvements branch October 19, 2026 16:57
johnmatthewtennant added a commit that referenced this pull request Oct 19, 2026
* origin/main:
  Add native Huddles with call controls and conversation panels (#489)
  fix(claude-code): keep sessions alive while Claude's background work runs (#1102)
  Rename Agent setup "Providers" to "Harness defaults" (#1348)
  feat(plugins): feature core plugins and branded catalog browsing (#1246)
  Improve AI defaults and add Goose configuration (#1266)
  feat(sidebar): filter channel sections by unread and activity (#1297)
  feat(plugins): organize settings with guides and focused controls (#1176)
  Unify Solo chat menus, rename workspaces, quieter membership notices (#1326)
  Add identity restore UI (#1101)
  Add native identity backup recovery (#1107)
  Back up desktop identities only with saved consent (#1106)
  Add native identity backup consent hooks (#1137)
  remove the Channel Usage plugin (#1335)
  fix(messages): retain image geometry across virtualized remounts (#1271)
  fix(channels): read metadata for a labeled channel whose roster came first (#1289)
  fix(channel-members): allow adding members to system channels (#1288)
  fix(unread): recover dropped thread roots for unread thread activity (#1291)
  test(voice-notes): fix the draft-card race that turned main red (#1315)
  ci: check dependency policy with cargo-deny (#1321)

Signed-off-by: jtennant <jtennant@squareup.com>

# Conflicts:
#	src/bundled/inbox/InboxDetail.test.tsx
#	src/bundled/inbox/InboxDetail.tsx
johnmatthewtennant added a commit that referenced this pull request Oct 19, 2026
…x-session-preview-live

* origin/jt/inbox-page-tabs: (25 commits)
  refactor(inbox): open conversations through conversation.ui.Tabs
  fix(inbox): retire a Huddle room's retained tabs and keep their focus
  test(inbox): stop depending on Channels having loaded a thread's channel
  fix(inbox): close an opened conversation once its room becomes a Huddle
  Add native Huddles with call controls and conversation panels (#489)
  fix(inbox): offer no Archive shortcut while Drafts is shown
  fix(inbox): keep a restored tab's row selected after leaving Inbox
  fix(claude-code): keep sessions alive while Claude's background work runs (#1102)
  Rename Agent setup "Providers" to "Harness defaults" (#1348)
  feat(plugins): feature core plugins and branded catalog browsing (#1246)
  Improve AI defaults and add Goose configuration (#1266)
  feat(sidebar): filter channel sections by unread and activity (#1297)
  feat(plugins): organize settings with guides and focused controls (#1176)
  Unify Solo chat menus, rename workspaces, quieter membership notices (#1326)
  Add identity restore UI (#1101)
  Add native identity backup recovery (#1107)
  Back up desktop identities only with saved consent (#1106)
  Add native identity backup consent hooks (#1137)
  remove the Channel Usage plugin (#1335)
  fix(messages): retain image geometry across virtualized remounts (#1271)
  ...
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