[client] Add light mode with system, light, and dark theme options (#7344)

* desktop UI light mode

* Theme review fixes plus macOS window outline fix

* Windows runtime chrome re-theming plus apply serialization

* Windows chrome threading and theme event ordering fixes

* Darken toggle and setting sidebar text

* resolve theme appearance, apply on UI thread

* read theme once per window

* Re-assert Windows dark opt-in after SetTheme

* split app-wide GTK theming from per-window chrome

* Update Wails dependency and checksums

* KDE tray icon panel fix

* Five review fixes: theme ordering, cgo dedup, KDE panel resolution

* Path guard hardening, toggle contrast, windows comment

* non-vacuous escape tests

* Default view edits

* Polish settings nav, controls, borders, and disc

* Profiles settings boarder, modals, and buttons

* Additional edits based on feedback

* Switch colors away from slight blue hue

* Update missing lang

* Fix vertical tab active view
This commit is contained in:
Brandon Hopkins
2026-09-11 08:25:10 -07:00
committed by GitHub
parent f422c41654
commit ec0c36b0e7
68 changed files with 1853 additions and 259 deletions
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Keine Sprachen gefunden."
},
"settings.general.theme.label": {
"message": "Erscheinungsbild"
},
"settings.general.theme.help": {
"message": "Hell, Dunkel oder die Systemeinstellung verwenden."
},
"settings.general.theme.system": {
"message": "System"
},
"settings.general.theme.light": {
"message": "Hell"
},
"settings.general.theme.dark": {
"message": "Dunkel"
},
"settings.general.management.label": {
"message": "Management-Server"
},
+20
View File
@@ -759,6 +759,26 @@
"message": "No languages match.",
"description": "Shown when no languages match the search."
},
"settings.general.theme.label": {
"message": "Theme",
"description": "Label for the appearance/theme picker."
},
"settings.general.theme.help": {
"message": "Choose light or dark, or follow your system appearance.",
"description": "Helper text for the theme picker."
},
"settings.general.theme.system": {
"message": "System",
"description": "Theme option: follow the OS appearance."
},
"settings.general.theme.light": {
"message": "Light",
"description": "Theme option: light appearance."
},
"settings.general.theme.dark": {
"message": "Dark",
"description": "Theme option: dark appearance."
},
"settings.general.management.label": {
"message": "Management Server",
"description": "Label for the management-server selector."
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Ningún idioma coincide."
},
"settings.general.theme.label": {
"message": "Tema"
},
"settings.general.theme.help": {
"message": "Elija el tema claro u oscuro, o siga la apariencia del sistema."
},
"settings.general.theme.system": {
"message": "Sistema"
},
"settings.general.theme.light": {
"message": "Claro"
},
"settings.general.theme.dark": {
"message": "Oscuro"
},
"settings.general.management.label": {
"message": "Servidor de gestión"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Aucune langue ne correspond."
},
"settings.general.theme.label": {
"message": "Thème"
},
"settings.general.theme.help": {
"message": "Choisissez le thème clair ou sombre, ou suivez l'apparence du système."
},
"settings.general.theme.system": {
"message": "Système"
},
"settings.general.theme.light": {
"message": "Clair"
},
"settings.general.theme.dark": {
"message": "Sombre"
},
"settings.general.management.label": {
"message": "Serveur de gestion"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Nincs találat."
},
"settings.general.theme.label": {
"message": "Téma"
},
"settings.general.theme.help": {
"message": "Válassza a világos vagy sötét témát, vagy kövesse a rendszer beállítását."
},
"settings.general.theme.system": {
"message": "Rendszer"
},
"settings.general.theme.light": {
"message": "Világos"
},
"settings.general.theme.dark": {
"message": "Sötét"
},
"settings.general.management.label": {
"message": "Felügyeleti szerver"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Nessuna lingua corrisponde."
},
"settings.general.theme.label": {
"message": "Tema"
},
"settings.general.theme.help": {
"message": "Scelga il tema chiaro o scuro, oppure segua l'aspetto del sistema."
},
"settings.general.theme.system": {
"message": "Sistema"
},
"settings.general.theme.light": {
"message": "Chiaro"
},
"settings.general.theme.dark": {
"message": "Scuro"
},
"settings.general.management.label": {
"message": "Server di gestione"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "一致する言語がありません。"
},
"settings.general.theme.label": {
"message": "テーマ"
},
"settings.general.theme.help": {
"message": "ライト、ダーク、またはシステムの外観に従います。"
},
"settings.general.theme.system": {
"message": "システム"
},
"settings.general.theme.light": {
"message": "ライト"
},
"settings.general.theme.dark": {
"message": "ダーク"
},
"settings.general.management.label": {
"message": "管理サーバー"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Nenhum idioma corresponde."
},
"settings.general.theme.label": {
"message": "Tema"
},
"settings.general.theme.help": {
"message": "Escolha claro, escuro ou siga a aparência do sistema."
},
"settings.general.theme.system": {
"message": "Sistema"
},
"settings.general.theme.light": {
"message": "Claro"
},
"settings.general.theme.dark": {
"message": "Escuro"
},
"settings.general.management.label": {
"message": "Servidor de gerenciamento"
},
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "Языки не найдены."
},
"settings.general.theme.label": {
"message": "Тема"
},
"settings.general.theme.help": {
"message": "Выберите светлую или тёмную тему либо следуйте системной."
},
"settings.general.theme.system": {
"message": "Системная"
},
"settings.general.theme.light": {
"message": "Светлая"
},
"settings.general.theme.dark": {
"message": "Тёмная"
},
"settings.general.management.label": {
"message": "Сервер управления"
},
+17 -2
View File
@@ -569,6 +569,21 @@
"settings.general.language.empty": {
"message": "Не знайдено жодної мови."
},
"settings.general.theme.label": {
"message": "Тема"
},
"settings.general.theme.help": {
"message": "Виберіть світлу чи темну тему або використовуйте системні налаштування."
},
"settings.general.theme.system": {
"message": "Системна"
},
"settings.general.theme.light": {
"message": "Світла"
},
"settings.general.theme.dark": {
"message": "Темна"
},
"settings.general.management.label": {
"message": "Сервер керування"
},
@@ -764,7 +779,7 @@
"settings.troubleshooting.anonymize.help": {
"message": "Приховує IP-адреси, домени та інші конфіденційні дані."
},
"settings.troubleshooting.anonymize.info": {
"settings.troubleshooting.anonymize.info": {
"message": "«Стандартний» залишає внутрішні адреси IPv4 та імена пірів читабельними для служби підтримки. «Суворий» додатково анонімізує приватні (RFC 1918), CGNAT- та link-local-адреси, імена пірів і публічні ключі WireGuard. Однакові значення замінюються тим самим псевдонімом, тож піри залишаються розрізнюваними. Використовуйте «Суворий», якщо ділитеся архівом за межами організації."
},
"settings.troubleshooting.anonymize.none": {
@@ -1370,7 +1385,7 @@
"settings.ssh.privilege.oneWayInverted": {
"message": "Ви можете увімкнути це, але щоб вимкнути знову, знадобиться {actor}:"
},
"settings.ssh.privilege.authorizePending": {
"settings.ssh.privilege.authorizePending": {
"message": "Очікування авторизації…"
}
}
+15
View File
@@ -571,6 +571,21 @@
"settings.general.language.empty": {
"message": "没有匹配的语言。"
},
"settings.general.theme.label": {
"message": "主题"
},
"settings.general.theme.help": {
"message": "选择浅色、深色或跟随系统外观。"
},
"settings.general.theme.system": {
"message": "跟随系统"
},
"settings.general.theme.light": {
"message": "浅色"
},
"settings.general.theme.dark": {
"message": "深色"
},
"settings.general.management.label": {
"message": "管理服务器"
},