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>
This commit is contained in:
@@ -23,18 +23,18 @@ onMounted(async () => {
|
||||
const entryCards = computed(() => [
|
||||
{
|
||||
key: 'decisions',
|
||||
title: 'Decisions',
|
||||
title: 'Décisions structurantes',
|
||||
icon: 'i-lucide-scale',
|
||||
to: '/decisions',
|
||||
count: decisions.activeDecisions.length,
|
||||
countLabel: `${decisions.activeDecisions.length} en cours`,
|
||||
totalLabel: `${decisions.list.length} au total`,
|
||||
description: 'Processus de decision collectifs',
|
||||
description: 'Processus de décision collectifs',
|
||||
color: 'var(--mood-secondary, var(--mood-accent))',
|
||||
},
|
||||
{
|
||||
key: 'documents',
|
||||
title: 'Documents',
|
||||
title: 'Documents de référence',
|
||||
icon: 'i-lucide-book-open',
|
||||
to: '/documents',
|
||||
count: documents.activeDocuments.length,
|
||||
@@ -45,24 +45,24 @@ const entryCards = computed(() => [
|
||||
},
|
||||
{
|
||||
key: 'mandats',
|
||||
title: 'Mandats',
|
||||
title: 'Mandats et nominations',
|
||||
icon: 'i-lucide-user-check',
|
||||
to: '/mandates',
|
||||
count: null,
|
||||
countLabel: null,
|
||||
totalLabel: null,
|
||||
description: 'Missions deleguees avec nomination en binome',
|
||||
description: 'Missions déléguées avec nomination en binôme',
|
||||
color: 'var(--mood-success)',
|
||||
},
|
||||
{
|
||||
key: 'protocoles',
|
||||
title: 'Protocoles',
|
||||
title: 'Protocoles et fonctionnement',
|
||||
icon: 'i-lucide-settings',
|
||||
to: '/protocols',
|
||||
count: protocols.protocols.length,
|
||||
countLabel: `${protocols.protocols.length} modalite${protocols.protocols.length > 1 ? 's' : ''}`,
|
||||
totalLabel: 'Boite a outils de vote + workflows',
|
||||
description: 'Modalites de vote, formules, workflows',
|
||||
countLabel: `${protocols.protocols.length} modalité${protocols.protocols.length > 1 ? 's' : ''}`,
|
||||
totalLabel: 'Boîte à outils de vote + workflows',
|
||||
description: 'Modalités de vote, formules, workflows',
|
||||
color: 'var(--mood-tertiary, var(--mood-accent))',
|
||||
},
|
||||
])
|
||||
@@ -81,7 +81,7 @@ function formatDate(dateStr: string): string {
|
||||
|
||||
if (diffHours < 1) {
|
||||
const diffMinutes = Math.floor(diffMs / (1000 * 60))
|
||||
return diffMinutes <= 1 ? 'A l\'instant' : `Il y a ${diffMinutes} min`
|
||||
return diffMinutes <= 1 ? 'À l\'instant' : `Il y a ${diffMinutes} min`
|
||||
}
|
||||
if (diffHours < 24) {
|
||||
return `Il y a ${Math.floor(diffHours)}h`
|
||||
@@ -101,7 +101,7 @@ function formatDate(dateStr: string): string {
|
||||
<span class="dash__title-g">ğ</span><span class="dash__title-paren">(</span>Decision<span class="dash__title-paren">)</span>
|
||||
</h1>
|
||||
<p class="dash__subtitle">
|
||||
Decisions collectives pour la communaute Duniter / G1
|
||||
Décisions collectives pour la communauté Duniter / G1
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -141,7 +141,7 @@ function formatDate(dateStr: string): string {
|
||||
<div class="dash__connect-left">
|
||||
<UIcon name="i-lucide-key-round" class="text-lg" />
|
||||
<div>
|
||||
<p class="dash__connect-text">Connectez-vous avec votre identite Duniter pour participer.</p>
|
||||
<p class="dash__connect-text">Connectez-vous avec votre identité Duniter pour participer.</p>
|
||||
<p class="dash__connect-hint">Signature Ed25519 · aucun mot de passe</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,7 +158,7 @@ function formatDate(dateStr: string): string {
|
||||
<UIcon name="i-lucide-wrench" class="text-xl" />
|
||||
</div>
|
||||
<div class="dash__toolbox-card-body">
|
||||
<h3 class="dash__toolbox-card-title">Boite a outils</h3>
|
||||
<h3 class="dash__toolbox-card-title">Boîte à outils</h3>
|
||||
<p class="dash__toolbox-card-desc">
|
||||
Simulateur de formules, modules de vote, workflows
|
||||
</p>
|
||||
@@ -177,7 +177,7 @@ function formatDate(dateStr: string): string {
|
||||
<div v-if="recentDecisions.length > 0" class="dash__activity">
|
||||
<div class="dash__activity-head">
|
||||
<UIcon name="i-lucide-activity" class="text-lg" />
|
||||
<h3>Activite recente</h3>
|
||||
<h3>Activité récente</h3>
|
||||
</div>
|
||||
<div class="dash__activity-list">
|
||||
<NuxtLink
|
||||
@@ -207,7 +207,7 @@ function formatDate(dateStr: string): string {
|
||||
<template #content>
|
||||
<div class="dash__formula-body">
|
||||
<p class="dash__formula-desc">
|
||||
Le seuil s'adapte a la participation : faible = quasi-unanimite ; forte = majorite simple.
|
||||
Le seuil s'adapte à la participation : faible = quasi-unanimité ; forte = majorité simple.
|
||||
</p>
|
||||
<code class="dash__formula-code">
|
||||
Seuil = C + B^W + (M + (1-M) * (1 - (T/W)^G)) * max(0, T-C)
|
||||
@@ -217,7 +217,7 @@ function formatDate(dateStr: string): string {
|
||||
<span>B = base</span>
|
||||
<span>W = taille WoT</span>
|
||||
<span>T = votes</span>
|
||||
<span>M = majorite</span>
|
||||
<span>M = majorité</span>
|
||||
<span>G = gradient</span>
|
||||
</div>
|
||||
<NuxtLink to="/protocols/formulas" class="dash__formula-link">
|
||||
|
||||
Reference in New Issue
Block a user