v1.0.204
✨ New: Compact diff in git-changes file mode
Opening a changed file in git-changes view now collapses unchanged stretches GitHub-style. Only the changed lines and 3-line context render; everything in between becomes a clickable bar.
↑/↓arrow buttons on each bar reveal +20 lines per click, clamped to remaining- Scroll position stays anchored — your viewport content doesn't jump as the bar grows; new lines slide above/below the bar in place
- The bar's hunk-header label tells you the function the next change lands in:
47 lines hidden · loginHandler(req, res, next) - A
Compact/Fulltoggle at the top of the diff brings back the whole-file view for the moments you want it
Map mode (the chip view) was already compact-by-design and is unchanged. The compact treatment is opt-in via the compact prop on DiffView, so other diff surfaces (the AI-edits modal, commit-history detail) keep their full-file behaviour.
🐛 Fix: Code Map chips stay current after file edits
The project-wide AST index that powers Code Map was built once per project and never refreshed automatically. After editing a file (yourself or via the agent) and reopening it in Code Map, you'd see chip headers naming functions whose bodies no longer matched what was rendered, missing newly-added functions, or stale entries for ones you'd deleted.
Per-request the file's on-disk mtime is now checked and the focal file alone is re-parsed when stale (~10–50 ms). The full project rebuild — which takes seconds on monorepos — is reserved for the manual "Rebuild project graph" button, so editing a file no longer puts the chip view behind a long loading spinner.
🐛 Fix: Ollama tool-only turns no longer error out
Ollama's OpenAI-compatible endpoint rejects assistant messages with content: null — the canonical shape for "I called a tool, no text". Sessions with many tool-only turns died on the next continuation with AI_NoOutputGenerated. Cockpit now coerces content: null → "" right before the request leaves; existing transcripts and other providers (Claude / DeepSeek / Kimi) are unaffected.
🐛 Fix: Code Map navigation no longer animates
Click-to-jump in Code Map (TOC row, caller/callee pin, history drawer entry, Cmd+K result, minimap tick) used to smooth-scroll over ~250 ms. With dozens of jumps per minute that adds up to several seconds of "watch the page slide". Switched to instant — VSCode / JetBrains / Cursor / Zed all do the same. The .line-flash pulse on arrival still fires, so the "you're here" feedback is unchanged.
📦 Misc: Unified tooltip system
The codebase had three concurrent tooltip implementations (native title=, a Portal-based component, manual delegation). Hovering a function name in one panel looked different from hovering one in another. Consolidated into a single global provider — every data-tooltip or <Tooltip> now produces the same brand-bordered monospace popover. Function names in the Code Map sidebars, file paths in the diff toolbar, and comment markers all share the same styling.