Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Build out change review and threaded discussions

f6f4b1db24292d1df877680714952a9c568e2b78 · Keenan Nemetz · 15d ago · parent 564acd4b

Build out change review and threaded discussions

- Add Conversation, Files and Runs tabs to change requests. Files uses the
  code-browser shape with a changed-file tree and one selected-file diff;
  Runs lists the head commit's workflow results.
- Show anchored review comments beneath the line, with a collapsed excerpt
  read from the exact blob that was reviewed, and return posted anchors to
  their line note.
- Add comment threads: any comment can be replied to, the UI flattens the
  descendants under one root, reply context links back to the parent, and
  reply targets feed a single composer at the foot of the discussion.
- Collapse reply groups while keeping the root visible, and scroll to the
  composer when Reply is selected.
- Add comment context menus with Reply, Copy text, Copy link, Edit and
  Delete. Add web edit/delete routes with author or admin checks; deletion
  leaves a tombstone so replies keep their thread.
- Support --reply-to in the issue and change CLI commands, and treat a
  missing parent as a tombstone rather than an invalid tree.
- Fix the diff comment gutter, action button colours, reply labels, and
  keep the Files tree and diff pane aligned.

Update metadata validation, web templates, CSS, JavaScript, tests, and the
CLI/change-request/issue docs.

server/web/diff.go +9−5

@@ -7,9 +7,11 @@ package web
7 7 // as cut off rather than as a smaller change.
8 8
9 9 import (
10 "html/template"
10 11 "regexp"
11 12 "strconv"
12 13 "strings"
14 "time"
13 15 )
14 16
15 17 type diffFile struct {
@@ -41,15 +43,17 @@ type diffLine struct {
41 43 NewNo int
42 44 Text string
43 45 // Comments are review comments anchored to this line, filled in by the request
44 // view rather than by the parser: a marker links to the thread, it does not
45 // duplicate it.
46 // view rather than by the parser. They are rendered beneath the line so the
47 // reviewer can read the note where it applies.
46 48 Comments []diffComment
47 49 }
48 50
49 // diffComment is the marker for a review comment on one line.
51 // diffComment is one review comment shown beneath the line it is anchored to.
50 52 type diffComment struct {
51 ID string
52 Author string
53 ID string
54 Author string
55 Created time.Time
56 Body template.HTML
53 57 }
54 58
55 59 var (