iOS: channels created within a project never appear in the mobile channel list (no projects surface, no pending-owner overlay)

Open
#7,780 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
50/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
dart, ios, rust
Domain
backend, mobile

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

  1. 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-channel tag on the kind:30621 project event).
  2. Open the iOS app (v0.15.0).
  3. 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/lib contains no references to kind:30621 (project), kind:30617, or the buzz-related-channel tag that records a project's channels (desktop/src/features/projects/projectChannelCreation.ts:27-53 is where Desktop writes them; desktop/src/features/sidebar renders 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).
  • 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from block/buzz

All issues in block/buzz

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.