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.
Document the tokens the starter stylesheet offers
bc95767f6f9e79c0382becabe90b31d790d6554f · Keenan Nemetz · 1d ago · parent 3e7c5e67
Document the tokens the starter stylesheet offers The starter profile/custom.css used a plain :root selector, which loses to the more specific :root[data-theme^="everforest-"] rules in the built-in theme sheet. Show the selector that wins, group the tokens by what they change, and add dark/light blocks plus the page-level classes to reach for when a token is not enough. Put the same reference in docs/configuration.md so the customization is documented outside the generated repository.
docs/configuration.md +46
| @@ -175,6 +175,52 @@ instance_name = "Acme Forge" | |||
| 175 | 175 | ||
| 176 | 176 | None of this changes the `vole` wordmark in the top bar. | |
| 177 | 177 | ||
| 178 | ### Theming | ||
| 179 | |||
| 180 | `profile/custom.css` is loaded after the built-in `vole.css` and | ||
| 181 | `everforest.css`. Override the design tokens rather than copying rules; the | ||
| 182 | layout, contrast, and responsive behaviour then stay intact. | ||
| 183 | |||
| 184 | Use `:root[data-theme]`, not plain `:root`. Everforest sets its tokens on | ||
| 185 | `:root[data-theme^="everforest-"]`, which is more specific than `:root`, so a | ||
| 186 | plain `:root` override can lose even though the custom file loads later. | ||
| 187 | |||
| 188 | ```css | ||
| 189 | :root[data-theme] { | ||
| 190 | --accent: #c678dd; | ||
| 191 | --accent-soft: color-mix(in srgb, var(--accent) 14%, transparent); | ||
| 192 | --radius: 4px; | ||
| 193 | --radius-lg: 6px; | ||
| 194 | --page-max: 1200px; | ||
| 195 | } | ||
| 196 | ``` | ||
| 197 | |||
| 198 | A value that has to differ between dark and light modes belongs in one of these | ||
| 199 | blocks. They match every Everforest variant: | ||
| 200 | |||
| 201 | ```css | ||
| 202 | :root[data-theme^="everforest-dark"] { --bg: #101418; } | ||
| 203 | :root[data-theme^="everforest-light"] { --bg: #fffdf7; } | ||
| 204 | ``` | ||
| 205 | |||
| 206 | The tokens, grouped by what they change: | ||
| 207 | |||
| 208 | | Group | Tokens | | ||
| 209 | |---|---| | ||
| 210 | | surfaces | `--bg`, `--bg-panel`, `--bg-raised`, `--bg-hover`, `--bg-active`, `--border`, `--border-strong` | | ||
| 211 | | text | `--fg`, `--fg-muted`, `--fg-faint` | | ||
| 212 | | identity | `--accent`, `--accent-fg`, `--accent-soft` | | ||
| 213 | | status | `--good`, `--good-soft`, `--bad`, `--bad-soft`, `--warn`, `--warn-soft`, `--running`, `--merged`, `--merged-soft`, `--status-fg` | | ||
| 214 | | shape | `--radius`, `--radius-lg`, `--page-max`, `--page-gutter`, `--search-w` | | ||
| 215 | | type | `--font`, `--mono`, `--fs`, `--lh`. Leave `--font-scale` alone: it is the reader's text-size preset | | ||
| 216 | | syntax | `--syn-comment`, `--syn-punctuation`, `--syn-operator`, `--syn-number`, `--syn-string`, `--syn-keyword`, `--syn-function`, `--syn-type`, `--syn-variable`, `--syn-added`, `--syn-deleted` | | ||
| 217 | |||
| 218 | If a token cannot express the change, these page-level classes cover most | ||
| 219 | re-skins: `.panel`, `.readme`, `.md`, `.repo-card`, `.repo-grid`, `.home-grid`, | ||
| 220 | `.home-rail`, `.repohead`, `.tabs`, `.chip`, `.label`, `.status`, | ||
| 221 | `.config-table`, `.diff`, `.blob`. They are not a public API: an upgrade may move | ||
| 222 | markup, so prefer a token when one exists. | ||
| 223 | |||
| 178 | 224 | ## Public URL | |
| 179 | 225 | ||
| 180 | 226 | Set `public_url` when people reach Vole through a different address than | |