* feat(editor): add Vim keyboard annotation controls
* feat(ui): add optional live Vim HUD
* feat(ui): finish Vim HUD experience
* feat(ui): promote Vim to dedicated settings panel
* feat(ui): make Vim document focus automatic
* feat(ui): let Vim HUD hide its key panel
* fix(ui): harden Vim selection UX
Custom reviews: pick an Agent Skill and its SKILL.md body becomes the review prompt (read live from global skill folders, never copied; default review byte-identical). Agent findings can be a line, a whole file, or a general review-level comment, and are never silently dropped. Plus: agent-icon engine picker, icon-only file-header opener, semantic diff restored as its own dock panel, and a dead-code sweep.
* feat(readme): redesign README — hero banner, agent icons, simplified install
- New centered hero: banner, tagline, theme-aware agent icon row (picture/prefers-color-scheme), demo links
- Intro paragraph naming all nine supported agents
- Feature cards with screenshots; dedicated Annotate HTML Artifacts, Code review, and Sharing sections
- Install collapsed to one shared installer + per-agent table covering all nine agents, linking each app README
- New Try it section for manual invocation after install
- Fixed Codex plan-mode claim (supported via Stop hook), completed PLANNOTATOR_ORIGIN values, fixed demo links and typos
- Added Integrations, Remote/SSH, Security, and Configuration sections
* feat(readme): consolidate command examples into a Commands section
- Annotate HTML Artifacts is now screenshot-only
- Drop the duplicate code review screenshot (code-review-thumbnail.png removed)
- New Commands section: Annotate, Code review, and CLI groups
* fix(readme): point doc-review demo at Pi video, drop wrong code review demo link
* style(readme): plain-language pass
- No em dashes anywhere; split into sentences or swapped for colons/commas
- Rewrote the intro: integration with the agent session is now explicit (plugs into hooks/commands, feedback lands back in the live session)
- Varied repeated phrasing between the two feature cards
- Integration labels use colons instead of dashes
* style(readme): simplify feedback phrasing in hero and feature card
* feat(readme): add Plan mode note and sessions command to Commands section
* feat(readme): sharing beta link and Workspaces signup CTA badge
* style(readme): drop divider between feature table and HTML artifacts section
* style(readme): bump banner width 512 -> 640
* style(readme): fix agent icon sizing
- Crop Pi icon viewBox to glyph bounds (was 40% padding)
- Render Amp at 32px to offset its thin mark
* style(readme): bump Amp icon to 38px for visual parity
* fix(readme): strip em-based size attrs from Amp icon so it scales
The svg root had width/height of 1em plus an inline style, the only icon
in the set with relative sizing. SVG-as-image resolves em at a fixed 16px
and the drawing stayed pinned there regardless of the img height. Removed
the attrs, back to the uniform 28px row height.
* style(readme): width=100% on feature table images
* style(readme): cmux-style 40/60 feature table with middle-aligned text
* style(readme): split feature rows into separate tables so zigzag keeps 40/60
* style(readme): single feature table, text left 40 / image right 60, no zigzag
* style(readme): tighten intro and feature card copy
* style(readme): remove stray space before period
* style(readme): another round of copy edits
* chore: remove internal docs notes, move readme-assets to .github/assets
- Deleted docs/ (three internal handoff notes, nothing referenced them)
- README media now lives in .github/assets/ instead of a root-level folder
- All 18 asset links in README updated
* style(readme): split intro into two paragraphs
* feat(readme): live collaboration teaser in Sharing, tighten encryption copy
* style(readme): retitle Sharing & Multiplayer, rework CTA badge to banner palette with balloon
* feat(readme): updated annotate and review screenshots
* feat(readme): updated HTML artifact screenshot
* feat(readme): swap HTML artifact screenshot for v2
* feat(readme): restore share workflow sentence and Codex command note
* docs(agents): document bun link workflow for local plannotator command
* style(readme): trim Windows note from Codex command tip
* feat(readme): one-line AI features note under feature table
* feat(review): add semantic diff overview
* fix(review): address semantic diff review findings
* fix(review): harden semantic diff fallback
* fix(review): avoid repo-local sem execution
* fix(review): normalize semantic diff cwd
* test(review): cover semantic diff local cwd
* fix(gitlab): fetch raw MR diffs
* fix(review): harden sem path resolution
* docs(review): add semantic diff handoff
* feat(review): semantic diff cards, header sem badges, jump-to-line
- Restyle the semantic panel as real bordered cards (shadcn surface) instead
of ASCII box-drawing; centered column, grid-aligned entity rows.
- Hide orphan (module-level) changes from the rows, matching sem's default;
the count still surfaces in the summary line.
- Add a 'sem · N' hover popover to each diff file header showing that file's
semantic changes, reusing the same row component as the panel.
- Clicking an entity (panel or popover) scrolls the diff to the lines via
pierre's [data-selected-line]; centers only when off-screen so manual
drag-selection isn't disturbed.
- Extract shared rows/helpers into semanticDiffShared; share one cached
/api/semantic-diff fetch across header badges.
* feat(review): land on All files by default
Semantic diff stays available via the file-tree nav entry and header badges,
but it's no longer the initial landing view.
* chore(review): drop dead change-symbol entries, log badge fetch failures
- Remove unreachable 'moved'/'renamed' entries from the changeSymbols table
(getChangeSymbol early-returns for those before the lookup).
- Log a console.error once per patch when the file-header badge's semantic
diff fetch fails or returns a non-ok status, so a systemic failure leaves a
trace instead of every badge silently showing nothing.
* feat(review): flatten semantic diff panel into grouped list
- Dissolve the per-file bordered cards into flat sections: the file path is now
a quiet underlined header (single hairline) with entity rows flush beneath,
hierarchy from whitespace + hover tint instead of boxes.
- Split the path into muted directory + emphasized filename for faster scanning.
- Nudge the add/remove glyphs (⊕/⊖) ~15% larger, line-height pinned so rows
don't grow; modified/rename/reorder glyphs unchanged.
* feat: search-based code navigation with peek view (#694)
Add IDE-like code navigation to the review UI. Cmd/Ctrl+click a token
in a diff to find its definitions and references across the repo via
ripgrep, displayed in a VS Code-style peek panel below the diff.
Backend: bounded rg search with language-aware definition patterns
(TS/JS, Python, Go, Rust), ranked results (same file > changed files >
same directory), confidence labels, and graceful degradation when rg
is not installed. Both Bun and Pi servers implement the endpoints.
Frontend: Dockview peek panel with syntax-highlighted full-file preview
on the left and grouped reference list on the right. Clicking a
reference scrolls the preview; double-clicking an in-diff result
navigates to the file with a gold line flash.
Closes#694
* fix: resolve Pi server TypeScript errors for code-nav
Add missing spawn import, type the close callback parameter,
and use double-cast for parseBody → CodeNavRequest.
* fix: clear loading state on cached preview hits
Without this, clicking a cached file while a fetch is in-flight
leaves isLoading stuck true — the spinner hides the preview.
* feat: show pointer cursor on Cmd/Ctrl+hover for navigable tokens
Adds pn-token-nav class with thicker underline and pointer cursor
when hovering a token while holding the modifier key, signaling
the token is Cmd+clickable for code navigation.
* refactor: remove go-to-diff navigation from peek panel
Strip the in-diff badge, double-click-to-jump, highlightDiffLine
wiring, and onCodeNavGoToDiff from the peek panel. The peek view
is the primary interaction — jump-to-diff adds complexity without
clear value at this stage.
* chore: remove dead code from code-nav cleanup
Delete unused highlightDiffLine.ts, remove codeNavChangedFiles
and codeNavActiveSide from context and App.tsx, drop stale
extractChangedFiles import.
* chore: add code-nav endpoints to AGENTS.md, remove dead activeSide state
* fix: don't classify bare indented calls as definitions
Change the TS/JS method pattern from zero-or-more (*) to
one-or-more (+) declaration keywords, so plain calls like
startServer(config) are no longer misclassified as definitions.
* feat: show toast when code-nav is unavailable in platform-only PR mode
Instead of opening the peek panel and showing misleading "No results",
Cmd+click in non-local PR mode shows a brief toast explaining that
code navigation requires a local checkout.
* fix: strip hljs hardcoded background from code-nav preview
The highlight.js github-dark theme sets a fixed dark background
on all .hljs elements. Apply transparent override for the entire
peek preview so code inherits the active theme's background.
* Add annotate wide mode
* Extend wide mode: add Focus variant, enable in all modes, reposition controls
- Drop annotate-only gate in canUseAnnotateWideMode; available in plan review, annotate, and linked-doc flows (archive/diff still excluded)
- Add Focus mode alongside Wide: both collapse sidebars and suppress annotation panel auto-open; only Wide removes the reader width cap
- Move controls out of AnnotationToolstrip/StickyHeaderLane; render as absolute-positioned "Wide | Focus" text buttons floating above the plan card's top-right edge (no vertical space cost)
- Add Radix-based Tooltip primitive (packages/ui/components/Tooltip.tsx) and TooltipProvider; replaces the ad-hoc CSS tooltip with portaled, accessible, animated content
- Polish: tracking-wide for 11px labels, focus-visible ring, active press state, aria-pressed, weight-stable toggle (color-only), 60px right offset under tater mode
For provenance purposes, this commit was AI assisted.
* Update wideMode test to cover both annotate and plan review modes
The annotateMode gate was removed — update the test matrix to assert
wide mode is enabled in annotate AND plan review, and disabled for
archive/diff across both mode values.
For provenance purposes, this commit was AI assisted.
* Drop unused annotateMode parameter from canUseAnnotateWideMode
The parameter was ignored after the annotate-only gate was removed.
Prune it from the signature, the App.tsx call site and deps, and the
test matrix to match the actual behavior (disabled only for archive
and diff).
For provenance purposes, this commit was AI assisted.
---------
Co-authored-by: Michael Ramos <mdramos8@gmail.com>