Skip to content

fix: harden inline transcript replay and slash rendering - #41

Merged
SiliconState merged 15 commits into
mainfrom
fix/inline-transcript-replay
Aug 20, 2026
Merged

fix: harden inline transcript replay and slash rendering#41
SiliconState merged 15 commits into
mainfrom
fix/inline-transcript-replay

Conversation

@SiliconState

Copy link
Copy Markdown
Owner

Summary

  • harden inline TUI transcript replay and resize behavior
  • improve structured slash-command rendering and policy-governed recall handling
  • update provider, pack, privacy, documentation, and Ratatui compatibility coverage

Validation

  • Validation is enforced by the required CI matrix: Ubuntu, macOS, and Windows.

Wire publicly documented claude-sonnet-5 and claude-opus-5 into the
built-in Anthropic catalog with adaptive thinking, per-model xhigh/max
effort routing from the official effort doc, and 1M-token context
windows for Sonnet 5, Opus 5, and Fable 5.

Correct pricing to the published rates: Opus 4.5-4.8 and Opus 5 at
$5/$25 (previously the legacy $15/$75 applied to all Opus), Sonnet 5 at
$2/$10, and Fable 5 at the published $10/$50 replacing the inferred
console-derived rate. Anthropic bills the full 1M window at standard
per-token rates, so no long-context tier is modeled.

Also lands the adaptive-thinking cleanup: unreleased Mythos matchers
removed and the always-None thinking.display member dropped from the
request schema.

Tests pin the effort downgrade matrix (including Opus/Sonnet 4.6 max
without xhigh), generation pricing, catalog/context-window metadata,
and Sonnet 5 OAuth/API-key adaptive request shapes. Docs updated in the
same change.
Width-change replay now repaints the visible transcript tail in place via a
new vendored Terminal::overwrite_before (absolute writes above the inline
viewport, no scrolling), so settled resizes no longer append a full re-wrapped
copy of the transcript to terminal scrollback. Transcripts shorter than one
screen keep the bounded insert replay; explicit rebuilds (Ctrl+O expansion)
still re-emit intentionally.

Approval prompts now render inside the viewport instead of scrollback, and
decisions append only the compact result line. This removes both full-history
re-emits per approval (dim spotlight + prompt-to-result swap) along with the
Line_::PermissionPrompt transcript variant and the transcript dim machinery.
Track transcript-owned visible rows so resize replay never overwrites unrelated
shell output. Render only a screen-bounded transcript suffix, allocate narrow
wrap growth with blank rows, and repaint both short and long histories without
inserting duplicate content. Restore the backend cursor after direct history
writes and report the actual overwritten row count.

Also fix approval prompt cell-width accounting and zero/one-row clipping,
ignore modified approval hotkeys, and safely deny any displaced pending request
without blocking the TUI thread.
Remove the /plan slash command, its hidden read-only planner turn
(run_plan, PLAN_SYSTEM, READ_ONLY_TOOLS, SilentSink plumbing), slash
routing, TUI completion, and help/docs surface.

The objective tracker now classifies planning/analysis-only prompts and
bare plan approvals; Dext injects a matching advisory-only or
implementation-authorized turn policy into the volatile runtime status,
never the cached stable prompt. Question-phrased prompts are never read
as approvals, explicit mutation intent overrides advisory scoping
clauses, and mid-turn queued steering re-evaluates the policy so an
approval or hold-off takes effect immediately. Approval prompts and
/sandbox-profile read-only remain the enforcement layers.
…e /help /tools /system

- DEXT.md: replace do-not-touch recall.md rule with a recall policy the agent
  follows autonomously at task boundaries (declarative-only entries, 4KB cap,
  provenance tags, ?-until-confirmed, DEXT.md stays human-authored).
- tool_round/mutation_preview: privacy-redact native write content destined
  for recall.md before preview, approval, and apply so reviewed and stored
  bytes match.
- main: render /help, /tools, and /system through the shared list_render
  style (grouped sections, wrapped columns, Use: footer); drop the now-unused
  composed_system_prompt.
- docs/index.html: same-change updates for recall.md semantics and the
  restyled slash listings.
- Cargo.lock: h2 0.4.15 -> 0.4.16 (RUSTSEC-2026-0258).
- list_render: TTY measure is now terminal width minus a 2-column right
  gutter, capped at 100 columns, so wrapped listings stay readable and off
  the terminal border; non-TTY default unchanged.
- render_count_header carries the header noun; /help shows "N total" and
  /tools "N exposed" instead of the discovery-style "N found".
- docs/index.html: scope the recall.md write-redaction claim to the active
  privacy mode and document the readable-measure gutter.
- tool_round: the prompt scan's stat("recall.md") also finds
  differently-cased names on case-insensitive filesystems, so the write-time
  privacy scrub now matches the filename ASCII case-insensitively instead of
  exactly, closing a macOS/Windows bypass.
- docs/index.html: prompt-composition section says "recall working memory"
  instead of the stale "recall cache".
@SiliconState
SiliconState force-pushed the fix/inline-transcript-replay branch from 98363de to 08f5097 Compare August 19, 2026 23:31
@SiliconState
SiliconState merged commit 622f697 into main Aug 20, 2026
4 checks passed
@SiliconState
SiliconState deleted the fix/inline-transcript-replay branch August 20, 2026 00:32
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