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:
@@ -575,7 +575,7 @@
|
||||
"noNoteId": "No note ID"
|
||||
},
|
||||
"openAssistant": "Abrir asistente IA",
|
||||
"poweredByMomento": "Desarrollado por Momento AI",
|
||||
"poweredByMomento": "Desarrollado por Memento AI",
|
||||
"welcomeMsg": "¡Hola! Soy tu asistente de IA. ¿Cómo puedo ayudarte con tus notas hoy? Puedo refinar el tono, ampliar mensajes o resumir contenido.",
|
||||
"summaryLast5": "Resumen de tus últimas 5 notas",
|
||||
"analyzingProgress": "Analizando...",
|
||||
@@ -2184,7 +2184,30 @@
|
||||
"importMarkdown": "Importar Markdown",
|
||||
"markdownExportSuccess": "Nota exportada como Markdown",
|
||||
"markdownExportError": "Error al exportar la nota",
|
||||
"markdownImportSuccess": "Markdown importado con éxito"
|
||||
"markdownImportSuccess": "Markdown importado con éxito",
|
||||
"publishTitle": "Publicación pública",
|
||||
"publishDesc": "Publica esta nota en una URL pública. Cualquiera con el enlace podrá leerla.",
|
||||
"publish": "Publicar",
|
||||
"publishSuccess": "¡Nota publicada!",
|
||||
"publishLive": "En línea",
|
||||
"unpublish": "Cancelar publicación",
|
||||
"unpublishSuccess": "Nota despublicada",
|
||||
"publishBlocked": "Publicación rechazada",
|
||||
"publishSimple": "Publicar tal cual",
|
||||
"publishSimpleHint": "Gratis — contenido de tu nota tal cual",
|
||||
"publishWithAi": "Publicar con IA",
|
||||
"publishWithAiHint": "Diseño mejorado · {count} créditos restantes",
|
||||
"publishWithAiLocked": "Disponible en el plan Pro",
|
||||
"publishWithAiGenerating": "Generando diseño…",
|
||||
"publishTemplateMagazine": "Artículo de revista",
|
||||
"publishTemplateBrief": "Briefing experto",
|
||||
"publishTemplateEssay": "Ensayo",
|
||||
"publishAiSuccess": "¡Página mejorada con IA publicada!",
|
||||
"publishRewriteLabel": "Reescribir para la web",
|
||||
"publishRewriteOnHint": "Estructura tus bloques del editor (ejercicios, secciones desplegables, callouts) para la web — la IA solo escribe la introducción",
|
||||
"publishRewriteOffHint": "Tu texto original se conserva; la IA solo añade marco editorial",
|
||||
"copyPublicLink": "Copiar enlace",
|
||||
"openPublicPage": "Abrir página pública"
|
||||
},
|
||||
"brainstorm": {
|
||||
"title": "Waves of Thought",
|
||||
@@ -2492,7 +2515,7 @@
|
||||
"badge": "Impulsado por inteligencia artificial",
|
||||
"title1": "Tu segundo cerebro,",
|
||||
"title2": "por fin amplificado.",
|
||||
"subtitle": "Momento es más que una app de notas. Es un ecosistema inteligente que conecta, analiza y desarrolla tus ideas en tiempo real con 6 tipos de agentes IA y búsqueda semántica de vanguardia.",
|
||||
"subtitle": "Memento es más que una app de notas. Es un ecosistema inteligente que conecta, analiza y desarrolla tus ideas en tiempo real con 6 tipos de agentes IA y búsqueda semántica de vanguardia.",
|
||||
"cta": "Regístrate ahora",
|
||||
"secondary": "Ver funciones",
|
||||
"memoryEcho": "Memory Echo",
|
||||
@@ -2504,7 +2527,7 @@
|
||||
"label": "Capacidades IA",
|
||||
"title": "Inteligencia fluida,",
|
||||
"title2": "tejida en cada palabra.",
|
||||
"desc": "Momento orquesta tus ideas mediante una arquitectura multi-proveedor.",
|
||||
"desc": "Memento orquesta tus ideas mediante una arquitectura multi-proveedor.",
|
||||
"f1Title": "Búsqueda semántica",
|
||||
"f1Desc": "Deja de buscar por palabras clave. Encuentra por concepto. Nuestro motor híbrido Vector + FTS entiende la intención detrás de tus notas.",
|
||||
"f2Title": "Chat RAG contextual",
|
||||
@@ -2590,7 +2613,7 @@
|
||||
"popular": "Más popular",
|
||||
"basic": {
|
||||
"name": "Basic",
|
||||
"desc": "Descubre la magia de Momento.",
|
||||
"desc": "Descubre la magia de Memento.",
|
||||
"cta": "Empezar",
|
||||
"feature0": "100 notas máx.",
|
||||
"feature1": "3 cuadernos",
|
||||
@@ -2636,7 +2659,7 @@
|
||||
"byok": {
|
||||
"label": "Tecnología cloud abierta",
|
||||
"title": "La estrategia BYOK",
|
||||
"desc": "¿Ya tienes claves API de OpenAI, Anthropic o Google? Conéctalas directamente a Momento. Usa IA sin límites de crédito impuestos, pagando solo lo que consumes con tu proveedor favorito.",
|
||||
"desc": "¿Ya tienes claves API de OpenAI, Anthropic o Google? Conéctalas directamente a Memento. Usa IA sin límites de crédito impuestos, pagando solo lo que consumes con tu proveedor favorito.",
|
||||
"noLockin": "Sin lock-in",
|
||||
"noLockinDesc": "Cambia de proveedor en 1 clic.",
|
||||
"cost": "Costes optimizados",
|
||||
@@ -2646,8 +2669,8 @@
|
||||
"cta": {
|
||||
"title1": "¿Listo para liberar tu",
|
||||
"title2": "máximo potencial?",
|
||||
"desc": "Únete a miles de investigadores, diseñadores y pensadores que ya usan Momento para construir su futuro.",
|
||||
"button": "Lanzar Momento"
|
||||
"desc": "Únete a miles de investigadores, diseñadores y pensadores que ya usan Memento para construir su futuro.",
|
||||
"button": "Lanzar Memento"
|
||||
},
|
||||
"footer": {
|
||||
"desc": "El segundo cerebro amplificado por IA. Diseñado para mentes creativas.",
|
||||
@@ -2704,7 +2727,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."
|
||||
@@ -2725,10 +2748,10 @@
|
||||
"statusActive": "Activo",
|
||||
"statusInactive": "No otorgado",
|
||||
"helpAriaLabel": "¿Qué significa el consentimiento de IA?",
|
||||
"helpTooltip": "Momento no vende tus datos. Este consentimiento solo aplica cuando activas una función de IA (títulos, etiquetas, chat, reformulación). Sin él, el resto de la app funciona con normalidad.",
|
||||
"helpTooltip": "Memento no vende tus datos. Este consentimiento solo aplica cuando activas una función de IA (títulos, etiquetas, chat, reformulación). Sin él, el resto de la app funciona con normalidad.",
|
||||
"whatItMeansTitle": "¿Qué significa esto?",
|
||||
"inactiveHint": "Sin consentimiento, solo se desactivan las funciones de IA. Puedes seguir creando, editando y organizando notas con normalidad.",
|
||||
"noCommercialUse": "Momento no vende ni monetiza tus datos personales.",
|
||||
"noCommercialUse": "Memento no vende ni monetiza tus datos personales.",
|
||||
"affectedFeatures": "Funciones afectadas: sugerencias de títulos, etiquetas, chat asistente, reformulación, Memory Echo, etc.",
|
||||
"dataPortabilityHint": "Puedes exportar o eliminar todos tus datos en cualquier momento (Ajustes → Datos).",
|
||||
"dataPortabilityLink": "Exportar mis datos",
|
||||
@@ -2782,7 +2805,7 @@
|
||||
},
|
||||
"onboarding": {
|
||||
"welcome_title": "Tu memoria aumentada por IA",
|
||||
"welcome_subtitle": "Momento recuerda lo que olvidas.",
|
||||
"welcome_subtitle": "Memento recuerda lo que olvidas.",
|
||||
"welcome_cta": "Empezar",
|
||||
"skip": "Omitir",
|
||||
"step_notes_title": "Tus notas",
|
||||
@@ -2794,7 +2817,7 @@
|
||||
"step_aha_title": "Encuentra lo que olvidaste",
|
||||
"step_aha_subtitle": "Haz una pregunta. Encuentra una nota olvidada.",
|
||||
"step_aha_placeholder": "notas sobre productividad...",
|
||||
"step_aha_cta": "Explorar Momento",
|
||||
"step_aha_cta": "Explorar Memento",
|
||||
"progress": "{current} de {total}",
|
||||
"creating_demo_notes": "Creando notas de ejemplo...",
|
||||
"demo_notes_ready": "¡5 notas de ejemplo creadas!",
|
||||
@@ -2898,4 +2921,4 @@
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user