feat(dashboard): tableau de bord Second Brain configurable avec chargement progressif
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m3s
CI / Deploy production (on server) (push) Successful in 23s

Briefing granulaire, pistes rapides puis enrichissement async, layout persisté v5,
suggestions agents, intégration Gmail et navigation sidebar alignée sur /home.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Antigravity
2026-07-14 16:50:53 +00:00
parent d38a99586b
commit 30da592ba2
62 changed files with 7741 additions and 335 deletions

View File

@@ -73,6 +73,7 @@
"dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders.",
"documents": "Documents",
"dashboardPanelBody": "Your second brain at a glance: AI suggestions, quick capture, and next steps. Use the shortcuts below to jump into action.",
"searchNotebooksPlaceholder": "Search notebooks…",
"clearSearch": "Clear search",
"insightsPanelBody": "Semantic map of your notes: thematic clusters, bridge notes, and connection suggestions.",
@@ -82,7 +83,10 @@
"resizeSidebar": "Resize sidebar width",
"dailyNote": "Daily Note",
"dailyNoteError": "Could not open today's note",
"dailyNoteTooltip": "Open or create your personal daily journal note for today"
"dailyNoteTooltip": "Open or create your personal daily journal note for today",
"lightMode": "Light mode",
"darkMode": "Dark mode",
"searchShortcut": "Search (Ctrl+K)"
},
"notes": {
"title": "Notes",
@@ -318,7 +322,12 @@
"unarchived": "Unarchived",
"savedJustNow": "Saved",
"unsaved": "Unsaved changes",
"historyEnabledTooltip": "Version history enabled — changes are tracked"
"historyEnabledTooltip": "Version history enabled — changes are tracked",
"heading1": "Heading 1",
"heading2": "Heading 2",
"heading3": "Heading 3",
"importSuccess": "{{count}} notes imported!",
"unpublished": "Note unpublished"
},
"pagination": {
"previous": "←",
@@ -360,7 +369,9 @@
"confirmDeleteShort": "Confirm?",
"labelRemoved": "Label \"{label}\" removed",
"filterByTags": "Filter by tags",
"searchTags": "Search tags"
"searchTags": "Search tags",
"activeCount": "{{count}} active",
"showMoreCount": "+ {{count}} more"
},
"search": {
"placeholder": "Search",
@@ -769,6 +780,7 @@
"match": "{percentage}% match",
"fused": "Fused",
"clickToView": "Click to view note →",
"defaultInsight": "These notes appear to be semantically related.",
"overlay": {
"title": "Connected Notes",
"searchPlaceholder": "Search connections...",
@@ -938,6 +950,8 @@
"graphView": "Link map",
"insights": "Semantic themes",
"revision": "Review",
"dailyNotes": "Daily Notes",
"dashboard": "Dashboard",
"userManagement": "User Management",
"accountSettings": "Account Settings",
"manageAISettings": "Manage AI Settings",
@@ -1017,7 +1031,19 @@
"autoSave": "Auto-save",
"autoSaveDesc": "Automatically save changes while typing",
"autoSaveEnabled": "Auto-save enabled!",
"autoSaveDisabled": "Auto-save disabled"
"autoSaveDisabled": "Auto-save disabled",
"publishedTitle": "My Published Pages",
"publishedDesc": "Manage notes you have published publicly.",
"publishedEmpty": "No published notes yet.",
"notesViewLabel": "Notes View",
"notesViewDescription": "Choose how notes are displayed in the list.",
"notesViewList": "List",
"notesViewMasonry": "Masonry",
"notesViewTable": "Table",
"importExportHelp": "Import / Export — how does it work?",
"aiConfigHelp": "How to configure your AI?",
"integrationsTitle": "Integrations",
"integrationsDesc": "Connect external services to Memento."
},
"profile": {
"title": "Profile",
@@ -1224,7 +1250,8 @@
"dismissIn": "Dismiss (closes in {timeLeft}s)",
"moveToNotebook": "Move to notebook",
"generalNotes": "General Notes",
"movedToNotebook": "Moved to notebook"
"movedToNotebook": "Moved to notebook",
"filterNotebooks": "Filter notebooks…"
},
"admin": {
"title": "Admin Dashboard",
@@ -1956,7 +1983,7 @@
"off": "Off",
"unknown": "Unknown",
"notAvailable": "N/A",
"loading": "Loading...",
"loading": "Loading",
"error": "Error",
"success": "Success",
"confirm": "Confirm",
@@ -1970,7 +1997,14 @@
"search": "Search...",
"noResults": "No notes found",
"required": "Required",
"optional": "Optional"
"optional": "Optional",
"notes": "notes",
"openMenu": "Open menu",
"openNav": "Open navigation",
"linkCopied": "Link copied!",
"copyLink": "Copy link",
"untitled": "Untitled",
"selectPlaceholder": "Select…"
},
"time": {
"justNow": "just now",
@@ -2391,7 +2425,20 @@
},
"lab": {
"initializing": "Initializing workspace",
"loadingIdeas": "Loading your ideas..."
"loadingIdeas": "Loading your ideas...",
"loadingSlides": "Loading slides…",
"downloadFailed": "Failed to download presentation",
"exportPpt": "Export to PowerPoint",
"downloadHtml": "Download HTML",
"openFullscreen": "Open in fullscreen",
"loadingPresentation": "Loading presentation…",
"previousSlide": "Previous slide",
"nextSlide": "Next slide",
"hideNotes": "Hide notes",
"toggleNotes": "Toggle presentation notes (Shortcut: N)",
"notes": "Notes",
"previous": "Previous",
"next": "Next"
},
"richTextEditor": {
"slashHint": "↑↓ navigate · Enter insert · Tab switch section",
@@ -2690,7 +2737,15 @@
"previewDiagramTip": "Sketch concepts or generate diagrams via AI.",
"previewLivingBlockTip": "Sync content between multiple notes.",
"previewSlidesTip": "Create interactive exportable presentations.",
"previewTableTip": "Organize your data in rows and columns."
"previewTableTip": "Organize your data in rows and columns.",
"aiActionStarted": "AI Note invoked…",
"blockDeleted": "Block deleted",
"blockDuplicated": "Block duplicated",
"blockSelected": "Entire block selected",
"slashVideo": "Video",
"startVoice": "Start voice input",
"stopVoice": "Stop voice input",
"collapsibleSection": "Collapsible section"
},
"flashcards": {
"generateTitle": "Generate flashcards",
@@ -2784,7 +2839,8 @@
"cardSaved": "Card saved",
"cardTypeBadge": "{type}",
"reviewNow": "Review now",
"deleteFailed": "Could not delete"
"deleteFailed": "Could not delete",
"toolbarGenerateHint": "SM-2 Spaced Repetition"
},
"structuredViews": {
"enableTitle": "Organize this notebook (table, kanban, gallery…)",
@@ -2916,7 +2972,14 @@
"tagApplied": "applied",
"filterDone": "Done",
"filterTodo": "To do",
"propertyStatus": "Status"
"propertyStatus": "Status",
"exportCsv": "Export CSV",
"importCsv": "Import CSV",
"relationEmpty": "Link a note…",
"relationNoResults": "No note found",
"relationSearch": "Search a note…",
"semanticResonances": "Semantic resonances",
"insertLink": "Insert link in editor"
},
"brainstorm": {
"title": "Waves of Thought",
@@ -3200,7 +3263,19 @@
"instantActivation": "Instant activation",
"secureDesc": "Secure payments by Stripe",
"secureTransactions": "Secure transactions",
"satisfactionGuarantee": "30-day satisfaction guarantee"
"satisfactionGuarantee": "30-day satisfaction guarantee",
"cancelConfirm": "Are you sure you want to cancel your subscription? You will keep your Pro/Business access until the end of the current billing period.",
"cancelSuccess": "Your subscription has been successfully cancelled. It will end at the end of the current billing period.",
"invoices": "Invoices & Receipts",
"invoiceAmount": "Amount",
"invoiceDate": "Date",
"invoiceNumber": "Number",
"invoiceStatus": "Status",
"noInvoices": "No invoices available.",
"checkoutFailed": "Failed to start checkout. Please try again.",
"portalFailed": "Failed to open billing portal.",
"cancelFailed": "Failed to cancel subscription.",
"downloadPdf": "Download PDF"
},
"quotaPaywall": {
"title": "Monthly limit reached",
@@ -3689,7 +3764,9 @@
"openFully": "Open full screen",
"openFullyHelp": "Replace the current note with this one",
"readOnlyHint": "Read-only preview — open full screen to edit.",
"loadFailed": "Could not open the linked note preview."
"loadFailed": "Could not open the linked note preview.",
"loading": "Loading…",
"untitled": "Untitled"
},
"structuredViewBlock": {
"insertLabel": "Structured View",
@@ -3856,11 +3933,317 @@
"hint_insights_refresh_desc": "If you've added new notes, click the refresh button to recalculate the clusters with the latest content."
},
"integrations": {
"title": "Integrations"
"title": "Integrations",
"gmail": {
"title": "Gmail",
"description": "Automatically capture flights, packages and subscriptions from your emails",
"connect": "Connect Gmail",
"disconnect": "Disconnect",
"scanNow": "Scan now",
"connected": "Gmail connected!",
"disconnected": "Gmail disconnected",
"scanDone": "{created} note(s) created from emails",
"recentCaptures": "{count} capture(s) this week",
"helpTitle": "How does Gmail work?",
"helpStep1": "Connect Gmail — you'll be redirected to Google to authorize read-only access.",
"helpStep2": "Memento scans recent emails for flights, packages and subscription renewals.",
"helpStep3": "Each match becomes a note with an automatic reminder when relevant.",
"helpStep4": "Scan runs daily in the background; you can also trigger a manual scan here."
},
"calendarConnected": "Google Calendar connected!",
"errorWith": "Error: {{error}}",
"readwiseError": "Readwise error",
"readwiseConnected": "Readwise connected — {{created}} notes created, {{updated}} updated",
"readwiseConnectError": "Readwise connection error",
"syncError": "Sync error",
"readwiseSynced": "Readwise sync — {{created}} created, {{updated}} updated",
"syncFailed": "Synchronization failed",
"readwiseDisconnected": "Readwise disconnected",
"noEvents": "No events today",
"eventsLoadError": "Failed to load events",
"meetingNoteCreated": "Meeting note created: {{summary}}",
"createNoteError": "Failed to create note",
"calendarDisconnected": "Google Calendar disconnected",
"gmailScanError": "Gmail scan error",
"calendarInfo": "How does Google Calendar work?",
"readwiseInfo": "How does Readwise work?",
"readwiseTokenPlaceholder": "Readwise token…",
"connected": "Connected",
"notConnected": "Not connected",
"connectCalendar": "Connect Google Calendar",
"todayEvents": "Today's events",
"disconnect": "Disconnect",
"connect": "Connect",
"syncNow": "Sync now",
"addNote": "+ Note",
"open": "Open",
"moreComing": "More integrations coming soon — Zapier, GitHub, Notion import…",
"calendarDesc": "Access your events and create meeting notes",
"readwiseDesc": "Import highlights from books, articles, and Kindle",
"lastSync": "Last sync:",
"createdLabel": "notes created",
"updatedLabel": "updated",
"calendarHelpStep1": "Click \"Connect Google Calendar\" — you will be redirected to Google to authorize access.",
"calendarHelpStep2": "Once connected, come back here and click \"Today's events\" to see your agenda.",
"calendarHelpStep3": "On each event, click \"+ Note\" to automatically create a meeting note with a template (Agenda / Notes / Actions).",
"calendarHelpStep4": "The note opens directly in Memento — add your notes in real time during the meeting.",
"readwiseHelpStep1": "Copy your Readwise access token.",
"readwiseHelpStep2": "Paste it in the field below and click \"Connect\". The first sync imports all your books and articles.",
"readwiseHelpStep3": "Each book becomes a note in a \"Readwise 📚\" notebook — with all your highlights organized.",
"readwiseHelpStep4": "To update with new highlights, come back here and click \"Sync now\".",
"readwiseHelpStep5": "💡 Tip: create AI flashcards from a Readwise note (🎓 button in the editor) to review your readings."
},
"homeDashboard": {
"title": "Dashboard",
"quickCapture": "Quick Capture",
"quickCapturePlaceholder": "An idea, a thought… Enter to capture to Inbox.",
"captured": "Captured to Inbox",
"captureError": "Failed",
"mindMap": "Mind map",
"fullMap": "Full map →",
"mindMapEmpty": "No themes detected yet. Semantic analysis groups your notes by topic.",
"mindMapOpen": "Open insights map →",
"mindMapUnavailable": "Mind map unavailable.",
"themes": "themes",
"bridges": "bridges",
"aiEchoes": "AI echoes",
"bridgeNote": "Bridge note",
"theme": "Theme",
"suggestedResearch": "Suggested research",
"dismiss": "Dismiss",
"createAgent": "Create agent",
"agentsEmpty": "No research agents suggested yet. Keep writing — Memento will propose synthesis topics when your notes cluster.",
"agentCreated": "Agent created and started",
"agentFailed": "Failed to create agent",
"notes": "notes",
"continue": "Continue",
"noRecentNotes": "No recent notes.",
"untitled": "Untitled",
"inbox": "Inbox",
"sentiment": "Sentiment",
"analyzing": "Analyzing…",
"notEnoughNotes": "Not enough notes this week.",
"toReview": "To review",
"allCaughtUp": "All caught up.",
"toOrganize": "to organize",
"review": "Review",
"cardsDue": "cards due",
"reminders": "Reminders",
"aiFound": "AI found",
"new": "new",
"noConnections": "No connections yet. AI analyzes your notes.",
"match": "Match",
"semanticConnection": "Semantic affinity",
"suggestedBridge": "Link {clusterA} & {clusterB}",
"createBridgeNote": "Create bridge note",
"bridgeNoteCreated": "Bridge note created",
"agentDiscovery": "Agent",
"connectionBetween": "Link between \"{note1}\" and \"{note2}\"",
"intelFilterAll": "All",
"intelFilterConnections": "Links",
"intelFilterBridges": "Bridges",
"intelFilterIdeas": "Ideas",
"intelFilterAgents": "Agents",
"intelFilterEmpty": "Nothing in this category yet.",
"intelOpenNote": "Open",
"intelCompare": "Compare",
"intelMissingLink": "Missing link",
"intelViewAgent": "View agent",
"intelAgentNoResult": "Research complete — see details.",
"intelPrev": "Previous",
"intelNext": "Next",
"intelGoTo": "Discovery {index}",
"intelPosition": "{current} / {total}",
"resumeOpen": "Resume",
"pulseInbox": "{count} to organize",
"pulseReview": "{count} to review",
"pulseDiscoveries": "{count} discoveries",
"pulseClear": "All caught up — enjoy your session.",
"widgetCustomize": "Customize",
"widgetDone": "Done",
"widgetAdd": "Add widget",
"widgetReset": "Reset layout",
"widgetResetDone": "Default dashboard restored.",
"layoutEmptyTitle": "Your dashboard is empty",
"layoutEmptyHint": "Restore the recommended layout to get started with your second brain.",
"widgetCatalog": "Widget catalog",
"widgetCatalogTitle": "Customize your dashboard",
"widgetActive": "Visible",
"widgetAddShort": "Add",
"widgetOpen": "Open",
"widgetDrag": "Drag widget",
"widgetHide": "Hide widget",
"widgetStatsBridges": "Bridges",
"widgetStatsNotes": "Notes",
"widgetAgentActivityEmpty": "No agent activity in the last 48 hours.",
"widgetPinnedEmpty": "No pinned notes yet.",
"widgetActivityHint": "Notes edited over the last 90 days.",
"widgetUsageHint": "Monthly AI usage by feature.",
"widgetCategories": {
"essential": "Essentials",
"paths": "Paths & review",
"cognition": "Knowledge map",
"productivity": "Productivity",
"agents": "AI & agents"
},
"widgets": {
"capture": "Quick capture",
"resume": "Resume here",
"intelligence": "AI found",
"reminders": "Reminders",
"mind-map": "Mind map",
"agents": "Suggested research",
"sentiment": "Sentiment",
"inbox": "Inbox",
"revision": "Flashcards",
"stats": "Semantic stats",
"agent-activity": "Agent activity",
"gmail": "Gmail captures",
"activity": "Writing activity",
"pinned": "Pinned notes",
"usage": "AI quota",
"next-paths": "Next paths",
"daily-review": "Daily review",
"open-loops": "Open loops",
"daily-note": "Daily journal",
"link-suggestions": "Link suggestions",
"bridges": "Bridge opportunities",
"flashcards-progress": "Learning progress"
},
"widgetDescriptions": {
"capture": "Capture a thought instantly into your inbox.",
"resume": "Pick up your most recent notes where you left off.",
"intelligence": "Semantic links, bridge ideas, and agent discoveries.",
"reminders": "Upcoming note reminders at a glance.",
"mind-map": "Theme clusters sized by note volume.",
"agents": "AI-suggested research agents for your topics.",
"sentiment": "Emotional tone of your notes this week.",
"inbox": "Notes waiting to be filed into notebooks.",
"revision": "Flashcards due for spaced repetition review.",
"stats": "Clusters, bridge notes, and total indexed notes.",
"agent-activity": "Latest completed agent runs.",
"gmail": "Email captures synced from Gmail.",
"activity": "GitHub-style heatmap of your writing rhythm.",
"pinned": "Quick access to your pinned notes.",
"usage": "Remaining AI credits and monthly limits.",
"next-paths": "AI-suggested next steps from your latest work.",
"daily-review": "10-minute morning checklist (inbox, discoveries, one link).",
"open-loops": "Notes started but left unfinished.",
"daily-note": "Today's journal entry.",
"link-suggestions": "Passages to link into your current note.",
"bridges": "Missing links between your knowledge themes.",
"flashcards-progress": "Retention, streak, and total cards."
},
"pathsTitle": "Your next paths",
"pathsFromNote": "Based on \"{title}\"",
"pathsLoading": "Analyzing your recent work…",
"pathsEnriching": "Refining suggestions…",
"pathsEmpty": "Work on a note to unlock personalized paths.",
"pathCompareHint": "Also related: {title} — open Memory Echo to compare.",
"pathAddLinkHint": "Consider linking to \"{link}\" in your note.",
"dailyReviewHint": "10 min each morning — the habit that makes your second brain compound.",
"dailyReviewInbox": "Process inbox",
"dailyReviewDiscoveries": "Review AI discoveries",
"dailyReviewConnection": "Explore one connection",
"dailyReviewCards": "Review flashcards",
"openLoopsEmpty": "No stalled notes — you're on track.",
"openLoopsStale": "{days}d ago",
"dailyNoteOpen": "Open journal",
"linkSuggestionsEmpty": "Edit a note to get link suggestions.",
"bridgesEmpty": "No bridge opportunities right now.",
"flashRetention": "Mastered",
"flashStreak": "Streak",
"flashTotal": "Cards",
"pathTypes": {
"continue": "Continue",
"connect": "Semantic link",
"add-link": "Add to note",
"bridge": "Bridge idea",
"research": "Research agent",
"explore": "Explore theme",
"organize": "Organize",
"review": "Review",
"resurface": "Resurface",
"daily": "Journal"
},
"widgetHelpLabel": "Widget help",
"widgetHelpClose": "Close",
"sentimentDominant": "Dominant tone this week",
"widgetHelp": {
"capture": "Jot down a thought in one line. It lands in your Inbox — classify it during your daily review.",
"next-paths": "Suggested next steps based on your latest edited note: resume, link, bridge, or research.",
"resume": "Your most recently updated notes. Pick up where you left off.",
"intelligence": "AI discoveries: semantic links between notes, bridge ideas, and agent findings.",
"reminders": "Upcoming note reminders. Empty when everything is on schedule.",
"mind-map": "Theme clusters sized by note volume. Click to explore in Insights.",
"agents": "AI-suggested research agents for topics you write about often.",
"sentiment": "Emotional tone of notes edited in the last 7 days. Requires at least 3 recent notes and AI enabled.",
"inbox": "Notes without a notebook yet. File them to keep your second brain tidy.",
"revision": "Flashcards due for spaced-repetition review today.",
"stats": "Semantic index stats: active themes, bridge notes, total indexed notes.",
"agent-activity": "Agents that completed a run in the last 48 hours.",
"gmail": "Email captures synced from Gmail integration.",
"activity": "Heatmap of notes you edited over the last 90 days.",
"pinned": "Quick access to notes you pinned.",
"usage": "Monthly AI credit usage by feature.",
"daily-review": "10-minute morning checklist: inbox, discoveries, one connection, flashcards.",
"open-loops": "Notes you started but haven't touched in 3+ days.",
"daily-note": "Today's journal entry — one note per day.",
"link-suggestions": "Passages from other notes worth linking into your current work.",
"bridges": "AI suggestions to connect two separate knowledge themes with a bridge note.",
"flashcards-progress": "Learning retention rate, review streak, and total cards."
},
"pathActions": {
"continue": "Resume",
"compare": "Compare",
"addLink": "Open & link",
"openInsight": "Explore",
"createBridge": "Create bridge",
"createAgent": "Launch agent",
"exploreTheme": "View themes",
"organizeInbox": "Open inbox",
"reviewCards": "Review",
"openDaily": "Open journal"
},
"gmailCaptures": "Gmail captures",
"gmailConnect": "Connect Gmail",
"gmailRecent": "{count} this week",
"aiConsentRequired": "Enable AI to discover connections between your notes.",
"aiProviderUnavailable": "AI is temporarily unavailable. Check your provider settings.",
"memoryEchoDisabled": "Memory Echo is disabled in your AI settings.",
"enableAi": "Enable AI",
"analyzeNotes": "Analyze my notes",
"echoFound": "New connection found!",
"echoNone": "No new connections right now. Try again later.",
"echoFailed": "Analysis failed",
"alreadySeen": "seen",
"dismissConnection": "Dismiss this connection",
"loading": "…",
"emotions": {
"focused": "Focused",
"curious": "Curious",
"enthusiastic": "Enthusiastic",
"frustrated": "Frustrated",
"calm": "Calm",
"anxious": "Anxious",
"creative": "Creative",
"reflective": "Reflective"
}
},
"editor": {
"voiceStart": "Dictate text (microphone)",
"voiceStop": "Stop dictation"
"voiceStop": "Stop dictation",
"backlinks": "Backlinks",
"clickToEdit": "Click to edit",
"bold": "Bold",
"italic": "Italic",
"highlight": "Highlight",
"link": "Link",
"bulletList": "Bullet List",
"taskList": "Task List",
"heading": "Heading",
"codeBlock": "Code Block",
"plus": "Plus"
},
"wizard": {
"title": "Create a notebook with AI",
@@ -3933,28 +4316,148 @@
"published": "Site published!",
"openSite": "Open site",
"updateSite": "Update site",
"unpublish": "Unpublish site"
"unpublish": "Unpublish site",
"selectAtLeastOne": "Select at least one note",
"unpublished": "Site unpublished",
"online": "Site online",
"unpublishing": "Unpublishing…"
},
"searchModal": {
"search_ariaLabel": "Search",
"search_placeholder": "Search across all your notes…",
"search_caseSensitive": "Case sensitive",
"search_regexMode": "Regex mode",
"search_trashIncluded": "Trash included",
"search_openInEditor": "Open in editor",
"search_title": "Memento Search",
"search_favorites": "Favorites:",
"search_searching": "Searching…",
"search_noResults": "No results",
"search_typeToSearch": "Type to search",
"search_aiAnalysis": "Analyzing…",
"search_aiResponse": "AI Response",
"search_resultsSummary": "Results summary…",
"search_documentPreview": "Document preview",
"search_noMatch": "No note matches.",
"search_typeForResults": "Type to get instant results.",
"search_hintNavigate": "navigate",
"search_hintOpen": "open",
"search_hintClose": "close"
"ariaLabel": "Search",
"placeholder": "Search all notes…",
"caseSensitive": "Case sensitive",
"regexMode": "Regex mode",
"trashIncluded": "Trash included",
"openInEditor": "Open in editor",
"title": "Memento Search",
"favorites": "Favorites:",
"searching": "Searching…",
"noResults": "No results",
"typeToSearch": "Type to search",
"aiAnalysis": "Analyzing…",
"aiResponse": "AI Response",
"resultsSummary": "Results summary…",
"documentPreview": "Document preview",
"noMatch": "No note matches your search.",
"typeForResults": "Type for instant results.",
"hintNavigate": "navigate",
"hintOpen": "open",
"hintClose": "close"
},
"mobile": {
"aiNote": "AI Note",
"blockActions": "Block Actions",
"convertFormat": "Convert Format",
"delete": "Delete",
"duplicate": "Duplicate",
"paragraph": "Paragraph",
"quote": "Quote",
"selectAll": "Select All"
},
"clusters": {
"empty": "No clusters to display",
"emptyHint": "Create more notes to generate clusters",
"bridgeNote": "Bridge note",
"regularNote": "Regular note",
"notes": "notes"
},
"bridgeNotes": {
"bridges": "Bridges",
"suggestions": "Suggestions",
"powerfulTitle": "Powerful Bridge Notes",
"score": "Score",
"empty": "No significant bridge notes found yet. Deepen your research to find new connections.",
"missingLinks": "Missing Links (AI Generated)",
"bridging": "Bridging",
"dismiss": "Dismiss suggestion",
"noSuggestions": "No connection suggestions yet",
"allConnected": "All your clusters may already be connected!",
"generate": "Generate Suggestions"
},
"chart": {
"code": "Chart Code",
"invalid": "Invalid Chart",
"invalidDescription": "This chart block contains invalid or empty data.",
"editSource": "Edit chart source",
"suggestions": "Chart Suggestions",
"analyzing": "Analyzing your content for chart data…",
"debugInfo": "Debug info",
"escCancel": "Esc Cancel",
"insertFailed": "Failed to insert chart: ",
"noDataDetected": "No Data Detected",
"noDataHint": "Try adding numerical data to your note. Charts work best with:",
"dataHint1": "• Sales figures, metrics, or measurements",
"dataHint2": "• Lists with values (e.g., \"Jan: 5000, Feb: 7500\")",
"dataHint3": "• Percentages or proportions",
"dataHint4": "• Time-series data",
"debugShowAnalyzed": "Debug: Show what was analyzed",
"navigateHint": "← → Navigate",
"selectHint": "↵ Select",
"dataPoints": "data points",
"analyzingSelection": "selection",
"analyzingNote": "note",
"words": "words",
"found": "Found"
},
"byok": {
"loadError": "Loading error",
"updated": "{{name}} updated ✓",
"testHint": "To test, enter your API key…",
"aliasPlaceholder": "e.g. My pro key",
"choose": "Choose…",
"keyPlaceholder": "sk-… (optional)",
"keyValid": "Valid API key ✓",
"verifyError": "Verification error",
"keySaved": "Key {{name}} saved ✓",
"keyDeleted": "Key deleted",
"noActiveKey": "No active key — using Memento quotas",
"savedKeys": "Saved keys",
"chooseProvider": "Choose a provider…",
"apiKey": "API Key",
"fetchingModels": "Fetching models…",
"chooseModel": "Choose a model…",
"editLabel": "Edit — {{name}}",
"aliasLabel": "Alias",
"apiUrl": "API URL",
"model": "Model",
"newKey": "New API key",
"newKeyHint": "(leave empty to keep current)",
"operational": "✓ Operational",
"test": "Test",
"saveChanges": "Save changes",
"contactError": "Could not contact server",
"baseUrlRequired": "Please provide the API URL",
"keyInvalid": "Invalid API key",
"byokActive": "BYOK active",
"activeStatus": "● Active",
"inactiveStatus": "○ Inactive",
"confirmDelete": "Delete the {{name}} key?",
"addOrReplace": "Add / replace a key",
"connectProvider": "Connect your AI provider",
"optional": "(optional)",
"verify": "Verify",
"modelOperational": "Model operational ✓",
"reply": "Reply:",
"testFailed": "Test failed",
"save": "Save",
"saveWithName": "Save — {{name}}"
},
"blockPicker": {
"searchPlaceholder": "Search for a note excerpt…"
},
"errors": {
"network": "Network error"
},
"pdf": {
"exportError": "PDF export error"
},
"report": {
"explainProblem": "Explain the problem…"
},
"publish": {
"defaultTitle": "Published note",
"tagline": "Your memory, augmented by AI",
"aiSheet": "AI-generated sheet",
"publishedOn": "Published on"
}
}