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:
@@ -327,7 +327,7 @@ export const AgentsView: React.FC<AgentsViewProps> = ({
|
||||
'Connexion SSH sans mot de passe à devSandbox',
|
||||
'Gateway token (blank to generate)',
|
||||
'Procédure d\'accès à openclaw',
|
||||
'Derniers commits du repo Momento'
|
||||
'Derniers commits du repo Memento'
|
||||
].map((note, i) => (
|
||||
<label key={i} className="flex items-center gap-4 px-6 py-4 cursor-pointer hover:bg-white/50 transition-colors group">
|
||||
<div className={`w-5 h-5 rounded border transition-all flex items-center justify-center
|
||||
|
||||
@@ -44,7 +44,7 @@ export const AuthPage: React.FC<AuthPageProps> = ({ onAuthComplete, onBack, init
|
||||
<div className="w-8 h-8 bg-ink text-white rounded-xl flex items-center justify-center shadow-lg">
|
||||
<span className="font-serif font-bold text-xl">M</span>
|
||||
</div>
|
||||
<span className="font-serif text-xl font-medium tracking-tight text-ink">Momento</span>
|
||||
<span className="font-serif text-xl font-medium tracking-tight text-ink">Memento</span>
|
||||
</div>
|
||||
|
||||
<div className="w-24" /> {/* Spacer */}
|
||||
@@ -191,7 +191,7 @@ export const AuthPage: React.FC<AuthPageProps> = ({ onAuthComplete, onBack, init
|
||||
</AnimatePresence>
|
||||
|
||||
<p className="text-center mt-8 text-[9px] text-concrete font-bold uppercase tracking-[0.3em] opacity-40">
|
||||
© 2024 Momento Labs — Privacy • Terms
|
||||
© 2024 Memento Labs — Privacy • Terms
|
||||
</p>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
@@ -124,7 +124,7 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
try {
|
||||
// Occasional simulated error for retry demonstration
|
||||
if (Math.random() < 0.15) {
|
||||
throw new Error("Connexion réseau interrompue. L'extension n'a pas pu joindre les serveurs Momento.");
|
||||
throw new Error("Connexion réseau interrompue. L'extension n'a pas pu joindre les serveurs Memento.");
|
||||
}
|
||||
|
||||
const dateStr = new Date().toLocaleDateString('fr-FR', {
|
||||
@@ -175,10 +175,10 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
setLastCreatedNoteId(newNoteId);
|
||||
setClipperState('success');
|
||||
|
||||
// Add note to Momento Database
|
||||
// Add note to Memento Database
|
||||
onAddNote(newNote);
|
||||
|
||||
// Fire real-time notification toast in Momento!
|
||||
// Fire real-time notification toast in Memento!
|
||||
onTriggerToast(clipTitle, newNoteId);
|
||||
|
||||
} catch (err: any) {
|
||||
@@ -260,7 +260,7 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
{/* Web Extension active badge */}
|
||||
<button
|
||||
className="p-1.5 bg-accent/10 border border-accent/20 rounded-lg text-accent animate-pulse relative group"
|
||||
title="Momento Web Clipper is active"
|
||||
title="Memento Web Clipper is active"
|
||||
>
|
||||
<Scissors size={14} className="-rotate-90" />
|
||||
<span className="absolute bottom-full right-0 mb-2 whitespace-nowrap hidden group-hover:block bg-ink text-paper text-[10px] py-1 px-2 rounded-md shadow-lg">
|
||||
@@ -356,12 +356,12 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
{/* Extension Hub Header */}
|
||||
<header className="px-5 py-4 border-b border-neutral-100 dark:border-neutral-800 bg-neutral-50 dark:bg-neutral-900/40 flex items-center justify-between">
|
||||
<div className="flex items-center gap-2">
|
||||
{/* Momento Logo with Clipper Branding */}
|
||||
{/* Memento Logo with Clipper Branding */}
|
||||
<div className="w-7 h-7 bg-ink text-paper rounded-lg flex items-center justify-center font-serif font-black text-sm">
|
||||
M
|
||||
</div>
|
||||
<div className="leading-tight">
|
||||
<span className="text-xs font-bold font-serif text-ink dark:text-dark-ink tracking-tight">Momento</span>
|
||||
<span className="text-xs font-bold font-serif text-ink dark:text-dark-ink tracking-tight">Memento</span>
|
||||
<span className="text-[10px] text-accent block font-mono font-medium tracking-widest uppercase">Web Clipper</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -561,7 +561,7 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
}}
|
||||
className="w-full py-3.5 bg-ink text-paper rounded-xl text-xs font-bold uppercase tracking-widest flex items-center justify-center gap-2 hover:opacity-95 transition-opacity"
|
||||
>
|
||||
Voir dans Momento
|
||||
Voir dans Memento
|
||||
<ArrowUpRight size={14} />
|
||||
</button>
|
||||
|
||||
@@ -608,7 +608,7 @@ export const ClipperSimulator: React.FC<ClipperSimulatorProps> = ({
|
||||
|
||||
{/* Simulated context details */}
|
||||
<footer className="px-5 py-3 border-t border-neutral-100 dark:border-neutral-800 bg-neutral-50/50 dark:bg-neutral-900/40 text-[9px] text-concrete text-center">
|
||||
Momento Companion v2.1.2 • Sécurisé HTTPS TLS 1.3
|
||||
Memento Companion v2.1.2 • Sécurisé HTTPS TLS 1.3
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -197,7 +197,7 @@ const FR: LangDict = {
|
||||
hero_badge: "Augmenté par l'Intelligence Artificielle",
|
||||
hero_title_1: "Votre second cerveau,",
|
||||
hero_title_italic: "enfin amplifié.",
|
||||
hero_desc: "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.",
|
||||
hero_desc: "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.",
|
||||
hero_cta_start: "S'inscrire maintenant",
|
||||
hero_cta_features: "Voir les fonctionnalités",
|
||||
|
||||
@@ -210,7 +210,7 @@ const FR: LangDict = {
|
||||
features_badge: "Capacités IA",
|
||||
features_title_1: "Une intelligence fluide,",
|
||||
features_title_2: "intégrée à chaque mot.",
|
||||
features_subtitle: "Momento orchestre vos idées grâce à une architecture multi-fournisseurs.",
|
||||
features_subtitle: "Memento orchestre vos idées grâce à une architecture multi-fournisseurs.",
|
||||
|
||||
f1_title: "Recherche Sémantique",
|
||||
f1_desc: "Ne cherchez plus par mots-clés. Trouvez par concept. Notre moteur hybride Vector + FTS comprend l'intention derrière vos notes.",
|
||||
@@ -261,7 +261,7 @@ const FR: LangDict = {
|
||||
price_popular: "Le plus populaire",
|
||||
price_free_name: "Basic",
|
||||
price_free_price: "Gratuit",
|
||||
price_free_desc: "Pour découvrir la magie de Momento.",
|
||||
price_free_desc: "Pour découvrir la magie de Memento.",
|
||||
price_pro_name: "Pro",
|
||||
price_pro_price: "9,90€",
|
||||
price_pro_desc: "Pour les consultants et créateurs exigeants.",
|
||||
@@ -285,7 +285,7 @@ const FR: LangDict = {
|
||||
|
||||
byok_badge: "Technologie Cloud Ouverte",
|
||||
byok_title: "La stratégie BYOK",
|
||||
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.",
|
||||
byok_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.",
|
||||
byok_col1_title: "Pas de lock-in",
|
||||
byok_col1_desc: "Changez de fournisseur en 1 clic.",
|
||||
byok_col2_title: "Coûts optimisés",
|
||||
@@ -294,10 +294,10 @@ const FR: LangDict = {
|
||||
|
||||
final_cta_title: "Prêt à libérer votre",
|
||||
final_cta_title_italic: "plein potentiel ?",
|
||||
final_cta_desc: "Rejoignez des milliers de chercheurs, designers et penseurs qui utilisent déjà Momento pour construire leur futur.",
|
||||
final_cta_button: "Lancer Momento",
|
||||
final_cta_desc: "Rejoignez des milliers de chercheurs, designers et penseurs qui utilisent déjà Memento pour construire leur futur.",
|
||||
final_cta_button: "Lancer Memento",
|
||||
|
||||
eco_badge: "Écosystème Momento",
|
||||
eco_badge: "Écosystème Memento",
|
||||
eco_title_1: "Traduisez vos documents.",
|
||||
eco_title_2: "Formatage préservé.",
|
||||
eco_desc: "Le seul traducteur qui préserve les graphiques, tables des matières, formes et en-têtes — exactement tels qu'ils étaient. Prolongez l'intelligence de vos notes à l'international.",
|
||||
@@ -352,7 +352,7 @@ const EN: LangDict = {
|
||||
hero_badge: "Amplified by Artificial Intelligence",
|
||||
hero_title_1: "Your second brain,",
|
||||
hero_title_italic: "finally amplified.",
|
||||
hero_desc: "Momento is not just a typical note-taking tool. It is an intelligent ecosystem that connects, analyzes, and scales your thoughts in real time with 6 autonomous AI agents and vector semantic search.",
|
||||
hero_desc: "Memento is not just a typical note-taking tool. It is an intelligent ecosystem that connects, analyzes, and scales your thoughts in real time with 6 autonomous AI agents and vector semantic search.",
|
||||
hero_cta_start: "Sign Up Now",
|
||||
hero_cta_features: "View Features",
|
||||
|
||||
@@ -365,7 +365,7 @@ const EN: LangDict = {
|
||||
features_badge: "AI Capabilities",
|
||||
features_title_1: "Fluid intelligence,",
|
||||
features_title_2: "integrated into every word.",
|
||||
features_subtitle: "Momento orchestrates your thoughts through a multi-provider landscape.",
|
||||
features_subtitle: "Memento orchestrates your thoughts through a multi-provider landscape.",
|
||||
|
||||
f1_title: "Semantic Search",
|
||||
f1_desc: "Stop searching by keywords. Retrieve by concept. Our hybrid Vector + FTS engine understands the core semantic context behind your logs.",
|
||||
@@ -416,7 +416,7 @@ const EN: LangDict = {
|
||||
price_popular: "Most Popular",
|
||||
price_free_name: "Basic",
|
||||
price_free_price: "Free",
|
||||
price_free_desc: "Get started with the foundational magic of Momento.",
|
||||
price_free_desc: "Get started with the foundational magic of Memento.",
|
||||
price_pro_name: "Pro",
|
||||
price_pro_price: "$9.90",
|
||||
price_pro_desc: "For consultants, writers, and advanced researchers.",
|
||||
@@ -449,10 +449,10 @@ const EN: LangDict = {
|
||||
|
||||
final_cta_title: "Ready to expand your",
|
||||
final_cta_title_italic: "second organic brain?",
|
||||
final_cta_desc: "Join thousands of academics, product architects, and minimalist designers scaling their insights with Momento.",
|
||||
final_cta_button: "Launch Momento",
|
||||
final_cta_desc: "Join thousands of academics, product architects, and minimalist designers scaling their insights with Memento.",
|
||||
final_cta_button: "Launch Memento",
|
||||
|
||||
eco_badge: "Momento Ecosystem",
|
||||
eco_badge: "Memento Ecosystem",
|
||||
eco_title_1: "Local document translation.",
|
||||
eco_title_2: "Format intact.",
|
||||
eco_desc: "The only translator preserving graphs, nested hierarchies, vectors, alignments, and titles exactly as you drew them. Take your local notes globally.",
|
||||
@@ -507,7 +507,7 @@ const JA: LangDict = {
|
||||
hero_badge: "人工知能による拡張済システム",
|
||||
hero_title_1: "あなたの第二の脳を、",
|
||||
hero_title_italic: "ついに具現化する。",
|
||||
hero_desc: "Momento(モメント)は単なるメモ帳ではありません。6体の専門AIエージェント、ハイブリッドベクトル検索を搭載し、リアルタイムで知識の接続、整理、展開を実行する知能エコシステムです。",
|
||||
hero_desc: "Memento(モメント)は単なるメモ帳ではありません。6体の専門AIエージェント、ハイブリッドベクトル検索を搭載し、リアルタイムで知識の接続、整理、展開を実行する知能エコシステムです。",
|
||||
hero_cta_start: "無料で体験する",
|
||||
hero_cta_features: "機能一覧を見る",
|
||||
|
||||
@@ -520,7 +520,7 @@ const JA: LangDict = {
|
||||
features_badge: "先進AI性能",
|
||||
features_title_1: "記述に完全に融合する、",
|
||||
features_title_2: "インテリジェンス。",
|
||||
features_subtitle: "Momentoは、複数のLLMプロバイダを容易に構成可能な適応性を備えています。",
|
||||
features_subtitle: "Mementoは、複数のLLMプロバイダを容易に構成可能な適応性を備えています。",
|
||||
|
||||
f1_title: "セマンティック意味検索",
|
||||
f1_desc: "単なるキーワード検索はもう不要。記述された文脈、概念そのものを捉えて、過去の関連メモを一瞬で検索します。",
|
||||
@@ -571,7 +571,7 @@ const JA: LangDict = {
|
||||
price_popular: "人気プラン",
|
||||
price_free_name: "ベーシック",
|
||||
price_free_price: "無料",
|
||||
price_free_desc: "Momentoの見事な基礎機能をすぐにお試しいただけます。",
|
||||
price_free_desc: "Mementoの見事な基礎機能をすぐにお試しいただけます。",
|
||||
price_pro_name: "プロ",
|
||||
price_pro_price: "¥1,480",
|
||||
price_pro_desc: "ライター、学習者、研究者、コンサルタントの方へ最適。",
|
||||
@@ -595,7 +595,7 @@ const JA: LangDict = {
|
||||
|
||||
byok_badge: "オープン構想",
|
||||
byok_title: "APIキー持ち込み(BYOK)",
|
||||
byok_desc: "OpenAI、Anthropic、Googleなどの既存APIキーをお持ちですか?Momentoに直接バインドすれば、従量課金のみで任意の極限モデルを完全に制限なしで無制限にご利用いただけます。",
|
||||
byok_desc: "OpenAI、Anthropic、Googleなどの既存APIキーをお持ちですか?Mementoに直接バインドすれば、従量課金のみで任意の極限モデルを完全に制限なしで無制限にご利用いただけます。",
|
||||
byok_col1_title: "ロックイン縛りゼロ",
|
||||
byok_col1_desc: "好みのプロバイダやエンジンへ一瞬でコンフィグを切り替えられます。",
|
||||
byok_col2_title: "中抜きマージン排除",
|
||||
@@ -604,10 +604,10 @@ const JA: LangDict = {
|
||||
|
||||
final_cta_title: "あなたの第二の有機的な脳を",
|
||||
final_cta_title_italic: "今すぐ起動させましょう。",
|
||||
final_cta_desc: "最先端デザインと人工知能を極限まで融合させたMomento。すでに数千人のアカデミアやデザイナーが思考のスケールを始めています。",
|
||||
final_cta_button: "Momentoを起動する",
|
||||
final_cta_desc: "最先端デザインと人工知能を極限まで融合させたMemento。すでに数千人のアカデミアやデザイナーが思考のスケールを始めています。",
|
||||
final_cta_button: "Mementoを起動する",
|
||||
|
||||
eco_badge: "Momentoエコシステム",
|
||||
eco_badge: "Mementoエコシステム",
|
||||
eco_title_1: "ドキュメントローカル翻訳。",
|
||||
eco_title_2: "完璧な構造維持。",
|
||||
eco_desc: "グラフ、入れ子、アライメント、レイアウト、タイトル座標のすべてを完璧に保持したまま、言語領域を変換します。アイデアを瞬時にグローバルへ。",
|
||||
@@ -693,7 +693,7 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
carnet: "Database & Books",
|
||||
date: "26 Oct 2024",
|
||||
tags: ["Relational", "Rollup", "Blocks"],
|
||||
content: `# H2 Relation and Rollup\n\nCe document démontre la puissance du modèle relationnel de Momento.\n\n## 1. Modèle Relationnel\nVous pouvez lier des auteurs à leurs œuvres pour comptabiliser dynamiquement les entrées grâce à notre système de Rollups sémantiques.`,
|
||||
content: `# H2 Relation and Rollup\n\nCe document démontre la puissance du modèle relationnel de Memento.\n\n## 1. Modèle Relationnel\nVous pouvez lier des auteurs à leurs œuvres pour comptabiliser dynamiquement les entrées grâce à notre système de Rollups sémantiques.`,
|
||||
stats: { words: 124, lines: 18, equations: 1, graphs: 4, images: 3 }
|
||||
},
|
||||
{
|
||||
@@ -702,7 +702,7 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
carnet: "Mathematical & Geometrical",
|
||||
date: "24 Oct 2024",
|
||||
tags: ["LaTeX", "Gantt", "Flowcharts"],
|
||||
content: `# Block-Style Math & Formulas\n\nMomento supporte les équations complexes de type LaTeX et les diagrammes sémantiques directement intégrés sous forme de blocs.\n\n$$\\Phi = \\frac{1 + \\sqrt{5}}{2}$$\n\n$$\\Delta Carbon = E_{béton} - E_{CLT} = 410 \\text{ kg } CO_2/m^3$$`,
|
||||
content: `# Block-Style Math & Formulas\n\nMemento supporte les équations complexes de type LaTeX et les diagrammes sémantiques directement intégrés sous forme de blocs.\n\n$$\\Phi = \\frac{1 + \\sqrt{5}}{2}$$\n\n$$\\Delta Carbon = E_{béton} - E_{CLT} = 410 \\text{ kg } CO_2/m^3$$`,
|
||||
stats: { words: 91, lines: 12, equations: 2, graphs: 4, images: 1 }
|
||||
},
|
||||
{
|
||||
@@ -855,7 +855,7 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
<div className="w-10 h-10 bg-ink flex items-center justify-center rounded-xl shadow-lg rotate-3 group hover:rotate-0 transition-transform cursor-pointer">
|
||||
<span className="text-paper font-serif text-2xl font-bold">M</span>
|
||||
</div>
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Momento</span>
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Memento</span>
|
||||
</div>
|
||||
|
||||
<div className="hidden lg:flex items-center gap-10">
|
||||
@@ -1383,10 +1383,10 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
</button>
|
||||
<p className="text-stone-605">
|
||||
{lang === 'fr'
|
||||
? "Momento intègre des équations mathématiques pures et des diagrammes sémantiques ou Gantt de manière entièrement nativisée sous forme de blocs WYSIWYG."
|
||||
? "Memento intègre des équations mathématiques pures et des diagrammes sémantiques ou Gantt de manière entièrement nativisée sous forme de blocs WYSIWYG."
|
||||
: lang === 'ja'
|
||||
? "Momentoは本格的なLaTeX数式および概念関係フローチャートをWYSIWYGブロックとして極めて滑らかに表示・調整可能です。"
|
||||
: "Momento integrates highly stylized Mathematical LaTeX formulas and semantic/Gantt flowcharts directly as interactive WYSIWYG blocks."}
|
||||
? "Mementoは本格的なLaTeX数式および概念関係フローチャートをWYSIWYGブロックとして極めて滑らかに表示・調整可能です。"
|
||||
: "Memento integrates highly stylized Mathematical LaTeX formulas and semantic/Gantt flowcharts directly as interactive WYSIWYG blocks."}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
@@ -1475,9 +1475,9 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
</button>
|
||||
<p className="text-stone-605">
|
||||
{lang === 'fr'
|
||||
? "Le noyau de Momento est conçu pour gérer d'immenses documents textuels (plus d'un million de mots) avec une latence quasi nulle en virtualisant les sous-structures."
|
||||
? "Le noyau de Memento est conçu pour gérer d'immenses documents textuels (plus d'un million de mots) avec une latence quasi nulle en virtualisant les sous-structures."
|
||||
: lang === 'ja'
|
||||
? "Momentoの超高速仮想ドキュメントレンダリングは、合計100万語を越える膨大な書籍や論文データベースでも、表示遅延なく高速に動作・ブロック分割制御可能です。"
|
||||
? "Mementoの超高速仮想ドキュメントレンダリングは、合計100万語を越える膨大な書籍や論文データベースでも、表示遅延なく高速に動作・ブロック分割制御可能です。"
|
||||
: "Its lightweight framework allows seamlessly displaying and editing files sizing up to 1,000,000 words without single-frame drops thanks to block virtualization."}
|
||||
</p>
|
||||
</div>
|
||||
@@ -1544,10 +1544,10 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
Markdown
|
||||
</div>
|
||||
{activeDemoIdx === 0 && (
|
||||
`# H2 Relation and Rollup\n\nCe document démontre la puissance du modèle relationnel de Momento.\n\n## 1. Modèle Relationnel\nLier des auteurs à leurs œuvres pour comptabiliser dynamiquement.\n\n[DATABASE id="authors-works" view="table"]\n\n## Template\nTemplates can access values via syntax: .action { .field }`
|
||||
`# H2 Relation and Rollup\n\nCe document démontre la puissance du modèle relationnel de Memento.\n\n## 1. Modèle Relationnel\nLier des auteurs à leurs œuvres pour comptabiliser dynamiquement.\n\n[DATABASE id="authors-works" view="table"]\n\n## Template\nTemplates can access values via syntax: .action { .field }`
|
||||
)}
|
||||
{activeDemoIdx === 1 && (
|
||||
`# Block-Style Math & Formulas\n\nMomento supporte LaTeX.\n\n$$ \\Phi = \\frac{1 + \\sqrt{5}}{2} $$\n\n$$ \\Delta Carbon = E_béton - E_CLT = 410 $$`
|
||||
`# Block-Style Math & Formulas\n\nMemento supporte LaTeX.\n\n$$ \\Phi = \\frac{1 + \\sqrt{5}}{2} $$\n\n$$ \\Delta Carbon = E_béton - E_CLT = 410 $$`
|
||||
)}
|
||||
{activeDemoIdx === 2 && (
|
||||
`# Large Document Virtualization\n\nLe moteur supporte de longs documents.\n\n## Zoom-In de bloc\nIsoler un bloc spécifique pour se concentrer.`
|
||||
@@ -1566,7 +1566,7 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
{editorMode === 'html' && (
|
||||
<div className="space-y-2.5 font-mono text-[9px]">
|
||||
<div className="bg-slate-50 border p-3 rounded-lg text-emerald-800 space-y-2 select-all leading-snug">
|
||||
<div>{`<!-- Momento Symmetrical DOM Tree map -->`}</div>
|
||||
<div>{`<!-- Memento Symmetrical DOM Tree map -->`}</div>
|
||||
<div>{`<div class="note-container font-serif" id="momento-doc-${activeDemoIdx}">`}</div>
|
||||
<div className="pl-3">{`<h2 class="title text-lg border-b">${activeDemoIdx === -1 ? "Synthèse" : realNotes[activeDemoIdx].title}</h2>`}</div>
|
||||
<div className="pl-3">{`<div class="section-meta flex text-[8px] uppercase">`}</div>
|
||||
@@ -2385,7 +2385,7 @@ export const LandingPage: React.FC<LandingPageProps> = ({ onEnter, onLogin, onRe
|
||||
<div className="w-8 h-8 bg-ink flex items-center justify-center rounded-lg">
|
||||
<span className="text-paper font-serif text-lg font-bold">M</span>
|
||||
</div>
|
||||
<span className="font-serif text-xl font-medium tracking-tight">Momento</span>
|
||||
<span className="font-serif text-xl font-medium tracking-tight">Memento</span>
|
||||
</div>
|
||||
<p className="text-sm text-concrete font-light max-w-xs leading-relaxed">{t('footer_desc')}</p>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@ export const LandingPageV2: React.FC<LandingPageV2Props> = ({
|
||||
onSwitchVersion
|
||||
}) => {
|
||||
|
||||
// Real world Momento note seeds to match constants.ts exactly
|
||||
// Real world Memento note seeds to match constants.ts exactly
|
||||
const realNotes = [
|
||||
{
|
||||
id: 'n1',
|
||||
@@ -194,7 +194,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
<span className="text-paper font-serif text-2xl font-bold">M</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Momento</span>
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Memento</span>
|
||||
<span className="text-[9px] font-black text-accent uppercase tracking-widest block font-mono -mt-1.5 pl-0.5">Second Cerveau</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -242,7 +242,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
<section className="relative pt-32 pb-24 px-6 md:px-12 max-w-7xl mx-auto">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-12 gap-10 items-stretch">
|
||||
|
||||
{/* Left Hero Sidebar: Information on Momento's Core Features */}
|
||||
{/* Left Hero Sidebar: Information on Memento's Core Features */}
|
||||
<div className="lg:col-span-5 flex flex-col justify-between space-y-6 text-left">
|
||||
<div className="space-y-5">
|
||||
<div className="inline-flex items-center gap-2 px-3 py-1.5 rounded-full bg-accent/10 border border-accent/20 text-accent text-[9px] font-bold font-mono tracking-widest uppercase">
|
||||
@@ -256,7 +256,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
</h1>
|
||||
|
||||
<p className="text-stone-600 text-sm leading-relaxed font-light">
|
||||
Momento rassemble vos notes, vos formules mathématiques et votre logique dans une structure d'apprentissage offline d'une flexibilité absolue. Évitez les abonnements ruineux en apportant votre clé personnelle (BYOK) ou utilisez l'environnement de manière 100% autonome et sécurisée.
|
||||
Memento rassemble vos notes, vos formules mathématiques et votre logique dans une structure d'apprentissage offline d'une flexibilité absolue. Évitez les abonnements ruineux en apportant votre clé personnelle (BYOK) ou utilisez l'environnement de manière 100% autonome et sécurisée.
|
||||
</p>
|
||||
|
||||
{/* Guided Feature Tabs Selector: Directly gives info on what the user can do */}
|
||||
@@ -320,7 +320,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Right Hero Column: True 1-to-1 Interactive Representation of Momento Workspace */}
|
||||
{/* Right Hero Column: True 1-to-1 Interactive Representation of Memento Workspace */}
|
||||
<div className="lg:col-span-7 w-full flex flex-col justify-between">
|
||||
<div className="w-full bg-[#1c1c1c] rounded-[24px] border border-ink/40 p-3 shadow-2xl relative overflow-hidden flex flex-col justify-between">
|
||||
|
||||
@@ -863,7 +863,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
<span className="text-[10px] font-bold uppercase tracking-[0.3em] text-[#A47148] font-mono block">Respect Souverain des Écrits</span>
|
||||
<h2 className="text-3xl font-serif text-[#1C1C1C] tracking-tight leading-tight">Aucun abonnement IA obligatoire grâce au modèle "BYOK".</h2>
|
||||
<p className="text-sm font-light text-stone-600 leading-relaxed">
|
||||
La plupart des applications cloud d'intelligence artificielle re-facturent de lourdes marges commerciales sur vos écrits. Momento change les règles du jeu :
|
||||
La plupart des applications cloud d'intelligence artificielle re-facturent de lourdes marges commerciales sur vos écrits. Memento change les règles du jeu :
|
||||
</p>
|
||||
<div className="space-y-4">
|
||||
<div className="flex gap-4">
|
||||
@@ -916,7 +916,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
<div className="max-w-6xl mx-auto space-y-16">
|
||||
<div className="max-w-xl mx-auto text-center space-y-3">
|
||||
<span className="text-[11px] font-bold uppercase tracking-[0.3em] text-[#A47148] font-mono block">Les Atouts Pratiques</span>
|
||||
<h2 className="text-3xl font-serif text-[#1C1C1C] tracking-tight leading-tight">Pourquoi utiliser Momento ?</h2>
|
||||
<h2 className="text-3xl font-serif text-[#1C1C1C] tracking-tight leading-tight">Pourquoi utiliser Memento ?</h2>
|
||||
<p className="text-xs font-light text-stone-500">Un écosystème conçu de bout en bout pour l'autonomie et la productivité.</p>
|
||||
</div>
|
||||
|
||||
@@ -961,7 +961,7 @@ $$\\Omega(x) = \\int_{0}^{\\Lambda} e^{-k \\cdot x} \\cdot dx$$
|
||||
<section className="py-20 text-center bg-[#FAF9F5]/70 select-none">
|
||||
<div className="max-w-xl mx-auto space-y-5 px-6">
|
||||
<h3 className="text-2xl font-serif text-[#1C1C1C] tracking-tight">Structurer vos notes et vos pensées.</h3>
|
||||
<p className="text-xs text-stone-500 font-light">Accédez directement à l'espace de travail fluide de Momento, sans processus contraignant.</p>
|
||||
<p className="text-xs text-stone-500 font-light">Accédez directement à l'espace de travail fluide de Memento, sans processus contraignant.</p>
|
||||
<div className="flex gap-4 justify-center">
|
||||
<button
|
||||
onClick={onEnter}
|
||||
|
||||
@@ -103,14 +103,14 @@ const FR: LangDict = {
|
||||
hero_badge: "Amplifié par l'intelligence collective locale & cloud",
|
||||
hero_title_1: "Votre second cerveau,",
|
||||
hero_title_italic: "enfin amplifié.",
|
||||
hero_desc: "Momento est un écosystème d'écriture intelligent en temps réel. Naviguez dans vos pensées via un graphe de connaissances 3D, étudiez avec répétition espacée, et déléguez vos recherches à 6 agents spécialisés autonomes.",
|
||||
hero_desc: "Memento est un écosystème d'écriture intelligent en temps réel. Naviguez dans vos pensées via un graphe de connaissances 3D, étudiez avec répétition espacée, et déléguez vos recherches à 6 agents spécialisés autonomes.",
|
||||
hero_cta_start: "S'inscrire gratuitement",
|
||||
hero_cta_features: "Explorer l'espace",
|
||||
|
||||
features_badge: "CAPACITÉS DU SYSTÈME",
|
||||
features_title: "Une sémantique naturelle,",
|
||||
features_subtitle: "fondée sur vos apprentissages.",
|
||||
features_desc: "Momento orchestre vos idées grâce à une architecture locale cryptée.",
|
||||
features_desc: "Memento orchestre vos idées grâce à une architecture locale cryptée.",
|
||||
|
||||
feature_1_title: "Recherche Sémantique Hybride",
|
||||
feature_1_desc: "Trouvez vos concepts au-delà des synonymes. Notre moteur hybride vectoriel comprend intrinsèquement l'intention de vos rédactions.",
|
||||
@@ -166,14 +166,14 @@ const EN: LangDict = {
|
||||
hero_badge: "Amplified by local & cloud collective intelligence",
|
||||
hero_title_1: "Your second brain,",
|
||||
hero_title_italic: "finally amplified.",
|
||||
hero_desc: "Momento is a real-time intelligent writing ecosystem. Navigate your thoughts via an interactive knowledge graph, study with spaced-repetition active recall, and delegate tasks to 6 autonomous specialist agents.",
|
||||
hero_desc: "Memento is a real-time intelligent writing ecosystem. Navigate your thoughts via an interactive knowledge graph, study with spaced-repetition active recall, and delegate tasks to 6 autonomous specialist agents.",
|
||||
hero_cta_start: "Start for free",
|
||||
hero_cta_features: "Explore workspace",
|
||||
|
||||
features_badge: "SYSTEM CAPABILITIES",
|
||||
features_title: "Natural semantics,",
|
||||
features_subtitle: "grounded in your knowledge.",
|
||||
features_desc: "Momento orchestrates your thoughts through an encrypted local architecture.",
|
||||
features_desc: "Memento orchestrates your thoughts through an encrypted local architecture.",
|
||||
|
||||
feature_1_title: "Hybrid Semantic Search",
|
||||
feature_1_desc: "Search concepts, not just keywords. Our hybrid vector engine understands the core semantic intention of your notes.",
|
||||
@@ -229,14 +229,14 @@ const JA: LangDict = {
|
||||
hero_badge: "ローカル&クラウド融合人工知能により拡張",
|
||||
hero_title_1: "あなたの第二の脳は、",
|
||||
hero_title_italic: "ついに具現化する。",
|
||||
hero_desc: "Momento(モメント)は、リアルタイムでアイデア同士が結合する最先端ナレッジベース。3D知識グラフ、間隔反復フラッシュカード、そして6体の自律型AIエージェントが、あなたの思考を強力に加速します。",
|
||||
hero_desc: "Memento(モメント)は、リアルタイムでアイデア同士が結合する最先端ナレッジベース。3D知識グラフ、間隔反復フラッシュカード、そして6体の自律型AIエージェントが、あなたの思考を強力に加速します。",
|
||||
hero_cta_start: "無料で体験する",
|
||||
hero_cta_features: "機能を体験する",
|
||||
|
||||
features_badge: "システム性能",
|
||||
features_title: "自然言語に根ざした、",
|
||||
features_subtitle: "あなただけのコンテキスト。",
|
||||
features_desc: "Momentoは、ローカル暗号化アーキテクチャを通じて、あなたの機密思考システムを管理します。",
|
||||
features_desc: "Mementoは、ローカル暗号化アーキテクチャを通じて、あなたの機密思考システムを管理します。",
|
||||
|
||||
feature_1_title: "ハイブリッド意味検索",
|
||||
feature_1_desc: "単なるキーワード一致の域を超え、意図を汲み取るベクトル意味検索。関連する記述を一瞬で発掘します。",
|
||||
@@ -415,7 +415,7 @@ export const LandingPageV3: React.FC<LandingPageV3Props> = ({
|
||||
<span className="text-paper font-serif text-2xl font-bold">M</span>
|
||||
</div>
|
||||
<div className="text-left">
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Momento</span>
|
||||
<span className="font-serif text-2xl font-medium tracking-tight">Memento</span>
|
||||
<span className="text-[9px] font-black text-accent uppercase tracking-widest block font-mono -mt-1.5 pl-0.5">V3 Multilingue</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1109,7 +1109,7 @@ export const LandingPageV3: React.FC<LandingPageV3Props> = ({
|
||||
|
||||
{/* Footer copyright */}
|
||||
<footer className="py-12 px-8 bg-[#FAF9F5] text-center border-t border-black/[0.04] text-[10px] font-mono text-stone-400 uppercase tracking-widest select-none">
|
||||
<div>Momento Systems V3 — Chiffrement local garanti.</div>
|
||||
<div>Memento Systems V3 — Chiffrement local garanti.</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -602,7 +602,7 @@ export const SearchModal: React.FC<SearchModalProps> = ({
|
||||
|
||||
<div className="flex items-center gap-1.5 text-[9px] font-bold uppercase tracking-wider text-concrete/60">
|
||||
<Command size={10} />
|
||||
<span>Momento Search OS v2.3</span>
|
||||
<span>Memento Search OS v2.3</span>
|
||||
</div>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
@@ -9,7 +9,7 @@ export const BillingTab: React.FC = () => {
|
||||
name: 'Plan Basic',
|
||||
price: 'Gratuit',
|
||||
period: '',
|
||||
description: 'Pour découvrir la magie de Momento.',
|
||||
description: 'Pour découvrir la magie de Memento.',
|
||||
features: [
|
||||
'100 Notes max',
|
||||
'3 Carnets',
|
||||
@@ -119,7 +119,7 @@ export const BillingTab: React.FC = () => {
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<p className="text-xs text-concrete font-light">Votre plan gratuit n'expire jamais. Passez à la vitesse supérieure pour débloquer toute la puissance de Momento.</p>
|
||||
<p className="text-xs text-concrete font-light">Votre plan gratuit n'expire jamais. Passez à la vitesse supérieure pour débloquer toute la puissance de Memento.</p>
|
||||
<div className="pt-4 flex items-center justify-between border-t border-border/40 mt-4">
|
||||
<span className="text-[11px] font-bold text-ink uppercase tracking-widest">Plan Actuel</span>
|
||||
<span className="text-[11px] font-bold text-accent uppercase tracking-widest">GRATUIT</span>
|
||||
|
||||
Reference in New Issue
Block a user