No description
  • Rust 63%
  • TypeScript 19.1%
  • Svelte 14.1%
  • Shell 2.4%
  • Fluent 0.9%
  • Other 0.4%
Find a file
Chipster 2f86a674b4
Some checks failed
ci.yml / chore(release): v0.0.36-alpha (push) Failing after 0s
chore(release): v0.0.36-alpha
Refonte facturation : /factures = tableau de bord (KPIs + CA annuel/N-1 + barres
mensuelles + camembert paye/reste-a-encaisser + relances), en-tete brouillon
editable inline, devis telechargeable PDF (krilla, ADR-0114). Backend
facturation_dashboard_stats (agregats fiscaux centimes). Migration additive 0077.

Puis 3 revues multi-agents + correctifs : completude spec (309 exigences, rapport
+ decisions Tim flaggees), chasse de bugs (8 reels corriges dont TVA devis arrondie,
avoirs exclus des relances, camembert anneau 100%, date locale), verif a11y/runes
(focus-visible, touche Espace, titres SVG, label « Reste a encaisser »). Gate vert,
1811 vitest. Sans deploiement Mac (sur go Tim).
2026-06-11 06:25:56 +02:00
.cargo feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
.claude feat(tooling): hook advisory policy-duplicates (sous-règle a M-SHARED-DEFINITIONS) 2026-06-07 20:52:57 +02:00
.forgejo/workflows docs(chore): purger les seuils de couverture perimes (-> canonique ADR-0099/0101) 2026-05-27 12:30:21 +02:00
.husky feat(tooling): hook advisory policy-duplicates (sous-règle a M-SHARED-DEFINITIONS) 2026-06-07 20:52:57 +02:00
.vscode feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
benches feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
crates chore(release): v0.0.36-alpha 2026-06-11 06:25:56 +02:00
docs fix(facturation): camembert qualite (a11y focus/Espace, label Reste a encaisser, % coherents) 2026-06-11 06:05:43 +02:00
frontend fix(a11y): titre encaisse sur le graphe CA mensuel 2026-06-11 06:06:42 +02:00
infra feat(install): vhost nginx scribe + retrait caddy legacy 2026-05-19 17:51:47 +02:00
installer/win feat(install): α-1.10 d — msi win uninstall custom action wiring 2026-05-20 18:38:18 +02:00
packages feat(design-system): composant Chip ui-kit + câblage tags annuaire (QW-12) 2026-06-09 19:07:32 +02:00
scripts fix(recovery): bannière restore — drift serde camelCase de PendingRestoreStatus 2026-06-09 03:48:43 +02:00
src-tauri fix(dossiers): active le drag&drop HTML5 in-app (dragDropEnabled:false) 2026-06-08 17:10:55 +02:00
tests test(facturation): E2E contrat de forme facturation_dashboard_stats (C1.4) 2026-06-11 03:02:45 +02:00
.editorconfig chore: cleanup repo avant writing-plans final 2026-05-16 02:10:03 +02:00
.gitattributes chore: cleanup repo avant writing-plans final 2026-05-16 02:10:03 +02:00
.gitignore test(facturation): validation Factur-X bout-en-bout via le chemin d'emission (J7.1) 2026-05-30 14:57:00 +02:00
.npmrc feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
.nvmrc chore(deps): dep-log backfill 5 dev-deps + lopdf re-vet + .nvmrc (b48) 2026-05-22 21:22:28 +02:00
ARCHITECTURE.md docs(transverse): ARCHITECTURE rattrape l'etat reel (α-0->WP4) 2026-06-10 11:14:06 +02:00
bench-config.toml feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
Cargo.lock chore(changelog): v0.0.35-alpha (revue de nuit 3 lentilles : 27 findings + 10 LOW) 2026-06-10 09:39:42 +02:00
Cargo.toml chore(release): v0.0.36-alpha 2026-06-11 06:25:56 +02:00
CHANGELOG.md docs(process): actualise README/CONTRIBUTING/CHANGELOG (faits perimes) 2026-06-10 10:59:38 +02:00
CLAUDE.md docs(claude): coherence interne (statut + lien mort + WP5) 2026-06-10 11:02:01 +02:00
clippy.toml feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
commitlint.config.cjs chore(ci): autoriser le scope commit 'agenda' (module Agenda alpha-1.10ter) 2026-05-31 01:36:12 +02:00
CONTRIBUTING.md docs(process): actualise README/CONTRIBUTING/CHANGELOG (faits perimes) 2026-06-10 10:59:38 +02:00
deny.toml chore(deps): autoriser la licence 0BSD (permissive) dans deny.toml 2026-06-03 08:16:58 +02:00
docker-compose.test.yml feat: wp1 v1 alpha foundations + fortification (squash merge) 2026-05-18 03:05:43 +02:00
package.json chore(transverse): bump 0.0.3-alpha + changelog + release notes 2026-05-19 22:51:46 +02:00
pnpm-lock.yaml feat(notif): tauri-plugin-notification + rappels OS J-1 audiences 2026-05-28 17:39:35 +02:00
pnpm-workspace.yaml feat(ci): playwright + cdp e2e infra + login poc (adr-0069) 2026-05-19 01:31:25 +02:00
README.md docs(process): actualise README/CONTRIBUTING/CHANGELOG (faits perimes) 2026-06-10 10:59:38 +02:00
rust-toolchain.toml spike(facturation): tranche lib PDF/A-3 = krilla 0.8 + bump MSRV 1.88→1.92 (toolchain 1.96) 2026-05-30 01:36:55 +02:00

Scribe

Logiciel de gestion de cabinet d'avocat moderne, cross-platform et IA-augmenté.

Statut : V1 alpha en cours — tag courant v0.0.35-alpha. WP1 + WP1.5 + WP2 + WP3 + WP4 livrés (fondations + cœur métier complet : Annuaire, Dossiers, GED, Mail, Temps, Facturation, Templates, Dashboard, Installation/MAJ, Configuration), plus 3 campagnes d'audit pré-alpha-test (Sécurité/DR, UI/UX, Observabilité), GED chunk A (pièces dans le dossier) et le programme stratégie de test (incréments 4-5). Reste avant V1 alpha formelle : agents IA (WP5) et reliquats (PDF facture réel, doc utilisateur).

Statut détailléCLAUDE.md ; historique des jalons → docs/process/historique-jalons.md.


Installation

Voir docs/release-notes/ (notes par version) et docs/process/historique-jalons.md (jalons) pour les détails des releases (features livrées + known issues).

Téléchargement

Bundles signés (à venir β) disponibles sur Forgejo Releases — pour l'alpha, le warning Gatekeeper / SmartScreen est normal (codesign Apple + notarisation

  • signtool Windows arrivent V1 beta).
Plateforme Architecture Fichier Lien
macOS 12+ Apple Silicon (M1/M2/M3/M4) scribe-macos-arm64.dmg https://scribe.timothy.greil.fr/scribe/darwin-aarch64/
macOS 12+ Intel x86_64 scribe-macos-x86_64.dmg https://scribe.timothy.greil.fr/scribe/darwin-x86_64/
Windows 11 x86_64 (MSVC) scribe-windows-x86_64.msi https://scribe.timothy.greil.fr/scribe/windows-x86_64/

Ou directement depuis la page Forgejo Releases : git.greil.fr/chipster/scribe/releases

Premier lancement

  1. macOS : monter le .dmg, glisser Scribe.app dans Applications. Au premier lancement, Gatekeeper bloque l'app (non codesignée en alpha) : click droit sur Scribe.app → "Ouvrir" → confirmer.
  2. Windows : double-cliquer le .msi, accepter le warning SmartScreen ("Plus d'infos" → "Exécuter quand même"), suivre l'installer.
  3. Onboarding wizard : 5 étapes guidées (compte → recovery → Claude skip → mail skip → add-in skip). Étapes 1 et 2 obligatoires (password + recovery passphrase BIP-39 française). Imprimer la recovery card PDF générée à l'étape 2 — sans elle, pas de récupération possible si oubli du password.
  4. Test alpha : pas de fonctionnalité métier client-facing. Le but de cette alpha est de valider le wizard, la création de l'identité, la génération de la recovery card, et le parcours Paramètres. Les frictions remontées alimentent les sub-jalons α-1.x.

Désinstallation

  • macOS : déplacer Scribe.app vers la corbeille + supprimer ~/Library/Application Support/Scribe/ (DB + backups + logs).
  • Windows : Paramètres → Applications → Scribe → Désinstaller. La DB et les backups dans %APPDATA%\Scribe\ sont conservés (suppression manuelle si voulu).

Vision

Scribe est conçu pour remplacer (puis concurrencer) le logiciel Audience de FBI Services en apportant :

  • Une UI moderne et sobre : design system natif premium (Things 3 / Bear-like), 6 palettes accent, densité confortable/dense
  • Cross-platform natif : Windows, macOS, Linux desktop (mobile éventuel en V2)
  • Trois agents IA intégrés progressivement :
    • α-2 Automatisation proactive (41 cas, rule engine + LLM classifier + apprentissage par observation)
    • α-3 Rédacteur à la voix de l'avocat (16 toggles, RAG sur archives, 3 modes)
    • α-4 Conversationnel (15 toggles, function calling, UI tools)
  • Bridge add-in Office.js pour Word/Outlook (SSE streaming loopback, design tokens partagés)
  • Contrôle utilisateur granulaire : toggles hiérarchiques (master switch global → par agent → par sous-fonction), master kill switch en 2 clics, chaque cas IA activable/désactivable individuellement
  • Conformité RGPD + déontologie barreau : embeddings 100% locaux dès V1 alpha, données chiffrées SQLCipher, recovery passphrase, option LLM 100% local en V2
  • Observabilité opt-in : Sentry self-hosted (greil.fr) avec PII scrub aggressive — aucune donnée client transmise

Stack technique

Couche Choix Note
Client desktop Tauri 2.11.x Shell natif Windows (WebView2) / macOS (WebKit) / Linux (WebKitGTK)
Backend client Rust 1.96 (MSVC sur Windows) MSRV 1.96 (krilla, lib PDF/A-3 Factur-X — cf ADR-0109) ; antérieurement 1.88 pour Tauri 2.11. See rust-toolchain.toml
Node ≥20 (testé 24) Frontend toolchain via pnpm
pnpm ≥9 Package manager via corepack
UI frontend Svelte 5 (runes) + SvelteKit 2 + CSS vanilla adapter-static pour Tauri
Logique métier partagée Crate Rust domain
Serveur cabinet (V1 beta) Axum (Rust async)
DB locale SQLCipher 4.x (rusqlite + bundled-sqlcipher) Chiffré AES-256, prévu α-0.4+
DB serveur (V1 beta) PostgreSQL
Sync (V1 beta) WebSocket + REST
LLM provider V1 Claude Agent SDK + abonnement utilisateur (OAuth)
Embeddings bge-m3 local (LocalEmbedder tokio actor)
Store vectoriel sqlite-vec (solo) / pgvector (cabinet)
Tests proptest, insta, wiremock, greenmail, criterion, vitest, MSW, tauri-driver, cargo-llvm-cov
CI Forgejo Actions matrix Mac+Windows Rust cache via Swatinem/rust-cache@v2
Observabilité Sentry self-hosted (opt-in, anonymisé)
LLM provider V2 Ollama embarqué (LLM 100% local)

Roadmap

V1 alpha — Mono-utilisateur, livrée par sub-jalons granulaires

Sub-jalon Contenu Utilisatrice teste ?
α-0.0 → α-0.12 Fondations + infra tests + workspace + crates de base + auth + packaging + shell Configuration Non
α-0.1bis Backfill ADR + Setup CI maintenabilité (linting strict, cargo-deny, complexity gates, commitlint, perf budgets, Sentry crate) Non
α-1.1 → α-1.11 Cœur métier (ordre figé S2) : Annuaire → Dossiers → GED → Mail → Temps → Facturation → Templates → Dashboard → Install/MAJ → Configuration (Clients fusionné dans Annuaire, ADR-0080) Oui — démarre l'usage en remplacement d'Audience
α-2 Agent automatisation actif (41 cas, rule engine + LLM classifier + apprentissage) Continue
α-3 Agent rédacteur actif (16 toggles, RAG sur archives, 3 modes) Continue
α-4 Agent conversationnel actif (15 toggles, function calling, UI tools ACK) Toutes les fonctionnalités dispo

V1 beta

Multi-utilisateurs cabinet via VPN (Tailscale/WireGuard), serveur Postgres, RBAC actif, MFA optionnel, enrichissements des agents.

V2 commercial

LLM local (Ollama), fine-tuning style cabinet, mobile, intégrations métier France (RPVA, e-Barreau), migration depuis Audience.

Politique qualité (vibe code solo → maintenabilité long terme)

Scribe est développé en solo (Timothy) avec assistance IA (Claude). Sans reviewer humain, les filets en place :

  • TDD strict : tests d'abord, seuils coverage différenciés par crate (gate local-first ; seuils canoniques → scripts/coverage-gate.sh + ADR-0099)
  • Linting maximal : clippy pedantic + nursery deny, cargo-deny (advisories + licenses + bans), cargo-machete, Knip
  • Hard limits complexité : 400 LOC/fichier .rs, 250 LOC/composant .svelte, 80 LOC/fonction, cognitive_complexity ≤ 15
  • PR discipline : limit 400 LOC, Conventional Commits + commitlint, trunk-based + branches courtes
  • Ultrareview obligatoire avant merge (findings CRIT/HIGH bloquants)
  • ADRs MADR 4.0 light pour toute décision structurante (techno, migration BDD, flux IA, contrat API, renoncement)
  • Performance budgets : criterion CI fail si régression > 20% vs baseline
  • Évolution post-V1 alpha : mini-cycle brainstorm → spec → ADR → plan → impl TDD

Détail dans docs/superpowers/audits/2026-05-16-decisions-maintenabilite.md et spec transverse §9.6.

Documentation

Specs

Fichier Description
docs/superpowers/specs/2026-05-13-scribe-vision.md Doc de vision — référence permanente, toutes les décisions transverses
docs/superpowers/specs/2026-05-13-scribe-fondations-coeur-metier-design.md Spec transverse V1 alpha — DDL, commands, logging, §9.5 tests, §9.6 maintenabilité, plan sub-jalons
docs/superpowers/specs/2026-05-15-scribe-design-system-design.md Design system Native premium, palettes, tokens, ui-kit catalog
docs/superpowers/specs/2026-05-15-scribe-spec-utilisateur.md Spec utilisateur Marie — plain French, sans jargon
docs/superpowers/specs/modules/ Specs modules métier : Dossiers, Annuaire, GED/Documents, Mail, Temps passés, Facturation, Templates Word, Dashboard, Installation/MAJ, Configuration, Rendez-vous, Recherche globale (le module Clients est fusionné dans Annuaire via ADR-0080 — spec clients archivée, superseded)
docs/superpowers/specs/agents/ 3 specs agents IA (α-2, α-3, α-4)

Audits & décisions

Fichier Description
docs/superpowers/audits/2026-05-15-decisions-metier.md 16 décisions métier M1-M16
docs/superpowers/audits/2026-05-15-decisions-stack.md 15 décisions stack S1-S15
docs/superpowers/audits/2026-05-16-decisions-tests.md Politique tests TDD strict
docs/superpowers/audits/2026-05-16-decisions-maintenabilite.md Politique maintenabilité (linting, ADR, PR, Sentry, évolution)

Plans dry-run v2 (5 WPs, 167 steps + 4 spikes)

Voir docs/superpowers/plans/ (plans actifs).

Architecture Decision Records

Voir docs/adr/README.md113 ADRs (le backfill seed initialement prévu en α-0.1bis est fait).

Setup développement

Prérequis :

  • Rust (toolchain auto via rust-toolchain.toml) + components clippy rustfmt llvm-tools
  • Node.js LTS + pnpm (via corepack)
  • Tauri 2 CLI
  • Docker (pour greenmail IMAP/SMTP en tests E2E)
  • cargo-llvm-cov, cargo-deny, cargo-machete, cargo-criterion

Setup local

# 1. Activate pnpm via corepack (no global install needed)
corepack enable && corepack prepare pnpm@9 --activate

# 2. Install Node deps (auto-builds @scribe/ui-tokens via prepare hook)
pnpm install

# 3. Install Rust toolchain (auto-installed by rustup via rust-toolchain.toml)
rustup show

# 4. Verify
cargo check --workspace
cargo test --workspace
pnpm --filter @scribe/frontend run build

# 5. Run desktop dev shell (opens native window)
cargo install tauri-cli --version "^2.0" --locked  # one-time
cargo tauri dev

Branding

Le nom Scribe est un nom de travail (trademark + domaine non vérifiés). Le code applicatif est conçu pour rendre le rename trivial (1 module app-info central + i18n + crates Cargo aux noms techniques neutres). Voir doc vision §7. Coût attendu d'un rename : 30 minutes.

Licence

À définir.


Co-conçu avec Claude (Anthropic) — voir l'historique des commits.