feat: brainstorm sessions, PDF document Q&A, embedding fixes, and UI improvements
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 7s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 7s
- Add brainstorm feature with collaborative canvas, AI idea generation, live cursors, playback, and export - Add PDF upload/extraction/ingestion pipeline with pgvector document search (RAG) - Add document Q&A overlay with streaming chat and PDF preview - Add note attachments UI with status polling, grid layout, and auto-scroll - Add task extraction AI tool and agent executor improvements - Fix NoteEmbedding missing updatedAt column, re-index 66 notes with 1536-dim embeddings - Fix brainstorm 'Create Note' button: add success toast and redirect to created note - Fix memory echo notification infinite polling - Fix chat route to always include document_search tool - Add brainstorm i18n keys across all 14 locales - Add socket server for real-time brainstorm collaboration - Add hierarchical notebook selector and organize notebook dialog improvements - Add sidebar brainstorm section with session management - Update prisma schema with brainstorm tables, attachments, and document chunks
This commit is contained in:
@@ -51,7 +51,11 @@
|
||||
"accountMenu": "Account menu",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Sort order"
|
||||
"sortOrder": "Sort order",
|
||||
"freezePinnedNotebook": "Pin notebook sidebar order",
|
||||
"unfreezePinnedNotebook": "Unpin notebook sidebar order",
|
||||
"newSubNotebook": "New sub-notebook",
|
||||
"renameNotebook": "Rename"
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notes",
|
||||
@@ -61,6 +65,12 @@
|
||||
"placeholder": "Take a note...",
|
||||
"markdownPlaceholder": "Take a note... (Markdown supported)",
|
||||
"titlePlaceholder": "Title",
|
||||
"noteTypes": {
|
||||
"richtext": "Rich Text",
|
||||
"markdown": "Markdown",
|
||||
"text": "Plain text",
|
||||
"checklist": "Checklist"
|
||||
},
|
||||
"listItem": "List item",
|
||||
"addListItem": "+ List item",
|
||||
"newChecklist": "New checklist",
|
||||
@@ -217,6 +227,9 @@
|
||||
"sort": "Sort",
|
||||
"confirmDeleteTitle": "Delete note",
|
||||
"leftShare": "Share removed",
|
||||
"ideaOrigin": "Origin of the idea",
|
||||
"noNoteLink": "Purely generative idea",
|
||||
"dismiss": "Not pertinent",
|
||||
"dismissed": "Note dismissed from recent",
|
||||
"generalNotes": "General Notes",
|
||||
"noteType": "Note type",
|
||||
@@ -230,7 +243,23 @@
|
||||
"switchTypeTitle": "Switch note type?",
|
||||
"switchTypeWarning": "Some formatting may be lost when switching to {type}.",
|
||||
"switchTypeContentPreserved": "Your content will be preserved as plain text.",
|
||||
"switchType": "Switch to {type}"
|
||||
"switchType": "Switch to {type}",
|
||||
"saveNow": "Save now",
|
||||
"backToCollection": "Back to collection",
|
||||
"markdownEditingTitle": "Return to editing",
|
||||
"markdownPreviewTitle": "Preview",
|
||||
"brainstormThisIdea": "Brainstorm this idea",
|
||||
"brainstormThisIdeaAria": "Brainstorm this idea",
|
||||
"shareNoteTitle": "Share note",
|
||||
"shareNoteAria": "Share note",
|
||||
"saveNoteAria": "Save note",
|
||||
"noChangesToSaveAria": "No changes to save",
|
||||
"optionsMenuAria": "Options menu",
|
||||
"deleteNoteConfirmItem": "Delete note",
|
||||
"noteDeletedToast": "Note deleted.",
|
||||
"deleteNoteFailedToast": "Could not delete.",
|
||||
"documentInfoAria": "Document information",
|
||||
"noModification": "No changes"
|
||||
},
|
||||
"pagination": {
|
||||
"previous": "←",
|
||||
@@ -312,7 +341,24 @@
|
||||
"accessRevoked": "Access has been revoked",
|
||||
"errorLoading": "Error loading collaborators",
|
||||
"failedToAdd": "Failed to add collaborator",
|
||||
"failedToRemove": "Failed to remove collaborator"
|
||||
"failedToRemove": "Failed to remove collaborator",
|
||||
"shareCompactTitle": "Share",
|
||||
"inviteByEmailLabel": "Invite by email",
|
||||
"accessReadCompact": "View",
|
||||
"accessEditCompact": "Edit",
|
||||
"sendInvitation": "Send invitation",
|
||||
"invitationSentBadge": "Invitation sent",
|
||||
"sharedAccessLabel": "Shared access",
|
||||
"noCollaboratorsEmpty": "No collaborators yet.",
|
||||
"removeAccessTitle": "Remove access",
|
||||
"toastInviteSentTo": "Invitation sent to {email}",
|
||||
"toastAccessRemoved": "Access removed for {target}",
|
||||
"toastUserFallback": "the user",
|
||||
"toastSharingError": "Sharing error",
|
||||
"toastEmailNotFound": "No account found with this email.",
|
||||
"toastAlreadySharedUser": "This note is already shared with this user.",
|
||||
"toastRemoveAccessFailed": "Could not remove access.",
|
||||
"userFallback": "User"
|
||||
},
|
||||
"ai": {
|
||||
"analyzing": "AI analyzing...",
|
||||
@@ -424,6 +470,15 @@
|
||||
"chatTab": "Chat",
|
||||
"noteActions": "Note Actions",
|
||||
"askToStart": "Ask the Assistant something to get started.",
|
||||
"chatPanelContext": "Context",
|
||||
"chatPanelNotebookPlus": "+ Notebook",
|
||||
"chatPanelWritingTone": "Writing tone",
|
||||
"scopeAutoBadge": "Auto",
|
||||
"chatNoteQuestionPlaceholder": "Ask a question about this note...",
|
||||
"chatNotebookSelectPlaceholder": "Include a notebook...",
|
||||
"assistantTabActions": "Actions",
|
||||
"resourcePreviewAiTitle": "AI preview",
|
||||
"resourcePreviewInjectFromChat": "Inject from chat",
|
||||
"contextLabel": "Context",
|
||||
"thisNote": "This note",
|
||||
"allMyNotes": "All my notes",
|
||||
@@ -435,6 +490,7 @@
|
||||
"newLineHint": "Shift+Enter = new line",
|
||||
"resultLabel": "Result",
|
||||
"discardAction": "Discard",
|
||||
"organization": "Organization",
|
||||
"transformationsDesc": "Transformations — applied directly to the note",
|
||||
"writeMinWordsAction": "Write at least 5 words to activate AI actions.",
|
||||
"processingAction": "Processing...",
|
||||
@@ -448,7 +504,8 @@
|
||||
"describeImages": "Describe images",
|
||||
"fixGrammar": "Fix Grammar",
|
||||
"translate": "Translate",
|
||||
"explain": "Explain"
|
||||
"explain": "Explain",
|
||||
"toRichText": "Convert to rich text"
|
||||
},
|
||||
"generate": {
|
||||
"slides": "Generate Slides",
|
||||
@@ -459,6 +516,8 @@
|
||||
"themeMinimalSilk": "Minimal Silk",
|
||||
"style": "Style",
|
||||
"styleProfessional": "Professional",
|
||||
"styleCreative": "Creative",
|
||||
"styleBrutalist": "Brutalist",
|
||||
"diagram": "Generate Diagram",
|
||||
"diagramReadyHint": "Convert note into visual flow",
|
||||
"diagramType": "Diagram Type",
|
||||
@@ -540,7 +599,21 @@
|
||||
},
|
||||
"cancel": "Cancel",
|
||||
"copied": "Copied",
|
||||
"copy": "Copy"
|
||||
"copy": "Copy",
|
||||
"transformations": "Transformations",
|
||||
"otherLanguage": "Another language",
|
||||
"translateNow": "Translate now",
|
||||
"generationTools": "Generation tools",
|
||||
"generateSlidesLoading": "⏳ Generating presentation...",
|
||||
"generateDiagramLoading": "⏳ Generating diagram...",
|
||||
"errorShort": "Error",
|
||||
"readyToast": "Ready!",
|
||||
"downloadFailedToast": "Download failed",
|
||||
"pptxDownloadButton": "Download .pptx",
|
||||
"presentationReadyBadge": "Presentation ready",
|
||||
"openInLabTitle": "Open in Lab",
|
||||
"inlineSummaryMarkdown": "**Summary:**",
|
||||
"networkErrorShort": "Network error."
|
||||
},
|
||||
"titleSuggestions": {
|
||||
"available": "Title suggestions",
|
||||
@@ -651,7 +724,14 @@
|
||||
"openSlides": "Open presentation",
|
||||
"canvasReady": "Diagram ready",
|
||||
"pptxReady": "Slides ready",
|
||||
"downloadPptx": "Download .pptx"
|
||||
"downloadPptx": "Download .pptx",
|
||||
"markAllRead": "Mark all read",
|
||||
"agentSuccess": "Agent finished",
|
||||
"agentFailed": "Agent failed",
|
||||
"brainstormInvite": "Brainstorm",
|
||||
"brainstormJoined": "Brainstorm",
|
||||
"systemNotification": "System",
|
||||
"downloadFailed": "Download failed"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Home",
|
||||
@@ -743,7 +823,9 @@
|
||||
"emailNotificationsDesc": "Receive important notifications by email",
|
||||
"desktopNotifications": "Desktop notifications",
|
||||
"desktopNotificationsDesc": "Receive notifications in your browser",
|
||||
"notificationsDesc": "Manage your notification preferences"
|
||||
"notificationsDesc": "Manage your notification preferences",
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
@@ -908,7 +990,11 @@
|
||||
"confidence": "confidence",
|
||||
"savingReminder": "Failed to save reminder",
|
||||
"removingReminder": "Failed to remove reminder",
|
||||
"generatingDescription": "Please wait..."
|
||||
"generatingDescription": "Please wait...",
|
||||
"pinnedFrozenTooltip": "Pinned notebook — order frozen",
|
||||
"organizeNotebookWithAITooltip": "Organize this notebook with AI",
|
||||
"assistantRequiredForSummarize": "Turn on AI Assistant in settings to summarize",
|
||||
"createSubnotebook": "Add sub-notebook"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "Move to {name}?",
|
||||
@@ -1124,7 +1210,14 @@
|
||||
"error": "Error:",
|
||||
"testError": "Test Error: {error}",
|
||||
"tipTitle": "Tip:",
|
||||
"tipDescription": "Use the AI Test Panel to diagnose configuration issues before testing."
|
||||
"tipDescription": "Use the AI Test Panel to diagnose configuration issues before testing.",
|
||||
"chatTestTitle": "Chat assistant test",
|
||||
"chatTestDescription": "Test the AI provider used by the chat assistant",
|
||||
"chatGenerationTest": "💬 Chat assistant test:",
|
||||
"chatStep1": "Sends a test message to the assistant",
|
||||
"chatStep2": "Asks for a concise answer about what the assistant does",
|
||||
"chatStep3": "Shows the model response",
|
||||
"chatStep4": "Checks responsiveness and latency"
|
||||
},
|
||||
"sidebar": {
|
||||
"dashboard": "Dashboard",
|
||||
@@ -1399,6 +1492,69 @@
|
||||
"organizeWithAI": "Organize with AI",
|
||||
"organize": "Organize"
|
||||
},
|
||||
"organizeNotebook": {
|
||||
"title": "Organize notebook",
|
||||
"unknownError": "Unknown error",
|
||||
"toastSuccess": "Notebook organized — {created} sub-notebook(s) created, {moved} note(s) moved",
|
||||
"intro": "AI will analyze the notes in this notebook and propose a plan to reorganize them into thematic sub-notebooks.",
|
||||
"bulletThemes": "Group notes by topic or theme",
|
||||
"bulletSubfolders": "Create missing sub-notebooks",
|
||||
"bulletPreview": "Full preview before any change",
|
||||
"analyzingTitle": "Analyzing…",
|
||||
"analyzingSubtitle": "AI is reading your notes and identifying themes",
|
||||
"previewSummary": "{groups} group(s) · {notes} notes · {newSubs} new sub-notebook(s)",
|
||||
"badgeNew": "New",
|
||||
"untitledNote": "Untitled note",
|
||||
"notesInGroup": "{count} notes",
|
||||
"executingTitle": "Organizing…",
|
||||
"executingSubtitle": "Creating sub-notebooks and moving notes",
|
||||
"doneTitle": "Notebook organized!",
|
||||
"doneStats": "{created} sub-notebook(s) created · {moved} note(s) moved",
|
||||
"analyzeButton": "Analyze with AI",
|
||||
"restart": "Start over",
|
||||
"confirm": "Apply",
|
||||
"closeButton": "Close"
|
||||
},
|
||||
"documentInfo": {
|
||||
"tabInfo": "Info",
|
||||
"tabVersions": "Versions",
|
||||
"wordsLabel": "Words",
|
||||
"charactersLabel": "Characters",
|
||||
"notebookLabel": "Notebook",
|
||||
"typeLabel": "Type",
|
||||
"createdLabel": "Created",
|
||||
"modifiedLabel": "Updated",
|
||||
"labelsSection": "Labels",
|
||||
"idLabel": "ID",
|
||||
"historyDisabled": "History is not enabled for this note.",
|
||||
"enableHistory": "Enable history",
|
||||
"savedVersions": "Saved versions",
|
||||
"savingEllipsis": "Saving…",
|
||||
"versionSaved": "Version saved!",
|
||||
"saveThisVersion": "Save this version",
|
||||
"loading": "Loading…",
|
||||
"noVersion": "No versions yet",
|
||||
"restoreTooltip": "Restore",
|
||||
"deleteTooltip": "Delete",
|
||||
"comparisonMode": "Comparison mode",
|
||||
"comparisonSubtitle": "Compare versions side by side",
|
||||
"deleteVersionConfirm": "Delete this version?",
|
||||
"latestBadge": "Latest"
|
||||
},
|
||||
"languages": {
|
||||
"targets": {
|
||||
"french": "French",
|
||||
"english": "English",
|
||||
"spanish": "Spanish",
|
||||
"german": "German",
|
||||
"persian": "Persian",
|
||||
"portuguese": "Portuguese",
|
||||
"italian": "Italian",
|
||||
"chinese": "Chinese",
|
||||
"japanese": "Japanese"
|
||||
},
|
||||
"customPlaceholder": "e.g. Arabic, Russian…"
|
||||
},
|
||||
"common": {
|
||||
"unknown": "Unknown",
|
||||
"notAvailable": "N/A",
|
||||
@@ -1876,5 +2032,70 @@
|
||||
"subscript": "Subscript",
|
||||
"addBlock": "Add block",
|
||||
"placeholder": "Type '/' for commands..."
|
||||
},
|
||||
"brainstorm": {
|
||||
"title": "Waves of Thought",
|
||||
"subtitle": "Unfold dimensions of potentiality",
|
||||
"placeholder": "Enter a concept to unfold...",
|
||||
"generating": "AI is harvesting seeds of thought...",
|
||||
"newBrainstorm": "New Brainstorm",
|
||||
"noSessions": "No brainstorms yet",
|
||||
"startOne": "Start one",
|
||||
"sessions": "Brainstorms",
|
||||
"seedLabel": "Seed Idea",
|
||||
"ideaPromptDetailed": "Enter your idea, question, or topic to brainstorm...",
|
||||
"brainstormThisIdea": "Brainstorm this idea",
|
||||
"startBrainstorm": "Start Brainstorm",
|
||||
"spatialMode": "Spatial Exploration Mode",
|
||||
"wave1": "Wave 1",
|
||||
"wave2": "Wave 2",
|
||||
"wave3": "Wave 3",
|
||||
"export": "Export",
|
||||
"exporting": "Exporting...",
|
||||
"wave": "Wave",
|
||||
"novelty": "Novelty",
|
||||
"originConnection": "Origin connection",
|
||||
"linkedNotes": "Linked notes",
|
||||
"deepen": "Deepen",
|
||||
"deepening": "Generating...",
|
||||
"extract": "Create Note",
|
||||
"converting": "Converting...",
|
||||
"dismiss": "Not pertinent",
|
||||
"noteCreated": "Note Created",
|
||||
"ideas": "ideas",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"ideaOrigin": "Origin of the idea",
|
||||
"noNoteLink": "Purely generative idea",
|
||||
"derived_from": "Derived from",
|
||||
"opposes": "In opposition with",
|
||||
"extends": "Extends",
|
||||
"synthesizes": "Synthesizes",
|
||||
"transposes": "Transposes",
|
||||
"none_found": "No note link",
|
||||
"viewNote": "View note",
|
||||
"addIdea": "Add idea",
|
||||
"manualIdeaPrompt": "Title of your idea:",
|
||||
"invite": "Invite",
|
||||
"linkCopied": "Invite link copied!",
|
||||
"activityTitle": "Activity",
|
||||
"noActivity": "No activity yet",
|
||||
"justNow": "just now",
|
||||
"humanIdea": "Human",
|
||||
"aiIdea": "AI",
|
||||
"respondsTo": "Responds to",
|
||||
"adding": "Adding...",
|
||||
"manualIdeaDesc": "Share your idea with the brainstorm canvas",
|
||||
"manualIdeaTitle": "Title",
|
||||
"manualIdeaTitlePlaceholder": "Your idea in a few words...",
|
||||
"manualIdeaDescLabel": "Description (optional)",
|
||||
"manualIdeaDescPlaceholder": "Elaborate on your idea...",
|
||||
"activity": {
|
||||
"manual_idea": "added an idea",
|
||||
"wave_generated": "generated a wave",
|
||||
"joined": "joined the session",
|
||||
"idea_dismissed": "dismissed an idea",
|
||||
"invite_created": "created an invite"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user