Skip to content

Restore provider defaults from the model picker - #33395

Open
gentslava wants to merge 34 commits into
stablyai:mainfrom
gentslava:gentslava/upstream-model-default
Open

gentslava wants to merge 34 commits into
stablyai:mainfrom
gentslava:gentslava/upstream-model-default

Conversation

@gentslava

@gentslava gentslava commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

ELI5

Choose Default to remove a chat’s model override and keep the provider’s verified default visible.

What Changed

Adds capability-gated model reset and verified execution-host default metadata across desktop and mobile. Reset ownership, pending sends and newer option writes remain fenced; effort/Fast changes keep Default selected. This refresh preserves upstream live option snapshots and capability tree shaking. The existing setOptionPlan is mechanically split to retain the 300-line limit.

Why

Selecting a concrete chat model permanently replaced the global default without a reset action. The reset reuses the existing options pipeline and saved launch settings instead of adding another preference system.

Linked Issue

Fixes #13794

Visual Proof

No current-head before/after capture was produced for this refresh. Automated UI and send-lifetime tests pass; rendered, authenticated-provider and physical-device acceptance remain pending.

Testing

Current head: 21e632727ebfb3166fbb125abbb4e12de85ecc5f. Ordinary forward merge of upstream main 8a4dd3a7bb9bd7f96b68dec621433431d77dc8c1. Updated affected imports to their current owners.

All five desktop/runtime TypeScript projects pass with the supported tsrs compiler. The complete affected source test files pass 220 tests. Mobile application typecheck passes. The affected mobile selection passes 74 tests.

Normal commit hooks pass. Final changed-path gate: all non-unit checks passed; broad related-unit selection exceeded the one-minute limit and remains incomplete locally. No new installed-app/device, live-provider, SSH, Windows or Linux acceptance is claimed for this maintenance refresh.

Risk

Level: Medium

Saved launch settings and async model writes are the main risks: stale responses could restore an override or send with the wrong choice. Generation, record and host capability fences remain in place. A plain revert removes the reset UI; it cannot restore overrides already cleared by the user.

AI Disclosure

Implemented and checked with Codex assistance. The contributor owns the change and validation.

Review

The reset-generation marker and mobile pending-model send findings remain fixed. Host regressions also cover saved-only metadata reads, no extra catalog probes, Default persistence through effort picks, and damaged-runtime option replay.

Agent skill upstream boundary

  • Not applicable; this change copies no upstream skill-installer implementation or documentation.

Notes

Optional capability gating preserves independently updated desktop/mobile clients and execution hosts. The current ordinary merge retains the original contribution and upstream ancestry; validation above describes the current head.

Checklist

  • This PR is focused on the feature described above
  • What changed, why, risk and rollback are described
  • Earlier visual evidence or N/A reason is included
  • Self-reviewed for correctness, security and performance
  • Cross-platform, remote, folder-workspace, mobile and mixed-version impact considered
  • Full lint, typecheck, test and build gates pass at this head

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review.

Walkthrough

The changes add configured model-default metadata and reset operations for structured sessions. They add explicit queued delivery and steering for drafts, plus host-gated queued-message reordering. Desktop and mobile interfaces expose these controls and handle capability-dependent states. Shared contracts, host behavior, and tests cover these changes.

Estimated code review effort: 5 (Critical), 90 minutes

Severity of issue fixed: Low

Merge Risk: Minimal · previous review 0d675

No actionable merge-blocking issue is established by the available evidence; merge after the normal checks complete.

Pre-merge checks: Passed 2 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Out of Scope Changes check Warning The pull request includes changes that do not implement the Default/reset requirement in [#13794]. Examples include queued-message movement and RPC support, steer-draft transport and keyboard behavior… Remove or split the queued-message movement, steer-draft, queue-follow-up settings, and related RPC, capability, UI, and test changes into separate pull requests. Keep changes required for the Default choice, model-override reset, compatibi…
Description check Warning The description is focused and covers the change, motivation, linked issue, testing, risk, AI disclosure, compatibility notes, and rollback. However, this UI change does not provide the required befor… Attach current before-and-after screenshots or a video that shows the model-picker reset behavior. If there is truly no visual or interaction change, replace the current Visual Proof text with N/A and briefly explain why.
Passed Passed checks: 2 passed

Check name Status Explanation
Linked Issues check Passed [#13794] The model picker adds a Default action and uses a reset path instead of a synthetic model value. The reset path clears the persisted model override and preserves the effective host default wh…
Title check Passed The title clearly and concisely describes the primary change: restoring provider defaults through the model picker.
Full details: Linked Issues check

Explanation

[#13794] The model picker adds a Default action and uses a reset path instead of a synthetic model value. The reset path clears the persisted model override and preserves the effective host default when verified; it reports Default model not reported when the host cannot prove that default. Capability-gated wiring covers older hosts. Focused desktop, host, and mobile tests cover reported and unknown defaults, reset behavior, legacy hosts, and future-message handling.

Full details: Out of Scope Changes check

Explanation

The pull request includes changes that do not implement the Default/reset requirement in [#13794]. Examples include queued-message movement and RPC support, steer-draft transport and keyboard behavior, queue-follow-up settings, and related capability and UI changes. The stacked-PR description does not make these changes part of [#13794].

Resolution

Remove or split the queued-message movement, steer-draft, queue-follow-up settings, and related RPC, capability, UI, and test changes into separate pull requests. Keep changes required for the Default choice, model-override reset, compatibility, and their tests for [#13794].

Full details: Description check

Explanation

The description is focused and covers the change, motivation, linked issue, testing, risk, AI disclosure, compatibility notes, and rollback. However, this UI change does not provide the required before-and-after visual proof and does not use the required N/A explanation.

Resolution

Attach current before-and-after screenshots or a video that shows the model-picker reset behavior. If there is truly no visual or interaction change, replace the current Visual Proof text with N/A and briefly explain why.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Recent review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b5d3dcc2-2487-4dd2-a451-3c8b4845835e
Commits

Reviewing files that changed from the base of the PR and between 2f106a5 and 0d67516.

Files ignored due to path filters: 1

  • src/shared/rpc-contract/rpc-params-catalog.generated.ts is excluded by !**/*.generated.*
Files selected for processing: 67

  • mobile/src/session/MobileNativeChatSessionOptionPickers.test.ts
  • mobile/src/session/MobileNativeChatSessionOptionPickers.tsx
  • mobile/src/session/MobileNativeChatSessionOptionRows.tsx
  • mobile/src/session/mobile-native-chat-controller-contract.ts
  • mobile/src/session/mobile-native-chat-session-option-labels.ts
  • mobile/src/session/mobile-structured-agent-session-contract.ts
  • mobile/src/session/mobile-structured-agent-session-host-support.ts
  • mobile/src/session/use-mobile-native-chat-controller.ts
  • mobile/src/session/use-mobile-structured-agent-options.test.ts
  • mobile/src/session/use-mobile-structured-agent-options.ts
  • mobile/src/session/use-mobile-structured-agent-session-send.test.tsx
  • mobile/src/session/use-mobile-structured-agent-session.ts
  • mobile/src/session/use-mobile-structured-native-chat-send-bridge.ts
  • mobile/src/session/use-mobile-structured-option-state.ts
  • mobile/src/session/use-mobile-structured-option-surface.ts
  • mobile/src/session/use-mobile-structured-send-with-outcome.ts
  • src/main/runtime/agent-session-record-options.ts
  • src/main/runtime/rpc/methods/structured-agent-session-queued-edit.test.ts
  • src/main/runtime/rpc/methods/structured-agent-session-queued-methods.ts
  • src/main/runtime/rpc/methods/structured-agent-session-schemas.ts
  • src/main/runtime/structured-agent-session-codex-turn-end-settlement.test.ts
  • src/renderer/src/components/native-chat/NativeChatComposer.tsx
  • src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
  • src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageCard.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.inline-edit.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx
  • src/renderer/src/components/native-chat/native-chat-session-option-labels.ts
  • src/renderer/src/components/native-chat/native-chat-structured-composer-dispatch.ts
  • src/renderer/src/components/native-chat/structured-agent-session-pending-sends.ts
  • src/renderer/src/components/native-chat/structured-agent-session-queue-request.ts
  • src/renderer/src/components/native-chat/structured-agent-session-send-attempt.ts
  • src/renderer/src/components/native-chat/structured-agent-session-send-slot.ts
  • src/renderer/src/components/native-chat/structured-agent-session-status-hooks.ts
  • src/renderer/src/components/native-chat/use-native-chat-composer-keydown.steer.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-composer-keydown.ts
  • src/renderer/src/components/native-chat/use-native-chat-composer-submit.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-composer-submit.ts
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-send.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-send.ts
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-transport.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-option-state.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-queued-messages.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session.ts
  • src/renderer/src/components/settings/ChatBehaviorSetting.test.tsx
  • src/renderer/src/components/settings/ChatBehaviorSetting.tsx
  • src/renderer/src/i18n/locales/en.json
  • src/shared/agent-session-options-result.ts
  • src/shared/agent-session-queued-message-wire.ts
  • src/shared/agent-session-record.ts
  • src/shared/agent-session-runtime-capabilities.ts
  • src/shared/agent-session-wire.ts
  • src/shared/native-chat-session-option-defaults.ts
  • src/shared/native-chat-session-options.ts
  • src/shared/rpc-contract/structured-agent-session-params.ts
  • src/shared/structured-agent-session-option-view.ts
  • src/shared/structured-agent-session-options.ts
  • src/shared/structured-agent-session-send-mutation.ts
Files skipped from review as they are similar to previous changes: 2

  • src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
  • src/renderer/src/i18n/locales/en.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.

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

Actionable comments posted: 1


Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 20bc386a-89af-4eef-9c63-4791f3563195
Commits

Reviewing files that changed from the base of the PR and between 0a664b0 and c203293.

Files ignored due to path filters: 1
  • src/shared/rpc-contract/rpc-params-catalog.generated.ts is excluded by !**/*.generated.*
Files selected for processing: 114
  • mobile/src/session/MobileNativeChatSessionOptionPickers.test.ts
  • mobile/src/session/MobileNativeChatSessionOptionPickers.tsx
  • mobile/src/session/MobileNativeChatSessionOptionRows.tsx
  • mobile/src/session/mobile-native-chat-controller-contract.ts
  • mobile/src/session/mobile-native-chat-permission-option-style.ts
  • mobile/src/session/mobile-native-chat-session-option-labels.ts
  • mobile/src/session/mobile-structured-agent-session-contract.ts
  • mobile/src/session/mobile-structured-agent-session-host-support.ts
  • mobile/src/session/use-mobile-native-chat-controller.ts
  • mobile/src/session/use-mobile-native-chat-session-option-controller.ts
  • mobile/src/session/use-mobile-structured-agent-options.test.ts
  • mobile/src/session/use-mobile-structured-agent-options.ts
  • mobile/src/session/use-mobile-structured-agent-session.ts
  • mobile/src/session/use-mobile-structured-model-default.ts
  • mobile/src/session/use-mobile-structured-option-surface.ts
  • mobile/src/session/use-mobile-structured-session-option-stamp.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-entry.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-independent-discovery.test.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-live-listing.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service-contract.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service.test.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-store.ts
  • src/main/native-chat/agent-session-journal/command-receipt-schema.ts
  • src/main/native-chat/agent-session-journal/journal-queued-messages.ts
  • src/main/native-chat/agent-session-journal/queued-message-move.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-execution-options.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-goal-steering.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-host-mutations.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-host.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-launch-permission.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-launch-permission.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-message-options.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-model-default.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-model-default.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-mutation-plans.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-mutation-turn-context.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-options-read.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-queued-move.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-queued-move.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-queued-wiring.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-startup-attempt.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-status-summary-equality.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-status-summary.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-steer-draft.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-turns.ts
  • src/main/runtime/agent-session-record-options.ts
  • src/main/runtime/rpc/methods/structured-agent-session-queued-edit.test.ts
  • src/main/runtime/rpc/methods/structured-agent-session-queued-methods.ts
  • src/main/runtime/rpc/methods/structured-agent-session-schemas.ts
  • src/main/runtime/structured-agent-session-codex-turn-end-settlement.test.ts
  • src/renderer/src/components/native-chat/NativeChatAgentMessageRow.test.tsx
  • src/renderer/src/components/native-chat/NativeChatComposer.tsx
  • src/renderer/src/components/native-chat/NativeChatComposerActions.test.tsx
  • src/renderer/src/components/native-chat/NativeChatComposerActions.tsx
  • src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageCard.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.inline-edit.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.test.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageList.tsx
  • src/renderer/src/components/native-chat/NativeChatQueuedMessageMenu.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.tsx
  • src/renderer/src/components/native-chat/native-chat-composer-types.ts
  • src/renderer/src/components/native-chat/native-chat-session-option-labels.ts
  • src/renderer/src/components/native-chat/native-chat-structured-composer-dispatch.ts
  • src/renderer/src/components/native-chat/structured-agent-session-option-test-data.ts
  • src/renderer/src/components/native-chat/structured-agent-session-pending-sends.ts
  • src/renderer/src/components/native-chat/structured-agent-session-queue-request.ts
  • src/renderer/src/components/native-chat/structured-agent-session-send-attempt.ts
  • src/renderer/src/components/native-chat/structured-agent-session-send-slot.ts
  • src/renderer/src/components/native-chat/structured-agent-session-status-hooks.ts
  • src/renderer/src/components/native-chat/use-native-chat-composer-keydown.steer.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-composer-keydown.ts
  • src/renderer/src/components/native-chat/use-native-chat-composer-submit.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-composer-submit.ts
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-send.test.tsx
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-send.ts
  • src/renderer/src/components/native-chat/use-native-chat-structured-composer-transport.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-model-default.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-option-write.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-queue-working.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-queued-messages.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session.ts
  • src/renderer/src/components/settings/ChatBehaviorSetting.test.tsx
  • src/renderer/src/components/settings/ChatBehaviorSetting.tsx
  • src/renderer/src/components/settings/ChatSettingsSection.test.tsx
  • src/renderer/src/components/settings/chat-behavior-search.ts
  • src/renderer/src/hooks/settings-navigation-interface-sections.ts
  • src/renderer/src/i18n/en-runtime-required.json
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/runtime/structured-agent-session-host-capability.ts
  • src/shared/agent-session-default-model.ts
  • src/shared/agent-session-options-result.ts
  • src/shared/agent-session-queued-message-wire.ts
  • src/shared/agent-session-record.ts
  • src/shared/agent-session-runtime-capabilities.ts
  • src/shared/agent-session-wire.ts
  • src/shared/native-chat-session-option-defaults.ts
  • src/shared/native-chat-session-options.ts
  • src/shared/rpc-contract/client-settings-params.ts
  • src/shared/rpc-contract/structured-agent-session-location-params.ts
  • src/shared/rpc-contract/structured-agent-session-params.ts
  • src/shared/rpc-contract/structured-agent-session-queued-edit-params.ts
  • src/shared/structured-agent-session-option-view.test.ts
  • src/shared/structured-agent-session-option-view.ts
  • src/shared/structured-agent-session-options.ts
  • src/shared/structured-agent-session-send-mutation.ts
Files with no reviewable changes: 1
  • src/renderer/src/components/native-chat/NativeChatAgentMessageRow.test.tsx

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

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

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

Minor · Block sends while the model write is pending. · use-mobile-structured-agent-options.ts:253-255

mobile/src/session/use-mobile-structured-agent-options.ts:253-255
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Block sends while the model write is pending.

When pendingOptionRef.current === 'model', sendSelection() returns undefined. The send path still calls sendMobileStructuredAgentSessionMessage, and its conditional spread omits options. The message can therefore reach the host without the model the user just selected. Wait for the model write to finish or reject the send while it is pending.


Review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: de5e92c8-bf49-4d98-b85a-b3318b4e179a
Commits

Reviewing files that changed from the base of the PR and between a022931 and 6d82a1d.

Files selected for processing: 24
  • mobile/src/session/MobileNativeChatModelPill.tsx
  • mobile/src/session/MobileNativeChatSessionOptionPickers.test.ts
  • mobile/src/session/MobileNativeChatSessionOptionRows.tsx
  • mobile/src/session/use-mobile-structured-agent-options.test.ts
  • mobile/src/session/use-mobile-structured-agent-options.ts
  • mobile/src/session/use-mobile-structured-option-state.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service-contract.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service.test.ts
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-model-default.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-model-default.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-options-read.test.ts
  • src/main/native-chat/agent-session-wire/structured-agent-session-options-read.ts
  • src/renderer/src/components/native-chat/NativeChatModelCombobox.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionChoiceBody.tsx
  • src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-option-state.ts
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.test.tsx
  • src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
  • src/renderer/src/i18n/locales/en.json
  • src/shared/agent-session-options-result.ts
  • src/shared/native-chat-session-options.ts
  • src/shared/structured-agent-session-default-model-choice.ts
  • src/shared/structured-agent-session-options.ts
Files skipped from review as they are similar to previous changes: 2
  • src/main/native-chat/agent-model-catalog/agent-model-catalog-service-contract.ts
  • src/renderer/src/i18n/locales/en.json

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.

@gentslava

Copy link
Copy Markdown
Contributor Author

Addressed the outside-diff finding in review 5641749074 with commit 6aa4da54c1bb905c46c0ff3815eef090dbf30487.

The mobile send seam now reads the existing pending-model ref independently of sendOptions support and rejects a message while either an explicit model pick or Default reset is in flight. The composer uses the same readiness check before clearing its draft; a rejected attempt creates no send RPC, accepted optimistic row, or unknown hold. Once the write settles, a fresh send carries the accepted explicit selection, while Default, unknown original models, and older hosts retain their valid no-options behavior. Host commands keep their existing dispatch path.

Validation on Node 24.22.0 with ORCA_BACKGROUND_LAUNCH=1:

  • Red: the actual useMobileStructuredAgentSession harness reproduced four wrongly accepted sends with delayed model/reset RPCs on modern and legacy hosts.
  • Green: 200 targeted mobile tests passed across 21 files; the final send regression file passed all 28 tests, including same-tick draft preservation, failed writes, and session-switch mutation ownership.
  • Mobile application typecheck, mobile test-typecheck ratchet (1,109 files; 98 existing grandfathered files; baseline unchanged), Node/web typechecks, changed-lines quality gate, and normal commit hooks passed.

Pushed to gentslava: gentslava/upstream-model-default. This finding has no inline thread to resolve.

@gentslava

Copy link
Copy Markdown
Contributor Author

Addressed the Out of Scope warning in ordinary forward cleanup 8827c8c20bc058570b123ee65432629ed6d4058b. The final effective contribution against pinned main 7d6603aa1766eb4cac079f8d6d2f4e67f251574a is 73 paths (+2,798/-441), down from 125; all 54 restored original paths match main exactly. Queue movement and its journal/RPC/capability/UI/tests, steer-draft transport/execution/keyboard behavior, queue-follow-up settings, and unrelated desktop/mobile future-turn picker behavior were removed. The PR description no longer claims a #33362 stack, and #13794's requirements were not broadened.

The retained change is Default/model-override reset, verified execution-host default preview, optional compatibility metadata/guards and their regression coverage. Existing baseline queue coverage ensures an accepted reset leaves already running/queued choices intact. Existing mechanical splits preserve baseline behavior under unchanged size limits.

Independent review also reproduced a P2 in the retained Default feature: an accepted effort pick could recreate the saved concrete model override. 6a2f2fc36d18919a5c9f95e899c86e94749fdaf2, followed by import correction d743c214145ebfe5beb263a31098b0f3fcbe000e, passes actual requested-option intent through the existing projection and sends adoptModelAsLaunchDefault: false for effort/Fast while Default is selected. Sparse/full host replies preserve inheritance and model-scoped values; explicitly selecting the same concrete model still exits Default. Independent actual-producer/schema/settings/new-launch probes reproduce the parent failure and pass at the final repair.

At exact published d743c214145ebfe5beb263a31098b0f3fcbe000e, final author qualification passed 103 whole desktop/shared/runtime files / 1,144 tests, 23 mobile files / 231 tests, four actual Bun CI projects, both mobile typechecks, changed-quality over 72 sources with zero new findings, catalog/generator/format/unchanged-ratchet gates and normal hooks. The cleanup-hook pass is author-attested from the archived tool receipt, without a separate raw log; repair/import hook logs are retained. This is bounded local evidence: complete repository lint/typecheck/test/build and full-app/live/device acceptance remain unclaimed, and upstream PR Checks still require maintainer approval. The scope warning is a top-level comment, with no inline thread to resolve.

@gentslava
gentslava requested a review from Jinwoo-H as a code owner October 26, 2026 00:24
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 26, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 27, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 27, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
gentslava added a commit to gentslava/orca that referenced this pull request Oct 28, 2026
@gentslava
gentslava force-pushed the gentslava/upstream-model-default branch from ac5bdc5 to 34bb031 Compare October 28, 2026 09:18
@gentslava gentslava changed the title feat(chat): restore provider defaults from the model picker Restore provider defaults from the model picker Oct 28, 2026
@gentslava
gentslava force-pushed the gentslava/upstream-model-default branch from 34bb031 to 21a3dae Compare October 28, 2026 10:54
gentslava added a commit to gentslava/orca that referenced this pull request Oct 31, 2026
# Conflicts:
#	mobile/src/session/mobile-native-chat-controller-contract.ts
#	mobile/src/session/mobile-structured-agent-session-host-support.ts
#	mobile/src/session/native-chat/input/native-chat-session-option-copy.ts
#	src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
#	src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
#	src/renderer/src/i18n/locales/en.json
#	src/renderer/src/i18n/locales/ru.json
gentslava pushed a commit to gentslava/orca that referenced this pull request Oct 31, 2026
# Conflicts:
#	mobile/src/i18n/locales/en.json
#	mobile/src/i18n/locales/ru.json
#	mobile/src/session/mobile-native-chat-controller-contract.ts
#	mobile/src/session/mobile-structured-agent-session-host-support.ts
#	mobile/src/session/native-chat/input/native-chat-session-option-copy.ts
#	src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
#	src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
#	src/renderer/src/i18n/locales/en.json
#	src/renderer/src/i18n/locales/ru.json
gentslava pushed a commit to gentslava/orca that referenced this pull request Oct 31, 2026
# Conflicts:
#	mobile/src/i18n/locales/en.json
#	mobile/src/i18n/locales/ru.json
#	mobile/src/session/mobile-native-chat-controller-contract.ts
#	mobile/src/session/mobile-structured-agent-session-host-support.ts
#	mobile/src/session/native-chat/input/native-chat-session-option-copy.ts
#	src/renderer/src/components/native-chat/NativeChatSessionOptionPickers.test.tsx
#	src/renderer/src/components/native-chat/use-structured-agent-session-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-send-options.ts
#	src/renderer/src/components/native-chat/use-structured-agent-session-sends.ts
#	src/renderer/src/i18n/locales/en.json
#	src/renderer/src/i18n/locales/ru.json
# Conflicts:
#	src/main/native-chat/agent-model-catalog/agent-model-catalog-lookup.ts

This branch has not been deployed

No deployments
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.

[Bug]: Claude Chat model picker permanently overrides the global default with no reset option

1 participant