const messages = { root: { commandActions: "Actions", askPlan: "Ask Plan", openPlans: "Open plans", openRecaps: "Open recaps", commandAppearance: "Appearance", toggleTheme: "Toggle theme", }, header: { plan: "Plan", settings: "Settings", team: "Team", extensions: "Extensions", }, navigation: { settings: "Settings", ask: "Ask", plan: "Plan", }, settings: { title: "Settings", description: "Language and workspace preferences for this app.", languageTitle: "Language", languageDescription: "Choose the interface language. This preference is saved for your account.", languageLabel: "Interface language", workspaceTitle: "Workspace", workspaceDescription: "Manage team members, organization access, and shared workspace preferences.", openTeamSettings: "Open team settings", openResourceSettings: "Open resource settings", agentTitle: "Manage agent", agentDescription: "Manage the agent's model, API keys, automations, voice, and other controls.", openAgentSettings: "Manage agent", editorTitle: "VS Code extension", editorDescription: "Open and review plans in a side panel inside VS Code instead of a separate browser tab.", openEditorExtension: "Get the VS Code extension", }, agent: { emptyState: "Ask the Plan agent to search merged PR recaps, inspect this document, add diagrams, or answer code questions as visual plans.", suggestionShipped: "What shipped in the last week?", suggestionUi: "What does this UI look like?", suggestionApi: "What is the shape of this API?", }, contextXray: { panelTitle: "Context X-Ray", snapshotsTitle: "Snapshots", }, sidebar: { openNavigation: "Open navigation", navigation: "Navigation", navigationDescription: "App navigation links", chats: "Chats", newPlanChat: "New Plan chat", newChat: "New chat", renameChat: "Rename chat", unpinChat: "Unpin chat", pinChat: "Pin chat", archiveChat: "Archive chat", planSection: "Plan", newPlan: "New plan", signInCreatePlan: "Sign in to create a plan", signInToCreate: "Sign in to create", signInKeepPlans: "Sign in to create and keep plans.", noPlans: "No plans yet.", recapBadge: "Recap", viewAllPlans: "View all plans...", brandingSentLocal: "Sent branding request to the local code agent", brandingSent: "Sent branding request to the code agent", customizePlanBranding: "Customize Plan branding", customizeBranding: "Customize branding", customizeBrandingDescription: "Describe the brand changes to make across Plan.", customizeBrandingPlaceholder: "Use our logo, change the app name, update colors...", expandSidebar: "Expand sidebar", collapseSidebar: "Collapse sidebar", signIn: "Sign in", }, chat: { suggestionShipped: "What shipped in the last week?", suggestionUi: "What does the new checkout UI look like?", suggestionAuth: "When did the auth API change?", suggestionApi: "What is the shape of the billing API?", emptyState: "Ask Plan", placeholder: "Ask what shipped, what changed, or what the current code shows...", heading: "Ask Plan", description: "Search merged PR recaps, inspect visual blocks, and publish code answers as diagrams, wireframes, API specs, and data models.", }, editor: { slash: { text: { title: "Text", description: "Plain text paragraph", }, heading1: { title: "Heading 1", description: "Large heading", }, heading2: { title: "Heading 2", description: "Section heading", }, heading3: { title: "Heading 3", description: "Subheading", }, bulletedList: { title: "Bulleted list", description: "Unordered list", }, numberedList: { title: "Numbered list", description: "Ordered list", }, todoList: { title: "To-do list", description: "Checklist items", }, quote: { title: "Quote", description: "Block quote", }, codeBlock: { title: "Code block", description: "Code snippet", }, divider: { title: "Divider", description: "Horizontal rule", }, table: { title: "Table", description: "Three by three table", }, image: { title: "Image", description: "Insert an image", }, structuredTable: { title: "Structured table", }, }, }, raw: { sidebar: { archiveChatFailed: "Could not archive chat.", renameChatFailed: "Could not rename chat.", }, canvas: { artboardCanvas: "Plan artboard canvas", zoomIn: "Zoom in", zoomOut: "Zoom out", markupSaveFailed: "Couldn't save markup. Try again.", }, document: { replaceImageFailed: "Could not replace the image.", replacingImage: "Replacing image…", imageReplaced: "Image replaced.", htmlFragment: "HTML fragment", optionalCss: "Optional CSS", invalidBlockDescription: "This generated block did not match the Plan schema, so it was left out while the rest of the recap stayed visible.", validationDetails: "Validation details", }, localCodebase: { chooseCodebase: "Choose codebase", clearCodebase: "Clear codebase", syncCodebase: "Sync codebase", codebaseSynced: "Codebase synced", codebaseSyncFailed: "Codebase sync failed", chooseFolderFailed: "Could not choose folder", syncLocalFailed: "Could not sync local codebase.", folderUnavailable: "Folder access is unavailable in this browser.", filesSynced: "{{count}} files synced", lastSynced: "Last synced {{date}}", codebaseUnlinked: "Codebase unlinked", }, content: { addSummary: "Add a short plan summary", changeStatistics: "Change statistics", untitledPlan: "Untitled plan", saveFailed: "Couldn't save", }, imageViewer: { actualSize: "Actual size", closePreview: "Close image preview", copyImage: "Copy image", downloadImage: "Download image", download: "Download", editDetails: "Edit details", fitToScreen: "Fit to screen", imageOptions: "Image options", more: "More", openOriginal: "Open original", replaceImage: "Replace image", viewFullSize: "View full size", uploadingImage: "Uploading image…", image: "Image", }, imageActions: { copiedUrl: "Copied image URL.", copyFailed: "Could not copy image.", imageCopied: "Image copied.", downloadStarted: "Image download started.", openedNewTab: "Opened image in a new tab.", }, markdown: { copySectionLink: "Copy link to this section", }, toc: { planSections: "Plan sections", }, visual: { clearDesignSelection: "Clear design selection", designElement: "Design element", visualReviewMode: "Visual review mode", prototype: "Prototype", design: "Design", wireframes: "Wireframes", }, blocks: { describeChange: "Describe a change…", describeChangeTo: "Describe a change to {{label}}", }, pages: { planActions: "Plan actions", }, }, plansPage: { common: { cancel: "Cancel", save: "Save", delete: "Delete", deleting: "Deleting...", }, nouns: { plan: "plan", recap: "recap", }, status: { updateFailed: "Failed to update plan status.", setPlanStatus: "Set plan status", setStatus: "Set status", labels: { draft: "Draft", review: "In review", approved: "Approved", in_progress: "In progress", complete: "Complete", archived: "Archived", }, }, localMode: { privacyDetails: "Local mode privacy details", badge: "Local mode", title: "100% private local mode", description: "Your data is never saved to our backend or seen by us. This page only renders and edits your local MDX files.", openDocs: "Open docs.", }, reader: { openingFile: "Opening file in your editor", linksDisabled: "Links are disabled in review so the document stays put.", visualPromptCopied: "Visual intake prompt copied", sentAnswers: "Sent answers to the agent", recapLinkCopied: "Recap link copied", planLinkCopied: "Plan link copied", localPathCopied: "Local path copied", enterRepoFolder: "Enter a repo-relative folder path.", localPlanAlreadySaved: "Local plan is already saved in the repo", savedLocalFiles: "Saved {{count}} local files to {{path}}", localSourceUnavailable: "Local plan source was not available yet.", localSourceFilesUnavailable: "Local plan source files were not available yet.", exportUnavailable: "Plan export was not available.", desktopSyncUnavailable: "Desktop local file sync is not available.", sourceFilesUnavailable: "Plan source files were not available yet.", syncedLocalFiles: "Synced {{count}} local files", noSourceFiles: "No Plan source files were found.", importedLocalSource: "Imported local source files", enableLocalSyncFailed: "Could not enable local file sync.", syncLocalFailed: "Could not sync plan to local files.", planHtmlCopied: "Plan HTML copied", planMarkdownCopied: "Plan Markdown copied", planSourceDownloaded: "Plan source downloaded", archiveFailed: "Failed to archive plan.", unarchiveFailed: "Failed to unarchive plan.", recapMovedToDeleted: "Recap moved to Deleted.", planMovedToDeleted: "Plan moved to Deleted.", recapRestored: "Recap restored.", planRestored: "Plan restored.", recapPermanentlyDeleted: "Recap permanently deleted.", planPermanentlyDeleted: "Plan permanently deleted.", saveAnswersFailed: "Could not save answers - they were sent to the agent chat only.", sentCommentsWithScreenshots: "Sent comments and focused screenshots to the agent", sentComments: "Sent comments to the agent", feedbackCopied: "Feedback instructions copied", backToPlans: "Back to plans", openFullPlan: "Open full plan", openPrototypeWindow: "Open prototype window", sending: "Sending", sendToAgent: "Send to agent", sendFeedback: "Send feedback", copyForAgent: "Copy for your agent", copyForAgentDescription: "Copies a prompt you can paste into chat.", sendToInlineAgent: "Send to inline agent", sendToInlineAgentDescription: "Posts open comments into the app side agent.", localFiles: "Local files", localFilesNoHosted: "No hosted database writes or sharing.", copyLocalPath: "Copy local path", saveToRepo: "Save to repo...", saveSourceToFolder: "Save source to folder...", hideComments: "Hide comments", showComments: "Show comments", showAllComments: "Show all comments", fullPlan: "Full plan", appView: "App view", fullScreen: "Full screen", lightMode: "Light mode", darkMode: "Dark mode", cleanWireframes: "Clean wireframes", sketchyWireframes: "Sketchy wireframes", copyLink: "Copy link", openDocs: "Open docs", downloadSourceZip: "Download source (.zip)", changeLocalFolder: "Change local folder", linkLocalFolder: "Link local folder", syncToLocalFolder: "Sync to local folder", importLocalEdits: "Import local edits", autoSyncChanges: "Auto-sync changes", export: "Export", copyMarkdown: "Copy Markdown", downloadMarkdown: "Download Markdown", copyHtml: "Copy HTML", downloadHtml: "Download HTML", copyFeedback: "Copy feedback", saveLocalPlanToRepo: "Save local plan to repo", chooseRepoFolder: "Choose a repo-relative folder for these MDX files.", repoFolder: "Repo folder", replaceExistingFolder: "Replace existing folder", toggleAgentSidebar: "Toggle agent sidebar", toggleSideChat: "Toggle side chat", clickToComment: "Click the {{noun}} or select text to comment", clickCanvasNote: "Click the canvas to place a note", dragCanvasCallout: "Drag on the canvas to draw a callout", reviewMarkupTools: "Review markup tools", stopCommenting: "Stop commenting", pinComment: "Pin a comment", runtimeOpen: "Open", runtimeCloseCodePreview: "Close code preview", runtimeCommentAuthor: "Comment author", runtimeComment: "Comment", runtimePlanComment: "Plan comment", runtimeCommentCount_one: "{{count}} comment", runtimeCommentCount_other: "{{count}} comments", runtimeCommentBy: "{{countLabel}} by {{names}}: {{message}}", runtimeCommentTitle: "{{countLabel}}: {{message}}", clientHtmlWorkingPlan: "Working plan", }, share: { linkCopied: "Shareable link copied", copyFailed: "Could not copy link", createAccountToPublish: "Create a free account to publish this {{noun}}", linkLabel: "{{noun}} link", description: "Private by default. Invite people, share with your org, or set Public for anyone-with-link review.", peopleAccess: "People with {{noun}} access", generalAccess: "General {{noun}} access", shareAria: "Share {{noun}}", share: "Share {{noun}}", shareThis: "Share this {{noun}}", hostedCopy: "This local {{noun}} has a hosted copy for sharing. Open the hosted {{noun}} to manage access.", publishDescription: "Create a free account to publish this {{noun}} to a shareable link. You can keep editing locally with your coding agent until you do.", finishAccount: "Finish creating your account, then come back and we will generate the link.", checking: "Checking", signedInRetry: "I'm signed in - retry", updating: "Updating", updateLink: "Update link", openHostedPlan: "Open hosted plan", creatingLink: "Creating link", createShareableLink: "Create shareable link", accessNote: "Anyone with edit access can change the {{noun}}. Viewing a public {{noun}} needs no account, but commenting on it requires an agent-native account.", visibility: { private: { label: "Private", description: "Only invited people can open this {{noun}}", }, org: { label: "Organization", description: "Anyone in your organization with the link can view", }, public: { label: "Public", description: "Anyone with the link can view", }, }, }, report: { reportAria: "Report {{noun}}", report: "Report {{noun}}", description: "Tell us why this public {{noun}} should be reviewed.", reason: "Reason", details: "Details", detailsPlaceholder: "Add a short note for moderators", submit: "Submit report", reasons: { spam: "Spam or deceptive", harassment: "Harassment", hate: "Hateful content", sexual: "Sexual content", violence: "Violence or threats", "self-harm": "Self-harm", privacy: "Privacy concern", illegal: "Illegal activity", other: "Something else", }, }, skeleton: { loadingRecap: "Loading recap", loadingPlan: "Loading plan", }, localPlanLoadError: { title: "Local plan not found", message: 'The local plan folder "{{slug}}" could not be read.', }, localPlanConnection: { promptTitle: "Connect to this local plan", promptMessage: "This plan stays on your computer. Plan needs browser permission to read it from the local bridge.", deniedTitle: "Local network access is blocked", deniedMessage: "Open your browser's site settings for Plan, allow local network access, then check again.", connect: "Connect to local plan", checkAgain: "Check again", }, overview: { title: "Plans", documentCount_one: "{{count}} document", documentCount_other: "{{count}} documents", newPlan: "New Plan", signInToCreate: "Sign in to create", tabs: { all: "All", plans: "Plans", recaps: "Recaps", archived: "Archived", deleted: "Deleted", }, createdBy: "Created by", allAuthors: "All authors", me: "Me", searchPlaceholder: "Search plans...", empty: { noMatch: "No plans match.", noArchived: "No archived plans.", noDeleted: "No deleted plans.", noPlans: "No plans here yet.", }, recapBadge: "Recap", deletedBadge: "Deleted", deletedAt: "Deleted {{date}}", planActions: "Plan actions", restore: "Restore", deletePermanently: "Delete permanently", unarchive: "Unarchive", archive: "Archive", delete: "Delete...", documentCount: "Document Count", }, empty: { title: "Start with a visual plan", description: "Create a polished plan with editable document blocks, diagrams, wireframes, and comments before implementation starts.", newPlan: "New Plan", installPrefix: "Or install the skill and use", installSuffix: "from your coding agent:", }, loggedOut: { title: "Start with /visual-plan", description: "Install the Plan skills in your coding agent, then use the slash command to create your first review plan.", installCopied: "Install command copied", installCopyFailed: "Could not copy install command", copyInstallCommand: "Copy install command", copied: "Copied", copy: "Copy", viewDocs: "View the docs", }, skillDemos: { "visual-plan": { label: "Visual Plan", description: "Review the implementation shape before code changes land.", videoAriaLabel: "Visual Plan skill demo video", }, "visual-recap": { label: "Visual Recap", description: "Turn a PR or diff into a shareable review recap.", videoAriaLabel: "Visual Recap skill demo video", }, }, history: { surface: { prototype: "Prototype", canvas: "Canvas", blocks_one: "{{count}} block", blocks_other: "{{count}} blocks", sections_one: "{{count}} section", sections_other: "{{count}} sections", blocks: "Blocks", sections: "Sections", }, restoreSuccess: "Plan version restored.", restoreFailed: "Failed to restore plan version.", back: "Back to history", title: "Plan history", description: "Browse saved plan versions and restore a previous snapshot.", untitled: "Untitled plan", snapshotUnavailable: "Snapshot unavailable", previewTitle: "Plan version preview", noPreview: "This snapshot has no previewable content.", restoreThisVersion: "Restore this version", savedFirst: "Your current version is saved to history first.", versionActions: "Version actions", noVersions: "No saved versions yet", noVersionsDescription: "Versions are saved automatically before future plan edits.", restoreConfirmTitle: "Restore this version?", restoreConfirmDescription: "This replaces the current plan with the snapshot from {{date}}. Your current version is saved to history first, so you can undo this.", restoring: "Restoring...", restore: "Restore", }, create: { sourceOptions: { codex: "Codex", "claude-code": "Claude Code", cursor: "Cursor", pi: "Pi", manual: "Manual", imported: "Imported", }, kindOptions: { auto: { label: "Auto", description: "Auto - choose the right planning path", }, ui: { label: "UI flow", description: "UI flow - wireframes and states", }, design: { label: "High-fidelity design", description: "High-fidelity design - polished branded screens", }, questions: { label: "Visual questions", description: "Visual questions - explicit intake", }, visual: { label: "General visual", description: "General visual - diagrams and notes", }, }, presets: { checkout: "Checkout flow", settings: "Settings redesign", imported: "Imported plan", }, presetPrompts: { checkout: "Plan a checkout review flow with desktop and mobile wireframes, key empty/loading/error states, comment prompts, and implementation notes.", settings: "Create a UI flow plan for a settings redesign, including navigation states, risky interactions, review annotations, and code handoff notes.", imported: "# Implementation plan\n\nPaste the existing Codex or Claude Code plan here and turn it into a visual review document.", }, assessment: { design: "Auto detected a high-fidelity request; the agent will create polished branded screens.", ui: "Auto detected UI states or flows; the agent will make a wireframe-first plan.", visual: "Auto will ask the agent for a rich technical plan with diagrams and implementation detail.", }, autoWithLabel: "Auto: {{label}}", agentMissing: "Connect the agent to run - add an API key or use Builder.", describeFirst: "Describe the plan first.", sent: "Sent to the Plan agent", title: "Ask agent to create plan", description: "Describe the plan you want, or paste an existing Codex/Claude plan. The Plan agent will generate the wireframes and review structure.", placeholder: "Ask the agent for a UI flow, implementation map, review notes...", advanced: "Advanced", source: "Source", sourceHelp: "Provenance only. It helps explain where the plan started.", planningStyle: "Agent planning style", planningHelp: "Pasted plans are detected and sent to the agent with import context. Auto keeps the normal plan flow; choose Visual questions when you want intake first.", importDetected: "Looks like an existing plan. The agent will preserve it and add visual review structure.", }, loadError: { genericMessage: "This plan could not be loaded from the current session.", orgBody: "This plan belongs to {{orgName}}. You need to be a member of {{orgName}} to view it.", orgTitle: "Join {{orgName}} to view this plan", createAccountFailed: "Could not create account.", emailSignInFailed: "Could not sign in with email.", verifyEmail: "Check your email to verify the account, then reopen this link.", notFoundTitle: "Plan not found", requestAccessTitle: "Request access to this plan", signInTitle: "Sign in to view this plan", didNotLoadTitle: "Plan did not load", notFoundBody: "This plan does not exist, or it belongs to another organization and you need access.", noAccessBody: "This plan exists, but this account does not have access to view it.", maybeOtherOrgBody: "This plan may belong to another organization, or this account may not have access.", privateBody: "This plan is private. Sign in with an account that has access.", signedInAs: "Signed in as", accessRequestSent: "Access request sent. You will be able to open this link once an owner grants access.", retryHelp: "Retry the load, or sign in with another account if this is a private plan link.", continueWithGoogle: "Continue with Google", switchAccount: "Switch account", signInWithEmail: "Sign in with email", email: "Email", password: "Password", createAccount: "Create account", signIn: "Sign in", haveAccount: "I have an account", retry: "Retry", sendFeedback: "Send feedback", feedbackPlaceholder: "Describe what happened before this plan error appeared.", openGitHubIssue: "Open GitHub issue", joinedOrg: "Joined {{orgName}}. Opening plan...", acceptingInvite: "Accepting invite", joiningOrg: "Joining organization", acceptInvite: "Accept invite", joinOrg: "Join {{orgName}}", requestSent: "Request sent", requestAccess: "Request access", inviteMessage: "You already have an invite to {{orgName}}. Accept it to open this plan.", domainMessage: "Your @{{domain}} email can join {{orgName}}. Join it to open this plan.", joinMessage: "You can join {{orgName}} to open this plan.", }, comments: { expectedResolver: "Expected resolver", agent: "Agent", human: "Human", toAgent: "To agent", cancelComment: "Cancel comment", addPlaceholder: "Add a comment...", saving: "Saving", saveFailed: "Couldn't save. Try again.", signInTitle: "Sign in to comment", signInDescription: "Create a free account to leave comments on this plan.", replyPlaceholder: "Reply", sendReply: "Send reply", sendFailed: "Couldn't send. Try again.", comment: "Comment", comments: "Comments", humanReview: "Human review", agentAction: "Agent action", options: "Comment options", reopenThread: "Reopen thread", markResolved: "Mark as resolved", editFirstComment: "Edit first comment", closeComment: "Close comment", editPlaceholder: "Edit comment...", closeComments: "Close comments", open: "Open", resolved: "Resolved", noResolved: "No resolved comments.", noOpen: "No open comments. Click Comment, then click to place one.", commentUpdated: "Comment updated", replyAdded: "Reply added", commentDeleted: "Comment deleted", commentResolved: "Comment resolved", commentReopened: "Comment reopened", mentionMember: "Mention organization member", searchingPeople: "Searching people...", noMatchingMembers: "No matching organization members.", deleteThreadTitle: "Delete thread?", deleteCommentTitle: "Delete comment?", deleteThreadDescription_one: "This will remove the comment and {{count}} reply from the plan.", deleteThreadDescription_other: "This will remove the comment and {{count}} replies from the plan.", deleteCommentDescription: "This will remove the comment from the plan.", deleteThread: "Delete thread", deleteComment: "Delete comment", deleteThreadDescription: "Delete Thread Description", }, deletePlan: { hardTitle: "Permanently delete this {{noun}}?", softTitle: "Delete this {{noun}}?", description: "{{title}} will no longer be available from normal plan views.", fallbackTitle: "This hosted plan", moveToDeleted: "Move to Deleted", softOptionDescription: "Hide it now, stop public access, and keep restore available.", deletePermanently: "Delete permanently", hardOptionDescription: "Remove hosted rows and references. This cannot be undone.", softDescription: "Soft delete moves the {{noun}} to the Deleted tab. Direct links, public sharing, comments, and agent reads stop working until you restore it.", permanentWarning: "Permanent deletion cannot be undone.", permanentDescription: "This removes the hosted {{noun}}, comments, shares, activity, versions, reports, and Plan SQL asset records. Local files and external upload-provider lifecycle rules are separate.", typePrefix: "Type", typeSuffix: "to confirm", }, wireframe: { emptyDiagram: "Diagram content is empty.", usageFree: "1% used · 198k free", contextXray: "Context X-Ray", contextXrayPopover: "Context X-Ray popover", pinnedZero: "Pinned 0", evictedZero: "Evicted 0", userMessage: "User message", toolResult: "Tool result", pinEvict: "Pin / evict", tokenMap: "Token map", selectedTokens: "Selected 2.0k", chatMessages: "Chat messages", thinkingStatus: "Thinking status", appShell: "App shell", chatThread: "Chat thread", agentSidebar: "Agent sidebar", xray: "X-Ray", }, }, guest: { banner: "You're browsing as a guest. Sign in to create plans, leave comments, and keep your work.", signIn: "Sign in", }, }; export default messages;