fix: 5 bugs critiques de l'éditeur (Phase 1 audit)
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 5m39s
CI / Deploy production (on server) (push) Successful in 22s

1. replaceAll (Find & Replace) — une seule transaction ProseMirror
   au lieu d'un forEach cassé. Tous les matchs sont maintenant remplacés.

2. Link Preview unwrap — deleteNode() au lieu de clearer les attrs
   qui laissaient un nœud fantôme invisible dans le document.

3. Conversion Markdown → richtext — breaks: true dans marked.parse()
   Les simple newlines sont maintenant convertis en <br>.
   + préserve les blocs custom (toggle, callout, math, columns,
   outline, link-preview) en commentaires HTML lors de l'export MD.

4. emitNoteChange exercices — shape corrigée (type:'created' attend
   un objet Note, pas noteId/notebookId séparés).

5. Raccourcis clavier sans conflit :
   Cmd+Shift+C → Cmd+Alt+C (callout, avant: copier)
   Cmd+Shift+O → Cmd+Alt+O (outline, avant: historique/signets)
   Cmd+Shift+L → Cmd+Alt+L (colonnes, avant: lock screen macOS)
This commit is contained in:
Antigravity
2026-06-20 15:48:18 +00:00
parent 5b13a88b72
commit ee70e74bf5
51 changed files with 1483 additions and 252 deletions

View File

@@ -1459,6 +1459,7 @@
"dashboard": "Tableau de bord",
"users": "Utilisateurs",
"aiManagement": "Gestion IA",
"billing": "Facturation & quotas",
"published": "Pages publiées",
"chat": "Chat IA",
"lab": "Le Lab (Idées)",
@@ -1487,6 +1488,40 @@
"testSearch": "Test recherche web"
},
"settingsDescription": "Configurer les paramètres de l'application",
"billing": {
"title": "Facturation & quotas",
"description": "Gérez les paliers, quotas IA et la config Stripe métier sans redéploiement.",
"stripeConfigTitle": "Config Stripe (métier)",
"stripeConfigDescription": "Identifiants de prix et activation de la facturation. Les clés secrètes restent dans l'environnement serveur.",
"enableBilling": "Activer l'interface et le paiement Stripe",
"STRIPE_PRICE_PRO_MONTHLY": "Pro — prix mensuel (price ID)",
"STRIPE_PRICE_PRO_ANNUAL": "Pro — prix annuel (price ID)",
"STRIPE_PRICE_BUSINESS_MONTHLY": "Business — prix mensuel (price ID)",
"STRIPE_PRICE_BUSINESS_ANNUAL": "Business — prix annuel (price ID)",
"secretsNote": "STRIPE_SECRET_KEY et STRIPE_WEBHOOK_SECRET doivent rester dans Docker/env — jamais stockés ici.",
"saveConfig": "Enregistrer la config",
"configSaved": "Configuration enregistrée",
"configFailed": "Échec de l'enregistrement",
"limitsTitle": "Quotas par palier",
"limitsDescription": "Limites mensuelles par fonctionnalité. Prise en effet en ~60 s.",
"feature": "Fonctionnalité",
"mode": "Accès",
"monthlyLimit": "Limite mensuelle",
"actions": "Actions",
"modeUnavailable": "Indisponible",
"modeLimited": "Limité",
"modeUnlimited": "Illimité",
"saveLimit": "Enregistrer",
"limitSaved": "Quota mis à jour",
"limitFailed": "Échec de la mise à jour",
"usageTitle": "Aperçu consommation",
"usagePeriod": "Période {period}",
"lastSync": "Dernière sync {date}",
"notSynced": "Pas encore synchronisé (cron /api/cron/sync-usage)",
"byFeature": "Par fonctionnalité (PostgreSQL)",
"topUsers": "Utilisateurs les plus actifs",
"noUsageData": "Aucune donnée pour cette période"
},
"dashboard": {
"title": "Tableau de bord",
"description": "Vue d'ensemble des métriques de l'application",
@@ -3076,6 +3111,7 @@
},
"billing": {
"title": "Facturation",
"disabledByAdmin": "La facturation et les upgrades sont désactivées. Contactez l'administrateur si besoin.",
"currentPlan": "Plan actuel",
"upgradePlan": "Changer de plan",
"manageBilling": "Gérer la facturation",