TUI is read-only apart from creating an issue: no comment, review, or close #74
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The dashboard writes exactly one kind of event.
nopens an issue (title, then body) viaissue::open. Greppingsrc/tui/for calls intocrate::issue::*/crate::patch::*returns that one path and nothing else.Missing: comment, review, close, reopen, label, assign, revise, merge, resolve/unresolve, edit or delete a comment. Everything the CLI grew this cycle.
So the dashboard is a browser with one write button — and arguably the wrong one, if only one were to exist. You can read a patch, walk its revisions, view diffs and interdiffs, read every review comment, and then you must quit to say anything about what you just read. For a tool whose thesis is that review should preserve the correspondence between feedback and the change answering it, the review surface cannot leave a comment.
Two things to decide rather than assume:
patch mergeandreviseare tied to the working tree and arguably do not belong in a browser. Commenting, reviewing, resolving and closing are the review loop and clearly do.nflow is a hand-rolled single-line buffer with no editing beyond backspace. Bodies are markdown and often long.6edf0fa2settled this for the CLI —-F, stdin, and$EDITOR— and the TUI should suspend to$EDITORthe same way rather than growing a second, worse text input.Related:
ois not a collab action at all — it leaves the TUI and runsgit checkoutonPatchState.branch. Since659f0350that field is provenance only and is full of dead worktree branch names (850f3b8e), so on agent-produced patches that key mostly fails. Worth revisiting alongside this, since it should check out the latest revision's commit, which is pinned by a revision ref and always resolves.Found while reviewing what the TUI can do (
5c62b43b).Migrated from git-collab issue
094b055b2ae57b5f9b0992b9aa6aeedf5bb137b7.Original author: a73x dev@a73x.sh.
Close reason: merged in patch
07a78a60Refined 2026-08-12. Decisions made; this is now buildable.
Purpose: the TUI is a review surface. The place you read a patch and respond to it, closing the loop you already walk (revisions, diffs, interdiffs) so you never leave to say what you think. Not a triage tool, not a monitor.
In scope — the review loop, all of which anchor to something already on screen:
ccomment on the selected diff line (inline) or on the patch (thread)Rreview with a verdict: approve / request-changes / commentxresolve / unresolve the selected commentashow what answered the selected comment (--answers, already built)Out of scope, deliberately:
mergeandreviseare tied to the working tree and do not belong in a browser;label/assign/closeare triage, which is a different product decision.n(new issue) stays — it exists, people have the muscle memory, and it now gets the editor treatment below.Text input: suspend to $EDITOR, exactly as
git commitdoes. Leave the alternate screen, edit a temp file, return, submit. No second text editor gets written;6edf0fa2already set this convention for the CLI and the two surfaces should agree.Pre-fill the buffer with context, so suspending does not cost you the thing you are writing about:
Details that will otherwise be guessed:
#lines aborts the write, likegit commit. Say so on return.$EDITOR/$VISUALset is a status message naming the alternatives, never a hang and never a silent no-op.okey leaves raw mode and the alternate screen to rungit checkout. Follow it, and restore the screen even if the editor exits non-zero or is killed.fe555587): the file and line are checked against the revision the comment anchors to, not the working tree.9a0a143badded--at file:line; reuse that path rather than building a second one.xneeds comment identity.resolve_commentresolves an OID prefix andpatch showprints ids in brackets; surface the same id in the TUI so the two agree.59ab40e8announce your own change as external.Related, fix while here:
orunsgit checkoutonPatchState.branch, provenance-only since659f0350and mostly dead names on agent patches (850f3b8e). It should check out the latest revision's commit, which is pinned by a revision ref and always resolves.