Skip to content

fix(mobile): keep shared Solo chats listed while filing loads - #9419

Merged
ebroderick merged 1 commit into
ebroderick/mobile-shared-solofrom
mobile-shared-solo-availability
Nov 12, 2026
Merged

ebroderick merged 1 commit into
ebroderick/mobile-shared-solofrom
mobile-shared-solo-availability

Conversation

@brow

@brow brow commented Nov 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fix for a blocking review finding on #9348 (review thread).

Wait, what? #9348 removes shared and agent-created Solo chats from Team as soon as the channel list loads, but the Solo list and its unread badges waited for the separate encrypted filing record. With no usable record (fresh install or sign-in before it arrives, offline without a Me cache), those chats were listed and badged nowhere. Before #9348 they were reachable under Team.

Now: Solo builds its chat list and unread set from the channel list alone. While the filing record loads or fails, its spinner or "Try again" shows as the first item above an unfiled "Chats" list, with no project sections and no "No chats yet" empty state. Legacy (pre-label) chats and project filing join when the record arrives. New chat / New project stay disabled until then, and nothing is written from the unavailable state.

Nothing gets worse: with the record loaded, the page renders exactly as before. The only visible change is in the loading/error state, where the status moves from replacing the list to sitting above it.

Testing

Added tests:

  • me_page_test: Home with an ordinary chat and a labelled shared chat, filing record failing or still loading. The shared chat is listed under Solo, the ordinary one under Team, and the status (retry or spinner) is shown. Both fail on fix(mobile): show shared chats under Solo #9348's head.
  • me_unread_test: a labelled shared chat with a new message is counted before the record loads, and a legacy id joins once it arrives. Fails on fix(mobile): show shared chats under Solo #9348's head.

The existing "unavailable preferences show retry instead of empty state" test still passes. Full mobile suite and mobile-check pass locally.

Shared and agent-created Solo chats left Team unconditionally, but the
Me page and its unread set waited on the optional filing record. With
no usable record (fresh sign-in, offline without a Me cache), those
chats were listed and badged nowhere. Build both from the channel list
and show the record's status above the unfiled list instead.

Signed-off-by: Tom Brow <[email protected]>
Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@buzz.block.builderlab.xyz>
@brow
brow marked this pull request as ready for review November 12, 2026 20:56
@brow
brow requested a review from a team as a code owner November 12, 2026 20:56
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T20:58:02.175871Z ad56692 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ebroderick
ebroderick merged commit 40223c4 into ebroderick/mobile-shared-solo Nov 12, 2026
45 checks passed
@ebroderick
ebroderick deleted the mobile-shared-solo-availability branch November 12, 2026 21:01
ebroderick pushed a commit that referenced this pull request Nov 12, 2026
## Summary

Fix for a blocking review finding on #9348 ([review
thread](buzz://message?channel=95213a25-483a-458b-9bc3-71891fa5aef6&id=8ad087852227b50d614760eb4778734e306faf70df77e0ecd16cb5816b865bbc)).

**Wait, what?** #9348 removes shared and agent-created Solo chats from
Team as soon as the channel list loads, but the Solo list and its unread
badges waited for the separate encrypted filing record. With no usable
record (fresh install or sign-in before it arrives, offline without a Me
cache), those chats were listed and badged nowhere. Before #9348 they
were reachable under Team.

**Now:** Solo builds its chat list and unread set from the channel list
alone. While the filing record loads or fails, its spinner or "Try
again" shows as the first item above an unfiled "Chats" list, with no
project sections and no "No chats yet" empty state. Legacy (pre-label)
chats and project filing join when the record arrives. New chat / New
project stay disabled until then, and nothing is written from the
unavailable state.

**Nothing gets worse:** with the record loaded, the page renders exactly
as before. The only visible change is in the loading/error state, where
the status moves from replacing the list to sitting above it.

### Testing

Added tests:
- `me_page_test`: Home with an ordinary chat and a labelled shared chat,
filing record failing or still loading. The shared chat is listed under
Solo, the ordinary one under Team, and the status (retry or spinner) is
shown. Both fail on #9348's head.
- `me_unread_test`: a labelled shared chat with a new message is counted
before the record loads, and a legacy id joins once it arrives. Fails on
#9348's head.

The existing "unavailable preferences show retry instead of empty state"
test still passes. Full mobile suite and `mobile-check` pass locally.

Signed-off-by: Tom Brow <[email protected]>
Co-authored-by: Tom Brow <[email protected]>
Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@buzz.block.builderlab.xyz>
Signed-off-by: Evan Broderick <[email protected]>
Co-authored-by: coder <e509b66797ba43fd355dc12801a0c1ba376b06924147c65abdafa7ababcf8e2e@buzz.block.builderlab.xyz>
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