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.

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/static/vole.css +6−8

@@ -136,15 +136,13 @@ img { max-width: 100%; }
136 136 letter-spacing: -0.01em;
137 137 }
138 138 .brand:hover { text-decoration: none; }
139 /* The rodent emblem: a dark tile with a white face, so the mark reads the same
140 on the light and the dark theme without a second set of assets. */
139 141 .brand .mark {
140 display: inline-grid;
141 place-items: center;
142 width: 20px;
143 height: 20px;
144 border-radius: 5px;
145 background: var(--accent);
146 color: var(--accent-fg);
147 font: 700 12px/1 var(--mono);
142 display: block;
143 flex: none;
144 width: 22px;
145 height: 22px;
148 146 }
149 147
150 148 .topnav { display: flex; gap: 2px; }