fix: harden inline transcript replay and slash rendering - #41
Merged
Conversation
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
force-pushed
the
fix/inline-transcript-replay
branch
from
August 19, 2026 23:31
98363de to
08f5097
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation