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.

#228

Add Catppuccin, Nord, and Solarized as built-in themes

merged · by keenan 23h ago · merged into main at 8f0f3e8d by keenan 22h ago

keenan opened this 23h ago

What

Add four built-in themes to Account → Appearance:

  • Catppuccin Mocha
  • Catppuccin Latte
  • Nord
  • Solarized Light

Each is a token block in server/web/static/palettes.css, scoped to its data-theme value. The sheet is linked after Everforest and before instance theme packs and profile/custom.css, so ordering stays: base → built-in themes → instance themes → instance-wide overrides.

Details

  • Add the four ids to theme.js’s allowlist and the Account picker.
  • Define the full token set for each palette, including --syn-*, color-scheme, and soft/status colours, so a non-Everforest theme does not inherit missing syntax colours.
  • Reserve nord and the catppuccin- and solarized- prefixes in the instance-theme name check, so a theme pack cannot shadow a built-in.
  • Record Catppuccin, Nord, and Solarized in NOTICE with three MIT license files. All three upstream palettes are MIT, which is compatible with Vole’s Apache-2.0 distribution.
  • Update the UI test to check the new options and the new stylesheet.

Checks

./vole workflow run verify passes, including the license inventory.

Discussion (6)

keenan 23h ago

Flattened the Appearance picker: removed the Everforest, Palettes, and This instance optgroups. It is now one list — System, the six Everforest variants, the four new palettes, then instance themes — with no category headers.

Head moved to b42d384; ./vole workflow run verify passes.

keenan 23h ago

Added six more palettes for variety:

  • Rosé Pine Moon (dark)
  • Rosé Pine Dawn (light)
  • Kanagawa Wave (dark)
  • Dracula (dark)
  • Tokyo Night (dark)
  • Ayu Light (light)

Each has a full token set including --syn-*, and the six ids are reserved in the instance-theme name check (rose-pine-*, kanagawa-*, ayu-*, exact dracula / tokyo-night). All five upstream projects are MIT; their notices and license files are in NOTICE and server/web/static/.

Head moved to 97b3b02; ./vole workflow run verify passes, including the license inventory.

keenan 22h ago

Changed the brand mark for light themes.

It was the theme’s ink as a transparent mask, which looked smudgy on a pale bar. It is now a rounded tile in --fg with the page colour showing through the head, matching the favicon’s figure-ground. Dark themes keep the old transparent emblem.

The treatment is token-driven (--mark-tile, --mark-ink, --mark-pad), so a custom light theme can opt in from its own stylesheet. The mark is also 30px instead of 28px.

Head moved to 8911ab5; ./vole workflow run verify passes.

keenan 22h ago

Changed the light-theme brand mark again, per review:

  • No dark tile. The head stays the page/light colour.
  • A dark outline is drawn with four offset drop-shadows around the masked shape.
  • Tokens are now --mark-fill and --mark-outline; dark themes keep the transparent emblem, and light themes opt into the light fill + dark outline.
  • The mark stays 30px.

Head moved to e3b9c83; ./vole workflow run verify passes.

keenan 22h ago

Reworked the light-theme mark outline:

  • The outline is now a separate thin ring around the outer silhouette only. It no longer traces the eyes, nose, or whisker gaps.
  • It is thinner than the drop-shadow version: about 0.75px at the 30px mark size.
  • The head stays the light page colour.
  • New asset: server/web/static/vole-head-outline.png, generated from the outer silhouette of vole-head.png. Dark themes still use the transparent emblem.

Head moved to ed667a0; ./vole workflow run verify passes.

keenan 22h ago

Fixed the missing face detail.

The ring-only outline left the light head blank. The dark layer behind it is now a slightly expanded solid silhouette instead of a ring:

  • Its expansion gives the thin outside outline.
  • The eye, mouth, and inner-ear holes in the light fill show the dark layer through.
  • The open whisker gaps still show the bar.
  • Thickness is unchanged (about 0.75px at 30px).

Swapped vole-head-outline.png for vole-head-solid.png. Head moved to 8f0f3e8; ./vole workflow run verify passes.