feat(app): add reasoning effort to the composer #148
- IA
Closes #146.
- Wire the shared effort picker beside model selection using channel model capabilities. - Persist effort in pi agent configuration, with Default/Off semantics for always-thinking models. - Reject unsupported levels and active-run changes; serialize concurrent admissions per chat. - Reset composer effort to model default when switching models. - Fix the unused effort menu’s missing Base UI group wrapper, which otherwise crashes the UI when opened.
### Validation
- `bun types`, `bun run ci`, and production app build pass. - Real GPT-5.4 mini runs at Low and Off completed; Low persisted after reopen; unsupported Max and concurrent busy-run changes were rejected. - Native Ace-dev smoke: effort is visible beside the model picker; menu lists Off, Low, Medium, High, Extra high; selecting High closes the menu and updates the composer label. Native snapshots verified both states. - Full GUI-send smoke was not completed: AX value replacement was accepted but had no visible effect in the composer (existing native editor input gap #106). Real provider admission/persistence was verified separately above.
### Built in Ace
Entirely in Ace using the channel, lane, shell, review subagent, and native desktop tools. The dev runner was stopped/restarted through Ace’s shell after the menu crash because native background Cmd+Q cannot be verified and the app has no reload command (development-loop gap #55). No external editor or agent used.
iamnbutlerready-for-reviewlast month on GitHub
iamnbutlerreferenced this in Focus and paste into WebKit composers with native desktop tools #106last month on GitHub
iamnbutlerreferenced this in Verify native development and recovery end to end in Ace #55last month on GitHub
iamnbutlerreferenced this in Expose reasoning effort beside the composer model picker #146last month on GitHub
iamnbutlermerged 02b86c497f9dlast month on GitHub
iamnbutlerreferenced this in chore(desktop): release canary 0.0.15 #152last month on GitHub