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 the forge web UI

f09ef39efe44de693748053a7b596ef328fcf06b · Keenan Nemetz · 15d ago · parent 70b70264

Build out the forge web UI

Turn the web surface into a compact, server-rendered forge with HTMX as the
progressive dynamic layer.

- Split templates and assets into embedded files; add a tokenised dark theme,
  Lucide icons, and vendored HTMX.
- Add the repository Overview page and a separate chronological Activity feed
  with type filters and HTMX fragment updates.
- Finish the issue and change workflows: create pages, comments, close/reopen,
  labels and assignees, approval, discussion, line-anchored review comments,
  and HTMX list filters.
- Add syntax-highlighted blobs, contributor/statistics derivation, branch-aware
  code browsing, and a repository Runs list.
- Add a loopback-only development login for local write testing, with explicit
  configuration and listener checks.
- Extend tests for the new pages, fragments, labels, assignees, anchors, and
  development login.

server/web/commit.go +13−8

@@ -39,16 +39,19 @@ func (w *Web) CommitView(rw http.ResponseWriter, r *http.Request) {
39 39 body, _ := g.CommitBody(sha)
40 40 files := parseDiff(patch)
41 41 added, removed := diffSummary(files)
42 parents, _ := g.CommitParents(sha)
42 43
43 44 w.render(rw, "commit", struct {
44 45 Page
45 Name string
46 Commit git.Commit
47 Body string
48 Files []diffFile
49 Added int
50 Removed int
51 Truncated bool
46 Name string
47 Commit git.Commit
48 Body string
49 Files []diffFile
50 Added int
51 Removed int
52 Truncated bool
53 Parents []string
54 LineCommentURL string
52 55 }{
53 56 Page: w.page(r, m.Name+" · "+log[0].Subject),
54 57 Name: m.Name,
@@ -59,6 +62,8 @@ func (w *Web) CommitView(rw http.ResponseWriter, r *http.Request) {
59 62 Removed: removed,
60 63 // A cut patch and a patch with nothing in it look the same to a parser;
61 64 // the flag is what tells the reader which one they have.
62 Truncated: truncated,
65 Truncated: truncated,
66 Parents: parents,
67 LineCommentURL: "",
63 68 }, 0)
64 69 }