- Rust 60.9%
- TypeScript 19.8%
- Svelte 8.8%
- Shell 5.4%
- JavaScript 3.3%
- Other 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
ci.yml / fix(tooling): la mesure de couverture du push n'exporte plus les binaires de test périmés (push) Failing after 0s
Verdict de couverture du push |
||
| .agents/skills | ||
| .cargo | ||
| .claude | ||
| .forgejo/workflows | ||
| .husky | ||
| .vscode | ||
| benches | ||
| crates | ||
| docs | ||
| frontend | ||
| infra | ||
| packages | ||
| scripts | ||
| src-tauri | ||
| tests | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| .nvmrc | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| bench-config.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| clippy.toml | ||
| commitlint.config.cjs | ||
| CONTRIBUTING.md | ||
| deny.toml | ||
| docker-compose.test.yml | ||
| knip.config.ts | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| rust-toolchain.toml | ||
Scribe
Logiciel de gestion de cabinet d'avocat moderne, cross-platform et IA-augmenté.
Statut : bêta Windows livrée (première bêta : v0.1.0-beta, notes complètes →
docs/release-notes/v0.1.0-beta.md). Cœur métier
complet livré : Annuaire, Dossiers, GED, Mail, Temps, Facturation, Templates, Agenda,
Dashboard, Installation/MAJ, Configuration, Recherche globale — utilisé en remplacement
d'Audience par l'alpha-testeuse. Agents IA (WP5) en stand-by jusqu'au déploiement
d'Ollama en local (visé V1.5). Version exacte : Cargo.toml (workspace) ou
git tag --sort=-v:refname | head -1 — elle dérive, ne pas la recopier ailleurs.
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
Windows uniquement pour l'instant (le Mac viendra après la bêta). Bundle non signé : au premier lancement, Windows Defender SmartScreen affiche un avertissement — c'est attendu (le certificat de signature n'est pas encore posé), confirmer manuellement (« Informations complémentaires » → « Exécuter quand même »).
| Plateforme | Architecture | Fichier | Où |
|---|---|---|---|
| Windows 11 | x86_64 (MSVC) | scribe-<version>.msi |
Forgejo Releases |
Premier lancement
Assistant d'installation guidé (compte → recovery → apparence → diagnostics).
Imprimer la recovery card PDF générée à l'étape recovery — sans elle, pas de
récupération possible en cas de mot de passe oublié. Procédure détaillée pas à pas
(poste vierge, SmartScreen, premier lancement) →
docs/process/beta-checklist-poste-windows-vierge.md.
Mises à jour automatiques (vérif. toutes les 24 h) →
docs/user/13-installation/01-mises-a-jour.md.
Désinstallation
Windows : Paramètres → Applications → Scribe → Désinstaller. La base et les
sauvegardes dans %APPDATA%\Scribe\ sont conservées (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)
- Rattachement des mails depuis n'importe quelle messagerie : l'avocat glisse le mail dans un dossier IMAP « Scribe », Scribe propose le dossier ; factures et relances partent en brouillon déposé dans la boîte (décision 2026-09-24, spec ; le pont add-in Office.js est abandonné, ADR-0139)
- 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 |
— |
| DB locale | SQLCipher 4.x (rusqlite + bundled-sqlcipher) |
Chiffré AES-256, prévu α-0.4+ |
Mode cabinet (0.2.0, post-bêta) |
Binaire unique, dispatch CQRS local/distant, Axum embarqué (ADR-0131) | Doc + ADR-0131/0132/0133 seuls — rien n'est codé, pas de plan d'implémentation ; la base reste SQLite/SQLCipher (pas de Postgres) |
| LLM provider | Trait LLMProvider + mock (crate llm-provider) |
Impl V1 visée : Ollama local (ADR-0112), pas encore câblée (WP5 en stand-by). L'ancienne piste « Claude Agent SDK + abonnement OAuth » est abandonnée, code retiré le 2026-09-12 |
| Embeddings | bge-m3 local (LocalEmbedder tokio actor) |
— |
| Store vectoriel | sqlite-vec | Solo et mode cabinet (ADR-0131 abandonne Postgres, donc pas de pgvector) |
| Tests | proptest, insta, wiremock, greenmail, criterion, vitest, MSW, Playwright + CDP, cargo-llvm-cov | — |
| CI | Désactivée en V1α (workflows Forgejo if: false) |
Gates locaux via .husky/ (pre-commit, commit-msg, pre-push → agent-check scope) ; seuls deploy-infra.yml et sync-release-scripts.yml tournent sur push main (infra serveur, pas le code applicatif) |
| Observabilité | Sentry self-hosted (opt-in, anonymisé) | Diagnostics (erreurs + usage) activés par défaut pendant la bêta (ADR-0134) |
Roadmap
Livré
α-0 Fondations et α-1 Cœur métier (Annuaire → Dossiers → GED → Mail → Temps →
Facturation → Templates → Dashboard → Install/MAJ → Rendez-vous → Configuration →
Recherche globale — Clients fusionné dans Annuaire,
ADR-0080) sont livrés, ainsi que la
bêta Windows 0.1.0. Détail par sub-jalon →
docs/process/historique-jalons.md.
À venir
| Étape | Contenu |
|---|---|
0.2.0 — mode cabinet |
Multi-comptes + multi-postes, RBAC 4 rôles + ACL par dossier, MFA TOTP. Doc + ADR-0131/0132/0133 écrits, rien n'est codé (décision Tim : « on s'arrête à la doc » pour l'instant). |
| V1.0 | Première version commercialisable (suit la bêta). RPVA/e-Barreau, facturation complète (volet comptable compris), mode cabinet et licensing sont bloquants pour la mise en vente (décision Tim 2026-09-13, révisée 2026-09-27). |
| V1.5 | Agents IA — α-2 Automatisation (41 cas), α-3 Rédacteur (16 toggles), α-4 Conversationnel (15 toggles) — sur Ollama local, étape dédiée après la V1.0. |
| V2 | Mobile, fine-tuning LoRA, agent debug in-app, Tailscale, migration depuis Audience, MCP server scribe-context. |
Politique qualité (vibe code solo → maintenabilité long terme)
Scribe est développé en solo (Timothy) avec assistance IA (agents Claude/Codex). Pas de reviewer humain régulier ; 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 strict local : clippy
pedantic+nursery+cargoendeny(Cargo.toml[workspace.lints]),cargo-machete(dépendances Rust mortes, câblé en pre-commit).cargo-denyet Knip existent (deny.toml,pnpm lint:unused) mais ne sont câblés dans aucun gate actif — CI désactivée, personne ne les lance systématiquement - Hard limits complexité : 400 LOC/fichier
.rs, 250 LOC/composant.svelte, 80 LOC/fonction, cognitive_complexity ≤ 15 - Discipline commit : diff ≤ 400 LOC hors
main(.husky/pre-push→pr-size-check.sh, whitelist footerSkip-PR-Size-Check:), Conventional Commits + commitlint, trunk-based — commits directs surmain(décision Tim 2026-09-28), pas de branche longue ni de revue Forgejo obligatoire - Ultrareview obligatoire avant merge (findings CRIT/HIGH bloquants) — le filet principal en l'absence de reviewer humain
- ADRs MADR 4.0 light pour toute décision structurante (techno, migration BDD, flux IA, contrat API, renoncement)
- Performance budgets : pas gardés automatiquement (CI désactivée) ; criterion tourne en local (
crates/benches) - É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 d'implémentation (5 WPs, 167 steps + 4 spikes)
Voir docs/superpowers/plans/ — historique par sub-jalon,
quasi tous livrés (WP5 agents IA excepté, en stand-by).
Architecture Decision Records
Voir docs/adr/README.md — index complet, auto-régénéré par hook (le
nombre d'ADR n'est pas recopié ici, il dérive à chaque décision).
Setup développement
Prérequis :
- Rust (toolchain auto via
rust-toolchain.toml) + componentsclippyrustfmtllvm-tools - Node.js LTS + pnpm (via corepack)
- Tauri 2 CLI
- Docker (pour
greenmailIMAP/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
Logiciel propriétaire. Pendant la bêta, son usage est régi par la licence d'utilisation de
LICENSE : usage gratuit au cabinet, ni revente ni redistribution. L'installeur
Windows l'affiche (src-tauri/licence-beta.rtf, généré par node scripts/licence-rtf.mjs).
Les composants tiers restent sous leurs propres licences.
Co-conçu avec Claude (Anthropic) — voir l'historique des commits.