feat(swift-ios): choose the reasoning level from the composer - #7344
feat(swift-ios): choose the reasoning level from the composer#7344saphid wants to merge 9 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — The PR introduces a new descriptor-backed traits picker in the iOS composer and changes which model-option values can be selected and sent on existing message flows. Its scope is contained, but the new production workflow and cross-layer selection behavior warrant human review. You can add or adjust custom eligibility rules. Learn more. |
1f39d72 to
fce7740
Compare
8415ea9 to
d3c5630
Compare
|
Need this updated and also screenshots/vids |
d3c5630 to
6cf8887
Compare
|
@t3dotgg Updated: the branch is now on the current |
The composer's reasoning level was read-only, so changing it meant opening the model picker and reconfiguring the model. Make it an inline selector instead. The levels are read from the selected model's own option descriptor, so the client never assumes which levels a provider exposes, and choosing one writes the same selection shape the model picker's configuration screen writes through the composer's existing selection binding. Descriptors that are not a choice list, and values the model does not offer, keep the previous read-only and hidden behavior.
On-device review of the selector asked for two changes. The two prompt-tier "ultra" levels are not wanted in the composer, so the control excludes exactly the `ultracode` and `ultrathink` choice ids and documents that as the single product rule in an otherwise descriptor-driven control. A level excluded here is still displayed while it is the effective one, so the composer keeps telling the truth about a setting made elsewhere, but it is never offered or checked. The composer sits at the bottom of the screen, where an adaptive menu flips its contents and puts the highest level nearest the finger. Pin the menu to the descriptor's declared order so the lowest level reads first.
6cf8887 to
b849a88
Compare
|
@t3dotgg Updated again: I rebased the branch onto the current |
…bile-app-swift' into feat/issue110-reasoning-selector
|
@t3dotgg Updated against the live SwiftUI target and refreshed the requested proof.
The prior |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 46b2288. Configure here.
|
@t3dotgg Updated to the superseding acceptance target at exact head The SwiftUI composer now renders every supported model-option descriptor section in descriptor order. The Codex proof shows Reasoning followed by Service Tier, Focused verification: 32 tests passed, 0 failed; Dark mode — exact base → exact head
Interaction proof
Clean playable video: https://github.com/user-attachments/assets/b17c2f48-294f-46da-ad87-9da57ba01e12 Annotated playable video: https://github.com/user-attachments/assets/22c313e1-94a5-400c-b124-4b6dedb07d49 Light mode — exact base → exact head
The raw exact-head interaction capture is 76.758 seconds (SHA-256 Direct Claude Opus high review was attempted read-only on the frozen change, but the process exited 1 with HTTP 429 and zero model usage; no Claude model participated and cross-provider review was skipped because capacity was exhausted. |
GIF crop correctionThe three earlier GIFs were cropped too tightly and hid most of the descriptor menu. I replaced their live PR-body embeds without changing the PR head.
Dark comparisonInteractionCrop decision · dark receipt · light receipt · interaction receipt |
|
plz merge @t3dotgg |
Upstream successor handoff — #110 / SwiftUI Test Build 86This records the contribution state only. The coordinator-owned phone acceptance remains on saphid/t3code-personal#110: Alex’s recorded verdict was “Reasoning menu looks good.” I did not create or alter that acceptance.
GitHub currently reports No product commit, push, rebase, proof mutation, media upload, or PR-body change was made during this handoff; the accepted candidate was preserved exactly. |











Problem
The native SwiftUI composer exposed only Codex reasoning, while the Electron composer renders the selected model's full option-descriptor catalog. That left Service Tier unavailable and made the native behavior diverge as providers and models changed.
Change
For the live Codex descriptor, the menu shows Reasoning followed by Service Tier, with Standard marked Default. The backend currently supplies Fast's description as
1.5x speed, increased usagewithout terminal punctuation; SwiftUI renders descriptor text verbatim. The focused fixture also covers the supplied punctuated form.Verification
b67837984e5650888b1eed0e1cd7fff83625f6962524de5c55914a9364c56f1dcff7c5953b74ea98MERGEABLE/CLEANwith no conflicts.swiftc -parsepassed.git diff --checkpassed.46b2288and2524de5.Exact-head proof
Built and installed only on the leased canonical proof simulator from exact head. Installed executable SHA-256:
c68c7d9d1ba53b96fa54347f29d84db26765b95e00e9bfb5dcaca3c3a1e5b2d9. Exact-base executable SHA-256:0ea482ec8e37519c86fa5529ac541b605e9e01f286e336039ec0ebf3ef971cf2.Dark mode — exact base → exact head
Interaction
Light mode — exact base → exact head
Raw interaction capture: 76.758 seconds, SHA-256
1f14953d7c351a31498a776a9daef347a058258af7b3eed27dfb234a4a1fdbf4. Complete timeline validation passed all 5 declared actions. Every published attachment is anonymously readable; both MP4s returnvideo/mp4, nonzero full bodies, and206byte ranges. The clean video rendered successfully in the shared browser.Owning lane issue: saphid/t3code-personal#110.
Built with GPT-5.6 Sol via Codex in T3 Code.