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.

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

0584bb700c0b144752ddc29764d697551234f862 · Keenan Nemetz · 1d ago · parent c980fe53

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

Ship four more Appearance choices: Catppuccin Mocha, Catppuccin Latte, Nord, and Solarized Light. Each is a token block in static/palettes.css, scoped to its data-theme value and loaded after Everforest, before instance theme packs and profile/custom.css.

The ids join theme.js's allowlist and the account picker, and the instance repository's reserved-name check now covers nord and the catppuccin-/solarized- prefixes so a theme pack cannot shadow a built-in. NOTICE and three MIT license files record the palettes.

server/web/static/theme.js +9−5

@@ -1,8 +1,8 @@
1 // Everforest is built in, and the instance repository may add theme packs of
2 // its own. The account page also carries a text-size preset. All of it is a
3 // browser preference: a saved choice wins; with no saved theme, the medium
4 // Everforest variant follows the operating system. This runs before the
5 // stylesheet links in the document head so neither choice flashes.
1 // Everforest and a few named palettes are built in, and the instance repository
2 // may add theme packs of its own. The account page also carries a text-size
3 // preset. All of it is a browser preference: a saved choice wins; with no saved
4 // theme, the medium Everforest variant follows the operating system. This runs
5 // before the stylesheet links in the document head so neither choice flashes.
6 6 (() => {
7 7 const root = document.documentElement;
8 8 const themeKey = 'vole-theme';
@@ -17,6 +17,10 @@
17 17 'everforest-light-hard',
18 18 'everforest-light-medium',
19 19 'everforest-light-soft',
20 'catppuccin-mocha',
21 'catppuccin-latte',
22 'nord',
23 'solarized-light',
20 24 ...(root.dataset.themes || '').split(',').filter(Boolean),
21 25 ]);
22 26 const scales = new Set(['small', 'medium', 'large']);