- overlays Nuxt UI (UModal/USlideover) : géométrie posée en CSS
(assets/css/overlays.css) — les utilitaires tailwind attendus par @nuxt/ui
ne sont pas générés (UnoCSS ne scanne pas node_modules) : drawer mobile et
modales de confirmation se rendaient hors écran
- a11y : title/description sur les 3 overlays (DialogTitle/Description
rendus, warnings reka-ui éteints), fermeture du drawer ancrée et testée
- suppression du collectif actif : bascule sur un collectif restant —
jamais d'accueil orphelin (test store ajouté, 343 vitest verts)
- observatoire : la route « transmis » entre dans les barres (base 100 %)
- overflows mobiles à zéro : formules KaTeX (défilement), table vigueur
(défilement < 768px), pill cible (retour à la ligne), inputs decider et
mandat (border-box)
- vérifié navigateur : drawer, modale, 14 routes sans débordement,
zéro erreur console
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- les seeds (Ğ1, Atelier) n'ont aucun isMe : la carte identité propose
désormais de se désigner parmi les personnes existantes (chips) ou de
s'ajouter (formulaire), au lieu d'un état vide sans issue
- vitest 13 fichiers verts, build zéro erreur
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Ajout clause else IS NULL sur tous les endpoints list (protocols, decisions,
mandates, documents, groups, votes) — sans X-Organization → données globales
seulement, jamais le contenu d'un autre espace
- _get_protocol/_get_decision/_get_mandate : org_id propagé à tous les
endpoints GET/PUT/DELETE/advance/assign/revoke/steps → 404 si UUID d'un
autre espace
- votes.py : list_vote_sessions filtre via JOIN VotingProtocol.organization_id
- groups.py : suppression _org_id_from_header() mort, create_group assigne
organization_id correctement
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remplace par un bloc DO $$ IF NOT EXISTS ... $$ pour le FK circulaire
item_versions→document_items. Testé localement sur pg-test : 5 migrations
OK + idempotence OK.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 0b9c1d2e3f4a : migration initiale (CREATE TABLE IF NOT EXISTS) — safe
sur une DB déjà bootstrappée via create_all()
- 70914b334cfb : ADD COLUMN IF NOT EXISTS (organization_id) — was down_revision=None
- b78571ae9e00 : CREATE TABLE IF NOT EXISTS qualification_protocols
- c4e812fb3a01 : CREATE TABLE IF NOT EXISTS groups + group_members
- d91a3c7f8b02 : ADD COLUMN IF NOT EXISTS origin (mandates)
- Dockerfile prod : restaure alembic upgrade head au démarrage
Sur le serveur prod, exécuter une fois :
docker exec <projet>-backend alembic upgrade head
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le lifespan FastAPI appelle déjà init_db() (create_all) au démarrage.
Lancer alembic en plus cassait sur une DB vide (migration initiale manquante).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Login : panneau proto-mode en avant quand DEMO_MODE actif (profils API)
masque le formulaire extension-required ; note trustWallet à venir
- auth.ts : TODO trustWallet avec protocole postMessage prévu
- routers/auth.py : TODO trustWallet au point de vérification signature
- test_middleware : fixture _create_tables (autouse) — ASGITransport ne
déclenche pas le lifespan, init_db() ne tournait pas → duniter_identities
introuvable au verify ; 224/224 passent
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- qualify_ai_service : ai_frame_async() avec Claude Haiku
· round 1 → questions contextualisées si ANTHROPIC_API_KEY définie
· round 2 → explication enrichie par Claude
· fallback transparent sur ai_frame() si pas de clé (tests inchangés)
- config : ANTHROPIC_API_KEY + ANTHROPIC_MODEL (claude-haiku-4-5-20251001)
- requirements : anthropic>=0.97.0
- main : auth rate limit = RATE_LIMIT_DEFAULT partout (prototype mode)
→ supporte accès démo/test sans lockout en prod comme en dev
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Middleware : CORSMiddleware ajouté en dernier = plus externe = tous les
codes de retour (dont 429) portent Access-Control-Allow-Origin
→ résout "no response / Failed to fetch" sur POST /auth/challenge
- Dev mode : rate_limit_auth = RATE_LIMIT_DEFAULT (60/min) au lieu de 10/min
→ plus de blocage login après quelques reconnexions
- app.vue : watcher activeSlug → refetch documents/décisions/protocoles/mandats
→ le sélecteur de workspace filtre désormais le contenu en temps réel
- TDD : 4 tests middleware (RED→GREEN) + doc méthode docs/dev/tdd-methode.md
- Régression : 190/190 tests verts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Titres cards : "Décisions et consultation d'avis", "Documents de référence",
"Mandats et nominations", "Protocoles et fonctionnement"
- Burger supprimé sur desktop (≥768px), conservé mobile uniquement
- CI : step seed (docker exec python seed.py) entre test-deploy et healthcheck
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Le fichier séparé cassait Woodpecker 3.x (multi-file + when:manual
empêchait tous les triggers push depuis commit 1842303c).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Titre : ğ(Decision) → libreDecision (libre italic/muted + Decision accent)
- Chiffres : plus de valeurs hardcodées, tout dynamique depuis les stores
(mandates store ajouté, protocoles depuis protocols.protocols.length)
- Affichage intelligent : total quand actif = 0, labels contextuels
- Grilles centrées : margin: 0 auto sur .dash
- Font-weight 800 → 700 partout (moins gras, plus classe)
- Typo : "Nuance" → "Nuancé" dans les tags
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pipeline dédié au seeding DB, déclenché uniquement manuellement.
Retire le step seed du pipeline principal.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Déclenche python seed.py dans le container backend via docker exec.
Uniquement sur event: manual — ne s'exécute pas sur les push normaux.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix accents manquants dans 7 pages UI (décisions, boîte à outils, etc.)
- Titres accueil enrichis : Décisions structurantes, Documents de référence,
Mandats et nominations, Protocoles et fonctionnement
- Retrait Embarquement Forgeron du seed (n'est pas une Decision)
- 2 protocoles opérationnels dans Protocoles : Embarquement Forgeron
(lié à l'Acte d'engagement) + Soumission Runtime Upgrade (lié à la
Décision Runtime Upgrade) avec timeline et liens croisés signalétiques
- Décision Runtime Upgrade : badge on-chain + lien protocole + contexte
- Document [slug] : lien protocole dans la section Qualification
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Seed: restructure Engagement Forgeron (51→59 items) avec 3 nouvelles
sections: Engagements fondamentaux (EF1-EF3), Engagements techniques
(ET1-ET3), Qualification (Q0-Q1) liée au protocole Embarquement
- Seed: ajout protocole Embarquement Forgeron (5 jalons: candidature,
miroir, évaluation, certification Smith, mise en ligne)
- GenesisBlock: fix lisibilité — fond mood-surface teinté accent au lieu
de mood-text inversé, texte mood-aware au lieu de rgba blanc hardcodé
- InertiaSlider: mini affiche "Inertie" sous le curseur, compact en
width:fit-content pour s'adapter au label
- Frontend: ajout section qualification dans SECTION_META/SECTION_ORDER
- Pages, composants et tests des sprints précédents
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SVG redessiné: viewBox 130×100, traits fins (5u), ratio calé sur Su.svg
- Emboss via CSS drop-shadow au lieu de filtre SVG inline (causait voile)
- Supprimé :global() dans scoped CSS (cause du voile sur dark moods)
- moods.css et useMood.ts inchangés, dark modes intacts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Hexagramme 48, signature personnelle Yvv.
- hexagram-tsing.svg : version embossée (filtre SVG inset shadow)
- hexagram-tsing-flat.svg : version plate
Transparent, currentColor, réutilisable dans tous les projets.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reseed avec tous les accents français corrigés (à, é, è, ê, î, ô)
- Labels type-étiquette: taille augmentée, fond accent léger, visible
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Accents français partout (seed + composants Vue)
- Labels discrets: Engagements, Préambule, Application, Variables
- N1.1: présentation visuelle des niveaux d'inertie avec formule
- F1.2: paramètres + lecture du curseur d'inertie
- MarkdownRenderer: espacement resserré, support code inline
- Toutes descriptions et meta en bon français
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ajout d'un panneau dev sous le login (Alice=membre, Bob=forgeron,
Charlie=comite tech, Dave=observateur) pour tester les differents
roles sans keypair Ed25519. Endpoint GET /auth/dev/profiles renvoie
les profils uniquement en ENVIRONMENT=development.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Moods: palettes multi-teintes (secondary, tertiary par mood)
Peps: corail/ocre/bleu electrique ; Zen: sauge/lavande/terre cuite
Chagrine: violet/cyan/magenta/or ; Grave: ambre/cuivre/bleu acier
- Logo: gavel + g(Decision) — incompletude de Godel
- Dashboard: 4 cartes d'entree (Documents, Decisions, Protocoles, Mandats)
chacune avec sa couleur propre
- Protocoles promu au meme rang que les autres sections
(boite a outils de vote + workflows n8n via MCP)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend: 7 nouveaux endpoints (advance, assign, revoke, create-vote-session),
services enrichis avec creation de sessions de vote, assignation de mandataire
et revocation. 35 nouveaux tests (104 total). Frontend: store mandates, page
cadrage decisions, detail mandats, composants DecisionWorkflow, DecisionCadrage,
DecisionCard, MandateTimeline, MandateCard. Documentation mise a jour.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Backend:
- CRUD complet documents/items/versions (update, delete, accept, reject, reorder)
- Service IPFS (upload/retrieve/pin via kubo HTTP API)
- Service sanctuaire : pipeline SHA-256 + IPFS + on-chain (system.remark)
- Verification integrite des entrees sanctuaire
- Recherche par reference (document -> entrees sanctuaire)
- Serialisation deterministe des documents pour archivage
- 14 tests unitaires supplementaires (document service)
Frontend:
- 9 composants : StatusBadge, MarkdownRenderer, DiffView, ItemCard,
ItemVersionDiff, DocumentList, SanctuaryEntry, IPFSLink, ChainAnchor
- Page detail item avec historique des versions et diff
- Page detail sanctuaire avec verification integrite
- Modal de creation de document + proposition de version
- Archivage document vers sanctuaire depuis la page detail
Documentation:
- API reference mise a jour (9 nouveaux endpoints)
- Guides utilisateur documents et sanctuaire enrichis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>