One control per kind of setting, and no paragraphs under any of them

Three explanatory paragraphs were left on the session settings screen: what
auto-resume does, what Move costs, what changing the thinking level costs.
The last two are consequences of an action, so they are `RestartDialog` now --
the same question the machines tab already asks before it reloads a model, and
now in one file rather than private to that screen. The first is gone; the
switch beside it says what it is.

Thinking was two controls: a row of chips for a llama session, where it is a
provider-declared choice, and a picker button for a Claude session, where it
is the session's own effort. One kind of information drawn two ways, decided
by which code path the value came down. A choice is `PickerRow` in a list of
settings and `ChipGroup` on a form being filled in, and which of the two is
the screen's to say rather than the provider's.

`warnAboutRestart` went with them. It marked a control "(on restart)" and
wrote a sentence under the form, and it had nothing to mark: every session
param is `restart: false` and every model param is `restart: true`. The field
now decides whether saving a model's settings stops to ask, which is the
question it was always about.

The wait's bar keeps the status row's own margin instead of running to the
edges of the glass.

Checked on the emulator against the sandbox: an echo, a claude-cli and a
llama session, each with no paragraph left under a setting and thinking drawn
the same way in all three; "Think high?", "Move to /tmp?" and the model
settings dialog all stop to ask. ktfmt, compile, lint and the unit tests are
clean.
This commit is contained in:
iris-ai committed 2026-09-21 12:25:49 -04:00
1 parent 5626a7d595
commit 3dbf04f5ec
7 files changed
+178 -132

No files matched your search

+13 -2
View File
@@ -185,8 +185,19 @@ Module-by-module intent is in PLAN.md's "Backend layout".
line's worth. Material's outlined field spends the height of three lines to
hold one, which on a form of a dozen settings is a screen and a half of
scrolling. What is *not* shrunk is the value -- the framing is what was
expensive. A field's `hint` is what leaving it blank means, above the box
with the label, because inside it is gone the moment anybody types.
expensive. A field's `hint` is what leaving it blank means, drawn inside the
empty box: **a setting is a title and a control and nothing else**, so no
explanatory line sits between them and no paragraph sits under them.
**What a setting costs is asked rather than written down** -- `RestartDialog`
is that question wherever it comes up (a model's settings, the shared
server's, moving a session's directory, changing its thinking level), because
each of them ends something that is running, and a sentence beside the control
is read after the decision if at all.
**One kind of information gets one control.** A choice is `PickerRow` in a
list of settings and `ChipGroup` on a form being filled in, and which of the
two is the screen's to say (`ProviderParamFields`' `choices`) rather than the
provider's -- a llama session's thinking level and a Claude session's have to
look the same.
**Session settings is a screen with two tabs** (`SessionSettingsScreen.kt`),
drawn over the session like the file explorer so the session stays composed.
The second tab is `ProviderScreen` itself -- the same composable the machines