diff --git a/agent/config.yml b/agent/config.yml index dc7aede..4128b16 100644 --- a/agent/config.yml +++ b/agent/config.yml @@ -18,7 +18,7 @@ modelRoles: memory: llamacpp (dankclaw-3090)/frank-zealot:medium symbolPreset: nerd composer: - shape: claude + shape: band theme: dark: dark-terminal light: light @@ -115,8 +115,6 @@ statusLine: - git - pr rightSegments: - - token_in - - token_out - cost - context_pct - time_spent diff --git a/omp-docs/log.md b/omp-docs/log.md index 795ec22..ccfc075 100644 --- a/omp-docs/log.md +++ b/omp-docs/log.md @@ -15,8 +15,8 @@ timestamp: 2026-08-28 Interactive tune-up of the omp status bar (grilling session, live loop: config edit → watcher repaint → niri screenshot verify). New knowledge page: [OMP Status Line Customization](/pi/statusline.md). -* **Mechanics discovered:** `leftSegments`/`rightSegments` are inert unless `preset: custom` (fleet was on `nerd` with dead arrays); `composer.shape` routes them — in `claude`, right segments paint the top rule chip, left segments the bottom strip. The red rule **is** the context meter (length = usage); `contextLine` label variants only render in `box`/`band`. Working row (`⠿ Working… + tok/s`) is hardcoded — model/thinking can never join it (Tern-only). Eight composer shapes registered in the bundle; box/band previews run live and rejected. -* **Final bar:** chip = `token_in · token_out · cost · context_pct · time_spent` (stable width, pure numbers); strip = `session_name · vim · mode · hostname · model · path · git(no branch text) · pr`. Cut: tok/s duplicate, clock, cache trio, `context_total`, `subagents`, `session` hash. `path`: logical `project/worktree` label (`stripWorkPrefix: true`, kept after a live `false` trial of the full cwd); branch text dropped (worktree branches are autogenerated), dirty badges kept. +* **Mechanics discovered:** `leftSegments`/`rightSegments` are inert unless `preset: custom` (fleet was on `nerd` with dead arrays); `composer.shape` routes them — `band` merges both arrays into one row above the editor (title rides the working row), `claude` splits them into top chip + bottom strip. The `claude` red rule **is** the context meter (length = usage); `contextLine` label variants render in `box`/`band` — `band` paints the labeled inline meter (`60% ——— × 200K`). Working row (`⠿ Working… + tok/s`) is hardcoded — model/thinking can never join it (Tern-only). Eight composer shapes registered in the bundle. +* **Final bar (`band`, after a `claude` sojourn):** left = `session_name · vim · mode · hostname · model · path · git(no branch text) · pr`; right = `cost · context_pct · time_spent` with the labeled inline context meter between the groups. Cut: tok/s duplicate, clock, cache trio, `context_total`, `subagents`, `session` hash, and `token_in`/`token_out` (cumulative totals live in `/session`). `path`: logical `project/worktree` label (`stripWorkPrefix: true`, kept after a live `false` trial of the full cwd); branch text dropped (worktree branches are autogenerated), dirty badges kept. * **models.yml:** frank-archon display `name` slimmed to `"frank-archon"` (endpoint suffix dropped; `id` untouched). * **Out of scope noted:** worktree name generation (`wt--`) is omp-internal; possible upstream feature request. diff --git a/omp-docs/pi/statusline.md b/omp-docs/pi/statusline.md index f922fb2..0f86114 100644 --- a/omp-docs/pi/statusline.md +++ b/omp-docs/pi/statusline.md @@ -33,9 +33,9 @@ with any named preset they are silently ignored. The fleet config runs | shape | leftSegments | rightSegments | |---|---|---| -| `claude` (fleet) | bottom strip, left-aligned | top rule chip, right-aligned | +| `band` (fleet) | merged single row above editor | same row, right side (title skipped — it rides the working row) | +| `claude` | bottom strip, left-aligned | top rule chip, right-aligned | | `rule` | same as claude, gap above strip | same | -| `band` | merged single row above editor | same row, right side (title skipped — it rides the working row) | | `box` | box top border | box top border | | `borderless` / `pi` / `field` / `rail` | single bottom bar | single bottom bar | @@ -58,12 +58,14 @@ staged/unstaged/untracked badges (branch text optional via ## The context meter -The red rule in the `claude` shape **is** the context meter: its length tracks -context usage. `statusLine.contextLine` (`off` / `percentage` / `annotated` / -`embedded`) only changes rendering in `box`/`band` — in `claude` all non-`off` -values look identical. Docs' claim that contextLine is "box composer only" is -wrong for the meter itself; the labeled inline variant (`57%×—200K←`) is the -box/band-only part. +In the `band` shape (fleet) the meter is the labeled inline line between the +segment groups (`60% ———— × 200K`). In the `claude` shape the red rule left of +the right-segment chip **is** the meter: its length tracks context usage. +`statusLine.contextLine` (`off` / `percentage` / `annotated` / `embedded`) +only changes rendering in `box`/`band` — in `claude` all non-`off` values +look identical. Docs' claim that contextLine is "box composer only" is +wrong for the meter itself; the labeled inline variant is the box/band-only +part. ## Path segment and `stripWorkPrefix` @@ -85,13 +87,16 @@ modes. The fleet runs `true` — logical label, worktree glyph (verified live ## Fleet configuration (2026-10-18) -- Chip (right): `session_name` was moved to the strip; chip = `token_in`, - `token_out`, `cost`, `context_pct`, `time_spent` — pure numbers, stable width. -- Strip (left): `session_name`, `vim`, `mode`, `hostname`, `model`, `path`, - `git` (no branch text — worktree branches are autogenerated names), `pr`. +- Shape `band`: one merged status row. Left group: `session_name`, `vim`, + `mode`, `hostname`, `model`, `path`, `git` (no branch text — worktree + branches are autogenerated names), `pr`. Right group: `cost`, + `context_pct`, `time_spent`, with the labeled inline context meter + between the groups. `session_name` renders on the working row, not the + status row. - Deliberately cut: `token_rate` (lives on the working row), `time` (panel - clock), `cache_*` (noise), `context_total` (implied by `x/200K`), - `subagents`, `session`. + clock), `cache_*` (noise), `context_total` (implied by the meter), + `subagents`, `session`, `token_in`/`token_out` (cumulative totals are + in `/session` anyway). - Model display names slimmed in `models.yml` (`frank-archon`, no endpoint suffix); `name:` is free-form display, `id:` is the wiring — renaming ids is the cutover procedure, see [Pi Models](/pi/models.md).