Skip to content

feat(mobile): bring channel menus to desktop parity - #3940

Merged
brow merged 11 commits into
mainfrom
tho/mobile-channel-menu
Aug 3, 2026
Merged

feat(mobile): bring channel menus to desktop parity#3940
brow merged 11 commits into
mainfrom
tho/mobile-channel-menu

Conversation

@tellaho

@tellaho tellaho commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Overview

Category: improvement
User Impact: Mobile users can now access consistent channel and DM actions from both the channel list and conversation header.
Problem: Mobile channel menus exposed a narrower, inconsistent set of actions than desktop, and the available actions differed by entry point.
Solution: This change introduces one reusable action sheet with a clear quick-action hierarchy, role-aware lifecycle controls, confirmations for consequential actions, and a deliberately narrower DM menu.

Changes

File changes

mobile/lib/features/channels/channel_actions_sheet.dart
Adds the shared channel and DM action-sheet experience used by both entry points, including Star/Unstar and Read/Unread quick actions for channels, section movement, mute, management, inline copy actions, guarded lifecycle actions, confirmations, and a compact DM menu without quick actions.

mobile/lib/features/channels/channel_detail_page.dart
Routes the header ellipsis through the shared action sheet so the in-channel menu matches the channel-list experience, including for DMs.

mobile/lib/features/channels/channel_management_provider.dart
Adds archive and delete operations using the desktop-compatible relay event kinds and refreshes channel state after completion.

mobile/lib/features/channels/channels_page.dart
Makes the shared channel action-sheet entry point available to the channel-list implementation.

mobile/lib/features/channels/channels_page/channel_tile.dart
Replaces the tile-specific long-press menu with the reusable action sheet while preserving read state and section context.

mobile/test/features/channels/channel_actions_sheet_test.dart
Covers action hierarchy, owner/admin/member capability guards, loading and failure states, DM narrowing with no quick-action row, and inline copy actions.

mobile/test/features/channels/channel_detail_page_test.dart
Updates channel-header flows to exercise management through the new shared action sheet.

mobile/test/features/channels/channel_management_provider_test.dart
Verifies archive and delete event tags stay compatible with desktop behavior.

Reproduction Steps

  1. Run the mobile app and open a populated channel list.
  2. Long-press a regular channel and verify the Star/Unstar and Read/Unread quick actions appear above Move to section…, Mute, Manage, Copy channel name, and Copy channel ID.
  3. Choose either copy action and verify it copies the expected value.
  4. Open a channel, tap the header ellipsis, and verify the same action sheet appears.
  5. As an admin or owner, verify Archive appears; as an owner, verify Delete also appears. Confirm that lifecycle actions require confirmation.
  6. Long-press or open the header menu for a DM and verify it has no quick-action row and starts with Mute, followed by Copy channel name and Copy channel ID.

Screenshots

Channel menu

Regular channel — Mark Unread DM — no quick actions Archive confirmation
Regular channel actions with Mark Unread DM actions without quick actions Archive confirmation

@tellaho

tellaho commented Jul 31, 2026

Copy link
Copy Markdown
Contributor Author

@codex

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 16e38b00ba

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread mobile/lib/features/channels/channel_actions_sheet.dart Outdated
Comment thread mobile/lib/features/channels/channel_actions_sheet.dart Outdated
Comment thread mobile/lib/features/channels/channel_actions_sheet.dart
@tellaho
tellaho marked this pull request as ready for review August 2, 2026 00:44
@tellaho
tellaho requested a review from a team as a code owner August 2, 2026 00:44
npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w and others added 11 commits August 3, 2026 11:07
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho force-pushed the tho/mobile-channel-menu branch from 433c76d to 1c4aac7 Compare August 3, 2026 18:12
@brow
brow merged commit ede8d22 into main Aug 3, 2026
46 of 48 checks passed
@brow
brow deleted the tho/mobile-channel-menu branch August 3, 2026 23:23
tlongwell-block pushed a commit that referenced this pull request Aug 3, 2026
Requested by Tyler (buzz-tui df272ea1): pull main into PR #4347 as a new
commit on top, no rebase, no force. Conflict-free (predicted by merge-tree
d2fb4d4 before merging; realized tree verified to match). Main freight is
8 commits (651f637..ede8d22), none touching the terminal lane:

* commit 'ede8d22dd5b336f146e0a6d760fd9dff78a42613':
  feat(mobile): bring channel menus to desktop parity (#3940)
  feat(agents): model-tuning parity in global Agent Defaults editor (#4578)
  Polish Share Compute settings (#3735)
  fix(reactions): wrap long popover names (#3834)
  fix(desktop): clarify inherited agent parallelism (#4010)
  feat(desktop): make onboarding model defaults skippable (#3968)
  ci: add guarded desktop release cache prewarm (#4575)
  fix(mobile): recover stale relay sessions (#4372)

Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
tellaho added a commit that referenced this pull request Aug 3, 2026
…roll-navigation

* origin/main:
  feat(mobile): bring channel menus to desktop parity (#3940)
  feat(agents): model-tuning parity in global Agent Defaults editor (#4578)
  Polish Share Compute settings (#3735)
  fix(reactions): wrap long popover names (#3834)
  fix(desktop): clarify inherited agent parallelism (#4010)
  feat(desktop): make onboarding model defaults skippable (#3968)
  ci: add guarded desktop release cache prewarm (#4575)
  fix(mobile): recover stale relay sessions (#4372)
  chore(release): release Buzz Desktop version 0.5.4 (#4562)
  test(mobile): assert follow boundary semantics (#4559)
  docs(release): align desktop handoff instructions (#3988)
  fix: report agent usage per provider round, not once per turn (#4545)
  fix(desktop): harden Windows installs against Defender block and orphaned Node (#4382)
  feat(desktop): improve channel template discovery (#4549)
  fix(desktop): save key backups to authorized path (#4022)
  Add channel activity hover menu (#3935)

Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
tellaho pushed a commit that referenced this pull request Aug 4, 2026
* origin/main:
  feat(desktop): redesign the Huddle experience (#4281)
  feat(mobile): bring channel menus to desktop parity (#3940)

Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

# Conflicts:
#	desktop/src/app/AppShell.tsx
AaronGoldsmith pushed a commit to AaronGoldsmith/buzz that referenced this pull request Aug 4, 2026
* origin/main: (323 commits)
  feat(desktop): redesign the Huddle experience (block#4281)
  feat(mobile): bring channel menus to desktop parity (block#3940)
  feat(agents): model-tuning parity in global Agent Defaults editor (block#4578)
  Polish Share Compute settings (block#3735)
  fix(reactions): wrap long popover names (block#3834)
  fix(desktop): clarify inherited agent parallelism (block#4010)
  feat(desktop): make onboarding model defaults skippable (block#3968)
  ci: add guarded desktop release cache prewarm (block#4575)
  fix(mobile): recover stale relay sessions (block#4372)
  chore(release): release Buzz Desktop version 0.5.4 (block#4562)
  test(mobile): assert follow boundary semantics (block#4559)
  docs(release): align desktop handoff instructions (block#3988)
  fix: report agent usage per provider round, not once per turn (block#4545)
  fix(desktop): harden Windows installs against Defender block and orphaned Node (block#4382)
  feat(desktop): improve channel template discovery (block#4549)
  fix(desktop): save key backups to authorized path (block#4022)
  Add channel activity hover menu (block#3935)
  feat(desktop): show saved Run on settings when editing an agent (block#4539)
  fix(desktop): disambiguate provider API key labels and annotate mint key (block#4406)
  fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (block#4140)
  ...

Co-authored-by: npub1h39jmnd4xkwvmcx5najarhdxjkysvd9x5w7vsg6xuwpr9y62whvsmt2ghj <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz>
Co-authored-by: Smarty <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz>
Signed-off-by: npub1h39jmnd4xkwvmcx5najarhdxjkysvd9x5w7vsg6xuwpr9y62whvsmt2ghj <bc4b2dcdb5359ccde0d49f65d1dda695890634a6a3bcc82346e38232934a75d9@buzz.block.builderlab.xyz>

# Conflicts:
#	crates/buzz-cli/src/commands/repos.rs
shellz-n-stuff added a commit to shellz-n-stuff/buzz that referenced this pull request Aug 4, 2026
…gent-instructions

* origin/main: (42 commits)
  feat(desktop): redesign the Huddle experience (block#4281)
  feat(mobile): bring channel menus to desktop parity (block#3940)
  feat(agents): model-tuning parity in global Agent Defaults editor (block#4578)
  Polish Share Compute settings (block#3735)
  fix(reactions): wrap long popover names (block#3834)
  fix(desktop): clarify inherited agent parallelism (block#4010)
  feat(desktop): make onboarding model defaults skippable (block#3968)
  ci: add guarded desktop release cache prewarm (block#4575)
  fix(mobile): recover stale relay sessions (block#4372)
  chore(release): release Buzz Desktop version 0.5.4 (block#4562)
  test(mobile): assert follow boundary semantics (block#4559)
  docs(release): align desktop handoff instructions (block#3988)
  fix: report agent usage per provider round, not once per turn (block#4545)
  fix(desktop): harden Windows installs against Defender block and orphaned Node (block#4382)
  feat(desktop): improve channel template discovery (block#4549)
  fix(desktop): save key backups to authorized path (block#4022)
  Add channel activity hover menu (block#3935)
  feat(desktop): show saved Run on settings when editing an agent (block#4539)
  fix(desktop): disambiguate provider API key labels and annotate mint key (block#4406)
  fix(desktop): make OpenAI key re-enterable after first save in card mint dialog (block#4140)
  ...

Signed-off-by: Alex Rosenzweig <arosenzweig@squareup.com>
tellaho pushed a commit that referenced this pull request Aug 4, 2026
…er-snapshots

* origin/main:
  feat(mobile): sync per-group channel sorting (#4231)
  feat(mobile): add channel scroll navigation (#4239)
  feat(desktop): redesign the Huddle experience (#4281)
  feat(mobile): bring channel menus to desktop parity (#3940)

Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz>

# Conflicts:
#	desktop/src-tauri/src/lib.rs
tellaho added a commit that referenced this pull request Aug 4, 2026
…onfig

* origin/main:
  feat(mobile): sync per-group channel sorting (#4231)
  feat(mobile): add channel scroll navigation (#4239)
  feat(desktop): redesign the Huddle experience (#4281)
  feat(mobile): bring channel menus to desktop parity (#3940)
  feat(agents): model-tuning parity in global Agent Defaults editor (#4578)

Signed-off-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@buzz.block.builderlab.xyz>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
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.

2 participants