Skip to content

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

Description

@arthur-albuquerque

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions