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