d79178a926
Two related TUI affordances bundled because they share ui.rs and the ui/tests.rs file. #30 — Reasoning-content replay telemetry, end-to-end: * models.rs — Usage gains reasoning_replay_tokens: Option<u32>. * client.rs — sanitize_thinking_mode_messages now returns the approximate replay-token count (~4 chars/token); the streaming pipeline overlays it onto the parsed MessageDelta usage so the server-reported and client-estimated numbers reach the engine together. * app.rs — App stores last_reasoning_replay_tokens. * ui.rs — TurnComplete handler copies the value into the App; new footer_reasoning_replay_spans renders an `rsn N.Nk` chip in the footer next to the cache hit-rate, warning-coloured when replay tokens exceed 50% of the input budget. * ui/tests.rs — covers chip-on, chip-hidden-when-zero, and the sanitizer's None-on-non-thinking-model path. #28 — Tab-complete @file mentions against the workspace: * ui.rs — adds partial_file_mention_at_cursor (with a guard against `user@example.com`-style false positives) and try_autocomplete_file_mention. Walks the workspace via the existing ignore::WalkBuilder, ranks prefix matches above substring matches, applies the unique match outright, extends to the longest common prefix when multiple match, and surfaces ambiguous candidates via the status line. Wired into the existing Tab handler after the slash-command branch. * ui/tests.rs — covers cursor-inside-mention extraction, email guard, prefix vs substring ranking, single-match application, common-prefix extension, no-match status, and the no-mention-no-op path. The mention-expansion path that ships file contents to the model is unchanged — this is purely a discovery aid for typing the path. Inline-contents and a fuzzy popup picker are queued for v0.5.2. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>