6.0 KiB
Memoire coding — genere automatiquement, ne pas editer a la main
Source de verite operationnelle : table
memory_entriesdans context-hub (SQLite + API/MCP). Ce fichier est une projection durable et versionnee, regeneree a chaquerecord_lesson. Derniere generation : 2026-08-26T20:13:14Z
Transverse
Decisions
- [coding-dec-0002] Injection UI native dans le GUI DSH via profil web (sans root) Le GUI dsh web compose l'HTML à la volée : un paquet dual-face (exports ./client + dsh.client.platform=web, bundle window.ModuleLoader.load) installé via pnpm add file: dans ~/.dsh/profiles/web + ligne - insert dans cordis.patch.yml est servi nativement sur /plugins//client.js. Scan des nouveaux plugins au boot uniquement (redémarrage requis), mais le bundle est relu du disque à chaque requête : itération = edit + F5. Test sans risque : cloner ~/.dsh vers /tmp et booter DSH_HOME=/tmp/... dsh web --port 3999 --no-open. cree par DSH le 2026-08-24 21:31:18 — tags: dsh, gui, plugin, client-module, cordis
Projet: Rapport_jury
Decisions
- [coding-dec-0003] Référence design — thème clair bolbol.tn/history Thème clair de référence (https://bolbol.tn/history/, thème par défaut) : --bg-body #f8f9fc · cartes #ffffff / alt #f0f2f8 · texte #1a1a2e / secondaire #5a5a7a / atténué #9a9ab0 · bordures #e0e2ec · accent violet #6c5ce7 + teal #00b894 (gradient 135°) + or #fdcb6e · code-bg #f0f2f8 · ombre douce rgba(0,0,0,.06) · radius 12px. Le site propose aussi un thème « nature » crème (#f5f0e8/#faf6ef, vert #2d7d46 → or #b8860b) et un dark navy (#0f0f1a, violet→teal). Appliqué au projet Rapport_jury : mode light conforme + palette d'accent « nature » ajoutée ; signature choisie : @Nabil.Derouiche · DSH · 2026. cree par DSH le 2026-08-26 10:56:27 — tags: design, theme-light, palette, signature, reference, bolbol.tn
Erreurs communes
-
[coding-err-0002] Onglets : panneaux frères ≠ descendants · toujours grep « undefined » avant livraison Deux pièges UI récurrents : (1) les boutons d'onglets dans un conteneur [data-tabs] avec panneaux FRÈRES nécessitent de chercher les panes dans tabs.parentElement, pas dans le conteneur lui-même ; (2) lors de la génération de HTML par gabarit, aligner les clés du helper (cap._t/_s) avec celles lues au rendu — sinon affichage « undefined ». Toujours auditer le HTML final par grep « undefined » avant livraison (Rapport_jury v1.6 : 9 occurrences éliminées). cree par DSH le 2026-08-26 12:28:45 — tags: tabs, ui, template, qa
-
[coding-err-0001] Barres empilées SVG : accumuler par colonne, jamais à travers les groupes Bug SVG : dans un graphique à barres empilées, l'accumulateur de hauteur doit être remis à zéro pour CHAQUE colonne/groupe de l'axe X (boucle externe = labels, boucle interne = séries). Une boucle séries→labels fait cumuler les valeurs à travers les groupes et dessine des segments hors échelle (y négatif). Corrigé dans Rapport_jury/_work/engine.js barChart(). cree par DSH le 2026-08-26 12:28:41 — tags: svg, charts, stacked-bars, bugfix
Projet: dsh-vps
Decisions
- [coding-dec-0001] dsh-vps : architecture MCP = plugin contexthub 0.1.1-rc.2 avec isolation par scopes L'agent DSH sur le VPS expose sa mémoire persistante via le plugin MCP contexthub v0.1.1-rc.2 : isolation stricte par scopes (infra = SSH/Docker/réseau NAS, llm = bifrost/opencode-go, nyora = apps perso, coding = leçons techniques), chaque agent ne voyant que les scopes qui lui sont autorisés (get_my_context en début de session). Lecture outillée via get_rules/get_context_pack/search_rules ; l'écriture passe par l'API HTTP du hub : PATCH /api/rules/{scope} avec header X-API-Key (jamais de bearer), et les leçons via record_lesson (types decision/constraint/best-practice/common-error/do-not-use). À retenir pour les prochaines sessions : appeler get_my_context au démarrage et get_context_pack avant tout travail substantiel, puis record_lesson après toute décision structurante. cree par DSH le 2026-08-24 21:23:05 — tags: dsh-vps, mcp, contexthub, scopes, isolation, architecture
Contraintes
- [coding-cst-0001] Canal SSH NAS dsh-vps : port 22222, user Best0f, commandes courtes obligatoires Le NAS du projet dsh-vps se joint en SSH sur 192.168.100.33 port 22222 (user Best0f ; identités séparées : bolbol=Gitea, bestof=Portainer ; réseau conteneur 172.17.0.1, LAN 192.168.100.33 ; Docker uid 1026/gid 100). Contraintes MCP-NAS éprouvées : passer par heredoc -> timeout, repli heredoc -> printf/python, limiter chaque commande à 350 caractères, et une session est considérée empoisonnée après 3 erreurs (à réinitialiser plutôt qu'insister). cree par DSH le 2026-08-24 21:23:11 — tags: dsh-vps, ssh, nas, 22222, mcp, contrainte
Bonnes pratiques
- [coding-bp-0001] dsh-vps : Externalisation des cles API via env_file et proscription des secrets en dur Pour eviter tout decalage lors des rotations de cles (erreur API key is invalid), les cles sont externalisees dans /home/dsh-agent/dsh-vps/.env (chmod 600) et injectees via env_file dans docker-compose.yml. Les templates de scaffold et compose ne doivent contenir aucune cle en dur. cree par GEMINI le 2026-08-25 14:30:37 — tags: dsh-vps, docker-compose, rotation, secrets, env_file
Erreurs communes
- [coding-err-0003] NyoraNotes MCP : dossier dérivé du premier tag, notes hors préfixe dsh/ illisibles (403) Passerelle MCP nyora-notes-mcp (streamable-http 100.86.197.88:3098/mcp/, auth NYORA_NOTES_MCP_AUTH) : notes_create ignore le file_path fourni et dérive le dossier du PREMIER tag. Une note créée avec uniquement le tag test-mcp-natif atterrit sous test-mcp-natif/note-...md, hors de l'espace autorisé de l'agent DSH (préfixe dsh/) : notes_get renvoie 403 Forbidden et le filtre notes_list par tag ne la ressort pas. Pour qu'une note soit relisible par l'agent, le premier tag doit être dsh (ex: dsh/note-...md). cree par DSH le 2026-08-26 20:13:14 — tags: nyora-notes, mcp, dsh-vps, permissions, notes