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.

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/layout.html +1−2

@@ -39,9 +39,8 @@
39 39
40 40 {{define "repohead"}}
41 41 <div class="repohead">
42 <a class="reponame" href="/r/{{.Name}}">{{.Name}}</a>
43 42 <nav class="tabs" aria-label="Repository">
44 <a href="/r/{{.Name}}"{{if eq .Tab "overview"}} class="active" aria-current="page"{{end}}>{{icon "layout-dashboard"}}Overview</a>
43 <a class="repotab{{if eq .Tab "overview"}} active{{end}}" href="/r/{{.Name}}"{{if eq .Tab "overview"}} aria-current="page"{{end}} title="{{if .Private}}Private repository{{else}}Public repository{{end}}" aria-label="{{.Name}} ({{if .Private}}private{{else}}public{{end}} repository)">{{if .Private}}{{icon "lock"}}{{else}}{{icon "globe"}}{{end}}{{.Name}}</a>
45 44 <a href="/r/{{.Name}}/activity"{{if eq .Tab "activity"}} class="active" aria-current="page"{{end}}>{{icon "activity"}}Activity</a>
46 45 <a href="/r/{{.Name}}/code"{{if eq .Tab "code"}} class="active" aria-current="page"{{end}}>{{icon "code"}}Code</a>
47 46 <a href="/r/{{.Name}}/issues"{{if eq .Tab "issues"}} class="active" aria-current="page"{{end}}>{{icon "circle-dot"}}Issues</a>