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.
server/web/templates/overview.html +19−14
| @@ -2,20 +2,25 @@ | |||
| 2 | 2 | {{template "header" .}} | |
| 3 | 3 | {{template "repohead" (nav .Name "overview")}} | |
| 4 | 4 | ||
| 5 | <div class="repo-sub"> | ||
| 6 | <a class="button" href="/r/{{.Name}}/code">{{icon "code"}}Browse code</a> | ||
| 7 | <details class="clone"> | ||
| 8 | <summary>{{icon "copy"}}Clone</summary> | ||
| 9 | <div class="clone-pop"> | ||
| 10 | <p class="muted">Read only, no credentials:</p> | ||
| 11 | <code>{{.CloneURL}}</code> | ||
| 12 | <p class="muted">Write over SSH with a registered key:</p> | ||
| 13 | <code>git clone {{.SSHURL}}</code> | ||
| 14 | <p><button class="secondary" type="button" data-copy="{{.CloneURL}}">{{icon "copy"}}Copy HTTPS URL</button></p> | ||
| 15 | </div> | ||
| 16 | </details> | ||
| 17 | {{if .Site}}<a class="item" href="{{.Site}}">{{icon "external-link"}}Site</a>{{end}} | ||
| 18 | <span class="item">default branch <code>{{.Ref}}</code></span> | ||
| 5 | <div class="page-head"> | ||
| 6 | <div class="page-head-main"> | ||
| 7 | <h1>Overview</h1> | ||
| 8 | <p class="page-sub">README, recent work, releases, and contributors · default branch <code>{{.Ref}}</code></p> | ||
| 9 | </div> | ||
| 10 | <div class="page-head-actions"> | ||
| 11 | <a class="button" href="/r/{{.Name}}/code">{{icon "code"}}Browse code</a> | ||
| 12 | <details class="clone"> | ||
| 13 | <summary>{{icon "copy"}}Clone</summary> | ||
| 14 | <div class="clone-pop"> | ||
| 15 | <p class="muted">Read only, no credentials:</p> | ||
| 16 | <code>{{.CloneURL}}</code> | ||
| 17 | <p class="muted">Write over SSH with a registered key:</p> | ||
| 18 | <code>git clone {{.SSHURL}}</code> | ||
| 19 | <p><button class="secondary" type="button" data-copy="{{.CloneURL}}">{{icon "copy"}}Copy HTTPS URL</button></p> | ||
| 20 | </div> | ||
| 21 | </details> | ||
| 22 | {{if .Site}}<a class="button secondary" href="{{.Site}}">{{icon "external-link"}}Site</a>{{end}} | ||
| 23 | </div> | ||
| 19 | 24 | </div> | |
| 20 | 25 | ||
| 21 | 26 | <div class="overview"> | |