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.
Turn the code tab into an editor-style file browser
a464f8927bfb3edcf170694f120dc9b3f68320da · Keenan Nemetz · 15d ago · parent f09ef39e
Turn the code tab into an editor-style file browser - Add a persistent nested file tree with HTMX file and folder swaps, active rows, expanded ancestors, and deep-link support. - Share one page header across every repository tab: title and summary on the left, tab actions grouped on the right. - Make the repository name the first tab and show visibility with a lock or globe icon derived from the ACL. - Open markdown as syntax-highlighted source by default, with an explicit full-width preview toggle. - Point the branch breadcrumb at the Code overview instead of a second root directory listing. - Move contributor-branch CI approval from the code browser to the Runs tab. - Extend UI tests for the file tree, fragments, repo visibility, markdown source/preview, shared headers, and the moved CI control.
docs/ui-plan.md +22−10
| @@ -26,20 +26,30 @@ deliberately rather than by drift. | |||
| 26 | 26 | ||
| 27 | 27 | Global bar (slim): `Repositories` · `Runners` · account/login. | |
| 28 | 28 | ||
| 29 | Repository header: name, then horizontal tabs directly beneath it: | ||
| 29 | Repository header: the repository name is the first tab, carrying a lock for a | ||
| 30 | private repository or a globe for a public one. The rest of the row is: | ||
| 30 | 31 | ||
| 31 | `Overview` · `Activity` · `Code` · `Issues` · `Changes` · `Releases` · `Runs` · `Locks` · `Settings` | ||
| 32 | `Activity` · `Code` · `Issues` · `Changes` · `Releases` · `Runs` · `Locks` · `Settings` | ||
| 32 | 33 | ||
| 33 | 34 | No sidebar. A sidebar only pays for its width when there are many persistent | |
| 34 | 35 | destinations; here the repository has seven, and they fit on one row at desktop | |
| 35 | 36 | widths. On narrow screens the row scrolls horizontally rather than collapsing | |
| 36 | 37 | into a menu. | |
| 37 | 38 | ||
| 38 | Overview is the project page: README in the main column; recent commits, recent | ||
| 39 | runs, releases, contributors, languages, and size in the sidebar. Activity is the | ||
| 39 | Every tab opens with the same page header: a title and one-line summary on the | ||
| 40 | left, and that tab's actions (or branch picker) grouped on the right. Filters and | ||
| 41 | list controls stay below the header; the header is the only place a tab's primary | ||
| 42 | action lives. | ||
| 43 | |||
| 44 | The repository tab opens Overview: README in the main column; recent commits, | ||
| 45 | recent runs, releases, contributors, languages, and size in the sidebar. Activity is the | ||
| 40 | 46 | chronological feed: commits, issues, changes, releases, and runs with type | |
| 41 | filters. Code is the file browser. Settings appears once the page exists and the | ||
| 42 | viewer has an admin role. | ||
| 47 | filters. Code is an editor-style browser: a persistent tree on the left and the | ||
| 48 | open file in the large right-hand pane; file and folder links swap only that pane | ||
| 49 | through HTMX. Markdown opens as source; a Source/Preview toggle renders it at full | ||
| 50 | pane width. The branch crumb returns to the Code overview rather than opening a | ||
| 51 | second directory listing. Settings appears once the page exists and the viewer | ||
| 52 | has an admin role. | ||
| 43 | 53 | ||
| 44 | 54 | ## Surfaces | |
| 45 | 55 | ||
| @@ -59,7 +69,8 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 59 | 69 | ||
| 60 | 70 | ### Repository | |
| 61 | 71 | ||
| 62 | - done — code tab, tree, blob with line numbers, raw | ||
| 72 | - done — code browser: persistent file tree, HTMX file/folder swaps, blob with | ||
| 73 | line numbers, raw, markdown source with an explicit full-width preview | ||
| 63 | 74 | - done — commit history, commit view, parent links, diff | |
| 64 | 75 | - done — issues list/detail, comments, filters, close/reopen, labels and assignees (create and edit) | |
| 65 | 76 | - done — changes list/detail, discussion composer, approvals, inline-comment markers, close/reopen | |
| @@ -75,7 +86,6 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 75 | 86 | danger zone | |
| 76 | 87 | - todo — compare view (`/r/{name}/compare/{base}...{head}`) | |
| 77 | 88 | - todo — file history and blame | |
| 78 | - todo — syntax highlighting in the blob view | ||
| 79 | 89 | - todo — language-aware file icons | |
| 80 | 90 | - todo — code search within a repository | |
| 81 | 91 | - todo — release create/edit from the browser (today CLI/tag push) | |
| @@ -85,6 +95,7 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 85 | 95 | ### CI | |
| 86 | 96 | ||
| 87 | 97 | - done — runner list, queue, run detail/log/artifacts | |
| 98 | - done — contributor-branch CI approval on the Runs tab, not the code browser | ||
| 88 | 99 | - todo — workflow/job list per repository | |
| 89 | 100 | - todo — rerun/cancel from the browser (only if the queue model supports it) | |
| 90 | 101 | ||
| @@ -92,8 +103,9 @@ Status: `done` exists today · `wip` in progress · `todo` missing. | |||
| 92 | 103 | ||
| 93 | 104 | 1. ~~**Foundations**~~ — embedded template files, tokenised CSS, slim shell, | |
| 94 | 105 | repo tabs, styled not-found. | |
| 95 | 2. **Code browsing** — overview/code split, stats, contributors, runs list, | ||
| 96 | tree, line-numbered blobs, commit/diff. Syntax highlighting remains. | ||
| 106 | 2. **Code browsing** — done: overview/code split, stats, contributors, runs | ||
| 107 | list, editor-style tree, HTMX navigation, line-numbered blobs, commit/diff, | ||
| 108 | syntax highlighting. | ||
| 97 | 109 | 3. **Issues and changes** — done: list/detail layout, composer, filters, | |
| 98 | 110 | close/reopen, discussion. Remaining: label/assignee triage, writing inline | |
| 99 | 111 | review comments. | |