52 lines
6.8 KiB
Markdown
52 lines
6.8 KiB
Markdown
- [x] we should be able to execute commands in visual mode, since some commands may relevant to selections.
|
|
- [x] diff view: local review UX first, independently of GitHub integration, for reviewing local changes and delivering feedback to coding agents.
|
|
- add comments at the caret or on selected line ranges on either diff side; compose/edit with normal editor interaction, delete drafts, navigate comments, and open a review overview.
|
|
- use gutter markers and a focused floating comment editor over the whole diff text workspace, without adding source-side splits or inserting comment text into source rows.
|
|
- support a review summary and local verdict: Looks good / Changes requested.
|
|
- save and reopen reviews using local files that coding agents can read; no server or client/server protocol.
|
|
- anchor comments to immutable revision IDs, paths, sides, and source line ranges, never screen coordinates or mutable file indices.
|
|
- preserve original anchors and mark comments stale when the reviewed snapshot no longer matches; defer automatic reanchoring.
|
|
- [x] diff view: attach local review comments to arbitrary contiguous text ranges, not only containing lines.
|
|
- preserve exact start/end source positions in grapheme coordinates with an exclusive end, including partial-line and multiline selections on either diff side.
|
|
- characterwise Visual (`v`) anchors the exact selected text; Visual Line (`V`) anchors whole selected lines; no selection retains current-line behavior.
|
|
- retain gutter markers for discovery and highlight the exact anchored text when its comment is selected.
|
|
- preserve immutable snapshot identity and existing stale detection; never silently reanchor comments after source changes.
|
|
- persist precise ranges in version 2 JSON import/export. SQLite storage follows in the next item.
|
|
- future GitHub publishing may map precise local anchors to supported line ranges without reducing precision in the local review.
|
|
- [x] persist local reviews automatically in a local SQLite database using rusqlite; no server, hosted storage, or synchronization.
|
|
- keep one database under $XDG_DATA_HOME/vamp/reviews/, falling back to ~/.local/share/vamp/reviews/; allow a configurable review_directory.
|
|
- key reviews by repository identity and persistent review ID, preserving reviews and stale comments across revision changes.
|
|
- autosave committed comment edits and summaries when dismissing or switching review editors; save verdicts and deletions immediately, using transactions rather than per-keystroke writes.
|
|
- automatically reopen the repository's sole review; offer a selector when several exist.
|
|
- retain explicit JSON export/import for sharing with coding agents; export must not redirect subsequent autosaves away from the database.
|
|
- version the database schema; use review-version checks to reject conflicting edits from multiple editor instances.
|
|
- surface write failures and conflicts without discarding drafts or marking unsuccessful saves as persisted.
|
|
- persist the precise start/end grapheme anchors without reducing them to line ranges.
|
|
- [x] diff view: local coding-agent review loop through a read-only `vamp --review` CLI.
|
|
- list repository reviews and show committed feedback; return exact anchors and grapheme excerpts without repeating full source files.
|
|
- show unresolved comments by default; `--all` includes resolved comments.
|
|
- manually resolve/unresolve comments in Vamp, independently of staleness; persist status in SQLite and version 3 JSON.
|
|
- preserve filename arguments, configured storage, and incompatible data; no MCP, agent replies, or automatic dispatch.
|
|
- [ ] add an option for three pane lef/base/right view for conflict resolution.
|
|
- alternative pane layout as left/right with base underneath (configurable)
|
|
- [ ] diff view: GitHub code review integration after the local review UX is usable.
|
|
- publish local reviews explicitly: general PR comments, inline line/range comments, review summaries, approval, and requests for changes.
|
|
- preserve explicit PR identity and reviewed commit IDs; validate anchors against GitHub's PR diff and recheck the PR head before submission.
|
|
- keep authentication, network requests, publishing, and remote thread synchronization out of the local UX work; treat timed-out writes as unknown outcomes rather than automatically retrying.
|
|
- define follow-on scope for reading/replying to remote threads, editing/deleting published comments, and resolving threads.
|
|
- [ ] take a look at the configuration options and their names, and consider whether renaming some of them is warranted, as well as maybe nesting some under some common namespace (like some already are).
|
|
- [ ] remove the diff palette polling fallback once a released Herdr fix delivers palette-ready DEC 2031 notifications, including palette-only changes with an unchanged light/dark preference. Related upstream issue: [herdrdev/herdr#4183](https://github.com/herdrdev/herdr/issues/4183).
|
|
- verify that notification-triggered queries return fresh colors in Ghostty through Herdr before removal; retain startup, focus-regain, and notification-driven palette refresh.
|
|
- [ ] pull a pr description and display it in a buffer:
|
|
- open a selector that allows you to pick a pr from remote
|
|
- selector should be searchable
|
|
- selected pr description is opened in a separate buffer/tab.
|
|
- open related pr description directly from diff view (should be able to figure out the relevant pr from the branch involved in the diff - if jj, then from tracked bookmark; if just git, then from branch)
|
|
- [ ] sandboxed, revision-specific LSP analysis for historical diff states and historical tabs.
|
|
- current limitation: immutable snapshot buffers still use the live repository as their LSP workspace; cross-file analysis can mix historical text with current disk contents.
|
|
- lazily materialize the complete selected revision, including unchanged files, manifests, and project configuration; run a separate LSP instance rooted in that snapshot.
|
|
- mount historical source read-only and provide isolated writable scratch directories for caches, indexes, and build output; keep historical navigation targets read-only.
|
|
- enforce an OS-level sandbox on the LSP process and every child it spawns, including build scripts and procedural macros. A temporary checkout and read-only editor buffers are not security isolation.
|
|
- deny access to the live checkout, home directory, credentials, and SSH agent; deny network access by default. Additional access or code-execution permissions require explicit approval.
|
|
- fail closed: if these restrictions cannot be enforced, keep read-only viewing available but do not launch historical LSP analysis; never silently fall back to an unrestricted process.
|
|
- retain the snapshot and analysis environment while historical views/tabs reference it; stop workers and clean up disposable storage after the final reference closes. |