Yvv
3b339b643c
Mandats : refonte wizard nomination-first + types statutory/functional
...
- Réordonnancement étapes : nomination → infos → résumé (au lieu de infos → nomination → toolbox → résumé)
- Cas nomination renommé : 'election' → 'collective' ; auto-désignation scindée en mode période/réunion
- Types mandat ajoutés : statutory, functional (labels + filtres index)
- Légères corrections texte modalities (ortho, reformulation)
- Fix TS : assertions non-null sur statusGroupMap et paramValues
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 20:33:16 +02:00
Yvv
3ba9c43ce3
Mandat : wizard création 4 étapes + boîte à outils élection
...
- Mandate model : champ origin (contexte/déclencheur) + migration
- MandateCreate schema : origin, starts_at, ends_at
- mandates/new.vue : wizard complet
· Étape 1 : type · nom · origine · description · durée (relative ou dates)
· Étape 2 : auto-désignation (ratification) ou désignation collective
· Étape 3 : boîte à outils — sans/avec candidature, 6 modalités,
paramètres configurables (durée, quorum, seuil, slider+input)
· Étape 4 : récap + génération automatique des étapes du mandat
- Tous les boutons "Nouveau mandat" pointent vers /mandates/new
- decisions/new.vue : "Demander un mandat" → /mandates/new
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-24 05:29:13 +02:00
Yvv
9a8f10efdf
Groupes d'identités : modèle DB, router, store, UI cercles + Protocoles
...
- Group + GroupMember : modèle SQLAlchemy + migration + router CRUD
- /api/v1/groups : liste, création, suppression, membres (add/remove)
- groups.ts : store Pinia (fetchAll, getGroup, create, remove, addMember, removeMember)
- decisions/new.vue : cercles 1 & 2 en mode texte libre OU groupe prédéfini
(affected_count calculé depuis le member_count du groupe)
- protocols/index.vue : section Groupes avec expand/collapse, ajout/suppression membres
- lang="fr" + spellcheck sur tous les textareas ; placeholder cercle 2 corrigé
- n8n channels : prévu sprint futur (texte libre → webhook appel à contribution)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 20:25:44 +02:00
Yvv
e2ae8b196e
Qualify : service IA + endpoint ai-chat + wizard Décider (3 cercles + AI 2-rounds)
...
- qualify_ai_service.py : stub IA 2-allers-retours (réversibilité + urgence)
- qualify.py router : endpoint POST /ai-chat → AIChatRequest/AIChatResponse
- test_qualifier_ai.py : 11 tests A1-A7 (questions stables, done=True au 2e round)
- decisions/new.vue : wizard 4 étapes — branche mandat (liste + lien demande) /
hors-mandat (3 cercles textarea), questions IA, résultat + boîte à outils,
formulaire final
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 19:44:00 +02:00
Yvv
5c51cffc93
Qualifier : corrections R2/R6 + router + modèle DB + wizard frontend
...
Corrections moteur (TDD) :
- R2 : within_mandate → record_in_observatory=True (Observatoire des décisions)
- R6 : >50 personnes → collective recommandé, pas obligatoire (confidence=recommended)
- R3 supprimée : affected_count=1 hors périmètre de l'outil
- R9-R12 renommés G1-G4 (garde-fous internes)
- 23 tests, 213/213 verts
Étape 1 — Router /api/v1/qualify :
- POST / → qualify() avec config depuis DB ou defaults
- GET /protocol → protocole actif
- POST /protocol → créer/remplacer (auth requise)
Étape 2 — Modèle QualificationProtocol :
- Table qualification_protocols (seuils configurables via admin)
- Migration Alembic + seed du protocole par défaut
Étape 3 — Wizard frontend decisions/new.vue :
- Étape 1 : formulaire de qualification (mandat, affected_count, structurant, contexte)
- Étape 2 : résultat (type, raisons, modalités, observatoire, on-chain)
- Étape 3 : formulaire de décision (titre, description, protocole si collectif)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 19:12:01 +02:00
Yvv
79e468b40f
Multi-tenancy : espaces de travail + fix auth reload (rate limiter OPTIONS)
...
- Modèles Organization + OrgMember, migration Alembic (SQLite compatible)
- organization_id nullable sur Document, Decision, Mandate, VotingProtocol
- Service, schéma, router /organizations + dependency get_active_org_id
- Seed : Duniter G1 + Axiom Team ; tout le contenu seed attaché à Duniter G1
- Backend : list/create filtrés par header X-Organization
- Frontend : store organizations, WorkspaceSelector réel, useApi injecte l'org
- Fix critique : rate_limiter exclut les requêtes OPTIONS (CORS preflight)
→ résout le bug "Failed to fetch /auth/me" au reload (429 sur preflight)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-23 15:17:14 +02:00
Yvv
224e5b0f5e
Auth Duniter v2 : vérification réelle + extension signing + titres outils
...
Backend :
- Vérification Sr25519/Ed25519 réelle via substrateinterface (bypass démo)
- Message signé : <Bytes>{challenge}</Bytes> (convention polkadot.js)
- DEV_PROFILES : Charlie → Référent structure, Dave → Auteur (WoT member)
Frontend :
- Signing via extension polkadot.js / Cesium2 (_signWithExtension)
- @polkadot/extension-dapp + @polkadot/util installés
- Vite : global=globalThis + optimizeDeps pour les packages polkadot
- Boîte à outils : titres complets des 4 sections
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 03:36:51 +01:00
Yvv
b63c6f95e1
Home : titres complets des blocs + burger mobile-only + seed CI
...
- 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 >
2026-03-24 02:45:38 +01:00
Yvv
99c5e9dd5a
Home : renommage libreDecision + chiffres dynamiques + centrage + typo
...
- 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 >
2026-03-24 02:06:02 +01:00
Yvv
feaf4de7e0
Menu : Boîte à outils en premier + sidebar collapsible icônes
...
- Boîte à outils (/tools) en 1ère position dans la nav (desktop + mobile)
- Sidebar desktop repliable (toggle pictos-only, 14rem → 3.75rem)
- labels masqués par transition CSS fluide (max-width + opacity)
- état persisté en localStorage (libred-sidebar-collapsed)
- Page document : toggle Vue structurée / Aperçu document
- sous-toggle En vigueur / Selon les votes
- composant DocumentPreview (rendu PDF-like)
- filigrane discret, items ordonnés par sort_order
- mode projection : proposed_text substitu + encadrement orange
- footer horodaté, print-friendly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-24 01:41:37 +01:00
Yvv
ed9ed11cd4
Toolbox 30rem sticky + accordéons collapsibles + renommage libreDecision
...
- Boîte à outils élargie à 30rem (×1.75) — flottante sticky, zéro scroll visible
- ToolboxSection : nouveau composant accordéon générique (chevron, défaut fermé)
- ToolboxVignette : titre cliquable, bullets/actions cachés par défaut
- 4 pages : ContextMapper/SocioElection/WorkflowMilestones/inertie → ToolboxSection
- Suppression doublon SectionLayout (common/) — conflit de nommage résolu
- Renommage complet Glibredecision → libreDecision dans configs/docker/CI
- README.md + CONTRIBUTING.md ajoutés
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-17 00:48:20 +01:00
Yvv
290548703d
Boîtes à outils enrichies : ContextMapper, SocioElection, WorkflowMilestones
...
- ContextMapper : 4 questions contexte → méthode de décision optimale
(advice process Laloux, vote inertiel WoT, consentement sociocratique, Smith…)
- SocioElection : guide élection sociocratique 6 étapes + advice process + clarté de rôle
- WorkflowMilestones : 11 jalons de protocole (7 essentiels), durées recommandées, principes Ostrom
- WorkspaceSelector : sélecteur de collectif multi-site dans le header
- SectionLayout : toolbox en USlideover droit sur mobile, sidebar sticky desktop
- Décisions : ContextMapper intégré + guide consentement
- Mandats : SocioElection intégré + cycle de mandat
- Documents : guide inertie 4 niveaux + structure + IPFS
- Protocoles : WorkflowMilestones + protocole élection sociocratique ajouté
- Renommage projet Glibredecision → libreDecision (dossier + sources)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-17 00:13:08 +01:00
Yvv
316d205593
Card Protocoles: count fixe + section opérationnelle toujours visible
...
- Home: card Protocoles affiche "2 protocoles" (count fixe) + modalités dynamiques
- Protocols: section "Protocoles opérationnels" déplacée hors template conditionnel
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 02:12:10 +01:00
Yvv
8201e73d7c
Accents FR, architecture modulaire, protocoles opérationnels
...
- 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 >
2026-03-03 07:05:55 +01:00
Yvv
c19c1aa55e
Restructure Engagement Forgeron + fix GenesisBlock + InertiaSlider
...
- 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 >
2026-03-03 03:44:33 +01:00
Yvv
21ceae4866
Français soigné, labels signalétiques, formule N1.1 visuelle, F1.2 lisible
...
- 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 >
2026-03-02 09:29:50 +01:00
Yvv
62808b974d
Composants engagement: GenesisBlock, InertiaSlider, MiniVoteBoard, EngagementCard, DocumentTuto
...
Backend: genesis_json sur Document, section_tag/inertia_preset/is_permanent_vote sur DocumentItem
Frontend: 5 nouveaux composants pour vue detail document enrichie
- GenesisBlock: sources, outils, synthese forum, contributeurs (depliable)
- InertiaSlider: visualisation inertie 4 niveaux avec params formule G/M
- MiniVoteBoard: tableau vote compact (barre seuil, pour/contre, participation)
- EngagementCard: carte item enrichie integrant vote + inertie + actions
- DocumentTuto: modal pedagogique vote permanent/inertie/seuils
Seed et page [slug] enrichis pour exploiter les nouveaux champs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 07:59:05 +01:00
Yvv
11e4a4d60a
Dev mode: panneau connexion rapide avec 4 profils pre-configures
...
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 >
2026-03-02 03:09:40 +01:00
Yvv
8dc0dfd452
Palettes variees, logo stamp croque, search/date modernises
...
- Palettes : Chagrine bleu lavande + ambre + rose ancien (moins aquatique),
Grave ocre rouge + ardoise (plus lumineux), Zen vert franc + sienne + canard
(pas de pastels glauques), Peps secondary indigo
- Logo : icone dans stamp carre rotate(-10deg), separe du texte, hover -16deg
- Login : logo stamp rotate -10deg, subtitle epure
- Search : UInput/USelect remplaces par champs custom accent-soft + icone
- Dates : icone clock + opacity 0.7
- Badges : UBadge remplace par pills custom uppercase accent
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-01 03:27:11 +01:00
Yvv
c7cb22f313
Design ludique arrondi + mobile responsive + fix IPv6
...
- ToolboxVignette: prop bullets[] remplace description, touch targets agrandis
- Design arrondi: border-radius 16px cards, 20px pills, 12px inputs, no borders
- Hover animations: translateY(-3px) + shadow, active states pour touch
- SectionLayout: toolbox accordion mobile, pills scroll horizontal, responsive title/subtitle
- app.vue: MoodSwitcher dans drawer mobile, header responsive, nav touch-friendly
- Dashboard: grille 2-colonnes mobile, connect banner column layout, formula code scroll
- Documents/decisions/mandates/protocols: cards responsive (padding, font-size, gap)
- Login: touch targets 3rem min, iOS zoom prevention, responsive sizing
- Modals: padding responsive sm:p-6
- Protocols: table compact mobile, proto items responsive
- nuxt.config: host 0.0.0.0 pour fix IPv4/IPv6 binding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 23:09:29 +01:00
Yvv
9b6388a600
Palettes harmoniques, logo g breve (Decision), Protocoles promu
...
- 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 >
2026-02-28 19:39:25 +01:00
Yvv
61a414d214
Design moderne + seed reel engagements forgeron avec votes
...
- CSS: couleurs saturees sans pastels, border-radius 4-6px, inputs mood-aware
- Header: allege (3.25rem), logo typographique, bouton connexion fin
- Login: redesign complet avec steps dots et input natif style
- Dashboard: entry cards epurees, tags toolbox compacts
- Seed: 34 vraies clauses forgeron v2.0.0 (forum topic 33165)
- Seed: 9 clauses certification (licence G1)
- Seed: 11 votants simules + 3 sessions de vote (10 pour / 1 contre)
- MoodSwitcher: dots colores au lieu d'icones
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 18:28:14 +01:00
Yvv
77dceb49c3
Refonte design : 4 humeurs, onboarding, sections avec boite a outils
...
- Systeme de themes adaptatifs : Peps (light chaud), Zen (light calme),
Chagrine (dark violet), Grave (dark ambre) avec CSS custom properties
- Dashboard d'accueil orienté onboarding avec cartes-portes et teaser
boite a outils
- SectionLayout reutilisable : liste + sidebar toolbox + status pills
cliquables (En prepa / En vote / En vigueur / Clos)
- ToolboxVignette : vignettes Contexte / Tutos / Choisir / Demarrer
- Seed : Acte engagement certification + forgeron, Runtime Upgrade
(decision on-chain), 3 modalites de vote (majoritaire, quadratique,
permanent)
- Backend adapte SQLite (Uuid portable, 204 fix, pool conditionnel)
- Correction noms composants (pathPrefix: false), pinia/nuxt ^0.11
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 17:44:48 +01:00
Yvv
403b94fa2c
Sprint 5 : integration et production -- securite, performance, API publique, documentation
...
Backend: rate limiter, security headers, blockchain cache service avec RPC,
public API (7 endpoints read-only), WebSocket auth + heartbeat, DB connection
pooling, structured logging, health check DB. Frontend: API retry/timeout,
WebSocket auth + heartbeat + typed events, notifications toast, mobile hamburger
+ drawer, error boundary, offline banner, loading skeletons, dashboard enrichi.
Documentation: guides utilisateur complets (demarrage, vote, sanctuaire, FAQ 30+),
guide deploiement, politique securite. 123 tests, 155 fichiers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 15:12:50 +01:00
Yvv
3cb1754592
Sprint 4 : decisions et mandats -- workflow complet + vote integration
...
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 >
2026-02-28 14:28:34 +01:00
Yvv
cede2a585f
Sprint 3 : protocoles de vote et boite a outils
...
Backend:
- Sessions de vote : list, close, tally, threshold details, auto-expiration
- Protocoles : update, simulate, meta-gouvernance, formulas CRUD
- Service vote enrichi : close_session, get_threshold_details, nuanced breakdown
- Schemas : ThresholdDetailOut, VoteResultOut, FormulaSimulationRequest/Result
- WebSocket broadcast sur chaque vote + fermeture session
- 25 nouveaux tests (threshold details, close, nuanced, simulation)
Frontend:
- 5 composants vote : VoteBinary, VoteNuanced, ThresholdGauge, FormulaDisplay, VoteHistory
- 3 composants protocoles : ProtocolPicker, FormulaEditor, ModeParamsDisplay
- Simulateur de formules interactif (page /protocols/formulas)
- Page detail protocole (/protocols/[id])
- Composable useWebSocket (live updates)
- Composable useVoteFormula (calcul client-side reactif)
- Integration KaTeX pour rendu LaTeX des formules
Documentation:
- API reference : 8 nouveaux endpoints documentes
- Formules : tables d'inertie, parametres detailles, simulation API
- Guide vote : vote binaire/nuance, jauge, historique, simulateur, meta-gouvernance
55 tests passes (+ 1 skipped), 126 fichiers total.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 13:29:31 +01:00
Yvv
2bdc731639
Sprint 2 : moteur de documents + sanctuaire
...
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 >
2026-02-28 13:08:48 +01:00
Yvv
25437f24e3
Sprint 1 : scaffolding complet de Glibredecision
...
Plateforme de decisions collectives pour Duniter/G1.
Backend FastAPI async + PostgreSQL (14 tables, 8 routers, 6 services,
moteur de vote avec formule d'inertie WoT/Smith/TechComm).
Frontend Nuxt 4 + Nuxt UI v3 + Pinia (9 pages, 5 stores).
Infrastructure Docker + Woodpecker CI + Traefik.
Documentation technique et utilisateur (15 fichiers).
Seed : Licence G1, Engagement Forgeron v2.0.0, 4 protocoles de vote.
30 tests unitaires (formules, mode params, vote nuance) -- tous verts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-28 12:46:11 +01:00