Skip to content

feat(harness): thinking default-collapsed preference toggle via Leader+t (plan #742) - #751

Closed
btipling wants to merge 1 commit into
plan/harness-keymapfrom
plan/thinking-default-collapsed
Closed

feat(harness): thinking default-collapsed preference toggle via Leader+t (plan #742)#751
btipling wants to merge 1 commit into
plan/harness-keymapfrom
plan/thinking-default-collapsed

Conversation

@btipling

Copy link
Copy Markdown
Owner

Thinking default-collapsed preference (Leader + t) — plan #742

A harness preference thinking default = collapsed, ON by default, toggled by a
keyboard shortcut (Leader Ctrl+Shift+Space, then t), registered on the parent
keymap (#741). When ON, thinking rows stay collapsed even during the active Busy
turn unless the operator expands one; when OFF, today's Busy pin is restored.

Change (Zig + docs only)

  • thinking_collapse.zigshouldRenderFull now takes the preference as an
    explicit boolean parameter (default_collapsed); the module stays pure
    (imports nothing). Policy: full iff operator_open OR (NOT default_collapsed AND active_turn_full) — the Busy pin is relaxed when default-collapsed is ON.
  • ui/state.zigthinking_default_collapsed: bool = true, reset to ON in
    resetTranscriptScroll().
  • ui/thinking.zig — threads the live preference into the policy; the
    is_active pin is gated (active rows stay pinned only when the preference is
    OFF), and active-row clicks route through thinking_open_l1 so the operator
    can expand a row mid-Busy.
  • keymap seams (4, plan-review resolved)keymap.zig adds
    Action.thinking_default_toggle + a leader-pending t arm in match() (like
    the ? arm) + a KEY_TABLE row; keymap_dispatch.zig adds the
    toggleThinkingDefault handler seam + runAction arm (disarms the leader);
    help_overlay.zig adds the rowChord case (exhaustive switch, compile-forced);
    ui.zig provides the toggleThinkingDefault() seam and wires the dispatch.
  • docsdocs/harness-limits.md (keyboard table + Thinking collapse row)
    and docs/agent-stream.md (qualifies the old absolute "Busy keeps thinking
    fully expanded" with the preference).

Verification

Gate Result
zig fmt --check clean (7 touched .zig files)
zig build test-rich 92/92 steps · 1296 tests passed (keymap 36→39, thinking_collapse 10→13)
zig build test-rich-invariants green
zig build harness -Doptimize=Debug full Wasm compile clean
build-harness CI green (below)

No TS files changed → vitest/typecheck/DI-cost gates N/A (per layer rule).
Caps: none added or changed; Cloud ops N/A; no production mutate.

https://github.com/btipling/invincible — parent stack

This is a stacked PR — it must be based on the parent branch
plan/harness-keymap (PR #746, plan #741), per the plan's mandatory guard
("never implement against a main without the keymap"). The parent #746 is
still open/merge-ready, so this PR is opened against plan/harness-keymap to
keep the diff atomic to #742's delta.

Merge order: land #746 first, then rebase/retarget this PR onto main (git
automatically drops the inherited keymap delta) and re-pass adversarial review.
The single git-stack diff vs plan/harness-keymap is exactly the #742 work.

Closes #742

@btipling btipling self-assigned this Aug 21, 2026
@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
invincible Ignored Ignored Aug 21, 2026 7:14am

Request Review

@btipling

Copy link
Copy Markdown
Owner Author

Implementation of plan #742 complete and merge-ready from review (Zig + docs only, no merge).

Next step: /adversarial_review #751 once parent #746 lands/coordinates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant