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.
Write page subtitles as prose, not Git jargon
20d459f568cb5f5c95c5a9ed91ec9d088a6a2428 · Keenan Nemetz · 11d ago · parent b06184d1
Write page subtitles as prose, not Git jargon The Changes subtitle described branches, bases, and landing. Say what the page is for instead: proposed updates, reviewed and approved before they are merged. Do the same for the New change form. Add the Copy rules to the UI plan, point AGENTS.md at them, give the Issues list the subtitle it was missing, and check every repository tab still has one.
docs/ui-plan.md +24−1
| @@ -36,6 +36,29 @@ deliberately rather than by drift. | |||
| 36 | 36 | limited to Home, Activity, search, and the account menu; the repository owns | |
| 37 | 37 | its own horizontal tabs. | |
| 38 | 38 | ||
| 39 | ## Copy | ||
| 40 | |||
| 41 | Interface text is part of the product. Write it for someone who uses the project | ||
| 42 | but does not know how it is built. | ||
| 43 | |||
| 44 | - A page subtitle says what the page is for, in one sentence a newcomer could | ||
| 45 | repeat. It describes the user's goal, not the schema or the Git operations | ||
| 46 | behind it. | ||
| 47 | - Use the reader's words: *proposed update*, *review*, *merge*, *saved version*. | ||
| 48 | Avoid *base branch*, *head commit*, *land*, *ref*, *metadata branch*, and other | ||
| 49 | internal names unless the page is specifically about that concept and there is | ||
| 50 | no shorter phrase. | ||
| 51 | - Name the outcome, not the mechanism. "Proposed updates, reviewed before they | ||
| 52 | are merged" beats "Branches proposed for a base branch, with review and | ||
| 53 | approvals before they land." | ||
| 54 | - Labels stay labels; sentences stay sentences. A button says *New change*, not | ||
| 55 | *Create a change request document*. | ||
| 56 | - Read it aloud before committing. If it sounds like a commit message, a schema | ||
| 57 | comment, or an API error, rewrite it for the person looking at the screen. | ||
| 58 | |||
| 59 | The web UI calls a change request a **Change**. The formal documents in this | ||
| 60 | directory can keep the longer name for the concept. | ||
| 61 | |||
| 39 | 62 | ## Navigation model | |
| 40 | 63 | ||
| 41 | 64 | Global bar (slim): `vole` · `Home` · `Activity` · search · account menu. The | |
| @@ -51,7 +74,7 @@ line: Clone always, and Site only when the repository has a deployed site. The | |||
| 51 | 74 | tab's own header is a smaller section title because the tabs, not the page, are | |
| 52 | 75 | the navigation. The tabs are: | |
| 53 | 76 | ||
| 54 | `Overview` · `Activity` · `Code` · `Issues` · `Change requests` · `Releases` · `Runs` · `Locks` · `Settings` | ||
| 77 | `Overview` · `Activity` · `Code` · `Issues` · `Changes` · `Releases` · `Runs` · `Locks` · `Settings` | ||
| 55 | 78 | ||
| 56 | 79 | No sidebar. A sidebar only pays for its width when there are many persistent | |
| 57 | 80 | destinations; here the repository has several and the global bar is separate, | |