Skip to content

fix(mobile): show shared chats under Solo - #9348

Merged
ebroderick merged 2 commits into
mainfrom
ebroderick/mobile-shared-solo
Nov 13, 2026
Merged

ebroderick merged 2 commits into
mainfrom
ebroderick/mobile-shared-solo

Conversation

@ebroderick

@ebroderick ebroderick commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Mobile puts agent-created and shared Solo chats under Team because it checks who created the chat. Show unarchived Solo chats the viewer belongs to under Solo and exclude them from Team. Preserve membership checks, guest read-only access, legacy chats, and owner-only composing. This changes mobile classification; it needs no relay changes or data migration.

Desktop:
Screenshot 2026-11-11 at 10 00 07 AM

Mobile (missing solo chats created by agents):

Screenshot 2026-11-12 at 11 19 47 AM

Code Changes

Separate Solo list and unread classification from owner-only composing. Add regression coverage for shared and agent-created chats, Team exclusion, membership/archive filters, legacy chats, and ordinary sending from Solo.

Related issue

Related: #8963 adds mobile access controls and Solo sharing. This PR fixes the separate Solo/Team placement mismatch. No duplicate found in searches for mobile Solo issues and PRs.

Testing

Independent agent review found no blockers.

Device testing could not be completed. Android emulators stalled at launch, iOS Simulator sign-in was blocked, and iPhone installation required capabilities unavailable to the Personal Team. Shared Solo placement and sending remain unverified in an authenticated app; before/after screenshots remain pending.

Remaining manual checks:

  • Have an agent create a Solo chat and include the viewer as a member.
  • Confirm it appears once under Solo and is absent from Team.
  • Open it, send a message, and confirm owner-only Solo settings are absent.

Generated with Codex

@ebroderick

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 11, 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-12T19:14:43.603944Z f32cebd 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: f32cebd19d

ℹ️ 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".

@ebroderick
ebroderick marked this pull request as ready for review November 12, 2026 19:12
@ebroderick
ebroderick requested a review from a team as a code owner November 12, 2026 19:12
@ebroderick
ebroderick deployed to codex-review November 12, 2026 19:13 — with GitHub Actions Active
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
@github-actions

github-actions Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

🔐 Codex Security Review

Note: This is an automated, security-focused review generated by Codex.
Use it as a supplement to human review; false positives are possible.

Scope

  • Exact PR diff: 2f792c2f6b15d81dc67856168247b5ca2c5656c8...1bf3b1825611a78e8aac8add4911276e20ae06df
  • Model: gpt-6.1-sol

💡 Click "edited" above to see earlier reviews for this PR.


Review Summary

Overall Risk: NONE

No concrete security, correctness, or reliability regressions found in the authorized PR range. Membership filtering and owner-specific sending checks remain enforced.

Findings

No concrete security, correctness, or reliability findings were identified.

Notes

  • Review used read-only source, test, and history inspection. Builds and tests were not executed, as requested.

Generated by Codex Security Review |
Requested by: @ebroderick |
Workflow run

@ebroderick
ebroderick force-pushed the ebroderick/mobile-shared-solo branch from f32cebd to 8c31e9a Compare November 12, 2026 19:26
@github-actions github-actions Bot removed the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
@ebroderick
ebroderick deployed to codex-review November 12, 2026 19:26 — with GitHub Actions Active
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026

@brow brow left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Tom's pre-review recommends landing this with one small fix, #9419 shared Solo while filing loads: without it, a shared or agent-created Solo chat is listed and badged nowhere whenever the Solo organization record is still loading or unavailable, where before it stayed reachable under Team. Please merge the fix into your branch (it needs no approval there, since block/buzz's review rules cover only main and the mobile release branches), and this PR is then approved and merged on Tom's go-ahead. Report: buzz://message?channel=e71f9a2a-ac46-473d-a24e-5e16fd8cb7b1&id=2c64ba8b20782b7c512bd8002b104d12ee08a3955f72eaed0f96db8a2f766e03

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>
@github-actions github-actions Bot removed the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
@ebroderick
ebroderick deployed to codex-review November 12, 2026 21:01 — with GitHub Actions Active
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
ebroderick and others added 2 commits November 12, 2026 16:13
Use Solo metadata for list placement and unread state while keeping
creator checks for owner-only composing and sending.

Co-authored-by: coder <e509b66797ba43fd355dc12801a0c1ba376b06924147c65abdafa7ababcf8e2e@buzz.block.builderlab.xyz>
Signed-off-by: Evan Broderick <[email protected]>
## 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>
@ebroderick
ebroderick force-pushed the ebroderick/mobile-shared-solo branch from 40223c4 to 1bf3b18 Compare November 12, 2026 21:22
@github-actions github-actions Bot removed the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
@ebroderick
ebroderick deployed to codex-review November 12, 2026 21:23 — with GitHub Actions Active
@github-actions github-actions Bot added the codex-security-review-current The posted Codex security review matches its recorded range. label Nov 12, 2026
@ebroderick
ebroderick requested a review from brow November 12, 2026 21:54
@ebroderick
ebroderick enabled auto-merge (squash) November 13, 2026 16:48
@ebroderick
ebroderick merged commit 642ce41 into main Nov 13, 2026
53 checks passed
@ebroderick
ebroderick deleted the ebroderick/mobile-shared-solo branch November 13, 2026 17:11
bostonaholic added a commit that referenced this pull request Nov 13, 2026
Co-authored-by: mboston.Engineer <932d3b6ebea6cc83e091551ae46d1c7e7f8f7d0fa8e9cef5e6facc8544af413b@buzz.block.builderlab.xyz>

* origin/main:
  fix(mobile): require Builderlab consent for existing identities (#8823)
  feat(mobile): use HTTP/2 on iOS through app-wide URLSessions (#8897)
  fix(relay): publish a git push only when refs changed; check the protocol by refinement (#9425)
  fix(mobile): show shared chats under Solo (#9348)
  chore(release): release Buzz Desktop version 0.5.29 (#9456)
  feat(mobile): render messages with gpt_markdown 1.3.4 plusparse (#8945)
  fix(acp): bound observer retention by bytes (#7987) (#9436)
  Tune release codegen for faster/smaller binaries (#9434)
  feat(desktop): add dismissible banner pointing to the new buzz app (#9379)
  fix(mobile): keep publishing presence while the app is open (#9441)
  feat(mobile): share into Buzz from the iOS share sheet (#9433)
  fix(mobile): qualify every namesake mention and keep authored mention casing (#9325)
  fix(mobile): match browser GIF timing in the iOS reaction sheet (#9437)
  fix(mobile): play short-delay animation frames at browser speed (#9432)
  buzz-search: read profile names without the profile_name_fields function (#9397)
  buzz-db: build the community deletion lock key in Rust (#9396)
  fix(cli): pair for the active community, skip stopped desktops, accept a bare relay host (#9417)
  test(mobile): run push tests without a gateway dart-define (#9423)
  fix(mobile): never pop Home when archiving from channel settings (#9387)
  perf(acp): reduce observer CPU and lock overhead (#9381)

Signed-off-by: Matthew Boston <[email protected]>
bostonaholic added a commit that referenced this pull request Nov 13, 2026
…count-backfill

Co-authored-by: mboston.Engineer <932d3b6ebea6cc83e091551ae46d1c7e7f8f7d0fa8e9cef5e6facc8544af413b@buzz.block.builderlab.xyz>

* bostonaholic--agent-reply-count:
  fix(mobile): require Builderlab consent for existing identities (#8823)
  feat(mobile): use HTTP/2 on iOS through app-wide URLSessions (#8897)
  fix(relay): publish a git push only when refs changed; check the protocol by refinement (#9425)
  fix(mobile): show shared chats under Solo (#9348)
  chore(release): release Buzz Desktop version 0.5.29 (#9456)
  feat(mobile): render messages with gpt_markdown 1.3.4 plusparse (#8945)
  fix(acp): bound observer retention by bytes (#7987) (#9436)
  Tune release codegen for faster/smaller binaries (#9434)
  feat(desktop): add dismissible banner pointing to the new buzz app (#9379)
  fix(mobile): keep publishing presence while the app is open (#9441)
  feat(mobile): share into Buzz from the iOS share sheet (#9433)
  fix(mobile): qualify every namesake mention and keep authored mention casing (#9325)
  fix(mobile): match browser GIF timing in the iOS reaction sheet (#9437)
  fix(mobile): play short-delay animation frames at browser speed (#9432)
  buzz-search: read profile names without the profile_name_fields function (#9397)
  buzz-db: build the community deletion lock key in Rust (#9396)
  fix(cli): pair for the active community, skip stopped desktops, accept a bare relay host (#9417)
  test(mobile): run push tests without a gateway dart-define (#9423)
  fix(mobile): never pop Home when archiving from channel settings (#9387)
  perf(acp): reduce observer CPU and lock overhead (#9381)

Signed-off-by: Matthew Boston <[email protected]>

This branch was successfully deployed

1 active deployment
codex-review — 1bf3b182 Deployed Nov 12, 2026 by ebroderick via Run Codex Security Review #14687
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex-security-review-current The posted Codex security review matches its recorded range.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants