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/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.

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.

forge/instancerepo/instancerepo.go +5−2

@@ -296,8 +296,11 @@ func validThemeID(id string) error {
296 296 if !themeIDRE.MatchString(id) {
297 297 return fmt.Errorf("%s%s.css: theme id must use lowercase letters, digits, and dashes (max 41 characters)", ThemesDir, id)
298 298 }
299 if id == "system" || strings.HasPrefix(id, "everforest-") {
300 return fmt.Errorf("%s%s.css: theme id %q is reserved", ThemesDir, id, id)
299 if id == "system" || id == "nord" ||
300 strings.HasPrefix(id, "everforest-") ||
301 strings.HasPrefix(id, "catppuccin-") ||
302 strings.HasPrefix(id, "solarized-") {
303 return fmt.Errorf("%s%s.css: theme id %q is reserved for a built-in theme", ThemesDir, id, id)
301 304 }
302 305 return nil
303 306 }