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/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

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

Unify terminology across the web UI and docs

ab326d3ac1fd947a9df45f31f6dc10ab38627882 · Keenan Nemetz · 14d ago · parent 5b814e99

Unify terminology across the web UI and docs

Use account, repository, change request, enrollment link, instance admin, and sign in/out consistently. Rename the access guide to accounts-and-access.md, update its links, and record the canonical terms and retained command/URL spellings in the documentation index.

docs/ui-plan.md +30−29

@@ -28,7 +28,7 @@ deliberately rather than by drift.
28 28
29 29 Global bar (slim): `vole` · `Runners` · `Activity` · search · account menu. The
30 30 wordmark is home, so there is no separate Repositories link. The account menu
31 carries Account, Admin for instance admins, Status, and Log out; the current
31 carries Account, Admin for instance admins, Status, and Sign out; the current
32 32 destination is marked. Search is a field on wide screens and takes its own row
33 33 on narrow ones.
34 34
@@ -37,7 +37,7 @@ tabs at the home-page header scale, with a lock for a private repository or a
37 37 globe for a public one. The tab's own header is a smaller section title because
38 38 the tabs, not the page, are the navigation. The tabs are:
39 39
40 `Overview` · `Activity` · `Code` · `Issues` · `Changes` · `Releases` · `Runs` · `Locks` · `Settings`
40 `Overview` · `Activity` · `Code` · `Issues` · `Change requests` · `Releases` · `Runs` · `Locks` · `Settings`
41 41
42 42 No sidebar. A sidebar only pays for its width when there are many persistent
43 43 destinations; here the repository has seven and the global bar has two, and they
@@ -51,7 +51,7 @@ action lives.
51 51
52 52 The repository tab opens Overview: README in the main column; recent commits,
53 53 recent runs, releases, contributors, languages, and size in the sidebar. Activity is the
54 chronological feed: issues, changes, comments, and releases with type filters. Code is an editor-style browser: a persistent tree on the left and the
54 chronological feed: issues, change requests, comments, and releases with type filters. Code is an editor-style browser: a persistent tree on the left and the
55 55 open file in the large right-hand pane; file and folder links swap only that pane
56 56 through HTMX. Markdown opens as source; a Source/Preview toggle renders it at full
57 57 pane width. The branch crumb returns to the Code overview rather than opening a
@@ -65,7 +65,7 @@ Status: `done` exists today · `wip` in progress · `todo` missing.
65 65 ### Global
66 66
67 67 - done — repository list (`/`)
68 - done — login, registration, enrollment link
68 - done — sign-in, registration, enrollment link
69 69 - done — account (name, keys, passkeys, sessions)
70 70 - done — runners and queue
71 71 - done — styled 404 page everywhere, including missing detail resources and
@@ -74,14 +74,14 @@ Status: `done` exists today · `wip` in progress · `todo` missing.
74 74 recovered into it, and the detail is logged rather than rendered
75 75 - done — search across visible repositories, by name and description, from the
76 76 chrome on every page
77 - done — landing page at `/`: instance identity, project cards with top
78 language, last commit, issue/change counts, and latest release, with a short
77 - done — landing page at `/`: instance identity, repository cards with top
78 language, last commit, issue/change-request counts, and latest release, with a short
79 79 activity rail beside them
80 80 - done — instance-wide activity feed at `/activity`, merged from every
81 81 repository the viewer can read, with the repository named on each event, a
82 82 type filter, and 50-event pages
83 - done — instance admin: repository creation and access rules, users,
84 invitations, admin grants, keys, and sessions
83 - done — instance admin: repository creation and access rules, accounts,
84 enrollment links, admin grants, keys, and sessions
85 85 - done — health/status page at `/status`; `/healthz` stays the plain-text probe
86 86
87 87 ### Repository
@@ -90,12 +90,12 @@ Status: `done` exists today · `wip` in progress · `todo` missing.
90 90 line numbers, raw, markdown source with an explicit full-width preview
91 91 - done — commit history, commit view, parent links, diff
92 92 - done — issues list/detail, comments, filters, close/reopen, labels and assignees (create and edit)
93 - done — changes list/detail with Conversation, Files and Runs tabs; one-level threaded discussion UI, approvals, file tree and diff, inline review comments, close/reopen
93 - done — change-request list/detail with Conversation, Files and Runs tabs; one-level threaded discussion UI, approvals, file tree and diff, inline review comments, close/reopen
94 94 - done — releases list/detail, artifacts, archives
95 95 - done — locks
96 96 - done — run detail, log, artifacts
97 97 - done — runs list per repository (`/r/{name}/runs`) with status filters
98 - done — repository activity feed on `/r/{name}/activity`: issues, changes,
98 - done — repository activity feed on `/r/{name}/activity`: issues, change requests,
99 99 comments, releases, type filters, and HTMX fragment updates
100 100 - done — activity events from metadata-log state changes (closed/reopened),
101 101 actor filter, and assignee filter
@@ -126,23 +126,24 @@ Status: `done` exists today · `wip` in progress · `todo` missing.
126 126 ## Slice order
127 127
128 128 1. ~~**Foundations**~~ — embedded template files, tokenised CSS, slim shell,
129 repo tabs, styled 404 and 500.
129 repository tabs, styled 404 and 500.
130 130 2. **Code browsing** — done: overview/code split, stats, contributors, runs
131 131 list, editor-style tree, HTMX navigation, line-numbered blobs, commit/diff,
132 132 syntax highlighting.
133 3. **Issues and changes** — done: list/detail layout, composer, filters,
133 3. **Issues and change requests** — done: list/detail layout, composer, filters,
134 134 close/reopen, discussion, label/assignee triage, writing inline review
135 135 comments.
136 136 4. **Activity and settings** — done: repository activity feed with state
137 changes and actor/assignee filters, repository settings (description, default
137 change requests and actor/assignee filters, repository settings (description, default
138 138 branch, visibility, danger zone), and the instance-admin access section on the
139 139 same Settings page.
140 140 5. **Instance admin** — done: repository create at `/repos/new`, access rules on
141 141 each repository's Settings tab, rename/delete for repository admins, and
142 `/users` for invitations, admin grants, retirement, keys, and sessions.
142 `/users` for accounts, enrollment links, admin grants, retirement, keys, and
143 sessions.
143 144 6. **CI** — done: workflow/job list, cancel a queued run, rerun a finished
144 145 one as another attempt.
145 7. **Polish** — done: repository search, code search, issue/change pagination,
146 7. **Polish** — done: repository search, code search, issue/change-request pagination,
146 147 empty states, a light token block, skip link, focus-visible outlines, and
147 148 narrow-screen table handling. Remaining: a deliberate responsive and
148 149 accessibility audit at 1440/1024/390 px with a real browser.
@@ -158,7 +159,7 @@ every page. Interactions are converted one flow at a time:
158 159 visible save button.
159 160 - done — change approval updates the sidebar, comments update the discussion
160 161 fragment, and close/reopen are page actions.
161 - done — Issues and Changes filters swap their list fragment and push the URL.
162 - done — Issues and Change requests filters swap their list fragment and push the URL.
162 163 - done — repository activity feed swaps its event fragment for type filters and
163 164 pushes the URL.
164 165 - done — diff lines open an anchored composer in place; posted anchors are
@@ -173,33 +174,33 @@ from the server, it does not manage client-side chip state or credential APIs.
173 174
174 175 ## Activity feed
175 176
176 No notification table and no per-user inbox. The feed is derived from Git, the
177 No notification table and no per-account inbox. The feed is derived from Git, the
177 178 metadata branch, tags, and the run queue. Events carry a type, time, actor,
178 title, link, and (for issue/change events) assignees, so the same feed can be
179 title, link, and (for issue/change-request events) assignees, so the same feed can be
179 180 filtered by actor and assignee.
180 181
181 Repository feed is done on `/r/{name}/activity`; Overview stays the project
182 Repository feed is done on `/r/{name}/activity`; Overview stays the repository
182 183 summary. The instance feed is `/activity`, over visible repositories, with the
183 184 repository named on each event, a type filter, and 50-event pages. The landing
184 page shows the ten most recent events as a rail beside the project grid, because
185 a forge's front door should show its projects first. State changes such as closed and reopened
185 page shows the ten most recent events as a rail beside the repository grid,
186 because a forge's front door should show its repositories first. State changes such as closed and reopened
186 187 come from the metadata branch log, which carries a canonical
187 188 `issue: <id> <state>` and `request: <id> <state>` subject. The feed covers
188 issues, changes, comments, approvals, state changes, and releases. Commits and
189 issues, change requests, comments, approvals, state changes, and releases. Commits and
189 190 CI runs are not events: the overview and the runs tab already show them.
190 191
191 192 ## Admin scope
192 193
193 194 Instance admin covers the operations that used to be CLI-only:
194 195
195 - users: create by invitation, retire, grant/revoke admin; inspect/revoke keys
196 and sessions
196 - accounts: create with an enrollment link, retire, grant/revoke admin;
197 inspect/revoke keys and sessions
197 198 - repositories: create, rename, delete
198 199 - per-repository ACL: set roles, default role, approvals, checks, runners
199 200
200 The Users page will not ask an admin to paste a user's SSH key. Account creation
201 uses the existing `identity.CreateWithInvite` path and returns a one-time
202 enrollment link; browser auth must be enabled for that link to work.
201 The Accounts page will not ask an admin to paste an account's SSH key. Account
202 creation uses the existing `identity.CreateWithInvite` path and returns a
203 one-time enrollment link; browser sign-in must be enabled for that link to work.
203 204
204 205 Repository admins still own repository settings (description, default branch,
205 206 visibility, danger zone). Instance admins see an additional access section on the
@@ -207,8 +208,8 @@ same Settings page: roles, the default role, approvals, checks, and runners.
207 208 Repository creation stays an instance-admin operation, but it is a standalone
208 209 page reached from the home page rather than a repository-list admin screen.
209 210
210 Accounts live at `/users`, reached from a Users item in the top navigation that
211 is shown only to instance admins. Every admin write uses the existing stores,
211 Accounts live at `/users`, reached from an Accounts item in the top navigation
212 that is shown only to instance admins. Every admin write uses the existing stores,
212 213 CSRF, and the audit log; the web is a second surface over the same operations,
213 214 not a second implementation.
214 215