iOS: channels created within a project never appear in the mobile channel list (no projects surface, no pending-owner overlay)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 50/100
Research direction
Start with mobile/lib/features/channels/channel_directory.dart and channels_provider.dart, then compare Desktop's projectChannelCreation.ts and channels.rs pending-owner handling. Reproduce a project channel on the affected iOS account and inspect membership discovery, refresh behavior, and live updates alongside crates/buzz-relay/src/handlers/side_effects.rs. Done means project channels reliably appear in the mobile list, including the reported post-creation case.
Written by the indexing model from the issue text.
Description
Describe the bug
Channels that are created within a project (project-related channels) do not show up in the iOS app's channel list, although the same channels are visible in the Desktop app's Projects sidebar. The inbox on iOS is the only surface where new conversations should appear, so these channels are effectively unreachable from the phone.
Steps to reproduce
- On Desktop, create a project and add a channel to it (owner-reviewed "add channel" flow → channel is created and bound to the project via a
buzz-related-channeltag on the kind:30621 project event). - Open the iOS app (v0.15.0).
- The project's channels never appear in the channel list — neither right after creation nor after later refreshes.
Expected behavior
Channels bound to a project I own/am a member of should appear in the iOS channel list, or the iOS app should have a Projects surface like Desktop does.
Investigation (from source at ef2aa1a)
- The mobile app has no projects surface at all:
mobile/libcontains no references to kind:30621 (project), kind:30617, or thebuzz-related-channeltag that records a project's channels (desktop/src/features/projects/projectChannelCreation.ts:27-53is where Desktop writes them;desktop/src/features/sidebarrenders them). - The iOS channel list is built from exactly two sources:
- the user's kind:39002 memberships, queried with a
#p:<my-pubkey>filter (mobile/lib/features/channels/channel_directory.dart:83-93,mobile/lib/features/channels/channels_provider.dart:194-197), plus kind:39000 metadata for those ids; - the open-channel directory (global kind:39000 query) — non-member private channels are explicitly dropped (
channels_provider.dart:292).
- the user's kind:39002 memberships, queried with a
- Desktop compensates for a race the mobile app does not: after
create_channel, the relay provisions the creator's kind:39002 membership asynchronously, and Desktop overlays a local "pending-owner" mark so the channel still shows (desktop/src-tauri/src/commands/channels.rs:332-343). Mobile has no equivalent overlay — if the async membership entry is delayed or fails, the channel can never appear on iOS, while Desktop keeps showing it. - Additionally, kind:39000/39002 discovery events are stored channel-scoped and are not fanned out to live subscriptions — clients only discover them via historical REQ queries (
crates/buzz-relay/src/handlers/side_effects.rs:1048-1050). So a freshly created project channel can only surface after the next full list refresh (mobile uses a 60s backstop), never live.
A relay-side check in our workspace showed the owner's kind:39002 membership is present for the project channels visible to my agent identity, so at least some cases are a delay/visibility problem rather than permanent absence — but the affected channels on the reporting device may differ (agent identities only see channels they are members of). Needs repro on the affected account/channels.
Version and platform
- Buzz version: 0.15.0 (iOS)
- OS: iPhone 13, iOS 18.7.7
Logs / additional context
Cross-reference: #1761 (kind:39002 membership provisioning), #3293 (mobile live-update regressions around channel windows).
- Dominant language
- Rust
- Stars
- 33.7k
- Forks
- 4.4k
- Avg merge
- 1d 21h
- Merged PRs (30d)
- 239
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from block/buzz
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
workflow_sink's mention parser never masks code regions — @name inside a code span wakes the agent Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 Half a day Newbie friendliness 88/100
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug team:backend track:services-maintenance
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cowprotocol/services#4950 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
gitbutlerapp/gitbutler#15998 · 1 comment ·