[Thème] Nouveau thème Spark (dark/light, identique à la Console Spark) et défaut = Spark dark #24

Open
opened 2026-10-27 22:06:28 -04:00 by bruno · 0 comments
Owner

Contexte : pendant la mise en place du coffre Secrets, ajout demandé par Bruno d'un nouveau thème ObsiGate nommé Spark, fidèle à la Console Spark (agent.dracodev.net, dépôt Projets/agent-commun), avec modes dark et light, et comme thème par défaut en dark.

Source vérifiée (agent-commun, main, app/console/console.css) :

  • Mécanisme Spark : :root = clair, [data-draco-theme="dark"] = sombre, persistance localStorage draco_console_theme, défaut = prefers-color-scheme. Le mode clair existe déjà côté Spark, aucune déclinaison à inventer.
  • Variables --p-* exactes :
    Clair : fond #fbfbfa, surface #ffffff, bord #e4e5e0, texte #242624, doux #6c7268, faint #8a8f84, chip #f4f5f1, chip-bord #d6d8d1, chip-survol #e9ebe4, agent #eef0ea, champ #ffffff, code #e8eae3, appro-fond #fdf6ec, danger-fond #f6e3de, danger #a03a28, accent #7c5cd6, lien #5b3df0, ok #2ea36b.
    Sombre : fond #17181a, surface #1f2023, bord #33353a, texte #eceeeb, doux #a6aba0, faint #83887e, chip #26272b, chip-bord #3a3c41, chip-survol #2e3036, agent #26272b, champ #1f2023, code #2c2e33, appro-fond #2a2118, danger-fond #40241f, danger #e8a08d, accent #7c5cd6 (inchangé), lien #b39df5, ok #2ea36b (inchangé).
    Exceptions en dur à reprendre aussi : bulle utilisateur / envoi #2f6fed, rouge #cf4b32, ambre #e8a13c, titres approbation #9a6a1c (clair) / #e8bc7a (sombre), pastilles ok #dff2e7/#1d7a4c (clair) / #173d29/#7fd6a8 (sombre).
    Typo Spark : 14.5px/1.55 system-ui, "Segoe UI", sans-serif ; code ui-monospace, "SF Mono", Menlo, Consolas, monospace.

Système ObsiGate vérifié (main, frontend/js/themes.js) :

  • 15 thèmes, un thème = deux modes (dark/light) + high-contrast et sepia générés à la volée. Chaque variante = 39 variables CSS (--bg-primary, --bg-secondary, --bg-sidebar, --bg-hover, --border, --border-md, --text-primary, --text-secondary, --text-muted, --text, --text-2, --text-3, --accent, --accent-green, --accent-card, --accent-bg, --accent-text, --tag-bg, --tag-text, --code-bg, --search-bg, --scrollbar, --resize-handle, --overlay-bg, --danger, --danger-bg, --success, --success-bg, --green, --green-bg, --purple, --purple-bg, --surface, --surface2, --surface3, --ok, --warn, --ai, --err).
  • Persistance uniquement localStorage : obsigate-theme (clé) + obsigate-theme-mode (mode). Aucun thème côté serveur. Le sélecteur de la modale Configurations (#cfg-themes) construit ses cartes dynamiquement depuis THEMES : un nouveau thème y apparaît automatiquement.
  • Défaut actuel codé à 4 endroits côté client : themes.js _currentTheme='defaut-obsigate', _currentMode='dark' ; index.html et admin.html data-theme="dark" ; style.css :root de secours sombre (= palette dark de defaut-obsigate) ; ui.js repli "dark".

Périmètre :

  • UNE seule entrée 'spark' dans THEMES (après defaut-obsigate), avec modes dark et light complets (39 variables chacun), mappés fidèlement depuis les variables --p-* et exceptions Spark ci-dessus ; documenter le mapping en commentaire dans themes.js. Ne PAS créer deux thèmes spark-dark / spark-light.
  • Défaut : _currentTheme='spark', _currentMode='dark' ; mettre à jour le commentaire 15 themes -> 16 themes.
  • Pour un vrai défaut dès le premier rendu (sans flash de l'ancienne palette) : mettre à jour le bloc :root de secours de frontend/style.css avec la palette dark de Spark, garder data-theme="dark" dans index.html/admin.html, et aligner si besoin les couleurs anti-FOUC d'admin.html et le fond du splash d'index.html sur le fond/texte dark de Spark.
  • Optionnel : aligner la meta theme-color d'index.html sur l'accent Spark #7c5cd6.
  • Comportement existants : sans migration, un utilisateur ayant déjà un thème sauvegardé le conserve ; seuls les utilisateurs sans choix sauvegardé basculent sur Spark dark. C'est le comportement voulu. Caveat desktop Tauri : frontend/js/desktop.js syncSystemTheme peut écrire le mode OS si aucune clé obsigate-theme-mode n'existe — à signaler dans le rapport si ce cas doit être géré.
  • Hors périmètre : recolorer les poches de couleurs en dur de style.css (378 hex, statuts, Mermaid, écran de connexion) et la barre Draco (système séparé) — elles suivent le mode, pas la palette Spark, sauf retouche ciblée décidée séparément. Ne pas toucher à la branche du coffre Secrets.

Critères d'acceptation :

  • Le thème « Spark » apparaît dans le sélecteur Configurations, avec ses deux modes dark et light.
  • Un nouvel utilisateur / sans choix sauvegardé arrive sur Spark dark par défaut, sans flash de l'ancienne palette sombre.
  • Les couleurs principales correspondent aux valeurs Spark ci-dessus (fond, surface, bord, texte, accent #7c5cd6, lien, ok, danger).
  • Les thèmes existants et les choix sauvegardés des utilisateurs existants ne sont pas cassés.
  • Vérifications : node --check sur themes.js, comptage 39 variables par variante, défaut vérifié dans le code.
Contexte : pendant la mise en place du coffre Secrets, ajout demandé par Bruno d'un nouveau thème ObsiGate nommé Spark, fidèle à la Console Spark (agent.dracodev.net, dépôt Projets/agent-commun), avec modes dark et light, et comme thème par défaut en dark. Source vérifiée (agent-commun, main, app/console/console.css) : - Mécanisme Spark : :root = clair, [data-draco-theme="dark"] = sombre, persistance localStorage draco_console_theme, défaut = prefers-color-scheme. Le mode clair existe déjà côté Spark, aucune déclinaison à inventer. - Variables --p-* exactes : Clair : fond #fbfbfa, surface #ffffff, bord #e4e5e0, texte #242624, doux #6c7268, faint #8a8f84, chip #f4f5f1, chip-bord #d6d8d1, chip-survol #e9ebe4, agent #eef0ea, champ #ffffff, code #e8eae3, appro-fond #fdf6ec, danger-fond #f6e3de, danger #a03a28, accent #7c5cd6, lien #5b3df0, ok #2ea36b. Sombre : fond #17181a, surface #1f2023, bord #33353a, texte #eceeeb, doux #a6aba0, faint #83887e, chip #26272b, chip-bord #3a3c41, chip-survol #2e3036, agent #26272b, champ #1f2023, code #2c2e33, appro-fond #2a2118, danger-fond #40241f, danger #e8a08d, accent #7c5cd6 (inchangé), lien #b39df5, ok #2ea36b (inchangé). Exceptions en dur à reprendre aussi : bulle utilisateur / envoi #2f6fed, rouge #cf4b32, ambre #e8a13c, titres approbation #9a6a1c (clair) / #e8bc7a (sombre), pastilles ok #dff2e7/#1d7a4c (clair) / #173d29/#7fd6a8 (sombre). Typo Spark : 14.5px/1.55 system-ui, "Segoe UI", sans-serif ; code ui-monospace, "SF Mono", Menlo, Consolas, monospace. Système ObsiGate vérifié (main, frontend/js/themes.js) : - 15 thèmes, un thème = deux modes (dark/light) + high-contrast et sepia générés à la volée. Chaque variante = 39 variables CSS (--bg-primary, --bg-secondary, --bg-sidebar, --bg-hover, --border, --border-md, --text-primary, --text-secondary, --text-muted, --text, --text-2, --text-3, --accent, --accent-green, --accent-card, --accent-bg, --accent-text, --tag-bg, --tag-text, --code-bg, --search-bg, --scrollbar, --resize-handle, --overlay-bg, --danger, --danger-bg, --success, --success-bg, --green, --green-bg, --purple, --purple-bg, --surface, --surface2, --surface3, --ok, --warn, --ai, --err). - Persistance uniquement localStorage : obsigate-theme (clé) + obsigate-theme-mode (mode). Aucun thème côté serveur. Le sélecteur de la modale Configurations (#cfg-themes) construit ses cartes dynamiquement depuis THEMES : un nouveau thème y apparaît automatiquement. - Défaut actuel codé à 4 endroits côté client : themes.js _currentTheme='defaut-obsigate', _currentMode='dark' ; index.html et admin.html data-theme="dark" ; style.css :root de secours sombre (= palette dark de defaut-obsigate) ; ui.js repli "dark". Périmètre : - UNE seule entrée 'spark' dans THEMES (après defaut-obsigate), avec modes dark et light complets (39 variables chacun), mappés fidèlement depuis les variables --p-* et exceptions Spark ci-dessus ; documenter le mapping en commentaire dans themes.js. Ne PAS créer deux thèmes spark-dark / spark-light. - Défaut : _currentTheme='spark', _currentMode='dark' ; mettre à jour le commentaire 15 themes -> 16 themes. - Pour un vrai défaut dès le premier rendu (sans flash de l'ancienne palette) : mettre à jour le bloc :root de secours de frontend/style.css avec la palette dark de Spark, garder data-theme="dark" dans index.html/admin.html, et aligner si besoin les couleurs anti-FOUC d'admin.html et le fond du splash d'index.html sur le fond/texte dark de Spark. - Optionnel : aligner la meta theme-color d'index.html sur l'accent Spark #7c5cd6. - Comportement existants : sans migration, un utilisateur ayant déjà un thème sauvegardé le conserve ; seuls les utilisateurs sans choix sauvegardé basculent sur Spark dark. C'est le comportement voulu. Caveat desktop Tauri : frontend/js/desktop.js syncSystemTheme peut écrire le mode OS si aucune clé obsigate-theme-mode n'existe — à signaler dans le rapport si ce cas doit être géré. - Hors périmètre : recolorer les poches de couleurs en dur de style.css (378 hex, statuts, Mermaid, écran de connexion) et la barre Draco (système séparé) — elles suivent le mode, pas la palette Spark, sauf retouche ciblée décidée séparément. Ne pas toucher à la branche du coffre Secrets. Critères d'acceptation : - Le thème « Spark » apparaît dans le sélecteur Configurations, avec ses deux modes dark et light. - Un nouvel utilisateur / sans choix sauvegardé arrive sur Spark dark par défaut, sans flash de l'ancienne palette sombre. - Les couleurs principales correspondent aux valeurs Spark ci-dessus (fond, surface, bord, texte, accent #7c5cd6, lien, ok, danger). - Les thèmes existants et les choix sauvegardés des utilisateurs existants ne sont pas cassés. - Vérifications : node --check sur themes.js, comptage 39 variables par variante, défaut vérifié dans le code.
bruno added the kanban:in_progress label 2026-10-27 22:06:35 -04:00
bruno added kanban:review and removed kanban:in_progress labels 2026-10-27 23:25:50 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Projets/ObsiGate#24