feat: describe each /claudify setting #50

Merged
owlburtoe merged 2 commits from clfy-22-setting-descriptions into master 2026-07-16 21:33:45 -04:00
Owner

Closes CLFY-22

Every /claudify row was a bare label + value, and several said nothing useful ("Tool
chrome", "Semantic Bash display", "Input border"). All 31 visible settings now carry a
one-line description; the selected row only renders it, dimmed, on the next line.

This diverges from Claude Code on purpose — read this before "fixing" it

The ticket asked to capture how CC's /config renders per-setting descriptions. It renders
none.
docs/plans/2026-07-15-cc-dialog-chrome.md already captured that surface in detail —
tab strip, search box, row grammar, selection, stateful footer wording, key semantics — and
records rows as a bare two-column list where selection merely swaps the leading spaces for
. There was nothing to capture and nothing to match.

That made this a product decision rather than a fidelity fix. Berto chose to ship it anyway,
as a claudify-owned usability affordance, and rejected "a description under every row" (it
roughly doubles panel height and fights PANEL_HEIGHT_RESERVE).

Because this knowingly breaks the repo's capture, do not guess rule,
docs/plans/2026-07-16-claudify-setting-descriptions.md records the negative capture and the
decision — so a future reader doesn't mistake it for a bug and "correct" it back to CC.

The descriptions are traced, not guessed

Each description was written against the code that actually consumes the setting. That
exercise turned up two labels that lie, and the descriptions state the real behavior:

  • "Tool background" — its outlines are horizontal rules, not boxes around rows.
  • "Group read-only tools" — also aggregates Bash and every MCP call, not just reads.

A fact-check pass then verified all 30 descriptions against their consumers and found one
overclaim
, fixed in ad9e829:

  • "Collapsed diff lines" claimed to limit "write and edit" diff previews. diffCollapsedLimit()
    has exactly two call sites, both inside the write tool registration; edit renders its
    collapsed diff at a hardcoded 32 lines (renderEditPreviewBody). Set it to 3 and an Update row
    still prints 32 — the description would have promised a control the user cannot feel. Now scoped
    to Write.

Validation

  • bun run test15/15 green; npx tsc --noEmit --strict …clean. Run independently
    of the worker, at 28e07d3, plus the hub suite + typecheck again after ad9e829.
  • New coverage asserts the selected row shows its description, unselected rows don't, and the
    framed panel still lands its rows − 5 height with the footer pinned (both the terminal-size
    and natural-height paths).
  • Smoked live in a real pi session (tmux PTY): description renders dim under the selected
    row only, follows selection cleanly, and at 72 columns wraps to two lines with the panel,
    rules, and pinned footer all intact. pi's Text word-wraps (wrapTextWithAnsi), so a long
    description cannot overflow — the 2.3.0 crash class does not apply here. Smoked against pi
    0.80.10.

Known nits (not fixed here)

  • A wrapped description's continuation line does not indent to align under the first line —
    slightly ragged below ~80 columns. Cosmetic.
  • spinnerStatusColor's description names duration/tokens/thinking "beside the Spinner", which
    is accurate but incomplete: the same dim also paints the turn-end ✻ Worked for … line, which
    replaces the Spinner rather than sitting beside it. Not false, so left alone.

Follow-up worth considering (out of scope)

The diffCollapsedLines finding is really a product gap, not a wording one: a setting
labelled "Collapsed diff lines" that silently doesn't apply to Update/edit rows. Either edit
should honour it, or the row should be renamed. That's a behaviour change and wasn't this
ticket's remit.

Closes CLFY-22 Every `/claudify` row was a bare `label + value`, and several said nothing useful ("Tool chrome", "Semantic Bash display", "Input border"). All 31 visible settings now carry a one-line description; the **selected row only** renders it, dimmed, on the next line. ## This diverges from Claude Code on purpose — read this before "fixing" it The ticket asked to capture how CC's `/config` renders per-setting descriptions. **It renders none.** `docs/plans/2026-07-15-cc-dialog-chrome.md` already captured that surface in detail — tab strip, search box, row grammar, selection, stateful footer wording, key semantics — and records rows as a bare two-column list where selection merely swaps the leading spaces for `❯`. There was nothing to capture and nothing to match. That made this a product decision rather than a fidelity fix. Berto chose to ship it anyway, as a claudify-owned usability affordance, and rejected "a description under every row" (it roughly doubles panel height and fights `PANEL_HEIGHT_RESERVE`). Because this knowingly breaks the repo's *capture, do not guess* rule, `docs/plans/2026-07-16-claudify-setting-descriptions.md` records the negative capture and the decision — so a future reader doesn't mistake it for a bug and "correct" it back to CC. ## The descriptions are traced, not guessed Each description was written against the code that actually consumes the setting. That exercise turned up **two labels that lie**, and the descriptions state the real behavior: - **"Tool background"** — its outlines are horizontal rules, not boxes around rows. - **"Group read-only tools"** — also aggregates Bash and every MCP call, not just reads. A fact-check pass then verified all 30 descriptions against their consumers and found **one overclaim**, fixed in `ad9e829`: - **"Collapsed diff lines"** claimed to limit "write and edit" diff previews. `diffCollapsedLimit()` has exactly two call sites, both inside the **write** tool registration; `edit` renders its collapsed diff at a hardcoded 32 lines (`renderEditPreviewBody`). Set it to 3 and an Update row still prints 32 — the description would have promised a control the user cannot feel. Now scoped to Write. ## Validation - `bun run test` — **15/15 green**; `npx tsc --noEmit --strict …` — **clean**. Run independently of the worker, at `28e07d3`, plus the hub suite + typecheck again after `ad9e829`. - New coverage asserts the selected row shows its description, unselected rows don't, and the framed panel still lands its `rows − 5` height with the footer pinned (both the terminal-size and natural-height paths). - **Smoked live in a real pi session** (tmux PTY): description renders dim under the selected row only, follows selection cleanly, and at **72 columns** wraps to two lines with the panel, rules, and pinned footer all intact. pi's `Text` word-wraps (`wrapTextWithAnsi`), so a long description cannot overflow — the 2.3.0 crash class does not apply here. Smoked against pi **0.80.10**. ## Known nits (not fixed here) - A wrapped description's continuation line does not indent to align under the first line — slightly ragged below ~80 columns. Cosmetic. - `spinnerStatusColor`'s description names duration/tokens/thinking "beside the Spinner", which is accurate but incomplete: the same dim also paints the turn-end `✻ Worked for …` line, which replaces the Spinner rather than sitting beside it. Not false, so left alone. ## Follow-up worth considering (out of scope) The `diffCollapsedLines` finding is really a **product** gap, not a wording one: a setting labelled "Collapsed diff lines" that silently doesn't apply to Update/edit rows. Either edit should honour it, or the row should be renamed. That's a behaviour change and wasn't this ticket's remit.
fix: scope the collapsed-diff description to the Write tool
All checks were successful
Plane Sync / Close referenced Plane work items (pull_request) Successful in 2s
ad9e8292fb
diffCollapsedLimit() is read only by the write tool; edit renders its
collapsed diff at a hardcoded 32 lines. Claiming 'write and edit'
promised a control the user cannot feel on Update rows — the exact
class of confidently-wrong description this feature exists to avoid.
owlburtoe merged commit 1a353ddb6f into master 2026-07-16 21:33:45 -04:00
owlburtoe deleted branch clfy-22-setting-descriptions 2026-07-16 21:33:45 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
owlburtoe/pi-claudify!50
No description provided.