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

- 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:
Antigravity
2026-05-14 17:43:21 +00:00
parent 195e845f0a
commit 1fcea6ed7d
228 changed files with 57656 additions and 1059 deletions

View File

@@ -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"
}
}
}
}