feat: publication IA (magazine/brief/essay) + fixes critique
Publication IA: - 4 templates (magazine, brief, essay, simple) avec CSS riche - Rewrite IA (article/exercises/tutorial/reference/mixed) - Modération avec timeout 12s + fallback safe - Quotas publish_enhance par tier (basic=2, pro=15, business=100) - Détection contenu stale (hash) - Migration DB publishedContent/publishedTemplate/publishedSourceHash Fixes: - cheerio v1.2: Element -> AnyNode (domhandler), decodeEntities cast - _isShared ajouté au type Note (champ virtuel serveur) - callout colors PDF export: extraction fonction pure testable - admin/published: guard note.userId null - Cmd+S fonctionne en mode dialog (pas seulement fullPage) i18n: - 23 clés publish* traduites dans les 15 locales - Extension Web Clipper: 13 locales mise à jour Tests: - callout-colors.test.ts (6 tests) - note-visible-in-view.test.ts (5 tests) - entitlements.test.ts + byok-entitlements.test.ts: mock usageLog + unstubAllEnvs - 199/199 tests passent Tracker: user-stories.md sync avec sprint-status.yaml
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
"createYourSpaceSubtitle": "Rejoignez la nouvelle ère de la prise de notes intelligente.",
|
||||
"forgot": "Oublié ?",
|
||||
"backToSite": "Retour",
|
||||
"privacyTerms": "© 2025 Momento Labs — Confidentialité · Conditions"
|
||||
"privacyTerms": "© 2025 Memento Labs — Confidentialité · Conditions"
|
||||
},
|
||||
"sidebar": {
|
||||
"notes": "Notes",
|
||||
@@ -629,7 +629,7 @@
|
||||
"noNoteId": "Aucun ID de note"
|
||||
},
|
||||
"openAssistant": "Ouvrir IA Note",
|
||||
"poweredByMomento": "Propulsé par Momento AI",
|
||||
"poweredByMomento": "Propulsé par Memento AI",
|
||||
"welcomeMsg": "Bonjour ! Je suis votre assistant IA. Comment puis-je vous aider avec vos notes ? Je peux affiner le ton, développer un message ou résumer le contenu.",
|
||||
"summaryLast5": "Résumé de vos 5 dernières notes",
|
||||
"analyzingProgress": "Analyse en cours...",
|
||||
@@ -814,7 +814,7 @@
|
||||
"openInEditor": "Ouvrir dans l'éditeur",
|
||||
"badgeLabel": "Memory Echo",
|
||||
"affinityBadge": "{percentage} % d'affinité sémantique",
|
||||
"intro": "Momento a repéré une autre note sur le même sujet. Consultez-la, insérez une citation ou fusionnez — sans quitter celle-ci.",
|
||||
"intro": "Memento a repéré une autre note sur le même sujet. Consultez-la, insérez une citation ou fusionnez — sans quitter celle-ci.",
|
||||
"detectedIn": "Passage repéré dans : {title}",
|
||||
"helpToggle": "Comment ça marche ?",
|
||||
"helpTitle": "Que faire avec cette connexion ?",
|
||||
@@ -901,12 +901,12 @@
|
||||
"processingDetail": "Génération automatique des tags, résumé sémantique et calcul des embeddings en cours.",
|
||||
"successBadge": "Traitement réussi",
|
||||
"sentToNotebook": "Note envoyée dans le carnet",
|
||||
"viewInMomento": "Voir dans Momento",
|
||||
"viewInMomento": "Voir dans Memento",
|
||||
"clipAnother": "Clipper une autre page",
|
||||
"captureFailed": "Échec de la capture",
|
||||
"genericError": "Une erreur s'est produite lors de la transmission à votre instance.",
|
||||
"retry": "Réessayer",
|
||||
"footer": "Momento Companion v2.1.2 · Sécurisé HTTPS TLS 1.3",
|
||||
"footer": "Memento Companion v2.1.2 · Sécurisé HTTPS TLS 1.3",
|
||||
"quitSimulator": "Quitter le simulateur",
|
||||
"simulatorBadge": "Simulateur de capture",
|
||||
"extensionActive": "Extension active sur cette page",
|
||||
@@ -1732,6 +1732,7 @@
|
||||
"featureBrainstormCreate": "Créations brainstorm",
|
||||
"featureBrainstormSessions": "Sessions brainstorm",
|
||||
"featureCharts": "Graphiques IA",
|
||||
"featurePublishEnhance": "Publication IA",
|
||||
"featureBrainstormExpand": "Extensions brainstorm",
|
||||
"featureBrainstormEnrich": "Enrichissements brainstorm"
|
||||
},
|
||||
@@ -2538,7 +2539,7 @@
|
||||
"imageModalLoadFailed": "Échec du chargement de l'image",
|
||||
"linkPlaceholder": "Collez ou tapez un lien...",
|
||||
"noteLinkPickerTitle": "Lier à une autre note",
|
||||
"noteLinkPickerHint": "Choisissez une note. Momento insère [[Titre]] dans le texte et crée le lien à l'enregistrement.",
|
||||
"noteLinkPickerHint": "Choisissez une note. Memento insère [[Titre]] dans le texte et crée le lien à l'enregistrement.",
|
||||
"noteLinkPickerSearch": "Rechercher une note…",
|
||||
"noteLinkPickerEmpty": "Aucune note trouvée. Vérifiez le titre ou créez d'abord la note cible.",
|
||||
"slashNoteLink": "Lien vers une note",
|
||||
@@ -2586,6 +2587,21 @@
|
||||
"unpublish": "Dépublier",
|
||||
"unpublishSuccess": "Note dépubliée",
|
||||
"publishBlocked": "Publication refusée",
|
||||
"publishSimple": "Publier tel quel",
|
||||
"publishSimpleHint": "Gratuit — le contenu de votre note",
|
||||
"publishWithAi": "Publier avec l'IA",
|
||||
"publishWithAiHint": "Mise en page soignée · {count} crédits restants",
|
||||
"publishWithAiLocked": "Disponible avec le plan Pro",
|
||||
"publishWithAiGenerating": "Génération de la mise en page…",
|
||||
"publishTemplateMagazine": "Article magazine",
|
||||
"publishTemplateBrief": "Fiche expert",
|
||||
"publishTemplateEssay": "Essai",
|
||||
"publishAiSuccess": "Page publiée avec mise en page IA !",
|
||||
"publishRewriteLabel": "Reformuler pour le web",
|
||||
"publishRewriteOnHint": "Structure vos blocs éditeur (exercices, toggles, encadrés) en page web — l'IA rédige seulement le chapô",
|
||||
"publishRewriteOffHint": "Votre texte original est conservé ; l'IA ajoute seulement l'habillage éditorial",
|
||||
"copyPublicLink": "Copier le lien",
|
||||
"openPublicPage": "Ouvrir la page publique",
|
||||
"slashSubPage": "Sous-page",
|
||||
"slashSubPageDesc": "Créer une note liée dans cette note",
|
||||
"slashCharts": "Graphiques IA",
|
||||
@@ -3208,7 +3224,7 @@
|
||||
"badge": "Augmenté par l'Intelligence Artificielle",
|
||||
"title1": "Votre second cerveau,",
|
||||
"title2": "enfin amplifié.",
|
||||
"subtitle": "Momento n'est pas qu'une simple application de notes. C'est un écosystème intelligent qui connecte, analyse et développe vos idées en temps réel grâce à 6 types d'agents IA et une recherche sémantique de pointe.",
|
||||
"subtitle": "Memento n'est pas qu'une simple application de notes. C'est un écosystème intelligent qui connecte, analyse et développe vos idées en temps réel grâce à 6 types d'agents IA et une recherche sémantique de pointe.",
|
||||
"cta": "S'inscrire maintenant",
|
||||
"secondary": "Voir les fonctionnalités",
|
||||
"memoryEcho": "Memory Echo",
|
||||
@@ -3220,7 +3236,7 @@
|
||||
"label": "Capacités IA",
|
||||
"title": "Une intelligence fluide,",
|
||||
"title2": "intégrée à chaque mot.",
|
||||
"desc": "Momento orchestre vos idées grâce à une architecture multi-fournisseurs.",
|
||||
"desc": "Memento orchestre vos idées grâce à une architecture multi-fournisseurs.",
|
||||
"f1Title": "Recherche Sémantique",
|
||||
"f1Desc": "Ne cherchez plus par mots-clés. Trouvez par concept. Notre moteur hybride Vector + FTS comprend l'intention derrière vos notes.",
|
||||
"f2Title": "Chat RAG Contextuel",
|
||||
@@ -3306,7 +3322,7 @@
|
||||
"popular": "Le plus populaire",
|
||||
"basic": {
|
||||
"name": "Basic",
|
||||
"desc": "Pour découvrir la magie de Momento.",
|
||||
"desc": "Pour découvrir la magie de Memento.",
|
||||
"cta": "Commencer",
|
||||
"feature0": "100 Notes max",
|
||||
"feature1": "3 Carnets",
|
||||
@@ -3352,7 +3368,7 @@
|
||||
"byok": {
|
||||
"label": "Technologie Cloud Ouverte",
|
||||
"title": "La stratégie BYOK",
|
||||
"desc": "Vous possédez déjà des clés API OpenAI, Anthropic ou Google ? Connectez-les directement à Momento. Utilisez l'IA sans limites de crédits imposées, en payant uniquement ce que vous consommez chez votre fournisseur favori.",
|
||||
"desc": "Vous possédez déjà des clés API OpenAI, Anthropic ou Google ? Connectez-les directement à Memento. Utilisez l'IA sans limites de crédits imposées, en payant uniquement ce que vous consommez chez votre fournisseur favori.",
|
||||
"noLockin": "Pas de lock-in",
|
||||
"noLockinDesc": "Changez de fournisseur en 1 clic.",
|
||||
"cost": "Coûts optimisés",
|
||||
@@ -3362,8 +3378,8 @@
|
||||
"cta": {
|
||||
"title1": "Prêt à libérer votre",
|
||||
"title2": "plein potentiel ?",
|
||||
"desc": "Rejoignez des milliers de chercheurs, designers et penseurs qui utilisent déjà Momento pour construire leur futur.",
|
||||
"button": "Lancer Momento"
|
||||
"desc": "Rejoignez des milliers de chercheurs, designers et penseurs qui utilisent déjà Memento pour construire leur futur.",
|
||||
"button": "Lancer Memento"
|
||||
},
|
||||
"footer": {
|
||||
"desc": "Le second cerveau amplifié par l'IA. Pensé pour les esprits créatifs.",
|
||||
@@ -3531,7 +3547,7 @@
|
||||
"necessaryDesc": "Ces cookies sont requis pour authentifier votre session et enregistrer vos préférences de langue et de thème. Ils ne peuvent pas être désactivés.",
|
||||
"alwaysOn": "Toujours Actifs",
|
||||
"analyticsTitle": "Analyses Anonymes",
|
||||
"analyticsDesc": "Aidez-nous à améliorer Momento en partageant des statistiques d'utilisation totalement anonymes. Aucune donnée personnelle n'est suivie.",
|
||||
"analyticsDesc": "Aidez-nous à améliorer Memento en partageant des statistiques d'utilisation totalement anonymes. Aucune donnée personnelle n'est suivie.",
|
||||
"cancel": "Annuler",
|
||||
"save": "Enregistrer les préférences",
|
||||
"saved": "Préférences mises à jour avec succès."
|
||||
@@ -3552,10 +3568,10 @@
|
||||
"statusActive": "Actif",
|
||||
"statusInactive": "Non accordé",
|
||||
"helpAriaLabel": "Que signifie le consentement IA ?",
|
||||
"helpTooltip": "Momento ne vend pas vos données. Ce consentement ne s’applique que lorsque vous déclenchez une action IA (titres, étiquettes, chat, reformulation). Sans lui, le reste de l’application fonctionne normalement.",
|
||||
"helpTooltip": "Memento ne vend pas vos données. Ce consentement ne s’applique que lorsque vous déclenchez une action IA (titres, étiquettes, chat, reformulation). Sans lui, le reste de l’application fonctionne normalement.",
|
||||
"whatItMeansTitle": "Qu’est-ce que cela signifie ?",
|
||||
"inactiveHint": "Sans consentement, seules les fonctions propulsées par l’IA sont désactivées. Vous pouvez continuer à créer, modifier et organiser vos notes comme d’habitude.",
|
||||
"noCommercialUse": "Momento ne vend ni ne monétise vos données personnelles.",
|
||||
"noCommercialUse": "Memento ne vend ni ne monétise vos données personnelles.",
|
||||
"affectedFeatures": "Fonctions concernées : suggestions de titres, étiquettes, assistant chat, reformulation, Memory Echo, etc.",
|
||||
"dataPortabilityHint": "Vous pouvez exporter ou supprimer toutes vos données à tout moment (Paramètres → Données).",
|
||||
"dataPortabilityLink": "Exporter mes données",
|
||||
@@ -3685,7 +3701,7 @@
|
||||
"localDbTitle": "Base de Données Autonome",
|
||||
"echoPopoverTitle": "Résonance Sémantique 🔮",
|
||||
"noEchoFound": "Aucune résonance sémantique détectée.",
|
||||
"echoUpgradeText": "Convertissez ce tableau en carnet pour activer l'analyse neuronale de Momento.",
|
||||
"echoUpgradeText": "Convertissez ce tableau en carnet pour activer l'analyse neuronale de Memento.",
|
||||
"echoLoading": "Recherche de connexions sémantiques...",
|
||||
"analyticsTitle": "Analyses & Insights",
|
||||
"analyticsNoData": "Aucune donnée d'analyse disponible.",
|
||||
@@ -3741,7 +3757,7 @@
|
||||
},
|
||||
"onboarding": {
|
||||
"welcome_title": "Votre mémoire augmentée par l'IA",
|
||||
"welcome_subtitle": "Momento se souvient de ce que vous oubliez.",
|
||||
"welcome_subtitle": "Memento se souvient de ce que vous oubliez.",
|
||||
"welcome_cta": "Commencer",
|
||||
"skip": "Passer",
|
||||
"step_notes_title": "Vos notes",
|
||||
@@ -3753,7 +3769,7 @@
|
||||
"step_aha_title": "Retrouvez ce que vous avez oublié",
|
||||
"step_aha_subtitle": "Tapez une question. Retrouvez une note oubliée.",
|
||||
"step_aha_placeholder": "notes sur ma productivité...",
|
||||
"step_aha_cta": "Explorer Momento",
|
||||
"step_aha_cta": "Explorer Memento",
|
||||
"progress": "{current} sur {total}",
|
||||
"creating_demo_notes": "Création des notes d'exemple...",
|
||||
"demo_notes_ready": "5 notes d'exemple créées !",
|
||||
@@ -3876,7 +3892,8 @@
|
||||
"studyPlanSuccess": "Planning créé ! Des rappels ont été ajoutés à vos notes.",
|
||||
"daysPlanned": "jours planifiés",
|
||||
"studyPlanReminders": "Des rappels ont été ajoutés automatiquement à vos notes.",
|
||||
"organizer": "Organiser avec l'IA",
|
||||
"organizer": "Tags automatiques",
|
||||
"autoTags": "Tags automatiques",
|
||||
"organizerDesc": "L'IA analyse vos notes et propose tags, regroupements et détection de doublons.",
|
||||
"analyze": "Analyser le carnet",
|
||||
"organizing": "Analyse des notes en cours...",
|
||||
@@ -3888,5 +3905,25 @@
|
||||
"noSuggestions": "Aucune suggestion — le carnet semble bien organisé.",
|
||||
"taskA": "Tâche A",
|
||||
"taskB": "Tâche B"
|
||||
},
|
||||
"notebookSite": {
|
||||
"title": "Publier le carnet en site web",
|
||||
"shortTitle": "Site web",
|
||||
"howItWorks": "Comment ça marche",
|
||||
"step1": "L'IA analyse vos notes et recommande lesquelles publier",
|
||||
"step2": "Vous validez ou modifiez la sélection",
|
||||
"step3": "Votre site est généré avec navigation et table des matières",
|
||||
"quotaWarning": "L'analyse consomme 1 crédit IA.",
|
||||
"analyzeBtn": "Analyser avec l'IA",
|
||||
"analyzing": "L'IA analyse vos notes...",
|
||||
"siteDescription": "Description du site",
|
||||
"notesSelected": "notes sélectionnées",
|
||||
"template": "Style visuel",
|
||||
"publishBtn": "Publier le site",
|
||||
"publishing": "Génération du site...",
|
||||
"published": "Site publié !",
|
||||
"openSite": "Ouvrir le site",
|
||||
"updateSite": "Mettre à jour le site",
|
||||
"unpublish": "Dépublier le site"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user