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

@@ -1453,6 +1453,7 @@
"dashboard": "Dashboard",
"users": "Users",
"aiManagement": "AI Management",
"billing": "Billing & Quotas",
"published": "Published pages",
"chat": "AI Chat",
"lab": "The Lab (Ideas)",
@@ -1481,6 +1482,40 @@
"testSearch": "Test web search"
},
"settingsDescription": "Configure application-wide settings",
"billing": {
"title": "Billing & Quotas",
"description": "Manage subscription tiers, AI quotas, and Stripe business settings without redeploying.",
"stripeConfigTitle": "Stripe business config",
"stripeConfigDescription": "Price IDs and billing toggle. Secret keys stay in server environment only.",
"enableBilling": "Enable billing UI and checkout",
"STRIPE_PRICE_PRO_MONTHLY": "Pro — monthly price ID",
"STRIPE_PRICE_PRO_ANNUAL": "Pro — annual price ID",
"STRIPE_PRICE_BUSINESS_MONTHLY": "Business — monthly price ID",
"STRIPE_PRICE_BUSINESS_ANNUAL": "Business — annual price ID",
"secretsNote": "STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET must remain in Docker/env secrets — never stored here.",
"saveConfig": "Save billing config",
"configSaved": "Billing configuration saved",
"configFailed": "Failed to save billing configuration",
"limitsTitle": "Tier quotas",
"limitsDescription": "Monthly request limits per feature. Changes apply within ~60 seconds.",
"feature": "Feature",
"mode": "Access",
"monthlyLimit": "Monthly limit",
"actions": "Actions",
"modeUnavailable": "Not available",
"modeLimited": "Limited",
"modeUnlimited": "Unlimited",
"saveLimit": "Save",
"limitSaved": "Quota updated",
"limitFailed": "Failed to update quota",
"usageTitle": "Usage overview",
"usagePeriod": "Period {period}",
"lastSync": "Last sync {date}",
"notSynced": "Not synced yet (cron /api/cron/sync-usage)",
"byFeature": "By feature (PostgreSQL)",
"topUsers": "Top users",
"noUsageData": "No usage data for this period yet"
},
"dashboard": {
"title": "Dashboard",
"description": "Overview of your application metrics",
@@ -3072,6 +3107,7 @@
},
"billing": {
"title": "Billing",
"disabledByAdmin": "Billing and upgrades are currently disabled. Contact your administrator if you need access.",
"currentPlan": "Current Plan",
"upgradePlan": "Upgrade Plan",
"manageBilling": "Manage Billing",