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": "Join the new era of smart note-taking.",
|
||||
"forgot": "Forgot?",
|
||||
"backToSite": "Back to site",
|
||||
"privacyTerms": "© 2025 Momento Labs — Privacy · Terms"
|
||||
"privacyTerms": "© 2025 Memento Labs — Privacy · Terms"
|
||||
},
|
||||
"sidebar": {
|
||||
"notes": "Notes",
|
||||
@@ -623,7 +623,7 @@
|
||||
"noNoteId": "No note ID"
|
||||
},
|
||||
"openAssistant": "Open AI Note",
|
||||
"poweredByMomento": "Powered by Momento AI",
|
||||
"poweredByMomento": "Powered by Memento AI",
|
||||
"welcomeMsg": "Hello! I'm your AI assistant. How can I help you with your notes today? I can help refine tone, expand messaging, or summarize content.",
|
||||
"summaryLast5": "Summary of your last 5 notes",
|
||||
"analyzingProgress": "Analyzing...",
|
||||
@@ -808,7 +808,7 @@
|
||||
"openInEditor": "Open in editor",
|
||||
"badgeLabel": "Memory Echo",
|
||||
"affinityBadge": "{percentage}% semantic affinity",
|
||||
"intro": "Momento found another note on the same topic. Preview it, insert a citation, or merge — without leaving this one.",
|
||||
"intro": "Memento found another note on the same topic. Preview it, insert a citation, or merge — without leaving this one.",
|
||||
"detectedIn": "Passage found in: {title}",
|
||||
"helpToggle": "How does this work?",
|
||||
"helpTitle": "What can you do with this connection?",
|
||||
@@ -895,12 +895,12 @@
|
||||
"processingDetail": "Generating tags, semantic summary and embeddings.",
|
||||
"successBadge": "Success",
|
||||
"sentToNotebook": "Note saved to notebook",
|
||||
"viewInMomento": "View in Momento",
|
||||
"viewInMomento": "View in Memento",
|
||||
"clipAnother": "Clip another page",
|
||||
"captureFailed": "Capture failed",
|
||||
"genericError": "Something went wrong while sending to your instance.",
|
||||
"retry": "Retry",
|
||||
"footer": "Momento Companion v2.1.2 · Secured HTTPS TLS 1.3",
|
||||
"footer": "Memento Companion v2.1.2 · Secured HTTPS TLS 1.3",
|
||||
"quitSimulator": "Close simulator",
|
||||
"simulatorBadge": "Capture simulator",
|
||||
"extensionActive": "Extension active on this page",
|
||||
@@ -1726,6 +1726,7 @@
|
||||
"featureBrainstormCreate": "Brainstorm creations",
|
||||
"featureBrainstormSessions": "Brainstorm sessions",
|
||||
"featureCharts": "AI Charts",
|
||||
"featurePublishEnhance": "AI Publishing",
|
||||
"featureBrainstormExpand": "Brainstorm expansions",
|
||||
"featureBrainstormEnrich": "Brainstorm enrichments"
|
||||
},
|
||||
@@ -2534,7 +2535,7 @@
|
||||
"imageModalLoadFailed": "Failed to load image",
|
||||
"linkPlaceholder": "Paste or type a link...",
|
||||
"noteLinkPickerTitle": "Link to another note",
|
||||
"noteLinkPickerHint": "Pick a note. Momento inserts [[Title]] in the text and creates the link when you save.",
|
||||
"noteLinkPickerHint": "Pick a note. Memento inserts [[Title]] in the text and creates the link when you save.",
|
||||
"noteLinkPickerSearch": "Search notes…",
|
||||
"noteLinkPickerEmpty": "No notes found. Check the title or create the target note first.",
|
||||
"slashNoteLink": "Link to a note",
|
||||
@@ -2582,6 +2583,21 @@
|
||||
"unpublish": "Unpublish",
|
||||
"unpublishSuccess": "Note unpublished",
|
||||
"publishBlocked": "Publication refused",
|
||||
"publishSimple": "Publish as-is",
|
||||
"publishSimpleHint": "Free — your note content as-is",
|
||||
"publishWithAi": "Publish with AI",
|
||||
"publishWithAiHint": "Enhanced layout · {count} credits left",
|
||||
"publishWithAiLocked": "Available on Pro plan",
|
||||
"publishWithAiGenerating": "Generating layout…",
|
||||
"publishTemplateMagazine": "Magazine article",
|
||||
"publishTemplateBrief": "Expert brief",
|
||||
"publishTemplateEssay": "Essay",
|
||||
"publishAiSuccess": "AI-enhanced page published!",
|
||||
"publishRewriteLabel": "Rewrite for the web",
|
||||
"publishRewriteOnHint": "Structures your editor blocks (exercises, toggles, callouts) for the web — AI writes only the intro",
|
||||
"publishRewriteOffHint": "Your original text is kept; AI only adds editorial framing",
|
||||
"copyPublicLink": "Copy link",
|
||||
"openPublicPage": "Open public page",
|
||||
"slashSubPage": "Sub-page",
|
||||
"slashSubPageDesc": "Create a linked note inside this note",
|
||||
"slashCharts": "AI Charts",
|
||||
@@ -3204,7 +3220,7 @@
|
||||
"badge": "Powered by Artificial Intelligence",
|
||||
"title1": "Your second brain,",
|
||||
"title2": "finally amplified.",
|
||||
"subtitle": "Momento is more than a note-taking app. It's an intelligent ecosystem that connects, analyzes and develops your ideas in real time with 6 types of AI agents and cutting-edge semantic search.",
|
||||
"subtitle": "Memento is more than a note-taking app. It's an intelligent ecosystem that connects, analyzes and develops your ideas in real time with 6 types of AI agents and cutting-edge semantic search.",
|
||||
"cta": "Sign up now",
|
||||
"secondary": "See features",
|
||||
"memoryEcho": "Memory Echo",
|
||||
@@ -3216,7 +3232,7 @@
|
||||
"label": "AI Capabilities",
|
||||
"title": "Fluid intelligence,",
|
||||
"title2": "woven into every word.",
|
||||
"desc": "Momento orchestrates your ideas through a multi-provider architecture.",
|
||||
"desc": "Memento orchestrates your ideas through a multi-provider architecture.",
|
||||
"f1Title": "Semantic Search",
|
||||
"f1Desc": "Stop searching by keywords. Find by concept. Our hybrid Vector + FTS engine understands the intent behind your notes.",
|
||||
"f2Title": "Contextual RAG Chat",
|
||||
@@ -3302,7 +3318,7 @@
|
||||
"popular": "Most popular",
|
||||
"basic": {
|
||||
"name": "Basic",
|
||||
"desc": "Discover the magic of Momento.",
|
||||
"desc": "Discover the magic of Memento.",
|
||||
"cta": "Get started",
|
||||
"feature0": "100 Notes max",
|
||||
"feature1": "3 Notebooks",
|
||||
@@ -3348,7 +3364,7 @@
|
||||
"byok": {
|
||||
"label": "Open Cloud Technology",
|
||||
"title": "The BYOK Strategy",
|
||||
"desc": "Already have OpenAI, Anthropic or Google API keys? Connect them directly to Momento. Use AI without imposed credit limits, paying only what you actually consume from your favorite provider.",
|
||||
"desc": "Already have OpenAI, Anthropic or Google API keys? Connect them directly to Memento. Use AI without imposed credit limits, paying only what you actually consume from your favorite provider.",
|
||||
"noLockin": "No lock-in",
|
||||
"noLockinDesc": "Switch providers in 1 click.",
|
||||
"cost": "Optimized costs",
|
||||
@@ -3358,8 +3374,8 @@
|
||||
"cta": {
|
||||
"title1": "Ready to unlock your",
|
||||
"title2": "full potential?",
|
||||
"desc": "Join thousands of researchers, designers and thinkers already using Momento to build their future.",
|
||||
"button": "Launch Momento"
|
||||
"desc": "Join thousands of researchers, designers and thinkers already using Memento to build their future.",
|
||||
"button": "Launch Memento"
|
||||
},
|
||||
"footer": {
|
||||
"desc": "The AI-amplified second brain. Designed for creative minds.",
|
||||
@@ -3527,7 +3543,7 @@
|
||||
"necessaryDesc": "These cookies are required to authenticate your session, save your language and theme preferences. They cannot be turned off.",
|
||||
"alwaysOn": "Always On",
|
||||
"analyticsTitle": "Anonymous Analytics",
|
||||
"analyticsDesc": "Help us improve Momento by sending completely anonymous usage statistics. No personal data is ever tracked.",
|
||||
"analyticsDesc": "Help us improve Memento by sending completely anonymous usage statistics. No personal data is ever tracked.",
|
||||
"cancel": "Cancel",
|
||||
"save": "Save Preferences",
|
||||
"saved": "Preferences updated successfully."
|
||||
@@ -3548,10 +3564,10 @@
|
||||
"statusActive": "Active",
|
||||
"statusInactive": "Not granted",
|
||||
"helpAriaLabel": "What does AI consent mean?",
|
||||
"helpTooltip": "Momento does not sell your data. This consent only applies when you trigger an AI action (titles, tags, chat, reformulation). Without it, the rest of the app works normally.",
|
||||
"helpTooltip": "Memento does not sell your data. This consent only applies when you trigger an AI action (titles, tags, chat, reformulation). Without it, the rest of the app works normally.",
|
||||
"whatItMeansTitle": "What does this mean?",
|
||||
"inactiveHint": "Without consent, only AI-powered features are disabled. You can still create, edit, and organize notes as usual.",
|
||||
"noCommercialUse": "Momento does not sell or monetize your personal data.",
|
||||
"noCommercialUse": "Memento does not sell or monetize your personal data.",
|
||||
"affectedFeatures": "AI features affected: title suggestions, tags, assistant chat, reformulation, Memory Echo, and similar tools.",
|
||||
"dataPortabilityHint": "You can export or delete all your data at any time (Settings → Data).",
|
||||
"dataPortabilityLink": "Export my data",
|
||||
@@ -3681,7 +3697,7 @@
|
||||
"localDbTitle": "Standalone Database",
|
||||
"echoPopoverTitle": "Semantic Resonances 🔮",
|
||||
"noEchoFound": "No semantic connections detected.",
|
||||
"echoUpgradeText": "Convert this table to a notebook to activate Momento's neural analysis.",
|
||||
"echoUpgradeText": "Convert this table to a notebook to activate Memento's neural analysis.",
|
||||
"echoLoading": "Searching for semantic connections...",
|
||||
"analyticsTitle": "Analytics & Insights",
|
||||
"analyticsNoData": "No analysis data available.",
|
||||
@@ -3737,7 +3753,7 @@
|
||||
},
|
||||
"onboarding": {
|
||||
"welcome_title": "Your AI-augmented memory",
|
||||
"welcome_subtitle": "Momento remembers what you forget.",
|
||||
"welcome_subtitle": "Memento remembers what you forget.",
|
||||
"welcome_cta": "Get started",
|
||||
"skip": "Skip",
|
||||
"step_notes_title": "Your notes",
|
||||
@@ -3749,7 +3765,7 @@
|
||||
"step_aha_title": "Find what you forgot",
|
||||
"step_aha_subtitle": "Type a question. Find a note you forgot.",
|
||||
"step_aha_placeholder": "notes about productivity...",
|
||||
"step_aha_cta": "Explore Momento",
|
||||
"step_aha_cta": "Explore Memento",
|
||||
"progress": "{current} of {total}",
|
||||
"creating_demo_notes": "Creating example notes...",
|
||||
"demo_notes_ready": "5 example notes created!",
|
||||
@@ -3872,7 +3888,8 @@
|
||||
"studyPlanSuccess": "Plan created! Reminders have been added to your notes.",
|
||||
"daysPlanned": "days planned",
|
||||
"studyPlanReminders": "Reminders have been automatically added to your notes.",
|
||||
"organizer": "Organize with AI",
|
||||
"organizer": "Auto tags",
|
||||
"autoTags": "Auto tags",
|
||||
"organizerDesc": "AI analyzes your notes and suggests tags, groupings and duplicate detection.",
|
||||
"analyze": "Analyze notebook",
|
||||
"organizing": "Analyzing notes...",
|
||||
@@ -3884,5 +3901,25 @@
|
||||
"noSuggestions": "No suggestions — notebook looks well organized.",
|
||||
"taskA": "Task A",
|
||||
"taskB": "Task B"
|
||||
},
|
||||
"notebookSite": {
|
||||
"title": "Publish notebook as website",
|
||||
"shortTitle": "Website",
|
||||
"howItWorks": "How it works",
|
||||
"step1": "AI analyzes your notes and recommends which ones to publish",
|
||||
"step2": "You confirm or adjust the selection",
|
||||
"step3": "Your site is generated with navigation and table of contents",
|
||||
"quotaWarning": "Analysis uses 1 AI credit.",
|
||||
"analyzeBtn": "Analyze with AI",
|
||||
"analyzing": "AI is analyzing your notes...",
|
||||
"siteDescription": "Site description",
|
||||
"notesSelected": "notes selected",
|
||||
"template": "Visual style",
|
||||
"publishBtn": "Publish site",
|
||||
"publishing": "Generating site...",
|
||||
"published": "Site published!",
|
||||
"openSite": "Open site",
|
||||
"updateSite": "Update site",
|
||||
"unpublish": "Unpublish site"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user