| 1 | # Desktop composer controls |
| 2 | |
| 3 | [简体中文](COMPOSER_CONTROLS.zh-CN.md) |
| 4 | |
| 5 | Use the **+** menu to attach content or enable Plan or Goal mode. Reasonix uses |
| 6 | one standard execution behavior; there is no delivery-quality selector or |
| 7 | mode chip. Permission remains a separate Read only/Workspace write/Full access menu. Model and |
| 8 | reasoning effort have independent selectors; unsupported models hide effort. |
| 9 | The status bar no longer repeats the model name. Its turn cost uses two decimal |
| 10 | places; detailed cost values retain their existing precision. |
| 11 | |
| 12 | An active Goal can be edited from the **+** menu without replacing its identity |
| 13 | or resetting admitted rounds. The optional maximum-round field is blank for |
| 14 | unlimited execution. The same menu remains available during an automatic Goal |
| 15 | round so the user can pause immediately. |
| 16 | |
| 17 | The context ring opens usage details. **Turn time** excludes waits on the user, |
| 18 | whether an approval, an answer, or an MCP interaction, and stops at the |
| 19 | controller's completion timestamp. Retry time remains part of the turn. Turn |
| 20 | tokens and throughput remain available during waits, retries, and after |
| 21 | completion. In-flight tokens are estimated from character density rather than a |
| 22 | flat four characters per token: ASCII prices at roughly four characters per |
| 23 | token and CJK at roughly 1.3. The ring's throughput and token rows are |
| 24 | turn-scoped, counting the turn's cumulative output and carrying the estimate cue |
| 25 | while streaming; the status bar's throughput item covers the most recent request |
| 26 | and its turn-token item is the turn's prompt-plus-output total. **Session time** |
| 27 | is the separately reported session aggregate. Starting a new turn resets turn |
| 28 | metrics. These live metrics are not a persisted historical report. Completed |
| 29 | metrics are settled once per turn; later background-job updates do not replace |
| 30 | them. |
| 31 | |
| 32 | The composer defaults to 140px and preserves manual resizing. Running work |
| 33 | uses a theme-aware perimeter trace; reduced motion uses a static outline. Above |
| 34 | the input, a run strip names the current state and, while a turn is live, pins |
| 35 | its readings to the right: the turn clock, the running token total, and |
| 36 | throughput. Colour and position do the separating, not punctuation. The clock |
| 37 | reads first, so the strip answers "is this stuck?"; only the token reading |
| 38 | carries the estimate cue, since the clock is exact and throughput derives from |
| 39 | the reading. A narrow strip spends the state word's width first, never cuts a |
| 40 | reading mid-number, and drops the rate whole below its threshold. Throughput |
| 41 | also appears only while the model is emitting, so a rate frozen by a wait is |
| 42 | never shown as a current speed. The strip's live region still announces the |
| 43 | stable state text alone. Approval, answer, and retry notices remain visible. |
| 44 | |
| 45 | The bottom status bar combines workspace and branch into one item: it shows |
| 46 | the branch name, with both workspace path and branch in the tooltip. Non-Git |
| 47 | workspaces show the workspace name. Older item lists are deduplicated. For a |
| 48 | model-only legacy configuration, migration retains only workspace and branch. On the |
| 49 | first upgrade, status labels default to icons; subsequent manual text/icon |
| 50 | choices are preserved. An older binary that rewrites preferences can remove |
| 51 | the upgrade marker, causing the icon default to apply again on re-upgrade. |
| 52 |