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.
Use the rodent emblem as the logo and the favicon
6416cab19d8c205d4ed643399f9a78596f5a31ca · Keenan Nemetz · 13d ago · parent 13cff33f
Use the rodent emblem as the logo and the favicon The header carried a letter in an accent chip and the favicon was a separate "v" glyph, so the forge had two marks that could drift apart. They are now one piece of artwork, served from the binary like every other static asset: a dark rounded tile with a white rodent face, named by the shell as both the icons and the header mark. The source drawing is a tile on a white page. Only the page is removed — a fuzz flood fill from the corner, which leaves the face opaque because the tile encloses it — so the mark has transparent corners and reads on either theme without a second set of assets. Sizes are 128 for the header (22 CSS px, so it survives a high-DPI screen), 32 and 16 for the tab, each square and centred because a favicon that is 31 pixels tall is a favicon some browser will letterbox. favicon.svg is removed; nothing else referenced it. A test now asserts that the three files are served as PNG and that the shell names them, so the next rename cannot leave every page pointing at a missing icon.
server/web/templates/chrome.html +3−2
| @@ -10,7 +10,8 @@ | |||
| 10 | 10 | <meta name="csrf" content="{{.CSRF}}"> | |
| 11 | 11 | <meta name="color-scheme" content="dark light"> | |
| 12 | 12 | <title>{{.Title}} · Vole</title> | |
| 13 | <link rel="icon" href="/static/favicon.svg" type="image/svg+xml"> | ||
| 13 | <link rel="icon" type="image/png" sizes="32x32" href="/static/favicon-32.png"> | ||
| 14 | <link rel="icon" type="image/png" sizes="16x16" href="/static/favicon-16.png"> | ||
| 14 | 15 | <link rel="stylesheet" href="/static/vole.css"> | |
| 15 | 16 | <script src="/static/htmx.min.js" defer></script> | |
| 16 | 17 | <script src="/static/auth.js" defer></script> | |
| @@ -18,7 +19,7 @@ | |||
| 18 | 19 | </head> | |
| 19 | 20 | <body> | |
| 20 | 21 | <header class="topbar"> | |
| 21 | <a class="brand" href="/" aria-label="Vole home"><span class="mark" aria-hidden="true">v</span>vole</a> | ||
| 22 | <a class="brand" href="/" aria-label="Vole home"><img class="mark" src="/static/logo.png" alt="" width="22" height="22" aria-hidden="true">vole</a> | ||
| 22 | 23 | <nav class="topnav" aria-label="Global"> | |
| 23 | 24 | <a class="{{if eq .Section "activity"}}active{{end}}" href="/activity"{{if eq .Section "activity"}} aria-current="page"{{end}}>{{icon "activity"}}Activity</a> | |
| 24 | 25 | {{if .InstanceAdmin}}<a class="{{if eq .Section "users"}}active{{end}}" href="/users"{{if eq .Section "users"}} aria-current="page"{{end}}>{{icon "users"}}Accounts</a>{{end}} | |