Skip to content

Keep Solo model and effort choices per chat - #2342

Merged
kazemek21 merged 1 commit into
mainfrom
kylez_NEXUS-4155_solo-model-effort-per-chat
Nov 4, 2026
Merged

kazemek21 merged 1 commit into
mainfrom
kylez_NEXUS-4155_solo-model-effort-per-chat

Conversation

@kazemek21

@kazemek21 kazemek21 commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

TL;DR

Solo chats retain explicit model and effort choices per chat and agent until Reset, including choices made before the first message. Untouched chats keep provider defaults.

Choices use a feature-owned IndexedDB transaction for read/merge/compare/write. The existing composer catalog, menus and scoped draft state remain their owners; no generic storage framework or second authoritative localStorage copy is added. IndexedDB is the sole authority: a missing row means no saved choice. This unreleased feature does not import earlier development-only localStorage bytes; those bytes remain untouched and non-authoritative. Scope cleanup shares the save/transfer ownership lock so an already-queued save cannot recreate deleted choices. Other windows are notified only after commit and reread the authoritative store.

Send waits for initial loading and pending-save acknowledgement. Failed reads offer Retry saved choices rather than silently using defaults; failed saves keep local intent. First-send transfer and refused-start restoration use ownership receipts, so a later edit or equal-value Reset is not overwritten. The existing toast retains the refused prompt, attachments and validated choices for Retry restoring message, including repeated ownership/storage failure.

Verification

Blox verified an uploaded content snapshot matching 6f87b1101d21f3071cf0a64ab0197ae1442a4429: typecheck, targeted lint, 622 tests across the three affected full files, and 14 browser cases across Chromium/WebKit (zero skipped/flaky). All six final changed-file hashes match the tested snapshot. Historical a004b3cd verified 709 tests across seven files plus design checks; those broader results are not claimed as a new-head run. These are content-snapshot checks, not claims that the candidate commit was checked out remotely. Pre-commit hooks ran; only duplicate types/tests/design/clippy pre-push jobs were skipped because required CI runs them. The verification box was deleted.

The latest feedback regressions fail against a004b3cd and pass with these fixes: a refused prompt-write reports the text-save cause, compensates prepared choices, and succeeds through Retry; fresh IDB initialization remains available when the unrelated localStorage read throws; and scope purge waits behind already-queued saves in both browser engines.

The failed WebKit job was not dismissed as a flake: an owned amd64 trace showed the second Web Lock holder reading stale localStorage after the first writer committed, then replacing the durable map. The transactional repair preserves both agents in the unchanged two-page regression. Mounted tests cover pending/failed edits, Send commit barriers, unavailable types, navigation and refused-start recovery. The latest regressions preserve corrective edit errors during a saved-choice read failure and retain valid first-send choices when the catalog needs no selector. Both fail with their previous production behavior and pass with the fixes. Removing the later-Reset ownership guard produces the intended regression failure; the restored source passes.

Browser cases: four added, none removed versus the merge base; this feedback batch adds one and updates one. They cover keyboard/Escape/Reset/focus, actual cross-page commits/notifications, real IDB initialization/abort/first-send compare-clear custody, and Web Lock queue ordering for purge. These browser boundaries cannot be established by jsdom; lifecycle and failure permutations remain in mounted tests. Shared menus, Button, Toast and LoadingRegion are reused without new styling. Prior picker checks covered both themes, 360/1280px widths, normal/24px text, keyboard and pointer: before selection, selected choices.

Boundaries: Cooperation is within the same storage bucket, not older clients or separate profiles. Retry retention ends when this window reloads or its notice is dismissed; it is not crash recovery. Native simultaneous WKWebView/provider execution and full-chat runtime proof remain unverified. Earlier failed attempts and test-contamination evidence remain retained; passing repetitions do not establish that every browser failure is fixed. The separate JavaScript fixture failure was repaired on main by #2444; this branch includes that merged source, not an unmerged human patch.

Related

Fixes NEXUS-4155

This is native host Solo composer behavior, separate from plugin task setup and shared-channel default routing. It does not depend on #2306 or #1909.

Part of Nexus & Agent Tooling status.

Generated with Codex (gpt-6.1-sol, high) on behalf of kylez.

@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch 4 times, most recently from 88c8568 to cc41e7a Compare November 4, 2026 03:41
@kazemek21
kazemek21 marked this pull request as ready for review November 4, 2026 07:45
@kazemek21
kazemek21 requested a review from a team as a code owner November 4, 2026 07:45
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from cc41e7a to 03b33b1 Compare November 4, 2026 08:06
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch 3 times, most recently from 8ae8b97 to f72f031 Compare November 4, 2026 09:38
@kazemek21
kazemek21 requested a review from gilgtm November 4, 2026 09:56
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from f72f031 to 100d100 Compare November 4, 2026 10:36
Comment thread src/features/solo/SoloDraft.tsx Resolved
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch 7 times, most recently from 62c78ae to f55e113 Compare November 4, 2026 13:50
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch 2 times, most recently from 7ad429b to 5001c81 Compare November 4, 2026 15:19
Comment thread src/features/solo/SoloDraft.tsx Resolved
Comment thread src/features/solo/SoloDraft.tsx Resolved

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

🤖 Cross-window preference state can regress after a completed save; details inline.

Comment thread src/features/solo/SoloDraft.tsx Resolved
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from 5001c81 to 717c9f1 Compare November 4, 2026 16:10
@kazemek21

Copy link
Copy Markdown
Contributor Author

Addressed the save-completion regression described in this review and its inline comments in 717c9f1: completion now rereads durable picks instead of adopting its historical result, retaining newer pending intent. The delayed-completion mounted test fails before this fix and verifies both the peer selection and actual send payload afterward. The recovery-lock coupling remains intentional and has a detailed retained-Retry/newer-work explanation in the inline reply. All five feedback threads now have individual dispositions and reopen invitations.

Verification on this source: typecheck, 650 affected mounted tests, and 100 Chromium/WebKit browser repetitions passed on Blox. The earlier hosted WebKit failure is not attributed to the completion race; current-head CI remains pending.

— Posted by Codex (gpt-6.1-sol) on behalf of kylez

@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from 717c9f1 to 245ceca Compare November 4, 2026 16:59

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

🤖 One remaining persistence defect is evidenced by the current-head WebKit CI artifacts.

@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from 245ceca to 94d1c8b Compare November 4, 2026 18:46
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from 94d1c8b to a004b3c Compare November 4, 2026 19:42

@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 remaining recovery/storage concerns are detailed inline.

Comment thread src/features/solo/SoloDraft.tsx Resolved
Co-authored-by: Codex <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-4155_solo-model-effort-per-chat branch from a004b3c to 6f87b11 Compare November 4, 2026 20:30
@kazemek21
kazemek21 requested a review from kalvinnchau November 4, 2026 20:48
@kazemek21
kazemek21 merged commit 340ce2b into main Nov 4, 2026
44 checks passed
@kazemek21
kazemek21 deleted the kylez_NEXUS-4155_solo-model-effort-per-chat branch November 4, 2026 20:59
loganj added a commit that referenced this pull request Nov 4, 2026
Main's #2342 keeps model choices per Solo chat: an owner's composer
sends once they load, and a first message passes its picks with its
references.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
wpfleger96 added a commit that referenced this pull request Nov 4, 2026
…-nip-fi

* origin/main:
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  fix: exclude muted channels from sidebar unread scroll indicators (#2335)
  fix(claude-code): open long Claude transcripts a page at a time (#2428)
  feat(solo): share chats as view only (#2375)

# Conflicts:
#	src/app/shell/PrimarySidebar.tsx
damienrj added a commit to damienrj/buzz-app that referenced this pull request Nov 4, 2026
…-clone-auth-ab8b97

* origin/main: (38 commits)
  feat(identity): decide a missing backup choice from community membership (block#2378)
  Offer Builderlab decisions in FI builds (block#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (block#2347)
  Add collapsible Solo and Team sidebar sections (block#2296)
  fix(codex): open long Codex transcripts a page of items at a time (block#2259)
  Keep Solo model and effort choices per chat (block#2342)
  feat(sidebar): smooth channel reordering with bounded motion (block#2108)
  Connect legacy agents from DMs and channel mentions (block#2423)
  fix: exclude muted channels from sidebar unread scroll indicators (block#2335)
  fix(claude-code): open long Claude transcripts a page at a time (block#2428)
  feat(solo): share chats as view only (block#2375)
  fix(inbox): show Solo responses under All, read live replies in the open conversation, describe toolbar badges (block#2275)
  AIDA-2434: Show saved teams in mentions (block#2339)
  AIDA-2455: Restore channel scrollbar dragging beside threads (block#2436)
  feat(agent-protection): show the owner why a protection provider denied input (block#2105)
  fix(search): show slow lookups beside their section headings (block#2442)
  Align Bestie DM layout and unread state; speed up thinking shimmer (block#2418)
  Send Claude, Pi and Goose history as exact records (block#2088)
  fix(agent-activity): align the stopped note and show it after the agent's reply (block#2441)
  fix(agents): stop orphaned Attention commands and prevent duplicate runs (block#2448)
  ...

Signed-off-by: damienrj <damien@squareup.com>
johnmatthewtennant added a commit that referenced this pull request Nov 4, 2026
* origin/main: (38 commits)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  fix: exclude muted channels from sidebar unread scroll indicators (#2335)
  fix(claude-code): open long Claude transcripts a page at a time (#2428)
  feat(solo): share chats as view only (#2375)
  ...
wpfleger96 added a commit that referenced this pull request Nov 4, 2026
…r-load-perf

* origin/main: (31 commits)
  test: fix invitation and coordination checks on main (#2517)
  perf(search): name searched people from the profile search response (#2353)
  Use the merge queue for pull requests that require it (#2452)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  ...
michaelneale added a commit that referenced this pull request Nov 4, 2026
* origin/main: (31 commits)
  test: fix invitation and coordination checks on main (#2517)
  perf(search): name searched people from the profile search response (#2353)
  Use the merge queue for pull requests that require it (#2452)
  fix(browser): load scheme-less address input over https, falling back to http (#2467)
  fix(identity): stop one-click key unlinks and show the linked backed-up key (#2486)
  fix(test): observe coordination transition events (#2297)
  fix(profiles): keep the next view's profile reads through a shrink (#2395)
  fix(channels): show Add and Send message errors above the Manage members list (#2421)
  fix(threads): keep reply hooks off agent activity bubbles (#2422)
  fix(channels): offer only Copy link in a not-joined preview's sidebar actions (#2425)
  test: scope row menu placement checks to active section rows (#2493)
  feat(relay): detach channel windows to a point in history (#2042)
  feat(identity): decide a missing backup choice from community membership (#2378)
  Offer Builderlab decisions in FI builds (#2227)
  feat(inbox): preview recent Inbox activity when hovering the sidebar row (#2347)
  Add collapsible Solo and Team sidebar sections (#2296)
  fix(codex): open long Codex transcripts a page of items at a time (#2259)
  Keep Solo model and effort choices per chat (#2342)
  feat(sidebar): smooth channel reordering with bounded motion (#2108)
  Connect legacy agents from DMs and channel mentions (#2423)
  ...

Signed-off-by: Michael Neale <michael.neale@gmail.com>
loganj added a commit that referenced this pull request Nov 5, 2026
Main's #2342 keeps model choices per Solo chat: an owner's composer
sends once they load, and a first message passes its picks with its
references.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
loganj added a commit that referenced this pull request Nov 6, 2026
Main's #2342 keeps model choices per Solo chat: an owner's composer
sends once they load, and a first message passes its picks with its
references.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
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