Skip to content

Show disabled plugin chats in Solo - #3456

Merged
kazemek21 merged 7 commits into
mainfrom
kylez_NEXUS-4661_disabled-plugin-chats
Nov 13, 2026
Merged

kazemek21 merged 7 commits into
mainfrom
kylez_NEXUS-4661_disabled-plugin-chats

Conversation

@kazemek21

@kazemek21 kazemek21 commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

TL;DR

When a plugin is explicitly disabled, its existing labeled chats appear in the ordinary Solo inventory instead of a plugin-off recovery section. Re-enabling the plugin returns those chats to its region without changing their IDs or labels.

What

  • Show chats from explicitly disabled plugins in the existing Solo inventory.
  • Keep genuine loading, failure, and unavailable states in recovery.
  • Preserve region ownership guards so disabled chats cannot be moved or converted through ordinary chat actions.

How

The host keeps region labels and filing guards while excluding disabled chats from plugin placement. The existing Solo inventory then renders each chat once.

Coverage

A focused browser scenario exercises the plugin settings toggle, ordinary Solo row, and message identity before and after disable/re-enable. It passed on Chromium and WebKit. The same journey covers pointer-driven filing refusal. Component tests cover projection, ownership guards, and simultaneous enabled/disabled region composition.

On the rebased candidate, the configured pnpm lint, pnpm typecheck, and pnpm design:check passed in an isolated Linux checkout. All 176 focused Vitest cases passed across SoloRegions.test.tsx, solo-navigation.test.ts, and claude-code/setup.test.ts. The full solo-region-state.spec.mjs file passed in Chromium and WebKit (two cases per engine). Negative controls caught duplicate rows and silent filing refusal. No browser cases were removed; pointer hit testing and the settings-to-sidebar lifecycle are the browser-only boundaries.

The release-failure test now retains a supported older release instead of one below the existing minimum; the production minimum and below-minimum coverage are unchanged.

Related work

This preserves the independent hidden-region behavior in #3415 and Activity navigation changes in #2555, and retains the draft context behavior from #3429.

Risk

This changes host presentation only; it does not change plugin activation, storage, authorization, labels, or chat lifecycle. Native WKWebView integration was not tested.

After merge

Users need the normal Buzz host release to receive this change; reinstalling or reloading a plugin alone will not deliver the host update.

Updated by Codex (gpt-6.1-sol, high) on behalf of kylez.

@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4661_disabled-plugin-chats branch 3 times, most recently from 477d55d to 8ae8600 Compare November 13, 2026 08:16
kazemek21 and others added 6 commits November 13, 2026 07:21
Present existing chats from an explicitly disabled plugin in the normal Solo inventory. Keep their region labels and filing guards dormant so re-enabling restores plugin-owned placement, while genuine recovery states remain in recovery.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
Surface the existing filing refusal for ordinary-looking managed chats. Cover mixed region composition and pointer-driven refusal without changing region ownership.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
Keep explicit-disabled fallback compatible with hidden regions and restore hidden ownership on re-enable. Keep the failed-release fixture on a supported retained version.

Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4661_disabled-plugin-chats branch from a02bafc to c79c56e Compare November 13, 2026 15:42
@kazemek21
kazemek21 marked this pull request as ready for review November 13, 2026 16:01
@kazemek21
kazemek21 requested a review from a team as a code owner November 13, 2026 16:01

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 Two test defects: the new browser journey races drag-sensor cleanup, and the disabled-chip assertion does not match its fixture. Details inline.

@dr0uleau
dr0uleau requested a review from a team November 13, 2026 16:20
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>

@gilgtm gilgtm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🤖 No P0/P1 findings at a1f6ae1.

Posted by duel-review skill [driver: codex(high), mode: deep-dual, review synthesized by codex(high)]

@dr0uleau
dr0uleau requested a review from a team November 13, 2026 17:05
@kazemek21
kazemek21 merged commit 496524e into main Nov 13, 2026
127 of 129 checks passed
@kazemek21
kazemek21 deleted the kylez_NEXUS-4661_disabled-plugin-chats branch November 13, 2026 17:29
joshfriend added a commit that referenced this pull request Nov 13, 2026
* origin/main: (153 commits)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  perf(messages): prepare a message once for its renderer and link previews (#3466)
  fix(composer): speed up long pastes and paste office text as text (#3441)
  ...

# Conflicts:
#	docs/plugin-authoring-guide.md
joshfriend added a commit that referenced this pull request Nov 13, 2026
…when-ready

* origin/main: (21 commits)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  ...
joshfriend added a commit that referenced this pull request Nov 13, 2026
…n-on-github

* origin/main: (21 commits)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  perf: count member access once and scope find highlights to painting (#3464)
  ...
joshfriend added a commit that referenced this pull request Nov 13, 2026
* origin/main: (31 commits)
  Let plugin panels name their tab with panels.useTabTitle (#3251)
  fix(agents): report a conversation wake that fails before its turn starts (#2192)
  fix(usage): read Claude transcripts over 50 MB a page at a time (#3498)
  feat(agents): preview where interrupted agents were working before resume (#3494)
  perf(messages): close the editor and delete dialog on submit (#3493)
  feat(messages): quote selected message text into the composer (#2392)
  perf(toast): scope docked clearance to the toast host (#3489)
  fix(unread): undo exact captured ordinary reads conditionally (#3473)
  fix(solo): keep navigation responsive during chat deletion (#3488)
  fix(channels): keep custom thread tab names until the tab closes (#3458)
  perf(relay): verify cached history in the native host (#3426)
  fix(settings): refine claude and typesafe key setup dialogs (#3391)
  Update bundled help for Bestie and agent settings (#3194)
  feat(profiles): share and show a local time zone (#3332)
  Revert "feat(link-previews): unfurl web links below messages by default" (#3480)
  Show disabled plugin chats in Solo (#3456)
  perf(messages): host one context menu per message list (#3465)
  test(claude): keep the quit-release test copy above the minimum version (#3477)
  fix(profiles): restore verified names from the device cache (#3382)
  fix(mentions): show addressed agents first in Solo audience picker (#2856)
  ...
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