feat(app): add Pure black theme (#3012)

* feat(app): add AMOLED and all four Catppuccin themes

Add an AMOLED theme (pure black background) and the four official
Catppuccin flavors (Latte light, Frappé/Macchiato/Mocha dark) to the
appearance picker. Generalize the dark-theme builder to support a light
surface variant, register the new themes with Unistyles, and patch all
registered theme keys when applying font/syntax appearance settings.

* fix(app): localize Catppuccin + AMOLED theme labels across language packs

The initial theme commit pasted the English brand/flavor labels into every
locale. Localize them following each pack's convention: transliterate
Catppuccin and the coffee-flavor names into Arabic/Russian scripts, use
katakana/hanzi equivalents in ja/zh-CN, and standard loanwords in
fr/es/pt-BR. AMOLED is a universal acronym and stays as-is except where
the pack transliterates (Arabic).

* fix(app): make Latte terminal ANSI colors readable

* test(app): cover appearance theme picker options

* refactor(app): scope theme PR to AMOLED

* refactor(app): rename AMOLED theme to Pure Black

* fix(app): refine Pure black appearance

* test(app): wait for sidebar toggle icon

* test(app): remove hover timing race

---------

Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
This commit is contained in:
shrimp
2026-08-09 01:12:53 +02:00
committed by GitHub
co-authored by Mohamed Boudra
parent 8f38d04919
commit c28836b4e5
25 changed files with 228 additions and 51 deletions
+1
View File
@@ -1874,6 +1874,7 @@ export const ar: TranslationResources = {
midnight: "منتصف الليل",
claude: "كلود",
ghostty: "شبحي",
pureBlack: "أسود خالص",
auto: "نظام",
},
},
+1
View File
@@ -1884,6 +1884,7 @@ export const en = {
midnight: "Midnight",
claude: "Claude",
ghostty: "Ghostty",
pureBlack: "Pure black",
auto: "System",
},
},
+1
View File
@@ -1921,6 +1921,7 @@ export const es: TranslationResources = {
midnight: "Medianoche",
claude: "claudio",
ghostty: "fantasmal",
pureBlack: "Negro puro",
auto: "Sistema",
},
},
+1
View File
@@ -1924,6 +1924,7 @@ export const fr: TranslationResources = {
midnight: "Minuit",
claude: "Claude",
ghostty: "Fantôme",
pureBlack: "Noir pur",
auto: "Système",
},
},
+1
View File
@@ -1889,6 +1889,7 @@ export const ja: TranslationResources = {
midnight: "Midnight",
claude: "Claude",
ghostty: "Ghostty",
pureBlack: "ピュアブラック",
auto: "システム",
},
},
+1
View File
@@ -1885,6 +1885,7 @@ export const ko: TranslationResources = {
midnight: "Midnight",
claude: "Claude",
ghostty: "Ghostty",
pureBlack: "순수 검정",
auto: "시스템",
},
},
+1
View File
@@ -1905,6 +1905,7 @@ export const ptBR: TranslationResources = {
midnight: "Midnight",
claude: "Claude",
ghostty: "Ghostty",
pureBlack: "Preto puro",
auto: "Sistema",
},
},
+1
View File
@@ -1910,6 +1910,7 @@ export const ru: TranslationResources = {
midnight: "Полночь",
claude: "Клод",
ghostty: "Призрачный",
pureBlack: "Чистый чёрный",
auto: "Система",
},
},
+1
View File
@@ -1853,6 +1853,7 @@ export const zhCN: TranslationResources = {
midnight: "Midnight",
claude: "Claude",
ghostty: "Ghostty",
pureBlack: "纯黑",
auto: "系统",
},
},