Skip to content

feat: badge the file tree, let the sidebar be dragged, allow deleting… - #8

Merged
jsellam merged 1 commit into
masterfrom
improve-ui
Sep 8, 2026
Merged

jsellam merged 1 commit into
masterfrom
improve-ui

Conversation

@jsellam

@jsellam jsellam commented Sep 8, 2026

Copy link
Copy Markdown
Owner

… comments

Three reviewer-facing changes to the review page.

The file tree now badges each file with VS Code's own letter — a, m, d, r — in a bordered box, and colours the name to match: green for an addition, amber for a change, red for a deletion, the accent blue for a rename. A deleted file's name is struck through. Names stay on one line and ellipsize rather than widening the row, which needed every wrapper between the tree row and the name to be allowed to shrink. tree.ts stays pure and now returns a typed FileTreeNode carrying the status and the comment count; building the title from it is FileTree.tsx's job. The comment count moves out of the name and into a badge at the end of the row.

The sidebar is a draggable column. The boundary is its own 5px grid track with a col-resize cursor and a line that lights up on hover and during a drag; the width lives in --sidebar-width. It is the ARIA window-splitter pattern, so the arrow keys, PageUp/PageDown and Home work as well as the mouse — and pointerdown moves focus explicitly, because the preventDefault that stops the drag from selecting text would otherwise swallow it.

Any comment can be deleted, the agent's as readily as the reviewer's own. SubmitPayload gains deletions, addressing a message by its position in its thread; messages carry no id, and adding one would rewrite every state file on disk. Nothing is destroyed while it can still be undone: a staged message stays visible, struck through, with the way back next to it. On submit the server drops those messages, and a thread emptied of all of them is dropped with them — but a thread that lost nothing (a stale index, or one that was already empty) is left exactly as it was.

… comments

Three reviewer-facing changes to the review page.

The file tree now badges each file with VS Code's own letter — a, m, d, r —
in a bordered box, and colours the name to match: green for an addition,
amber for a change, red for a deletion, the accent blue for a rename. A
deleted file's name is struck through. Names stay on one line and ellipsize
rather than widening the row, which needed every wrapper between the tree
row and the name to be allowed to shrink. `tree.ts` stays pure and now
returns a typed `FileTreeNode` carrying the status and the comment count;
building the title from it is `FileTree.tsx`'s job. The comment count moves
out of the name and into a badge at the end of the row.

The sidebar is a draggable column. The boundary is its own 5px grid track
with a `col-resize` cursor and a line that lights up on hover and during a
drag; the width lives in `--sidebar-width`. It is the ARIA window-splitter
pattern, so the arrow keys, PageUp/PageDown and Home work as well as the
mouse — and pointerdown moves focus explicitly, because the preventDefault
that stops the drag from selecting text would otherwise swallow it.

Any comment can be deleted, the agent's as readily as the reviewer's own.
`SubmitPayload` gains `deletions`, addressing a message by its position in
its thread; messages carry no id, and adding one would rewrite every state
file on disk. Nothing is destroyed while it can still be undone: a staged
message stays visible, struck through, with the way back next to it. On
submit the server drops those messages, and a thread emptied of all of them
is dropped with them — but a thread that lost nothing (a stale index, or one
that was already empty) is left exactly as it was.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jsellam
jsellam merged commit a3a38d1 into master Sep 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant