@openchambery/web 1.17.1 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/bin/lib/DOCUMENTATION.md +1 -0
  2. package/dist/assets/{AgentAvatar-C6Hxu5_o.js → AgentAvatar-B2kZjgaf.js} +1 -1
  3. package/dist/assets/{AssistantView-CbnxMZU0.js → AssistantView-Dc9MhgcD.js} +1 -1
  4. package/dist/assets/{ChatContainer-DEDGosbz.js → ChatContainer-CA3RO1yP.js} +40 -40
  5. package/dist/assets/{DiagramView-Byxhaduz.js → DiagramView-CpT4q2Jg.js} +1 -1
  6. package/dist/assets/{FadeInOnReveal-CvNA_aGD.js → FadeInOnReveal-aeWlaqVB.js} +1 -1
  7. package/dist/assets/{Icon-BPJ_quEe.js → Icon-AXqa-fYB.js} +1 -1
  8. package/dist/assets/{MarkdownRendererImpl-Cv8V-Q5l.js → MarkdownRendererImpl-DLnXrjCS.js} +2 -2
  9. package/dist/assets/{MobileDetailNavigation-lVtCe-5P.js → MobileDetailNavigation-BYX8jFRg.js} +1 -1
  10. package/dist/assets/MobileShareBridge-BJzGsvUa.js +4 -0
  11. package/dist/assets/MobileSurface-Cfe17dw4.js +2 -0
  12. package/dist/assets/{MultiRunWindow-1kkKTh4h.js → MultiRunWindow-DEYIMkSg.js} +1 -1
  13. package/dist/assets/{OnboardingScreen-CdvaEBtt.js → OnboardingScreen-CCfdEtW6.js} +1 -1
  14. package/dist/assets/{OverlayScrollbar-Dqk1zGJB.js → OverlayScrollbar-CpQvV-qY.js} +1 -1
  15. package/dist/assets/SettingsView-PjA5aLCR.js +25 -0
  16. package/dist/assets/{SettingsWindow-DMQMRgc3.js → SettingsWindow-DOe4sCjl.js} +1 -1
  17. package/dist/assets/{TerminalView-jYq0JQPc.js → TerminalView-Bf-2wMV0.js} +1 -1
  18. package/dist/assets/{ToolOutputDialog-DJefd2N6.js → ToolOutputDialog-DuT5ne12.js} +1 -1
  19. package/dist/assets/{appThemeRegistry-BXeIggYO.js → appThemeRegistry--wNZ5yxf.js} +2 -2
  20. package/dist/assets/{button-BmNJBT13.js → button-CDvMVaiO.js} +1 -1
  21. package/dist/assets/{clipboard-CXWbHCAk.js → clipboard-Jdqe05db.js} +1 -1
  22. package/dist/assets/{collapsible-68IqWBM1.js → collapsible-C2aamDvD.js} +1 -1
  23. package/dist/assets/{context-menu-BbRpMBQh.js → context-menu-CS_u7xxB.js} +1 -1
  24. package/dist/assets/desktopHosts-CBoBpJ1Z.js +1 -0
  25. package/dist/assets/desktopRelayRestore-l2R9muux.js +1 -0
  26. package/dist/assets/{diagram-YN0GZ1Q0.js → diagram-CEon0BQs.js} +1 -1
  27. package/dist/assets/{dialog-BV1ENlLf.js → dialog-BzZ3cKxG.js} +1 -1
  28. package/dist/assets/es-C25PRSjo.js +15 -0
  29. package/dist/assets/{fileQueries-i4oziMnC.js → fileQueries-CE_DaZWQ.js} +1 -1
  30. package/dist/assets/fr-Cv8ZWQdW.js +13 -0
  31. package/dist/assets/{gitApi-Bs_2iBAm.js → gitApi-DSLGdswL.js} +3 -3
  32. package/dist/assets/gitApiHttp-D8j1qRH4.js +2 -0
  33. package/dist/assets/{input-BLVhPvhN.js → input-k9DGGyZ6.js} +1 -1
  34. package/dist/assets/insertionBoundaries-BkoTIR-0.js +1 -0
  35. package/dist/assets/{ja-Dcb0VtDE.js → ja-Ue9m9eSe.js} +3 -3
  36. package/dist/assets/{ko-CX71xNDX.js → ko-DWBUCCV6.js} +3 -3
  37. package/dist/assets/main-CTnxV3y3.js +172 -0
  38. package/dist/assets/{main-CT0DuuLm.js → main-D1Xze0xA.js} +2 -2
  39. package/dist/assets/{markdown-worker-Cq3Twp1A.js → markdown-worker-DkeWiER6.js} +1 -1
  40. package/dist/assets/{markdownTheme-CCnvI6L0.js → markdownTheme-DNT93i5L.js} +1 -1
  41. package/dist/assets/miniChat-Dxajshg_.js +2 -0
  42. package/dist/assets/mobile-CisSv-ca.js +2 -0
  43. package/dist/assets/multirun-BOb2dW9T.js +4 -0
  44. package/dist/assets/persistence-DPNMIbF5.js +3 -0
  45. package/dist/assets/{pl-mR_3Sqr8.js → pl-DaBaPCyE.js} +3 -3
  46. package/dist/assets/projectMeta-WTDhB__y.js +3 -0
  47. package/dist/assets/pt-BR-C2cJZ43o.js +15 -0
  48. package/dist/assets/radio-DZwuHb7-.js +1 -0
  49. package/dist/assets/renderElectronMiniChatApp-DpYFpBSy.js +2 -0
  50. package/dist/assets/renderMobileApp-DB1TXtLg.js +23 -0
  51. package/dist/assets/runtimeConfig-BtWi74Pm.js +1 -0
  52. package/dist/assets/runtimeEndpointReset-BnA1DoNG.js +145 -0
  53. package/dist/assets/{sortable-tabs-strip-oKJ700WG.js → sortable-tabs-strip-DADoz-JR.js} +1 -1
  54. package/dist/assets/src-oHrYIqHF.css +2 -0
  55. package/dist/assets/{store-oojlrF4d.js → store-SqV3zfE8.js} +4 -4
  56. package/dist/assets/{terminalApi-BYTA045F.js → terminalApi-tB3qLcfa.js} +1 -1
  57. package/dist/assets/{tooltip-BYGBBTc2.js → tooltip-DMNR5rN0.js} +1 -1
  58. package/dist/assets/uk-DJz_P8OZ.js +15 -0
  59. package/dist/assets/{url-CGHw6D-E.js → url-7MqoLs9X.js} +1 -1
  60. package/dist/assets/useAppFontEffects-CeS0e0FK.js +7 -0
  61. package/dist/assets/{useAssistantUIStore-ESTV1mEY.js → useAssistantUIStore-Bq3cPj2x.js} +1 -1
  62. package/dist/assets/{useDesktopWindowControlsLayout-Cq5a2gcJ.js → useDesktopWindowControlsLayout-DwFMUFtC.js} +1 -1
  63. package/dist/assets/{useEffectiveDirectory-DG6uPzBG.js → useEffectiveDirectory-Dp8McufI.js} +1 -1
  64. package/dist/assets/{useFontPreferences-Bu4ME5hk.js → useFontPreferences-CIurCeNv.js} +1 -1
  65. package/dist/assets/useMobileNavigationStore-kWPnKBP1.js +475 -0
  66. package/dist/assets/useSessionAutoCleanup-BLiIZW0x.js +1 -0
  67. package/dist/assets/useUIStore-5agS8bsW.js +1 -0
  68. package/dist/assets/{useWorkerHighlightedLines-ADgu9578.js → useWorkerHighlightedLines-Cnxz7HaG.js} +1 -1
  69. package/dist/assets/{utils-DyUyiLje.js → utils-Co19EJEL.js} +1 -1
  70. package/dist/assets/zh-CN-DLAKDOM9.js +15 -0
  71. package/dist/assets/zh-TW-s3Jjx1_n.js +15 -0
  72. package/dist/index.html +9 -9
  73. package/dist/mini-chat.html +9 -9
  74. package/dist/mobile.html +9 -9
  75. package/package.json +1 -1
  76. package/server/index.d.ts +4 -0
  77. package/server/index.js +29 -15
  78. package/server/lib/client-auth/pairing.js +7 -1
  79. package/server/lib/client-auth/pairing.test.js +45 -0
  80. package/server/lib/desktop-hosts/routes.js +157 -0
  81. package/server/lib/desktop-hosts/routes.test.js +227 -0
  82. package/server/lib/message-queue/DOCUMENTATION.md +1 -1
  83. package/server/lib/message-queue/routes.js +1 -1
  84. package/server/lib/message-queue/routes.test.js +1 -0
  85. package/server/lib/message-queue/service.js +12 -1
  86. package/server/lib/message-queue/service.test.js +30 -0
  87. package/server/lib/opencode/DOCUMENTATION.md +4 -4
  88. package/server/lib/opencode/bootstrap-runtime.js +7 -0
  89. package/server/lib/opencode/cli-entry-runtime.js +6 -0
  90. package/server/lib/opencode/cli-entry-runtime.test.js +43 -0
  91. package/server/lib/opencode/core-routes.js +4 -1
  92. package/server/lib/opencode/core-routes.test.js +29 -0
  93. package/server/lib/opencode/openchamber-routes.js +12 -0
  94. package/server/lib/opencode/settings-runtime.js +1 -1
  95. package/server/lib/package-manager.js +3 -1
  96. package/server/lib/relay/DOCUMENTATION.md +44 -1
  97. package/server/lib/relay/host-client.js +4 -1
  98. package/server/lib/relay/service.js +16 -8
  99. package/server/lib/relay/service.test.js +21 -6
  100. package/server/lib/relay/tunnel-host.js +57 -4
  101. package/server/lib/relay/tunnel-host.test.js +250 -2
  102. package/dist/assets/MobileShareBridge-DAlvgjo1.js +0 -4
  103. package/dist/assets/MobileSurface-Bde8yLWo.js +0 -2
  104. package/dist/assets/SettingsView-D0dhTIur.js +0 -25
  105. package/dist/assets/desktopHosts-BpjUSDz4.js +0 -1
  106. package/dist/assets/desktopRelayRestore-BzUEk1i7.js +0 -1
  107. package/dist/assets/es-EXZUX1sB.js +0 -15
  108. package/dist/assets/fr-jWNPO91J.js +0 -13
  109. package/dist/assets/gitApiHttp-C1DaEMKR.js +0 -2
  110. package/dist/assets/insertionBoundaries-BAFtAotq.js +0 -1
  111. package/dist/assets/main-G8tKFcTV.js +0 -172
  112. package/dist/assets/miniChat-BP3OHqNF.js +0 -2
  113. package/dist/assets/mobile-BtwuDs-C.js +0 -2
  114. package/dist/assets/multirun-B-L3JH60.js +0 -4
  115. package/dist/assets/persistence-C_KCiMcY.js +0 -3
  116. package/dist/assets/projectMeta-Cp74cItv.js +0 -3
  117. package/dist/assets/pt-BR-D1RpVOvC.js +0 -15
  118. package/dist/assets/radio-Bs4mdPv5.js +0 -1
  119. package/dist/assets/renderElectronMiniChatApp-dgirEOtR.js +0 -2
  120. package/dist/assets/renderMobileApp-DK9qzy0P.js +0 -23
  121. package/dist/assets/runtimeConfig-JSaYFA5x.js +0 -1
  122. package/dist/assets/runtimeEndpointReset-C0eCWIE6.js +0 -145
  123. package/dist/assets/src-8zziWB78.css +0 -2
  124. package/dist/assets/uk-UvnVqWv-.js +0 -15
  125. package/dist/assets/useAppFontEffects-BhLcUfRB.js +0 -7
  126. package/dist/assets/useMobileNavigationStore-1xHjnAsg.js +0 -475
  127. package/dist/assets/useSessionAutoCleanup-BFletAeV.js +0 -1
  128. package/dist/assets/useUIStore-D6BTB4va.js +0 -1
  129. package/dist/assets/zh-CN-9v-RC966.js +0 -15
  130. package/dist/assets/zh-TW-BZ_wZdC-.js +0 -15
@@ -1,15 +1,15 @@
1
- import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t}from"./vendor-zustand-B4dlGEM2.js";import{o as n}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var r={"settings.globalConfig.title":`Global Configuration`,"settings.globalConfig.description":`Edit the configuration files currently used from ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Reload file`,"settings.globalConfig.restartHint":`Restart OpenCode after saving to apply configuration changes.`,"settings.globalConfig.toast.loadFailed":`Failed to load configuration file`,"settings.globalConfig.toast.saveFailed":`Failed to save configuration file`,"settings.globalConfig.toast.saved":`Configuration saved. Restart OpenCode to apply it.`,"settings.providers.page.openCodeGo.title":`OpenCode Go usage tracking`,"settings.providers.page.openCodeGo.description":`Connect the OpenCode Go dashboard to show rolling, weekly, and monthly quota.`,"settings.providers.page.openCodeGo.workspaceId":`Workspace ID`,"settings.providers.page.openCodeGo.authCookie":`Auth cookie`,"settings.providers.page.openCodeGo.help":`Copy the workspace ID from the dashboard URL and the auth cookie from your browser developer tools. OpenChamber never scans browser cookie storage.`,"settings.providers.page.openCodeGo.save":`Save and validate`,"settings.providers.page.openCodeGo.replace":`Replace`,"settings.providers.page.openCodeGo.validate":`Validate`,"settings.providers.page.openCodeGo.delete":`Delete`,"settings.providers.page.quotaCredentials.saved":`{provider} credentials saved.`,"settings.providers.page.openCodeGo.saveFailed":`Could not validate OpenCode Go credentials.`,"settings.providers.page.openCodeGo.valid":`OpenCode Go credentials are valid.`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go credentials are invalid or expired.`,"settings.providers.page.openCodeGo.deleted":`OpenCode Go credentials deleted.`,"settings.providers.page.openCodeGo.deleteFailed":`Could not delete OpenCode Go credentials.`,"settings.appearance.language.label":`Language`,"settings.appearance.language.description":`Choose the interface language.`,"settings.appearance.language.select":`Select language`,"settings.window.description":`OpenChamber settings window.`,"settings.view.home.title":`Settings`,"settings.view.home.description":`Jump to common pages.`,"settings.view.home.cards.providers.title":`Providers`,"settings.view.home.cards.providers.description":`Connect models + credentials`,"settings.view.home.cards.agents.title":`Agents`,"settings.view.home.cards.agents.description":`Prompts, tools, permissions`,"settings.view.home.cards.skillsCatalog.title":`Skills Catalog`,"settings.view.home.cards.skillsCatalog.description":`Install skills from catalogs`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configure MCP servers + connections`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Usage`,"settings.view.home.cards.usage.description":`Quota + spend visibility`,"settings.view.unavailable.title":`Not available`,"settings.view.unavailable.description":`This settings page is not available in this runtime.`,"settings.view.badge.beta":`beta`,"settings.view.actions.reloadOpenCode":`Reload OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Restart OpenCode and reload its configuration.`,"settings.view.actions.backToSettings":`Back to Settings`,"settings.view.actions.closeSettings":`Close settings`,"settings.view.actions.openSectionList":`Open section list`,"settings.view.actions.closeSettingsWithShortcut":`Close Settings ({shortcut}+,)`,"settings.view.actions.back":`Back`,"settings.view.actions.resizeNavigation":`Resize settings navigation`,"settings.view.navigation.groups.connection":`Connection`,"settings.view.navigation.groups.personalization":`Personalization`,"settings.view.navigation.groups.workspace":`Workspace`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Content & Automation`,"settings.view.navigation.groups.system":`System`,"settings.view.search.placeholder":`Search settings`,"settings.view.search.aria":`Search settings`,"settings.view.search.clear":`Clear settings search`,"settings.view.search.noResults":`No matching settings`,"settings.page.projects.title":`Projects`,"settings.page.remoteInstances.title":`Remote Instances`,"settings.page.providers.title":`Providers`,"settings.page.usage.title":`Usage`,"settings.page.agents.title":`Agents`,"settings.page.commands.title":`Commands`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Skills`,"settings.page.skillsCatalog.title":`Skills Catalog`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Appearance`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Shortcuts`,"settings.page.sessions.title":`Sessions`,"settings.page.summaryAI.title":`Summary AI`,"settings.page.magicPrompts.title":`Magic Prompts`,"settings.page.notifications.title":`Notifications`,"settings.page.voice.title":`Voice`,"settings.page.about.title":`About`,"settings.page.snippets.title":`Snippets`,"settings.snippets.sidebar.title":`Snippets`,"settings.snippets.sidebar.total":`Total: {count}`,"settings.snippets.sidebar.actions.create":`Create snippet`,"settings.snippets.sidebar.actions.more":`More actions for {name}`,"settings.snippets.sidebar.toast.deleted":`Snippet deleted`,"settings.snippets.sidebar.toast.deleteFailed":`Failed to delete snippet`,"settings.snippets.sidebar.dialog.deleteTitle":`Delete snippet?`,"settings.snippets.sidebar.dialog.deleteDescription":`This will permanently delete #{name}.`,"settings.snippets.page.empty.title":`Select a snippet`,"settings.snippets.page.empty.description":`Choose a snippet from the sidebar to edit it.`,"settings.snippets.page.title.new":`New snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`What this snippet does`,"settings.snippets.page.field.aliases":`Aliases`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`Content`,"settings.snippets.page.field.contentPlaceholder":`Snippet markdown...`,"settings.snippets.page.hint":`Use #name in prompts. Supports aliases and prepend/append blocks compatible with opencode-snippets.`,"settings.snippets.page.toast.nameRequired":`Snippet name is required`,"settings.snippets.page.toast.contentRequired":`Snippet content is required`,"settings.snippets.page.toast.saveFailed":`Failed to save snippet`,"settings.snippets.page.toast.saved":`Snippet saved`,"settings.page.promptTemplates.title":`Prompt Templates`,"settings.promptTemplates.sidebar.title":`Prompt Templates`,"settings.promptTemplates.sidebar.total":`Total: {count}`,"settings.promptTemplates.sidebar.empty.title":`No prompt templates`,"settings.promptTemplates.sidebar.empty.description":`Create a prompt template to get started.`,"settings.promptTemplates.sidebar.toast.deleted":`Template "{name}" deleted`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Failed to delete template`,"settings.promptTemplates.sidebar.toast.nameRequired":`Template name is required`,"settings.promptTemplates.sidebar.toast.renamed":`Template renamed`,"settings.promptTemplates.sidebar.toast.renameFailed":`Failed to rename template`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Delete template?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`This will permanently delete "{name}". This action cannot be undone.`,"settings.promptTemplates.sidebar.renameDialog.title":`Rename template`,"settings.promptTemplates.sidebar.renameDialog.description":`Enter a new name for "{name}".`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Template name`,"settings.promptTemplates.sidebar.badge.default":`default`,"settings.promptTemplates.page.empty.title":`Select a template`,"settings.promptTemplates.page.empty.description":`Choose a template from the sidebar to edit it.`,"settings.promptTemplates.page.title.new":`New template`,"settings.promptTemplates.page.subtitle.edit":`Edit template`,"settings.promptTemplates.page.subtitle.new":`Create a new prompt template`,"settings.promptTemplates.page.section.identity":`Identity`,"settings.promptTemplates.page.field.name":`Name`,"settings.promptTemplates.page.field.namePlaceholder":`Template name`,"settings.promptTemplates.page.section.template":`Template`,"settings.promptTemplates.page.field.templatePlaceholder":`Enter the prompt template text...`,"settings.promptTemplates.page.templateHint":`This text will be prepended to the user's prompt when selected in a multi-run group.`,"settings.promptTemplates.page.toast.nameRequired":`Template name is required`,"settings.promptTemplates.page.toast.updated":`Template updated`,"settings.promptTemplates.page.toast.updateFailed":`Failed to update template`,"settings.promptTemplates.page.toast.created":`Template created`,"settings.promptTemplates.page.toast.createFailed":`Failed to create template`,"settings.promptTemplates.page.toast.saveUnexpectedError":`An unexpected error occurred while saving`,"settings.magicPrompts.sidebar.title":`Magic Prompts`,"settings.magicPrompts.sidebar.description":`Select a prompt template to edit.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planning`,"settings.magicPrompts.sidebar.group.session":`Session`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Commit Generation`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR Generation`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Merge/Rebase Conflict Resolution`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick Conflict Resolution`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR Review`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue Review`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR Failed Checks Review`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR Comments Review`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Single PR Comment Review`,"settings.magicPrompts.sidebar.item.planTodo":`Todo Planning`,"settings.magicPrompts.sidebar.item.planImprove":`Improve Plan`,"settings.magicPrompts.sidebar.item.planImplement":`Implement Plan`,"settings.magicPrompts.sidebar.item.sessionSummary":`Session Summary`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace Review`,"settings.magicPrompts.sidebar.item.sessionExplore":`Codebase Tour`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`Feature Planning`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Goal Crafting`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Goal Crafting`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Prompts used by the /craft-goal slash command: visible user message + hidden instructions. Turns an idea or task into a clear, evidence-verifiable Goal through guided discovery.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Catch Up`,"settings.magicPrompts.sidebar.item.sessionDebug":`Debugging`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Weigh Options`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Remote Instances`,"settings.remoteInstances.sidebar.description":`Connect to other OpenChamber servers via an import link or SSH.`,"settings.remoteInstances.sidebar.empty":`No remote instances yet. Import a link or add an SSH connection.`,"settings.remoteInstances.channel.link":`Link`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`New SSH connection`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Add SSH connection`,"settings.remoteInstances.sidebar.actions.connect":`Connect`,"settings.remoteInstances.sidebar.actions.disconnect":`Disconnect`,"settings.remoteInstances.sidebar.actions.retry":`Retry`,"settings.remoteInstances.sidebar.actions.remove":`Remove`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Local port is already in use. Pick a random free local port and retry?`,"settings.remoteInstances.sidebar.toast.createFailed":`Failed to create SSH connection`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Retried with a random local port`,"settings.remoteInstances.sidebar.toast.connectFailed":`Failed to connect instance`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Failed to disconnect instance`,"settings.remoteInstances.sidebar.toast.retryFailed":`Failed to retry connection`,"settings.remoteInstances.sidebar.toast.removeFailed":`Failed to remove instance`,"settings.remoteInstances.direct.sidebarTitle":`Server links`,"settings.remoteInstances.direct.sidebarDescription":`Connect with a pairing link`,"settings.remoteInstances.direct.title":`Other OpenChamber servers`,"settings.remoteInstances.direct.description":`Servers this app can switch to. Import a pairing link from another OpenChamber server.`,"settings.remoteInstances.direct.import.description":`Paste a connection link from another OpenChamber server.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Import Link`,"settings.remoteInstances.direct.error.invalidConnectLink":`Invalid OpenChamber connection link.`,"settings.remoteInstances.direct.state.loading":`Loading instances...`,"settings.remoteInstances.direct.state.empty":`No imported servers yet.`,"settings.remoteInstances.clientAuth.title":`Connect to this server`,"settings.remoteInstances.clientAuth.description":`Create a secure link or token so OpenChamber Desktop can connect to this server.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Instance name — e.g. Home Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`The other device will show this name for this server.`,"settings.remoteInstances.clientAuth.actions.create":`Create Token`,"settings.remoteInstances.clientAuth.actions.pair":`Create Link`,"settings.remoteInstances.clientAuth.actions.revoke":`Revoke`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Clear revoked`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`Enlarge QR code`,"settings.remoteInstances.clientAuth.qrScanHint":`Scan this with the OpenChamber app on your other device. It is single-use and expires.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Scan to connect`,"settings.remoteInstances.clientAuth.actions.addDevice":`Add a device`,"settings.remoteInstances.clientAuth.actions.copied":`Copied`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`Where will you use this device?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Create a one-time QR code that connects another device to this server.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`This computer only`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`For apps running on this same machine.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Home network only`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Connects directly over your Wi-Fi. Does not work away from this network.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`Anywhere`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Works at home and away. Away traffic goes through OpenChamber Private Relay — an end-to-end encrypted tunnel. No setup needed.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Also allow the encrypted relay when away from home`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Prefer the direct home connection when available`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay server`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Use the official OpenChamber Relay, or enter your own ws:// or wss:// endpoint. This device will save the endpoint from the QR code.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Deploy your own Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`This server pins the Relay endpoint with OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Enter a valid Relay endpoint that starts with ws:// or wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Create QR code`,"settings.remoteInstances.clientAuth.addDevice.done":`Done`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Device connected.`,"settings.remoteInstances.clientAuth.pairingUrl":`Connection link`,"settings.remoteInstances.clientAuth.createdToken":`Copy this token now. For security, it will not be shown again.`,"settings.remoteInstances.clientAuth.state.loading":`Loading tokens...`,"settings.remoteInstances.clientAuth.state.empty":`No devices connected yet.`,"settings.remoteInstances.clientAuth.state.revoked":`Revoked`,"settings.remoteInstances.clientAuth.state.thisDevice":`This device`,"settings.remoteInstances.clientAuth.state.pending":`Waiting to connect…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Connected · Local network`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Connected · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Last used {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Never used`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Turns on automatically when you pair a device over the relay.`,"settings.remoteInstances.relay.description":`Let your other devices connect from anywhere without opening ports. Traffic is end-to-end encrypted — the relay cannot read it.`,"settings.remoteInstances.relay.enableHint":`Nothing is shared until you enable the relay on this server.`,"settings.remoteInstances.relay.actions.enable":`Enable Relay`,"settings.remoteInstances.relay.actions.disable":`Disable`,"settings.remoteInstances.relay.confirm.disable":`Disable the relay? Devices connected through it will be disconnected immediately.`,"settings.remoteInstances.relay.state.loading":`Checking relay status...`,"settings.remoteInstances.relay.state.disabled":`Disabled`,"settings.remoteInstances.relay.state.connecting":`Connecting`,"settings.remoteInstances.relay.state.connected":`Connected`,"settings.remoteInstances.relay.state.reconnecting":`Reconnecting`,"settings.remoteInstances.relay.state.error":`Error`,"settings.remoteInstances.relay.status.clientsOne":`{count} device connected`,"settings.remoteInstances.relay.status.clientsMany":`{count} devices connected`,"settings.remoteInstances.relay.pair.title":`Pair a device`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Device name (optional)`,"settings.remoteInstances.relay.pair.includeToken":`Include access token (one-scan pairing)`,"settings.remoteInstances.relay.pair.noTokenHint":`Without a token, the device signs in with this server’s UI password after connecting.`,"settings.remoteInstances.relay.pair.generate":`Create pairing link`,"settings.remoteInstances.relay.pair.requiresConnected":`Pairing becomes available once the relay is connected.`,"settings.remoteInstances.relay.pair.linkLabel":`Pairing link`,"settings.remoteInstances.relay.pair.warning":`This link grants access to this server. Do not share it.`,"settings.remoteInstances.relay.pair.qrAlt":`Relay pairing QR code`,"settings.remoteInstances.relay.pair.showQr":`Show QR code`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Scan to pair`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Scan this QR code with the OpenChamber app on your other device.`,"settings.remoteInstances.relay.pair.manageHint":`Manage or revoke paired devices in the “Connect to this server” list above.`,"settings.remoteInstances.relay.toast.enableFailed":`Failed to enable relay`,"settings.remoteInstances.relay.toast.disableFailed":`Failed to disable relay`,"settings.remoteInstances.relay.toast.offerFailed":`Failed to create pairing link`,"settings.remoteInstances.relay.toast.linkCopied":`Pairing link copied`,"settings.remoteInstances.sidebar.phase.ready":`Ready`,"settings.remoteInstances.sidebar.phase.error":`Error`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconnect`,"settings.remoteInstances.sidebar.phase.installing":`Installing`,"settings.remoteInstances.sidebar.phase.updating":`Updating`,"settings.remoteInstances.sidebar.phase.forwarding":`Forwarding`,"settings.remoteInstances.sidebar.phase.starting":`Starting`,"settings.remoteInstances.sidebar.phase.connecting":`Connecting`,"settings.remoteInstances.sidebar.phase.idle":`Idle`,"settings.remoteInstances.page.section.instance":`Instance`,"settings.remoteInstances.page.section.instanceDescription":`Choose the SSH command and a display name for this connection.`,"settings.remoteInstances.page.field.mode":`Mode`,"settings.remoteInstances.page.field.modeHint":`Choose whether OpenChamber should start the server for you, or connect to one that is already running.`,"settings.remoteInstances.page.field.modePlaceholder":`Select mode`,"settings.remoteInstances.page.field.modeManaged":`Start it for me`,"settings.remoteInstances.page.field.modeExternal":`Already running`,"settings.remoteInstances.page.field.preferredRemotePort":`Preferred remote port`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Port to use on the remote machine. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.keepServerRunning":`Keep server running`,"settings.remoteInstances.page.field.keepServerRunningHint":`Keep OpenChamber running on the remote machine after you disconnect.`,"settings.remoteInstances.page.field.bindHost":`Bind host`,"settings.remoteInstances.page.field.bindHostHint":`Where the local connection should listen. Use 127.0.0.1 or localhost unless you need LAN access.`,"settings.remoteInstances.page.field.preferredLocalPort":`Preferred local port`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Local port to open for this connection. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.forwardType":`Forward type`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Auto`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Binding to 0.0.0.0 exposes forwarded ports to your local network. Continue?`,"settings.remoteInstances.page.preview.localSocks5":`(local SOCKS5)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(remote)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Failed to open local address`,"settings.remoteInstances.page.toast.localUrlCopied":`Local URL copied`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copy local URL`,"settings.remoteInstances.page.actions.open":`Open`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Selected instance`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} requires a concrete destination.`,"settings.remoteInstances.page.patternDialog.description":`Enter destination.`,"settings.common.actions.cancel":`Cancel`,"settings.common.actions.create":`Create`,"settings.common.actions.delete":`Delete`,"settings.common.actions.reset":`Reset`,"settings.common.actions.rename":`Rename`,"settings.common.actions.duplicate":`Duplicate`,"settings.common.actions.import":`Import`,"settings.common.actions.copyAll":`Copy all`,"settings.common.actions.clear":`Clear`,"settings.common.actions.saving":`Saving...`,"settings.common.actions.saveChanges":`Save Changes`,"settings.common.scope.global":`Global`,"settings.common.scope.project":`Project`,"settings.common.field.description":`Description`,"settings.common.badge.new":`New`,"settings.common.badge.modified":`Modified`,"settings.common.permission.allow":`Allow`,"settings.common.permission.ask":`Ask`,"settings.common.permission.deny":`Deny`,"settings.common.state.comingSoon":`Coming soon...`,"settings.projects.actions.title":`Actions`,"settings.projects.actions.description":`Per-project commands shown in header next to project name.`,"settings.projects.actions.validation.fillNameAndCommand":`Fill action name and command before saving.`,"settings.projects.actions.state.loading":`Loading...`,"settings.projects.actions.state.empty":`No actions configured yet.`,"settings.projects.actions.state.untitled":`Untitled action`,"settings.projects.actions.state.noDesktopSshForwards":`No enabled local SSH forwards available.`,"settings.projects.actions.field.selectIconAria":`Select icon`,"settings.projects.actions.field.iconAria":`Icon {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Action name`,"settings.projects.actions.field.command":`Command`,"settings.projects.actions.field.commandPlaceholder":`e.g. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Auto-open URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Auto-open URL for {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Open URL from output or custom URL below`,"settings.projects.actions.field.overrideUrlPlaceholder":`Override URL (optional)`,"settings.projects.actions.field.overrideUrlTooltip":`If this field is filled, custom URL is used. If empty, app opens best URL from output.`,"settings.projects.actions.field.desktopSshForward":`Desktop SSH forward`,"settings.projects.actions.field.useOutputManualUrl":`Use output/manual URL`,"settings.projects.actions.actions.add":`Add action`,"settings.projects.actions.actions.save":`Save Actions`,"settings.projects.actions.toast.saveFailed":`Failed to save actions`,"settings.projects.actions.toast.saved":`Project actions saved`,"settings.openchamber.about.title":`About OpenChamber`,"settings.openchamber.about.field.version":`Version`,"settings.openchamber.about.field.clientVersion":`Client`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode version`,"settings.openchamber.about.state.checking":`Checking...`,"settings.openchamber.about.state.upToDate":`Up to date`,"settings.openchamber.about.state.unknown":`unknown`,"settings.openchamber.about.actions.checkUpdates":`Check updates`,"settings.openchamber.about.actions.update":`Update`,"settings.openchamber.about.actions.updateToVersion":`Update to {version}`,"settings.openchamber.about.actions.checkForUpdates":`Check for updates`,"settings.openchamber.about.toast.latestVersion":`You are on the latest version`,"settings.openchamber.about.toast.checkFailed":`Could not check for updates`,"settings.openchamber.about.diagnostics.label":`Diagnostics log`,"settings.openchamber.about.diagnostics.description":`Export local diagnostic feats for display and sync issues. No message bodies or tokens are included.`,"settings.openchamber.about.diagnostics.export":`Export log`,"settings.openchamber.about.diagnostics.exporting":`Exporting…`,"settings.openchamber.about.diagnostics.enable":`Record diagnostic feats`,"settings.openchamber.about.diagnostics.enableHint":`Available in beta builds. Records transcript sync and display lifecycle facts on this device.`,"settings.openchamber.about.diagnostics.toast.exported":`Diagnostics log exported`,"settings.openchamber.about.diagnostics.toast.failed":`Could not export diagnostics log`,"settings.openchamber.about.diagnostics.toast.empty":`Diagnostics log exported. No events were recorded yet.`,"settings.agents.sidebar.title":`Agents`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`No agents configured`,"settings.agents.sidebar.empty.description":`Use the + button above to create one`,"settings.agents.sidebar.section.builtIn":`Built-in Agents`,"settings.agents.sidebar.section.custom":`Custom Agents`,"settings.agents.sidebar.badge.system":`system`,"settings.agents.sidebar.dialog.deleteTitle":`Delete Agent`,"settings.agents.sidebar.dialog.resetTitle":`Reset Agent`,"settings.agents.sidebar.dialog.deleteDescription":`Are you sure you want to delete agent "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`Are you sure you want to reset agent "{name}" to its default configuration?`,"settings.agents.sidebar.renameDialog.title":`Rename Agent`,"settings.agents.sidebar.renameDialog.description":`Enter a new name for the agent "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`New agent name...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Built-in agents cannot be deleted`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" deleted successfully`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" reset to default`,"settings.agents.sidebar.toast.deleteFailed":`Failed to delete agent`,"settings.agents.sidebar.toast.definitionNotFound":`Agent definition not found. Nothing was changed.`,"settings.agents.sidebar.toast.resetFailed":`Failed to reset agent`,"settings.agents.sidebar.toast.agentNameRequired":`Agent name is required`,"settings.agents.sidebar.toast.agentExists":`An agent with this name already exists`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Failed to remove old agent after rename`,"settings.agents.sidebar.toast.renameFailed":`Failed to rename agent`,"settings.agents.sidebar.toast.agentRenamed":`Agent renamed to "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Permission name is required`,"settings.agents.page.toast.created":`Agent created successfully`,"settings.agents.page.toast.updated":`Agent updated successfully`,"settings.agents.page.toast.createFailed":`Failed to create agent`,"settings.agents.page.toast.updateFailed":`Failed to update agent`,"settings.agents.page.toast.saveUnexpectedError":`An error occurred while saving`,"settings.agents.page.toast.savedManualRestart":`Saved to disk. Restart your connected OpenCode server to apply the changes.`,"settings.agents.page.empty.title":`Select an agent from the sidebar`,"settings.agents.page.empty.description":`Or create a new one`,"settings.agents.page.title.new":`New Agent`,"settings.agents.page.subtitle.new":`Configure a new assistant persona`,"settings.agents.page.subtitle.edit":`Edit agent settings`,"settings.agents.page.section.identityRole":`Identity & Role`,"settings.agents.page.section.modelParameters":`Model & Parameters`,"settings.agents.page.section.systemPrompt":`System Prompt`,"settings.agents.page.section.toolPermissions":`Tool Permissions`,"settings.agents.page.field.agentName":`Agent Name`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`Scope`,"settings.agents.page.field.descriptionPlaceholder":`What does this agent do?`,"settings.agents.page.field.mode":`Mode`,"settings.agents.page.field.modeTooltip":`Primary vs Subagent visibility`,"settings.agents.page.field.overrideModel":`Override Model`,"settings.agents.page.field.temperature":`Temperature`,"settings.agents.page.field.temperatureTooltip":`Controls randomness. Higher = creative, Lower = focused.`,"settings.agents.page.field.temperatureRange":`0.0 to 2.0`,"settings.agents.page.field.clearTemperatureAria":`Clear temperature override`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Nucleus sampling diversity. Lower = likely tokens only.`,"settings.agents.page.field.topPRange":`0.0 to 1.0`,"settings.agents.page.field.clearTopPAria":`Clear top p override`,"settings.agents.page.field.variant":`Thinking Variant`,"settings.agents.page.field.variantTooltip":`Controls the thinking/reasoning depth for this agent. Maps to provider-specific parameters (e.g. Anthropic variant, OpenAI reasoning effort).`,"settings.agents.page.field.variantHint":`e.g. high, max, low`,"settings.agents.page.field.variantPlaceholder":`default`,"settings.agents.page.field.systemPromptPlaceholder":`You are an expert coding assistant...`,"settings.agents.page.mode.primary":`Primary`,"settings.agents.page.mode.subagent":`Subagent`,"settings.agents.page.mode.all":`All`,"settings.agents.page.permissions.defaultLabel":`Default`,"settings.agents.page.permissions.hideEditor":`Hide Editor`,"settings.agents.page.permissions.advancedEditor":`Advanced Editor`,"settings.agents.page.permissions.globalSummary":`Global: {summary}`,"settings.agents.page.permissions.rulesSummary":`Rules: {summary}`,"settings.agents.page.permissions.globalDefault":`Global Default`,"settings.agents.page.permissions.pattern":`Pattern`,"settings.agents.page.permissions.addCustomRule":`Add Custom Rule`,"settings.agents.page.permissions.permissionPlaceholder":`Permission...`,"settings.agents.page.permissions.patternPlaceholder":`Pattern (e.g. *)`,"settings.page.behavior.title":`Behavior`,"settings.behavior.page.title":`Behavior`,"settings.behavior.page.warning.title":`Global rules are combined with project rules`,"settings.behavior.page.warning.description":`Changes made here update {path}. OpenCode also includes any project-level AGENTS.md rules when they exist.`,"settings.behavior.page.section.systemPrompt":`Global AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`You are a helpful AI assistant...
1
+ import{r as e}from"./rolldown-runtime-C0FnF6B9.js";import{a as t}from"./vendor-zustand-B4dlGEM2.js";import{o as n}from"./vendor-aparajita-capacitor-secure-storage-CjQdwfjS.js";var r={"settings.globalConfig.title":`Global Configuration`,"settings.globalConfig.description":`Edit the configuration files currently used from ~/.config/opencode.`,"settings.globalConfig.actions.reload":`Reload file`,"settings.globalConfig.restartHint":`Restart OpenCode after saving to apply configuration changes.`,"settings.globalConfig.toast.loadFailed":`Failed to load configuration file`,"settings.globalConfig.toast.saveFailed":`Failed to save configuration file`,"settings.globalConfig.toast.saved":`Configuration saved. Restart OpenCode to apply it.`,"settings.providers.page.openCodeGo.title":`OpenCode Go usage tracking`,"settings.providers.page.openCodeGo.description":`Connect the OpenCode Go dashboard to show rolling, weekly, and monthly quota.`,"settings.providers.page.openCodeGo.workspaceId":`Workspace ID`,"settings.providers.page.openCodeGo.authCookie":`Auth cookie`,"settings.providers.page.openCodeGo.help":`Copy the workspace ID from the dashboard URL and the auth cookie from your browser developer tools. OpenChamber never scans browser cookie storage.`,"settings.providers.page.openCodeGo.save":`Save and validate`,"settings.providers.page.openCodeGo.replace":`Replace`,"settings.providers.page.openCodeGo.validate":`Validate`,"settings.providers.page.openCodeGo.delete":`Delete`,"settings.providers.page.quotaCredentials.saved":`{provider} credentials saved.`,"settings.providers.page.openCodeGo.saveFailed":`Could not validate OpenCode Go credentials.`,"settings.providers.page.openCodeGo.valid":`OpenCode Go credentials are valid.`,"settings.providers.page.openCodeGo.invalid":`OpenCode Go credentials are invalid or expired.`,"settings.providers.page.openCodeGo.deleted":`OpenCode Go credentials deleted.`,"settings.providers.page.openCodeGo.deleteFailed":`Could not delete OpenCode Go credentials.`,"settings.appearance.language.label":`Language`,"settings.appearance.language.description":`Choose the interface language.`,"settings.appearance.language.select":`Select language`,"settings.window.description":`OpenChamber settings window.`,"settings.view.home.title":`Settings`,"settings.view.home.description":`Jump to common pages.`,"settings.view.home.cards.providers.title":`Providers`,"settings.view.home.cards.providers.description":`Connect models + credentials`,"settings.view.home.cards.agents.title":`Agents`,"settings.view.home.cards.agents.description":`Prompts, tools, permissions`,"settings.view.home.cards.skillsCatalog.title":`Skills Catalog`,"settings.view.home.cards.skillsCatalog.description":`Install skills from catalogs`,"settings.view.home.cards.mcp.title":`MCP`,"settings.view.home.cards.mcp.description":`Configure MCP servers + connections`,"settings.view.home.cards.plugins.title":`Plugins`,"settings.view.home.cards.plugins.description":`Manage opencode plugins`,"settings.view.home.cards.usage.title":`Usage`,"settings.view.home.cards.usage.description":`Quota + spend visibility`,"settings.view.unavailable.title":`Not available`,"settings.view.unavailable.description":`This settings page is not available in this runtime.`,"settings.view.badge.beta":`beta`,"settings.view.actions.reloadOpenCode":`Reload OpenCode`,"settings.view.actions.reloadOpenCodeTooltip":`Restart OpenCode and reload its configuration.`,"settings.view.actions.backToSettings":`Back to Settings`,"settings.view.actions.closeSettings":`Close settings`,"settings.view.actions.openSectionList":`Open section list`,"settings.view.actions.closeSettingsWithShortcut":`Close Settings ({shortcut}+,)`,"settings.view.actions.back":`Back`,"settings.view.actions.resizeNavigation":`Resize settings navigation`,"settings.view.navigation.groups.connection":`Connection`,"settings.view.navigation.groups.personalization":`Personalization`,"settings.view.navigation.groups.workspace":`Workspace`,"settings.view.navigation.groups.opencode":`OpenCode`,"settings.view.navigation.groups.content":`Content & Automation`,"settings.view.navigation.groups.system":`System`,"settings.view.search.placeholder":`Search settings`,"settings.view.search.aria":`Search settings`,"settings.view.search.clear":`Clear settings search`,"settings.view.search.noResults":`No matching settings`,"settings.page.projects.title":`Projects`,"settings.page.remoteInstances.title":`Remote Instances`,"settings.page.providers.title":`Providers`,"settings.page.usage.title":`Usage`,"settings.page.agents.title":`Agents`,"settings.page.commands.title":`Commands`,"settings.page.mcp.title":`MCP`,"settings.page.plugins.title":`Plugins`,"settings.page.skills.title":`Skills`,"settings.page.skillsCatalog.title":`Skills Catalog`,"settings.page.git.title":`Git`,"settings.page.appearance.title":`Appearance`,"settings.page.chat.title":`Chat`,"settings.page.shortcuts.title":`Shortcuts`,"settings.page.sessions.title":`Sessions`,"settings.page.summaryAI.title":`Summary AI`,"settings.page.magicPrompts.title":`Magic Prompts`,"settings.page.notifications.title":`Notifications`,"settings.page.voice.title":`Voice`,"settings.page.about.title":`About`,"settings.page.snippets.title":`Snippets`,"settings.snippets.sidebar.title":`Snippets`,"settings.snippets.sidebar.total":`Total: {count}`,"settings.snippets.sidebar.actions.create":`Create snippet`,"settings.snippets.sidebar.actions.more":`More actions for {name}`,"settings.snippets.sidebar.toast.deleted":`Snippet deleted`,"settings.snippets.sidebar.toast.deleteFailed":`Failed to delete snippet`,"settings.snippets.sidebar.dialog.deleteTitle":`Delete snippet?`,"settings.snippets.sidebar.dialog.deleteDescription":`This will permanently delete #{name}.`,"settings.snippets.page.empty.title":`Select a snippet`,"settings.snippets.page.empty.description":`Choose a snippet from the sidebar to edit it.`,"settings.snippets.page.title.new":`New snippet`,"settings.snippets.page.field.namePlaceholder":`snippet-name`,"settings.snippets.page.field.descriptionPlaceholder":`What this snippet does`,"settings.snippets.page.field.aliases":`Aliases`,"settings.snippets.page.field.aliasesPlaceholder":`safe, careful`,"settings.snippets.page.field.content":`Content`,"settings.snippets.page.field.contentPlaceholder":`Snippet markdown...`,"settings.snippets.page.hint":`Use #name in prompts. Supports aliases and prepend/append blocks compatible with opencode-snippets.`,"settings.snippets.page.toast.nameRequired":`Snippet name is required`,"settings.snippets.page.toast.contentRequired":`Snippet content is required`,"settings.snippets.page.toast.saveFailed":`Failed to save snippet`,"settings.snippets.page.toast.saved":`Snippet saved`,"settings.page.promptTemplates.title":`Prompt Templates`,"settings.promptTemplates.sidebar.title":`Prompt Templates`,"settings.promptTemplates.sidebar.total":`Total: {count}`,"settings.promptTemplates.sidebar.empty.title":`No prompt templates`,"settings.promptTemplates.sidebar.empty.description":`Create a prompt template to get started.`,"settings.promptTemplates.sidebar.toast.deleted":`Template "{name}" deleted`,"settings.promptTemplates.sidebar.toast.deleteFailed":`Failed to delete template`,"settings.promptTemplates.sidebar.toast.nameRequired":`Template name is required`,"settings.promptTemplates.sidebar.toast.renamed":`Template renamed`,"settings.promptTemplates.sidebar.toast.renameFailed":`Failed to rename template`,"settings.promptTemplates.sidebar.dialog.deleteTitle":`Delete template?`,"settings.promptTemplates.sidebar.dialog.deleteDescription":`This will permanently delete "{name}". This action cannot be undone.`,"settings.promptTemplates.sidebar.renameDialog.title":`Rename template`,"settings.promptTemplates.sidebar.renameDialog.description":`Enter a new name for "{name}".`,"settings.promptTemplates.sidebar.renameDialog.placeholder":`Template name`,"settings.promptTemplates.sidebar.badge.default":`default`,"settings.promptTemplates.page.empty.title":`Select a template`,"settings.promptTemplates.page.empty.description":`Choose a template from the sidebar to edit it.`,"settings.promptTemplates.page.title.new":`New template`,"settings.promptTemplates.page.subtitle.edit":`Edit template`,"settings.promptTemplates.page.subtitle.new":`Create a new prompt template`,"settings.promptTemplates.page.section.identity":`Identity`,"settings.promptTemplates.page.field.name":`Name`,"settings.promptTemplates.page.field.namePlaceholder":`Template name`,"settings.promptTemplates.page.section.template":`Template`,"settings.promptTemplates.page.field.templatePlaceholder":`Enter the prompt template text...`,"settings.promptTemplates.page.templateHint":`This text will be prepended to the user's prompt when selected in a multi-run group.`,"settings.promptTemplates.page.toast.nameRequired":`Template name is required`,"settings.promptTemplates.page.toast.updated":`Template updated`,"settings.promptTemplates.page.toast.updateFailed":`Failed to update template`,"settings.promptTemplates.page.toast.created":`Template created`,"settings.promptTemplates.page.toast.createFailed":`Failed to create template`,"settings.promptTemplates.page.toast.saveUnexpectedError":`An unexpected error occurred while saving`,"settings.magicPrompts.sidebar.title":`Magic Prompts`,"settings.magicPrompts.sidebar.description":`Select a prompt template to edit.`,"settings.magicPrompts.sidebar.group.git":`Git`,"settings.magicPrompts.sidebar.group.github":`GitHub`,"settings.magicPrompts.sidebar.group.planning":`Planning`,"settings.magicPrompts.sidebar.group.session":`Session`,"settings.magicPrompts.sidebar.item.gitCommitGenerate":`Commit Generation`,"settings.magicPrompts.sidebar.item.gitPrGenerate":`PR Generation`,"settings.magicPrompts.sidebar.item.gitConflictResolve":`Merge/Rebase Conflict Resolution`,"settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve":`Cherry-pick Conflict Resolution`,"settings.magicPrompts.sidebar.item.githubPrReview":`PR Review`,"settings.magicPrompts.sidebar.item.githubIssueReview":`Issue Review`,"settings.magicPrompts.sidebar.item.githubPrFailedChecksReview":`PR Failed Checks Review`,"settings.magicPrompts.sidebar.item.githubPrCommentsReview":`PR Comments Review`,"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview":`Single PR Comment Review`,"settings.magicPrompts.sidebar.item.planTodo":`Todo Planning`,"settings.magicPrompts.sidebar.item.planImprove":`Improve Plan`,"settings.magicPrompts.sidebar.item.planImplement":`Implement Plan`,"settings.magicPrompts.sidebar.item.sessionSummary":`Session Summary`,"settings.magicPrompts.sidebar.item.sessionWorkspaceReview":`Workspace Review`,"settings.magicPrompts.sidebar.item.sessionExplore":`Codebase Tour`,"settings.magicPrompts.sidebar.item.sessionFeaturePlan":`Feature Planning`,"settings.magicPrompts.sidebar.item.sessionCraftGoal":`Goal Crafting`,"settings.magicPrompts.page.group.sessionCraftGoal.title":`Goal Crafting`,"settings.magicPrompts.page.group.sessionCraftGoal.description":`Prompts used by the /craft-goal slash command: visible user message + hidden instructions. Turns an idea or task into a clear, evidence-verifiable Goal through guided discovery.`,"settings.magicPrompts.sidebar.item.sessionCatchUp":`Catch Up`,"settings.magicPrompts.sidebar.item.sessionDebug":`Debugging`,"settings.magicPrompts.sidebar.item.sessionWeigh":`Weigh Options`,"settings.magicPrompts.sidebar.item.sessionFusion":`Fusion`,"settings.remoteInstances.sidebar.title":`Remote Instances`,"settings.remoteInstances.sidebar.description":`Connect to other OpenChamber servers via an import link or SSH.`,"settings.remoteInstances.sidebar.empty":`No remote instances yet. Import a link or add an SSH connection.`,"settings.remoteInstances.channel.link":`Link`,"settings.remoteInstances.channel.ssh":`SSH`,"settings.remoteInstances.sidebar.total":`Total {count}`,"settings.remoteInstances.sidebar.newSshInstanceName":`New SSH connection`,"settings.remoteInstances.sidebar.actions.addSshInstance":`Add SSH connection`,"settings.remoteInstances.sidebar.actions.connect":`Connect`,"settings.remoteInstances.sidebar.actions.disconnect":`Disconnect`,"settings.remoteInstances.sidebar.actions.retry":`Retry`,"settings.remoteInstances.sidebar.actions.remove":`Remove`,"settings.remoteInstances.sidebar.confirm.localPortInUseRetry":`Local port is already in use. Pick a random free local port and retry?`,"settings.remoteInstances.sidebar.toast.createFailed":`Failed to create SSH connection`,"settings.remoteInstances.sidebar.toast.retriedWithRandomPort":`Retried with a random local port`,"settings.remoteInstances.sidebar.toast.connectFailed":`Failed to connect instance`,"settings.remoteInstances.sidebar.toast.disconnectFailed":`Failed to disconnect instance`,"settings.remoteInstances.sidebar.toast.retryFailed":`Failed to retry connection`,"settings.remoteInstances.sidebar.toast.removeFailed":`Failed to remove instance`,"settings.remoteInstances.direct.sidebarTitle":`Server links`,"settings.remoteInstances.direct.sidebarDescription":`Connect with a pairing link`,"settings.remoteInstances.direct.title":`Other OpenChamber servers`,"settings.remoteInstances.direct.description":`Servers this app can switch to. Import a pairing link from another OpenChamber server.`,"settings.remoteInstances.direct.import.description":`Paste a connection link from another OpenChamber server.`,"settings.remoteInstances.direct.import.placeholder":`openchamber://connect?...`,"settings.remoteInstances.direct.import.action":`Import Link`,"settings.remoteInstances.direct.error.invalidConnectLink":`Invalid OpenChamber connection link.`,"settings.remoteInstances.direct.state.loading":`Loading instances...`,"settings.remoteInstances.direct.state.empty":`No imported servers yet.`,"settings.remoteInstances.clientAuth.title":`Connect to this server`,"settings.remoteInstances.clientAuth.description":`Create a secure link or token so OpenChamber Desktop can connect to this server.`,"settings.remoteInstances.clientAuth.field.labelPlaceholder":`Instance name — e.g. Home Mac`,"settings.remoteInstances.clientAuth.field.labelHint":`The other device will show this name for this server.`,"settings.remoteInstances.clientAuth.actions.create":`Create Token`,"settings.remoteInstances.clientAuth.actions.pair":`Create Link`,"settings.remoteInstances.clientAuth.actions.revoke":`Revoke`,"settings.remoteInstances.clientAuth.actions.clearRevoked":`Clear revoked`,"settings.remoteInstances.clientAuth.qrAlt":`OpenChamber connection QR code`,"settings.remoteInstances.clientAuth.qrEnlarge":`Enlarge QR code`,"settings.remoteInstances.clientAuth.qrScanHint":`Scan this with the OpenChamber app on your other device. It is single-use and expires.`,"settings.remoteInstances.clientAuth.qrDialogTitle":`Scan to connect`,"settings.remoteInstances.clientAuth.actions.addDevice":`Add a device`,"settings.remoteInstances.clientAuth.actions.copied":`Copied`,"settings.remoteInstances.clientAuth.addDevice.transportLabel":`Where will you use this device?`,"settings.remoteInstances.clientAuth.addDevice.subtitle":`Create a one-time QR code that connects another device to this server.`,"settings.remoteInstances.clientAuth.addDevice.transport.local":`This computer only`,"settings.remoteInstances.clientAuth.addDevice.transport.localHint":`For apps running on this same machine.`,"settings.remoteInstances.clientAuth.addDevice.transport.lan":`Home network only`,"settings.remoteInstances.clientAuth.addDevice.transport.lanHint":`Connects directly over your Wi-Fi. Does not work away from this network.`,"settings.remoteInstances.clientAuth.addDevice.transport.relay":`Anywhere`,"settings.remoteInstances.clientAuth.addDevice.transport.relayHint":`Works at home and away. Away traffic goes through OpenChamber Private Relay — an end-to-end encrypted tunnel. No setup needed.`,"settings.remoteInstances.clientAuth.addDevice.fallback.relay":`Also allow the encrypted relay when away from home`,"settings.remoteInstances.clientAuth.addDevice.fallback.preferLocal":`Prefer the direct home connection when available`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLabel":`Relay server`,"settings.remoteInstances.clientAuth.addDevice.relayUrlHint":`Use the official OpenChamber Relay, or enter your own ws:// or wss:// endpoint. This device will save the endpoint from the QR code.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlDeployLink":`Deploy your own Relay.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlLockedHint":`This server pins the Relay endpoint with OPENCHAMBER_RELAY_URL.`,"settings.remoteInstances.clientAuth.addDevice.relayUrlInvalid":`Enter a valid Relay endpoint that starts with ws:// or wss://.`,"settings.remoteInstances.clientAuth.addDevice.create":`Create QR code`,"settings.remoteInstances.clientAuth.addDevice.targetLabel":`Target instance`,"settings.remoteInstances.clientAuth.addDevice.target.local":`This desktop`,"settings.remoteInstances.clientAuth.addDevice.target.sshEmpty":`No connected SSH instances`,"settings.remoteInstances.clientAuth.addDevice.target.sshNotReady":`Connect the SSH instance first`,"settings.remoteInstances.sidebar.actions.mobileConnect":`Phone connect`,"settings.remoteInstances.sidebar.actions.mobileConnectAria":`Create a phone pairing QR for {instance}`,"settings.remoteInstances.sidebar.actions.mobileConnectDisabled":`Connect this SSH instance before pairing a phone`,"settings.remoteInstances.sidebar.actions.syncConfig":`Sync config`,"settings.remoteInstances.sidebar.actions.syncConfigDisabled":`Connect this instance to sync its config`,"settings.remoteInstances.clientAuth.addDevice.done":`Done`,"settings.remoteInstances.clientAuth.addDevice.connectedToast":`Device connected.`,"settings.remoteInstances.clientAuth.pairingUrl":`Connection link`,"settings.remoteInstances.clientAuth.createdToken":`Copy this token now. For security, it will not be shown again.`,"settings.remoteInstances.clientAuth.state.loading":`Loading tokens...`,"settings.remoteInstances.clientAuth.state.empty":`No devices connected yet.`,"settings.remoteInstances.clientAuth.state.revoked":`Revoked`,"settings.remoteInstances.clientAuth.state.thisDevice":`This device`,"settings.remoteInstances.clientAuth.state.pending":`Waiting to connect…`,"settings.remoteInstances.clientAuth.state.viaRelay":`Relay`,"settings.remoteInstances.clientAuth.state.connectedDirect":`Connected · Local network`,"settings.remoteInstances.clientAuth.state.connectedRelay":`Connected · Relay`,"settings.remoteInstances.clientAuth.lastUsed":`Last used {date}`,"settings.remoteInstances.clientAuth.neverUsed":`Never used`,"settings.remoteInstances.relay.title":`OpenChamber Relay`,"settings.remoteInstances.relay.autoHint":`Turns on automatically when you pair a device over the relay.`,"settings.remoteInstances.relay.description":`Let your other devices connect from anywhere without opening ports. Traffic is end-to-end encrypted — the relay cannot read it.`,"settings.remoteInstances.relay.enableHint":`Nothing is shared until you enable the relay on this server.`,"settings.remoteInstances.relay.actions.enable":`Enable Relay`,"settings.remoteInstances.relay.actions.disable":`Disable`,"settings.remoteInstances.relay.confirm.disable":`Disable the relay? Devices connected through it will be disconnected immediately.`,"settings.remoteInstances.relay.state.loading":`Checking relay status...`,"settings.remoteInstances.relay.state.disabled":`Disabled`,"settings.remoteInstances.relay.state.connecting":`Connecting`,"settings.remoteInstances.relay.state.connected":`Connected`,"settings.remoteInstances.relay.state.reconnecting":`Reconnecting`,"settings.remoteInstances.relay.state.error":`Error`,"settings.remoteInstances.relay.status.clientsOne":`{count} device connected`,"settings.remoteInstances.relay.status.clientsMany":`{count} devices connected`,"settings.remoteInstances.relay.pair.title":`Pair a device`,"settings.remoteInstances.relay.pair.labelPlaceholder":`Device name (optional)`,"settings.remoteInstances.relay.pair.includeToken":`Include access token (one-scan pairing)`,"settings.remoteInstances.relay.pair.noTokenHint":`Without a token, the device signs in with this server’s UI password after connecting.`,"settings.remoteInstances.relay.pair.generate":`Create pairing link`,"settings.remoteInstances.relay.pair.requiresConnected":`Pairing becomes available once the relay is connected.`,"settings.remoteInstances.relay.pair.linkLabel":`Pairing link`,"settings.remoteInstances.relay.pair.warning":`This link grants access to this server. Do not share it.`,"settings.remoteInstances.relay.pair.qrAlt":`Relay pairing QR code`,"settings.remoteInstances.relay.pair.showQr":`Show QR code`,"settings.remoteInstances.relay.pair.qrDialogTitle":`Scan to pair`,"settings.remoteInstances.relay.pair.qrDialogDescription":`Scan this QR code with the OpenChamber app on your other device.`,"settings.remoteInstances.relay.pair.manageHint":`Manage or revoke paired devices in the “Connect to this server” list above.`,"settings.remoteInstances.relay.toast.enableFailed":`Failed to enable relay`,"settings.remoteInstances.relay.toast.disableFailed":`Failed to disable relay`,"settings.remoteInstances.relay.toast.offerFailed":`Failed to create pairing link`,"settings.remoteInstances.relay.toast.linkCopied":`Pairing link copied`,"settings.remoteInstances.sidebar.phase.ready":`Ready`,"settings.remoteInstances.sidebar.phase.error":`Error`,"settings.remoteInstances.sidebar.phase.reconnect":`Reconnect`,"settings.remoteInstances.sidebar.phase.installing":`Installing`,"settings.remoteInstances.sidebar.phase.updating":`Updating`,"settings.remoteInstances.sidebar.phase.forwarding":`Forwarding`,"settings.remoteInstances.sidebar.phase.starting":`Starting`,"settings.remoteInstances.sidebar.phase.connecting":`Connecting`,"settings.remoteInstances.sidebar.phase.idle":`Idle`,"settings.remoteInstances.page.section.instance":`Instance`,"settings.remoteInstances.page.section.instanceDescription":`Choose the SSH command and a display name for this connection.`,"settings.remoteInstances.page.field.mode":`Mode`,"settings.remoteInstances.page.field.modeHint":`Choose whether OpenChamber should start the server for you, or connect to one that is already running.`,"settings.remoteInstances.page.field.modePlaceholder":`Select mode`,"settings.remoteInstances.page.field.modeManaged":`Start it for me`,"settings.remoteInstances.page.field.modeExternal":`Already running`,"settings.remoteInstances.page.field.preferredRemotePort":`Preferred remote port`,"settings.remoteInstances.page.field.preferredRemotePortHint":`Port to use on the remote machine. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.keepServerRunning":`Keep server running`,"settings.remoteInstances.page.field.keepServerRunningHint":`Keep OpenChamber running on the remote machine after you disconnect.`,"settings.remoteInstances.page.field.bindHost":`Bind host`,"settings.remoteInstances.page.field.bindHostHint":`Where the local connection should listen. Use 127.0.0.1 or localhost unless you need LAN access.`,"settings.remoteInstances.page.field.preferredLocalPort":`Preferred local port`,"settings.remoteInstances.page.field.preferredLocalPortHint":`Local port to open for this connection. Leave empty to choose one automatically.`,"settings.remoteInstances.page.field.forwardType":`Forward type`,"settings.remoteInstances.page.field.localListen":`Local listen`,"settings.remoteInstances.page.field.localTarget":`Local target`,"settings.remoteInstances.page.field.remoteListen":`Remote listen`,"settings.remoteInstances.page.field.remoteTarget":`Remote target`,"settings.remoteInstances.page.field.localHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.remoteHostPlaceholder":`127.0.0.1`,"settings.remoteInstances.page.field.auto":`Auto`,"settings.remoteInstances.page.confirm.bindAllInterfaces":`Binding to 0.0.0.0 exposes forwarded ports to your local network. Continue?`,"settings.remoteInstances.page.preview.localSocks5":`(local SOCKS5)`,"settings.remoteInstances.page.preview.local":`(local)`,"settings.remoteInstances.page.preview.remote":`(remote)`,"settings.remoteInstances.page.toast.openLocalEndpointFailed":`Failed to open local address`,"settings.remoteInstances.page.toast.localUrlCopied":`Local URL copied`,"settings.remoteInstances.page.actions.copyLocalUrl":`Copy local URL`,"settings.remoteInstances.page.actions.open":`Open`,"settings.remoteInstances.page.logsDialog.selectedInstanceFallback":`Selected instance`,"settings.remoteInstances.page.patternDialog.descriptionWithHost":`{host} requires a concrete destination.`,"settings.remoteInstances.page.patternDialog.description":`Enter destination.`,"settings.common.actions.cancel":`Cancel`,"settings.common.actions.create":`Create`,"settings.common.actions.delete":`Delete`,"settings.common.actions.reset":`Reset`,"settings.common.actions.rename":`Rename`,"settings.common.actions.duplicate":`Duplicate`,"settings.common.actions.import":`Import`,"settings.common.actions.copyAll":`Copy all`,"settings.common.actions.clear":`Clear`,"settings.common.actions.saving":`Saving...`,"settings.common.actions.saveChanges":`Save Changes`,"settings.common.scope.global":`Global`,"settings.common.scope.project":`Project`,"settings.common.field.description":`Description`,"settings.common.badge.new":`New`,"settings.common.badge.modified":`Modified`,"settings.common.permission.allow":`Allow`,"settings.common.permission.ask":`Ask`,"settings.common.permission.deny":`Deny`,"settings.common.state.comingSoon":`Coming soon...`,"settings.projects.actions.title":`Actions`,"settings.projects.actions.description":`Per-project commands shown in header next to project name.`,"settings.projects.actions.validation.fillNameAndCommand":`Fill action name and command before saving.`,"settings.projects.actions.state.loading":`Loading...`,"settings.projects.actions.state.empty":`No actions configured yet.`,"settings.projects.actions.state.untitled":`Untitled action`,"settings.projects.actions.state.noDesktopSshForwards":`No enabled local SSH forwards available.`,"settings.projects.actions.field.selectIconAria":`Select icon`,"settings.projects.actions.field.iconAria":`Icon {icon}`,"settings.projects.actions.field.actionNamePlaceholder":`Action name`,"settings.projects.actions.field.command":`Command`,"settings.projects.actions.field.commandPlaceholder":`e.g. bun run lint`,"settings.projects.actions.field.autoOpenUrl":`Auto-open URL`,"settings.projects.actions.field.autoOpenUrlForAria":`Auto-open URL for {title}`,"settings.projects.actions.field.autoOpenUrlDescription":`Open URL from output or custom URL below`,"settings.projects.actions.field.overrideUrlPlaceholder":`Override URL (optional)`,"settings.projects.actions.field.overrideUrlTooltip":`If this field is filled, custom URL is used. If empty, app opens best URL from output.`,"settings.projects.actions.field.desktopSshForward":`Desktop SSH forward`,"settings.projects.actions.field.useOutputManualUrl":`Use output/manual URL`,"settings.projects.actions.actions.add":`Add action`,"settings.projects.actions.actions.save":`Save Actions`,"settings.projects.actions.toast.saveFailed":`Failed to save actions`,"settings.projects.actions.toast.saved":`Project actions saved`,"settings.openchamber.about.title":`About OpenChamber`,"settings.openchamber.about.field.version":`Version`,"settings.openchamber.about.field.clientVersion":`Client`,"settings.openchamber.about.field.instanceOpenChamberVersion":`OpenChamber`,"settings.openchamber.about.field.instanceOpenCodeVersion":`OpenCode`,"settings.openchamber.about.field.openCodeVersion":`OpenCode version`,"settings.openchamber.about.state.checking":`Checking...`,"settings.openchamber.about.state.upToDate":`Up to date`,"settings.openchamber.about.state.unknown":`unknown`,"settings.openchamber.about.actions.checkUpdates":`Check updates`,"settings.openchamber.about.actions.update":`Update`,"settings.openchamber.about.actions.updateToVersion":`Update to {version}`,"settings.openchamber.about.actions.checkForUpdates":`Check for updates`,"settings.openchamber.about.toast.latestVersion":`You are on the latest version`,"settings.openchamber.about.toast.checkFailed":`Could not check for updates`,"settings.openchamber.about.diagnostics.label":`Diagnostics log`,"settings.openchamber.about.diagnostics.description":`Export local diagnostic feats for display and sync issues. No message bodies or tokens are included.`,"settings.openchamber.about.diagnostics.export":`Export log`,"settings.openchamber.about.diagnostics.exporting":`Exporting…`,"settings.openchamber.about.diagnostics.enable":`Record diagnostic feats`,"settings.openchamber.about.diagnostics.enableHint":`Available in beta builds. Records transcript sync and display lifecycle facts on this device.`,"settings.openchamber.about.diagnostics.toast.exported":`Diagnostics log exported`,"settings.openchamber.about.diagnostics.toast.failed":`Could not export diagnostics log`,"settings.openchamber.about.diagnostics.toast.empty":`Diagnostics log exported. No events were recorded yet.`,"settings.agents.sidebar.title":`Agents`,"settings.agents.sidebar.total":`Total {count}`,"settings.agents.sidebar.empty.title":`No agents configured`,"settings.agents.sidebar.empty.description":`Use the + button above to create one`,"settings.agents.sidebar.section.builtIn":`Built-in Agents`,"settings.agents.sidebar.section.custom":`Custom Agents`,"settings.agents.sidebar.badge.system":`system`,"settings.agents.sidebar.dialog.deleteTitle":`Delete Agent`,"settings.agents.sidebar.dialog.resetTitle":`Reset Agent`,"settings.agents.sidebar.dialog.deleteDescription":`Are you sure you want to delete agent "{name}"?`,"settings.agents.sidebar.dialog.resetDescription":`Are you sure you want to reset agent "{name}" to its default configuration?`,"settings.agents.sidebar.renameDialog.title":`Rename Agent`,"settings.agents.sidebar.renameDialog.description":`Enter a new name for the agent "@{name}"`,"settings.agents.sidebar.renameDialog.placeholder":`New agent name...`,"settings.agents.sidebar.toast.builtInCannotDelete":`Built-in agents cannot be deleted`,"settings.agents.sidebar.toast.agentDeleted":`Agent "{name}" deleted successfully`,"settings.agents.sidebar.toast.agentReset":`Agent "{name}" reset to default`,"settings.agents.sidebar.toast.deleteFailed":`Failed to delete agent`,"settings.agents.sidebar.toast.definitionNotFound":`Agent definition not found. Nothing was changed.`,"settings.agents.sidebar.toast.resetFailed":`Failed to reset agent`,"settings.agents.sidebar.toast.agentNameRequired":`Agent name is required`,"settings.agents.sidebar.toast.agentExists":`An agent with this name already exists`,"settings.agents.sidebar.toast.removeOldAfterRenameFailed":`Failed to remove old agent after rename`,"settings.agents.sidebar.toast.renameFailed":`Failed to rename agent`,"settings.agents.sidebar.toast.agentRenamed":`Agent renamed to "{name}"`,"settings.agents.page.toast.permissionNameRequired":`Permission name is required`,"settings.agents.page.toast.created":`Agent created successfully`,"settings.agents.page.toast.updated":`Agent updated successfully`,"settings.agents.page.toast.createFailed":`Failed to create agent`,"settings.agents.page.toast.updateFailed":`Failed to update agent`,"settings.agents.page.toast.saveUnexpectedError":`An error occurred while saving`,"settings.agents.page.toast.savedManualRestart":`Saved to disk. Restart your connected OpenCode server to apply the changes.`,"settings.agents.page.empty.title":`Select an agent from the sidebar`,"settings.agents.page.empty.description":`Or create a new one`,"settings.agents.page.title.new":`New Agent`,"settings.agents.page.subtitle.new":`Configure a new assistant persona`,"settings.agents.page.subtitle.edit":`Edit agent settings`,"settings.agents.page.section.identityRole":`Identity & Role`,"settings.agents.page.section.modelParameters":`Model & Parameters`,"settings.agents.page.section.systemPrompt":`System Prompt`,"settings.agents.page.section.toolPermissions":`Tool Permissions`,"settings.agents.page.field.agentName":`Agent Name`,"settings.agents.page.field.agentNamePlaceholder":`agent-name`,"settings.agents.page.field.scopePlaceholder":`Scope`,"settings.agents.page.field.descriptionPlaceholder":`What does this agent do?`,"settings.agents.page.field.mode":`Mode`,"settings.agents.page.field.modeTooltip":`Primary vs Subagent visibility`,"settings.agents.page.field.overrideModel":`Override Model`,"settings.agents.page.field.temperature":`Temperature`,"settings.agents.page.field.temperatureTooltip":`Controls randomness. Higher = creative, Lower = focused.`,"settings.agents.page.field.temperatureRange":`0.0 to 2.0`,"settings.agents.page.field.clearTemperatureAria":`Clear temperature override`,"settings.agents.page.field.topP":`Top P`,"settings.agents.page.field.topPTooltip":`Nucleus sampling diversity. Lower = likely tokens only.`,"settings.agents.page.field.topPRange":`0.0 to 1.0`,"settings.agents.page.field.clearTopPAria":`Clear top p override`,"settings.agents.page.field.variant":`Thinking Variant`,"settings.agents.page.field.variantTooltip":`Controls the thinking/reasoning depth for this agent. Maps to provider-specific parameters (e.g. Anthropic variant, OpenAI reasoning effort).`,"settings.agents.page.field.variantHint":`e.g. high, max, low`,"settings.agents.page.field.variantPlaceholder":`default`,"settings.agents.page.field.systemPromptPlaceholder":`You are an expert coding assistant...`,"settings.agents.page.mode.primary":`Primary`,"settings.agents.page.mode.subagent":`Subagent`,"settings.agents.page.mode.all":`All`,"settings.agents.page.permissions.defaultLabel":`Default`,"settings.agents.page.permissions.hideEditor":`Hide Editor`,"settings.agents.page.permissions.advancedEditor":`Advanced Editor`,"settings.agents.page.permissions.globalSummary":`Global: {summary}`,"settings.agents.page.permissions.rulesSummary":`Rules: {summary}`,"settings.agents.page.permissions.globalDefault":`Global Default`,"settings.agents.page.permissions.pattern":`Pattern`,"settings.agents.page.permissions.addCustomRule":`Add Custom Rule`,"settings.agents.page.permissions.permissionPlaceholder":`Permission...`,"settings.agents.page.permissions.patternPlaceholder":`Pattern (e.g. *)`,"settings.page.behavior.title":`Behavior`,"settings.behavior.page.title":`Behavior`,"settings.behavior.page.warning.title":`Global rules are combined with project rules`,"settings.behavior.page.warning.description":`Changes made here update {path}. OpenCode also includes any project-level AGENTS.md rules when they exist.`,"settings.behavior.page.section.systemPrompt":`Global AGENTS.md`,"settings.behavior.page.field.systemPromptPlaceholder":`You are a helpful AI assistant...
2
2
 
3
3
  Use this space to define absolute rules for how the AI should behave across all sessions and providers.`,"settings.behavior.page.section.responseStyle":`Response style`,"settings.behavior.page.responseStyle.tooltip":`When enabled, these instructions guide how the assistant responds in each new conversation. They are sent with your first message and do not change your global AGENTS.md rules.`,"settings.behavior.page.responseStyle.enableAria":`Enable response style instructions`,"settings.behavior.page.responseStyle.enable":`Add response style instructions to new conversations`,"settings.behavior.page.responseStyle.preset":`Preset`,"settings.behavior.page.responseStyle.option.concise":`Concise`,"settings.behavior.page.responseStyle.option.detailed":`Detailed`,"settings.behavior.page.responseStyle.option.mentor":`Mentor`,"settings.behavior.page.responseStyle.option.pushback":`Pushback`,"settings.behavior.page.responseStyle.option.noFiller":`No filler`,"settings.behavior.page.responseStyle.option.matchEnergy":`Match my energy`,"settings.behavior.page.responseStyle.option.warmPeer":`Warm peer`,"settings.behavior.page.responseStyle.option.custom":`Custom`,"settings.behavior.page.responseStyle.customPlaceholder":`Write the instruction to add to the first message...`,"settings.behavior.page.toast.saved":`Behavior saved successfully`,"settings.behavior.page.toast.saveFailed":`Failed to save behavior`,"settings.commands.sidebar.title":`Commands`,"settings.commands.sidebar.total":`Total {count}`,"settings.commands.sidebar.empty.title":`No commands configured`,"settings.commands.sidebar.empty.description":`Use the + button above to create one`,"settings.commands.sidebar.section.builtIn":`Built-in Commands`,"settings.commands.sidebar.section.custom":`Custom Commands`,"settings.commands.sidebar.dialog.deleteTitle":`Delete Command`,"settings.commands.sidebar.dialog.resetTitle":`Reset Command`,"settings.commands.sidebar.dialog.deleteDescription":`Are you sure you want to delete command "{name}"?`,"settings.commands.sidebar.dialog.resetDescription":`Are you sure you want to reset command "{name}" to its default configuration?`,"settings.commands.sidebar.renameDialog.title":`Rename Command`,"settings.commands.sidebar.renameDialog.description":`Enter a new name for the command "/{name}"`,"settings.commands.sidebar.renameDialog.placeholder":`New command name...`,"settings.commands.sidebar.toast.builtInCannotDelete":`Built-in commands cannot be deleted`,"settings.commands.sidebar.toast.commandDeleted":`Command "{name}" deleted successfully`,"settings.commands.sidebar.toast.commandReset":`Command "{name}" reset to default`,"settings.commands.sidebar.toast.deleteFailed":`Failed to delete command`,"settings.commands.sidebar.toast.resetFailed":`Failed to reset command`,"settings.commands.sidebar.toast.commandNameRequired":`Command name is required`,"settings.commands.sidebar.toast.commandExists":`A command with this name already exists`,"settings.commands.sidebar.toast.removeOldAfterRenameFailed":`Failed to remove old command after rename`,"settings.commands.sidebar.toast.renameFailed":`Failed to rename command`,"settings.commands.page.toast.templateRequired":`Command template is required`,"settings.commands.page.toast.created":`Command created successfully`,"settings.commands.page.toast.updated":`Command updated successfully`,"settings.commands.page.toast.createFailed":`Failed to create command`,"settings.commands.page.toast.updateFailed":`Failed to update command`,"settings.commands.page.toast.saveUnexpectedError":`An error occurred while saving`,"settings.commands.page.empty.title":`Select a command from the sidebar`,"settings.commands.page.empty.description":`Or create a new one`,"settings.commands.page.title.new":`New Command`,"settings.commands.page.subtitle.new":`Configure a new slash command`,"settings.commands.page.subtitle.edit":`Edit command settings`,"settings.commands.page.section.identity":`Identity`,"settings.commands.page.section.executionContext":`Execution Context`,"settings.commands.page.section.template":`Command Template`,"settings.commands.page.field.commandName":`Command Name`,"settings.commands.page.field.commandNamePlaceholder":`command-name`,"settings.commands.page.field.descriptionPlaceholder":`What does this command do?`,"settings.commands.page.field.overrideAgent":`Override Agent`,"settings.commands.page.field.templatePlaceholder":`Your command template here...
4
4
 
5
5
  Use $ARGUMENTS to reference user input.
6
6
  Use !\`shell command\` to inject shell output.
7
- Use @filename to include file contents.`,"settings.commands.page.templateHint.userInput":`user input`,"settings.commands.page.templateHint.shellOutput":`shell output`,"settings.commands.page.templateHint.fileContents":`file contents`,"settings.commands.agentSelector.title":`Select agent`,"settings.commands.agentSelector.notSelected":`Not selected`,"settings.commands.agentSelector.selectAgentPlaceholder":`Select agent...`,"settings.gitIdentities.page.section.title":`Identities`,"settings.gitIdentities.page.empty.title":`No identities configured`,"settings.gitIdentities.page.empty.description":`Create one to manage Git author settings per project`,"settings.gitIdentities.page.discoveredCredentials.title":`Found in ~/.git-credentials`,"settings.gitIdentities.page.badge.default":`Default`,"settings.gitIdentities.page.actions.setAsDefault":`Set as default`,"settings.gitIdentities.page.actions.unsetDefault":`Unset default`,"settings.gitIdentities.page.actions.import":`Import`,"settings.gitIdentities.page.toast.updateDefaultFailed":`Failed to update default identity`,"settings.gitIdentities.page.toast.defaultUpdated":`Default identity updated`,"settings.gitIdentities.page.toast.defaultUnset":`Default identity unset`,"settings.gitIdentities.page.toast.profileDeleted":`Profile "{name}" deleted`,"settings.gitIdentities.page.toast.deleteProfileFailed":`Failed to delete profile`,"settings.gitIdentities.page.deleteDialog.title":`Delete Profile`,"settings.gitIdentities.page.deleteDialog.description":`Are you sure you want to delete "{name}"?`,"settings.gitIdentities.editor.title.importCredential":`Import Credential`,"settings.gitIdentities.editor.title.newIdentity":`New Identity`,"settings.gitIdentities.editor.title.globalIdentity":`Global Identity`,"settings.gitIdentities.editor.title.editIdentity":`Edit Identity`,"settings.gitIdentities.editor.description.globalReadOnly":`System-wide Git identity (read-only)`,"settings.gitIdentities.editor.description.newProfile":`Create a new Git identity profile`,"settings.gitIdentities.editor.description.editProfile":`Edit identity profile settings`,"settings.gitIdentities.editor.section.commitSigning":`Commit signing`,"settings.gitIdentities.editor.field.profileName":`Profile Name`,"settings.gitIdentities.editor.field.profileNamePlaceholder":`Work Profile, Personal, etc.`,"settings.gitIdentities.editor.field.color":`Color`,"settings.gitIdentities.editor.field.icon":`Icon`,"settings.gitIdentities.editor.field.userName":`User Name`,"settings.gitIdentities.editor.field.userNameTooltip":`The name that will appear in Git commit messages.`,"settings.gitIdentities.editor.field.userNamePlaceholder":`John Doe`,"settings.gitIdentities.editor.field.emailAddress":`Email Address`,"settings.gitIdentities.editor.field.emailAddressTooltip":`Should match your email in GitHub/GitLab for proper attribution.`,"settings.gitIdentities.editor.field.emailAddressPlaceholder":`john@example.com`,"settings.gitIdentities.editor.field.authMethod":`Auth Method`,"settings.gitIdentities.editor.field.authToken":`Token`,"settings.gitIdentities.editor.field.sshKeyPath":`SSH Key Path`,"settings.gitIdentities.editor.field.sshKeyPathTooltip":`Optional path to private key. e.g. ~/.ssh/id_ed25519`,"settings.gitIdentities.editor.field.sshKeyPathPlaceholder":`~/.ssh/id_ed25519`,"settings.gitIdentities.editor.field.signCommits":`Sign commits with this identity`,"settings.gitIdentities.editor.field.signingKey":`Signing key`,"settings.gitIdentities.editor.field.signingKeyPlaceholder":`~/.ssh/id_ed25519.pub`,"settings.gitIdentities.editor.field.host":`Host`,"settings.gitIdentities.editor.field.hostTooltip":`Token will be read from ~/.git-credentials for this host.`,"settings.gitIdentities.editor.field.hostPlaceholder":`github.com`,"settings.gitIdentities.editor.actions.close":`Close`,"settings.gitIdentities.editor.actions.create":`Create`,"settings.gitIdentities.editor.actions.save":`Save`,"settings.gitIdentities.editor.toast.userNameEmailRequired":`User name and email are required`,"settings.gitIdentities.editor.toast.hostRequiredForToken":`Host is required for token-based authentication`,"settings.gitIdentities.editor.toast.signingKeyRequired":`Signing key is required when commit signing is enabled`,"settings.gitIdentities.editor.toast.profileCreated":`Profile created`,"settings.gitIdentities.editor.toast.profileUpdated":`Profile updated`,"settings.gitIdentities.editor.toast.createProfileFailed":`Failed to create profile`,"settings.gitIdentities.editor.toast.updateProfileFailed":`Failed to update profile`,"settings.gitIdentities.editor.toast.saveUnexpectedError":`An error occurred while saving`,"settings.gitIdentities.editor.toast.profileDeleted":`Profile deleted`,"settings.gitIdentities.editor.toast.deleteProfileFailed":`Failed to delete profile`,"settings.gitIdentities.editor.toast.deleteUnexpectedError":`An error occurred while deleting`,"settings.skills.sidebar.title":`Skills`,"settings.skills.sidebar.total":`Total {count}`,"settings.skills.sidebar.section.project":`Project Skills`,"settings.skills.sidebar.section.user":`User Skills`,"settings.skills.sidebar.empty.title":`No skills configured`,"settings.skills.sidebar.empty.description":`Use the + button above to create one`,"settings.skills.sidebar.badge.claude":`claude`,"settings.skills.sidebar.badge.agents":`agents`,"settings.skills.sidebar.badge.opencode":`opencode`,"settings.skills.sidebar.toast.skillDeleted":`Skill "{name}" deleted successfully`,"settings.skills.sidebar.toast.deleteSkillFailed":`Failed to delete skill`,"settings.skills.sidebar.toast.duplicateLoadFailed":`Failed to load skill details for duplication`,"settings.skills.sidebar.toast.renameLoadFailed":`Failed to load skill details`,"settings.skills.sidebar.toast.removeOldAfterRenameFailed":`Failed to remove old skill after rename`,"settings.skills.sidebar.toast.renameFailed":`Failed to rename skill`,"settings.skills.sidebar.deleteDialog.title":`Delete Skill`,"settings.skills.sidebar.deleteDialog.description":`Are you sure you want to delete skill "{name}"?`,"settings.skills.sidebar.renameDialog.title":`Rename Skill`,"settings.skills.sidebar.renameDialog.description":`Enter a new name for the skill "{name}"`,"settings.skills.sidebar.renameDialog.placeholder":`New skill name...`,"settings.skills.page.title.newSkill":`New Skill`,"settings.skills.page.subtitle.newSkill":`Configure a new skill`,"settings.skills.page.subtitle.skillLocation":`{location} skill`,"settings.skills.page.section.basicInformation":`Basic Information`,"settings.skills.page.section.instructions":`Instructions`,"settings.skills.page.section.supportingFiles":`Supporting Files`,"settings.skills.page.field.skillNameLocation":`Skill Name & Location`,"settings.skills.page.field.skillNameHint":`Lowercase, numbers, hyphens`,"settings.skills.page.field.skillNamePlaceholder":`skill-name`,"settings.skills.page.field.descriptionHint":`The agent uses this to decide when to load the skill`,"settings.skills.page.field.descriptionPlaceholder":`Brief description of what this skill does...`,"settings.skills.page.field.instructionsPlaceholder":`Step-by-step instructions, guidelines, or reference content...`,"settings.skills.page.badge.claudeCompatible":`Claude-compatible`,"settings.skills.page.badge.pending":`pending`,"settings.skills.page.actions.addFile":`Add File`,"settings.skills.page.actions.createSkill":`Create Skill`,"settings.skills.page.actions.createFile":`Create File`,"settings.skills.page.supportingFiles.empty":`No supporting files. Use "Add File" to include reference materials.`,"settings.skills.page.loading.details":`Loading skill details...`,"settings.skills.page.loading.fileContent":`Loading file content...`,"settings.skills.page.empty.title":`Select a skill from the sidebar`,"settings.skills.page.empty.description":`Or create a new one`,"settings.skills.page.deleteFileDialog.title":`Delete Supporting File`,"settings.skills.page.deleteFileDialog.description":`Are you sure you want to delete "{path}"?`,"settings.skills.page.fileDialog.titleEdit":`Edit Supporting File`,"settings.skills.page.fileDialog.titleAdd":`Add Supporting File`,"settings.skills.page.fileDialog.descriptionEdit":`Modify the file content`,"settings.skills.page.fileDialog.descriptionAdd":`Create a new file in the skill directory`,"settings.skills.page.fileDialog.field.filePath":`File Path`,"settings.skills.page.fileDialog.field.filePathPlaceholder":`example.md or docs/reference.txt`,"settings.skills.page.fileDialog.field.filePathHint":`Relative path within the skill directory. Subdirectories will be created automatically.`,"settings.skills.page.fileDialog.field.content":`Content`,"settings.skills.page.fileDialog.field.contentPlaceholder":`File content...`,"settings.skills.page.toast.skillNameRequired":`Skill name is required`,"settings.skills.page.toast.invalidSkillName":`Skill name must be 1-64 lowercase alphanumeric characters with hyphens, cannot start or end with hyphen`,"settings.skills.page.toast.descriptionRequired":`Description is required`,"settings.skills.page.toast.skillExists":`A skill with this name already exists`,"settings.skills.page.toast.skillCreated":`Skill created successfully`,"settings.skills.page.toast.skillUpdated":`Skill updated successfully`,"settings.skills.page.toast.createSkillFailed":`Failed to create skill`,"settings.skills.page.toast.updateSkillFailed":`Failed to update skill`,"settings.skills.page.toast.saveUnexpectedError":`An error occurred while saving`,"settings.skills.page.toast.loadFileContentFailed":`Failed to load file content`,"settings.skills.page.toast.fileNameRequired":`File name is required`,"settings.skills.page.toast.fileExists":`A file with this name already exists`,"settings.skills.page.toast.noSkillSelected":`No skill selected`,"settings.skills.page.toast.fileAdded":`File "{path}" added`,"settings.skills.page.toast.fileCreated":`File "{path}" created`,"settings.skills.page.toast.fileUpdated":`File "{path}" updated`,"settings.skills.page.toast.fileRemoved":`File "{path}" removed`,"settings.skills.page.toast.fileDeleted":`File "{path}" deleted`,"settings.skills.page.toast.createFileFailed":`Failed to create file`,"settings.skills.page.toast.updateFileFailed":`Failed to update file`,"settings.skills.page.toast.deleteFileFailed":`Failed to delete file`,"settings.skills.location.option.userOpencode.label":`User / OpenCode`,"settings.skills.location.option.userOpencode.description":`Global OpenCode config location`,"settings.skills.location.option.projectOpencode.label":`Project / OpenCode`,"settings.skills.location.option.projectOpencode.description":`Current project .opencode location`,"settings.skills.location.option.userClaude.label":`User / Claude`,"settings.skills.location.option.userClaude.description":`Global Claude skills location`,"settings.skills.location.option.projectClaude.label":`Project / Claude`,"settings.skills.location.option.projectClaude.description":`Current project .claude location`,"settings.skills.location.option.userAgents.label":`User / Agents`,"settings.skills.location.option.userAgents.description":`Global .agents compatibility location`,"settings.skills.location.option.projectAgents.label":`Project / Agents`,"settings.skills.location.option.projectAgents.description":`Current project .agents compatibility location`,"settings.skills.catalog.shared.field.repository":`Repository`,"settings.skills.catalog.shared.field.repositoryPlaceholder":`owner/repo or git@github.com:owner/repo.git`,"settings.skills.catalog.shared.field.optionalSubpath":`Optional subpath`,"settings.skills.catalog.shared.field.subpathPlaceholder":`e.g. skills`,"settings.skills.catalog.shared.field.targetLocation":`Target location`,"settings.skills.catalog.shared.field.project":`Project`,"settings.skills.catalog.shared.field.noProjects":`No projects available`,"settings.skills.catalog.shared.field.chooseProjectPlaceholder":`Choose project`,"settings.skills.catalog.shared.field.searchSkillsPlaceholder":`Search skills…`,"settings.skills.catalog.shared.toast.repositoryRequired":`Repository source is required`,"settings.skills.catalog.shared.toast.privateRepoNotSupportedVsCode":`Private repositories are not supported in VS Code yet`,"settings.skills.catalog.shared.toast.foundSkills":`Found {count} skill(s)`,"settings.skills.catalog.shared.noDescription":`No description provided`,"settings.skills.catalog.shared.actions.scan":`Scan`,"settings.skills.catalog.shared.actions.scanning":`Scanning...`,"settings.skills.catalog.shared.actions.install":`Install`,"settings.skills.catalog.shared.actions.installing":`Installing...`,"settings.skills.catalog.shared.auth.title":`Authentication required`,"settings.skills.catalog.shared.auth.description":`Select a Git identity (SSH key)`,"settings.skills.catalog.shared.auth.chooseIdentity":`Choose identity`,"settings.skills.catalog.shared.auth.footerHint":`Configure identities in Settings - Git Identities.`,"settings.skills.catalog.shared.auth.footerHintArrow":`Configure identities in Settings → Git Identities.`,"settings.skills.catalog.conflicts.title":`Skills already exist`,"settings.skills.catalog.conflicts.description":`Some selected skills are already installed in this scope. Choose whether to skip or overwrite them.`,"settings.skills.catalog.conflicts.count":`{count} conflict(s)`,"settings.skills.catalog.conflicts.installedIn":`Installed in {scope} / {source}`,"settings.skills.catalog.conflicts.scope.user":`user`,"settings.skills.catalog.conflicts.scope.project":`project`,"settings.skills.catalog.conflicts.source.opencode":`opencode`,"settings.skills.catalog.conflicts.source.agents":`agents`,"settings.skills.catalog.conflicts.decision.skip":`Skip`,"settings.skills.catalog.conflicts.decision.overwrite":`Overwrite`,"settings.skills.catalog.conflicts.actions.skipAll":`Skip all`,"settings.skills.catalog.conflicts.actions.overwriteAll":`Overwrite all`,"settings.skills.catalog.conflicts.actions.continue":`Continue`,"settings.skills.catalog.installSkill.title":`Install skill`,"settings.skills.catalog.installSkill.descriptionPrefix":`Install`,"settings.skills.catalog.installSkill.descriptionSuffix":`into one of four target locations.`,"settings.skills.catalog.installSkill.field.destination":`Destination`,"settings.skills.catalog.installSkill.field.project":`Project`,"settings.skills.catalog.installSkill.field.noProjects":`No projects available`,"settings.skills.catalog.installSkill.field.chooseProjectPlaceholder":`Choose project`,"settings.skills.catalog.installSkill.actions.install":`Install`,"settings.skills.catalog.installSkill.actions.installing":`Installing...`,"settings.skills.catalog.installSkill.toast.installed":`Skill installed successfully`,"settings.skills.catalog.installSkill.toast.authRequired":`Authentication required`,"settings.skills.catalog.installSkill.toast.installFailed":`Failed to install skill`,"settings.skills.catalog.add.title":`Add skills catalog`,"settings.skills.catalog.add.descriptionPrefix":`Add a Git repository as a new catalog source. OpenChamber will scan it for folders containing`,"settings.skills.catalog.add.descriptionSuffix":`.`,"settings.skills.catalog.add.field.catalogName":`Catalog name`,"settings.skills.catalog.add.field.catalogNamePlaceholder":`e.g. Team Skills`,"settings.skills.catalog.add.field.repository":`Repository`,"settings.skills.catalog.add.field.optionalSubpath":`Optional subpath`,"settings.skills.catalog.add.field.repositoryHint":`Public repos work everywhere. Private repos require SSH identity (Desktop/Web only).`,"settings.skills.catalog.add.scanResult":`Scan result: {count} skill(s) found`,"settings.skills.catalog.add.duplicateMessage":`This catalog is already added.`,"settings.skills.catalog.add.actions.addCatalog":`Add catalog`,"settings.skills.catalog.add.toast.repositoryRequired":`Repository source is required`,"settings.skills.catalog.add.toast.authenticationRequiredScan":`Authentication required. Select a Git identity and scan again.`,"settings.skills.catalog.add.toast.scanFailed":`Failed to scan repository`,"settings.skills.catalog.add.toast.noSkillsFound":`No skills found in this repository`,"settings.skills.catalog.add.toast.catalogNameRequired":`Catalog name is required`,"settings.skills.catalog.add.toast.scanBeforeAdd":`Scan the repository before adding this catalog`,"settings.skills.catalog.add.toast.catalogAlreadyExists":`This catalog already exists`,"settings.skills.catalog.add.toast.catalogAdded":`Catalog added`,"settings.skills.catalog.add.toast.saveFailed":`Failed to save catalog`,"settings.skills.catalog.installFromRepo.title":`Install from Git repository`,"settings.skills.catalog.installFromRepo.descriptionPrefix":`Scan a repository for folders containing`,"settings.skills.catalog.installFromRepo.descriptionSuffix":`, then install selected skills.`,"settings.skills.catalog.installFromRepo.repositoryHintPrefix":`For GitHub shorthand, you can add a subpath like`,"settings.skills.catalog.installFromRepo.authDescription":`Select a Git identity (SSH key) that can access this repository.`,"settings.skills.catalog.installFromRepo.empty.noScanResultsTitle":`No scan results yet`,"settings.skills.catalog.installFromRepo.empty.noScanResultsDescription":`Scan a repository to discover skills`,"settings.skills.catalog.installFromRepo.actions.selectAll":`Select all`,"settings.skills.catalog.installFromRepo.actions.selectNone":`Select none`,"settings.skills.catalog.installFromRepo.actions.installSelected":`Install selected`,"settings.skills.catalog.installFromRepo.badge.installed":`Installed ({scope}/{source})`,"settings.skills.catalog.installFromRepo.selectedCount":`Selected: {selected} / {total}`,"settings.skills.catalog.installFromRepo.toast.authenticationRequiredScan":`Authentication required. Select a Git identity and try scanning again.`,"settings.skills.catalog.installFromRepo.toast.authenticationRequiredInstall":`Authentication required. Select a Git identity and try installing again.`,"settings.skills.catalog.installFromRepo.toast.scanFailed":`Failed to scan repository`,"settings.skills.catalog.installFromRepo.toast.selectAtLeastOne":`Select at least one skill to install`,"settings.skills.catalog.installFromRepo.toast.installedCount":`Installed {count} skill(s)`,"settings.skills.catalog.installFromRepo.toast.installCompleted":`Installation completed`,"settings.skills.catalog.installFromRepo.toast.installFailed":`Failed to install skills`,"settings.skills.catalog.page.mode.manual":`Manual`,"settings.skills.catalog.page.mode.external":`External`,"settings.skills.catalog.page.title":`Skills Catalog`,"settings.skills.catalog.page.section.sourceRepository":`Source Repository`,"settings.skills.catalog.page.field.selectSourcePlaceholder":`Select source`,"settings.skills.catalog.page.actions.refreshTitle":`Refresh`,"settings.skills.catalog.page.actions.removeCatalogTitle":`Remove Catalog`,"settings.skills.catalog.page.actions.addCatalog":`Add Catalog`,"settings.skills.catalog.page.actions.removeCatalog":`Remove Catalog`,"settings.skills.catalog.page.actions.loadMoreSkills":`Load More Skills`,"settings.skills.catalog.page.loading.catalog":`Loading...`,"settings.skills.catalog.page.loading.skills":`Loading skills...`,"settings.skills.catalog.page.loading.more":`Loading...`,"settings.skills.catalog.page.foundCount":`{count} skill(s) found`,"settings.skills.catalog.page.error.catalogTitle":`Catalog error`,"settings.skills.catalog.page.empty.noSkillsTitle":`No skills found`,"settings.skills.catalog.page.empty.noSkillsDescription":`Try a different search or refresh the catalog`,"settings.skills.catalog.page.badge.installed":`Installed ({scope})`,"settings.skills.catalog.page.badge.notInstallable":`Not installable`,"settings.skills.catalog.page.badge.unknown":`Unknown`,"settings.skills.catalog.page.byOwnerPrefix":`by`,"settings.skills.catalog.page.removeDialog.title":`Remove Catalog`,"settings.skills.catalog.page.removeDialog.description":`Are you sure you want to remove this catalog?`,"settings.openchamber.passkeys.title":`Passkeys`,"settings.openchamber.passkeys.field.currentDevice":`Current device`,"settings.openchamber.passkeys.actions.add":`Add passkey`,"settings.openchamber.passkeys.actions.cancelSetup":`Cancel passkey setup`,"settings.openchamber.passkeys.actions.signOutEverywhere":`Sign out everywhere`,"settings.openchamber.passkeys.actions.signingOut":`Signing out…`,"settings.openchamber.passkeys.actions.removing":`Removing…`,"settings.openchamber.passkeys.state.uiPasswordRequired":`Passkeys are available only when the UI password lock is enabled.`,"settings.openchamber.passkeys.state.loading":`Loading passkeys…`,"settings.openchamber.passkeys.state.noneSaved":`No passkeys saved for this host yet.`,"settings.openchamber.passkeys.item.lastUsed":`Last used {time}`,"settings.openchamber.passkeys.item.added":`Added {time}`,"settings.openchamber.passkeys.time.neverUsed":`Never used`,"settings.openchamber.passkeys.toast.loadFailed":`Could not load passkeys.`,"settings.openchamber.passkeys.toast.enableUiPasswordFirst":`Enable the UI password lock before adding passkeys.`,"settings.openchamber.passkeys.toast.added":`Passkey added`,"settings.openchamber.passkeys.toast.setupCanceled":`Passkey setup canceled`,"settings.openchamber.passkeys.toast.addFailed":`Could not add passkey.`,"settings.openchamber.passkeys.toast.removed":`Passkey removed`,"settings.openchamber.passkeys.toast.removeFailed":`Could not remove passkey.`,"settings.openchamber.passkeys.toast.clearAuthFailed":`Could not clear saved authentication.`,"settings.openchamber.sessionRetention.title":`Session Retention`,"settings.openchamber.sessionRetention.tooltip":`Automatically archive or delete inactive sessions based on last activity. Keeps the 5 most recent sessions.`,"settings.openchamber.sessionRetention.field.enableAutoCleanupAria":`Enable auto-cleanup`,"settings.openchamber.sessionRetention.field.enableAutoCleanup":`Enable Auto-Cleanup`,"settings.openchamber.sessionRetention.field.retentionPeriod":`Retention Period`,"settings.openchamber.sessionRetention.field.retentionPeriodAria":`Retention period in days`,"settings.openchamber.sessionRetention.field.days":`days`,"settings.openchamber.sessionRetention.field.whenSessionsExpire":`When sessions expire`,"settings.openchamber.sessionRetention.actions.resetRetentionAria":`Reset retention period`,"settings.openchamber.sessionRetention.actions.runCleanupNow":`Run cleanup now`,"settings.openchamber.sessionRetention.actions.cleaningUp":`Cleaning up...`,"settings.openchamber.sessionRetention.action.archive":`Archive`,"settings.openchamber.sessionRetention.action.delete":`Delete`,"settings.openchamber.sessionRetention.manualCleanup.title":`Manual Cleanup`,"settings.openchamber.sessionRetention.manualCleanup.eligibleArchiveNow":`Eligible for archiving right now: {count}`,"settings.openchamber.sessionRetention.manualCleanup.eligibleDeleteNow":`Eligible for deletion right now: {count}`,"settings.openchamber.sessionRetention.toast.noneEligibleArchive":`No sessions eligible for archiving`,"settings.openchamber.sessionRetention.toast.noneEligibleDelete":`No sessions eligible for deletion`,"settings.openchamber.sessionRetention.toast.archivedCount":`Archived {count} session(s)`,"settings.openchamber.sessionRetention.toast.deletedCount":`Deleted {count} session(s)`,"settings.openchamber.sessionRetention.toast.failedArchiveCount":`Failed to archive {count} session(s)`,"settings.openchamber.sessionRetention.toast.failedDeleteCount":`Failed to delete {count} session(s)`,"settings.openchamber.archivedSessions.title":`Archived sessions`,"settings.openchamber.archivedSessions.description":`Browse archived sessions by project, restore them, or open a preview.`,"settings.openchamber.archivedSessions.summarySingle":`{count} archived session`,"settings.openchamber.archivedSessions.summaryPlural":`{count} archived sessions`,"settings.openchamber.archivedSessions.actions.manage":`Manage archived sessions`,"settings.openchamber.archivedSessions.actions.view":`View archived`,"settings.openchamber.archivedSessions.actions.preview":`Preview`,"settings.openchamber.archivedSessions.actions.restore":`Restore`,"settings.openchamber.archivedSessions.otherProjects":`Other`,"settings.openchamber.archivedSessions.dialog.title":`Archived sessions`,"settings.openchamber.archivedSessions.dialog.description":`Select a project to view its archived sessions.`,"settings.openchamber.archivedSessions.dialog.loading":`Loading archived sessions…`,"settings.openchamber.archivedSessions.dialog.empty":`No archived sessions yet.`,"settings.openchamber.archivedSessions.dialog.emptyProject":`No archived sessions in this project.`,"settings.openchamber.archivedSessions.dialog.backToProjects":`Back to projects`,"settings.openchamber.archivedSessions.dialog.sessionCountSingle":`{count} session`,"settings.openchamber.archivedSessions.dialog.sessionCountPlural":`{count} sessions`,"settings.openchamber.archivedSessions.toast.loadFailed":`Could not load archived sessions.`,"settings.openchamber.archivedSessions.toast.restored":`Session restored`,"settings.openchamber.archivedSessions.toast.restoreFailed":`Failed to restore session`,"settings.openchamber.desktopNetwork.title":`Desktop Network Access`,"settings.openchamber.desktopNetwork.field.windowControlsPosition":`Window controls position`,"settings.openchamber.desktopNetwork.field.windowControlsPositionDescription":`Choose where minimize, maximize, and close buttons appear. Auto follows your operating system.`,"settings.openchamber.desktopNetwork.field.windowControlsPositionAria":`Window controls position`,"settings.openchamber.desktopNetwork.option.windowControlsAuto":`Auto`,"settings.openchamber.desktopNetwork.option.windowControlsLeft":`Left`,"settings.openchamber.desktopNetwork.option.windowControlsRight":`Right`,"settings.openchamber.desktopNetwork.field.launchAtLoginAria":`Start OpenChamber at login`,"settings.openchamber.desktopNetwork.field.launchAtLogin":`Start OpenChamber when you log in`,"settings.openchamber.desktopNetwork.field.launchAtLoginDescription":`Starts the app in the background without opening a window. Use the desktop status icon to open it.`,"settings.openchamber.desktopNetwork.field.minimizeToTrayAria":`Minimize and close OpenChamber to the system tray`,"settings.openchamber.desktopNetwork.field.minimizeToTray":`Minimize and close to the system tray`,"settings.openchamber.desktopNetwork.field.minimizeToTrayDescription":`Keeps OpenChamber running in the Windows system tray when the main window is minimized or closed.`,"settings.openchamber.desktopNetwork.field.keepAwakeAria":`Keep computer awake while OpenChamber is running`,"settings.openchamber.desktopNetwork.field.keepAwake":`Keep computer awake while OpenChamber is running`,"settings.openchamber.desktopNetwork.field.keepAwakeDescription":`Prevents system sleep so phones can keep reaching this app. The screen can still turn off.`,"settings.openchamber.desktopNetwork.field.allowLanAccessAria":`Allow LAN access to desktop sidecar`,"settings.openchamber.desktopNetwork.field.allowLanAccess":`Let other devices on your local network open this app`,"settings.openchamber.desktopNetwork.field.allowLanAccessDescription":`Restarts the app so phones, tablets, and other computers on your Wi-Fi can open it.`,"settings.openchamber.desktopNetwork.field.warning":`Warning: while enabled, the app is reachable by anyone on the same local network.`,"settings.openchamber.desktopNetwork.field.passwordRequiredWarning":`LAN access requires a Desktop UI Password. Until one is set, the desktop app starts local-only.`,"settings.openchamber.desktopPassword.field.password":`Desktop UI Password`,"settings.openchamber.desktopPassword.field.passwordPlaceholder":`No password required`,"settings.openchamber.desktopPassword.field.passwordDescription":`OpenChamber asks after restart, then when the login session expires: after 12 hours, or 7 days with Trust this device. Leave empty to disable login.`,"settings.openchamber.desktopNetwork.hint.openAfterRestart":`After restart, open from another device: `,"settings.openchamber.desktopNetwork.hint.openNow":`Open from another device: `,"settings.openchamber.desktopNetwork.actions.saveAndRestart":`Save + Restart`,"settings.openchamber.desktopNetwork.error.loadFailed":`Failed to load desktop settings`,"settings.openchamber.desktopNetwork.error.saveFailed":`Failed to save desktop settings`,"settings.openchamber.desktopNetwork.error.savedRestartFailed":`Saved, but failed to restart app`,"settings.openchamber.desktopNetwork.error.launchAtLoginUnsupported":`Launch at login is not supported on this system`,"settings.openchamber.desktopNetwork.error.launchAtLoginSaveFailed":`Failed to update launch at login setting`,"settings.openchamber.desktopNetwork.error.minimizeToTrayUnsupported":`System tray background mode is not supported on this system`,"settings.openchamber.desktopNetwork.error.minimizeToTraySaveFailed":`Failed to update system tray setting`,"settings.openchamber.desktopNetwork.error.keepAwakeUnsupported":`Preventing sleep is not supported on this system`,"settings.openchamber.desktopNetwork.error.keepAwakeSaveFailed":`Failed to update keep awake setting`,"settings.openchamber.opencodeCli.title":`OpenCode CLI`,"settings.openchamber.opencodeCli.tooltipPrefix":`Optional absolute path to the`,"settings.openchamber.opencodeCli.tooltipSuffix":`binary.`,"settings.openchamber.opencodeCli.field.binaryPath":`OpenCode Binary Path`,"settings.openchamber.opencodeCli.field.binaryPathPlaceholder":`/Users/you/.bun/bin/opencode`,"settings.openchamber.opencodeCli.field.showUpdateNotifications":`Show OpenCode update notifications`,"settings.openchamber.opencodeCli.field.showUpdateNotificationsAria":`Show OpenCode update notifications`,"settings.openchamber.opencodeCli.actions.browseAria":`Browse for OpenCode binary path`,"settings.openchamber.opencodeCli.actions.browse":`Browse`,"settings.openchamber.opencodeCli.actions.saveAndReload":`Save + Reload`,"settings.openchamber.opencodeCli.actions.restartingOpenCode":`Restarting OpenCode…`,"settings.openchamber.opencodeCli.dialog.selectBinaryTitle":`Select opencode binary`,"settings.openchamber.opencodeCli.tipPrefix":`Tip: you can also use`,"settings.openchamber.opencodeCli.tipMiddle":`env var, but this setting persists in`,"settings.mcp.sidebar.title":`MCP Servers`,"settings.mcp.sidebar.total":`Total {count}`,"settings.mcp.sidebar.actions.refreshStatusAria":`Refresh MCP status`,"settings.mcp.sidebar.actions.refreshStatusTitle":`Refresh MCP status`,"settings.mcp.sidebar.actions.addServerTitle":`Add MCP server`,"settings.mcp.sidebar.actions.deleting":`Deleting…`,"settings.mcp.sidebar.empty.title":`No MCP servers configured`,"settings.mcp.sidebar.empty.description":`Use the + button above to add one`,"settings.mcp.sidebar.group.projectServers":`Project Servers`,"settings.mcp.sidebar.group.userServers":`User Servers`,"settings.mcp.sidebar.serverType.localTitle":`Local server`,"settings.mcp.sidebar.serverType.remoteTitle":`Remote server`,"settings.mcp.sidebar.deleteDialog.title":`Delete MCP Server`,"settings.mcp.sidebar.deleteDialog.descriptionPrefix":`Are you sure you want to delete "{name}"? This will remove it from`,"settings.mcp.sidebar.toast.deleteFailed":`Failed to delete MCP server`,"settings.mcp.sidebar.toast.serverDeleted":`MCP server "{name}" deleted`,"settings.mcp.sidebar.toast.refreshListIfStale":`Refresh the MCP list if the UI looks stale.`,"settings.plugins.sidebar.title":`Plugins`,"settings.plugins.sidebar.total":`Total {count}`,"settings.plugins.sidebar.actions.addTitle":`Add plugin`,"settings.plugins.sidebar.actions.deleting":`Deleting…`,"settings.plugins.sidebar.empty.title":`No plugins configured`,"settings.plugins.sidebar.empty.description":`Use the + button above to add one`,"settings.plugins.sidebar.group.userEntries":`User config`,"settings.plugins.sidebar.group.userFiles":`User plugin file`,"settings.plugins.sidebar.group.projectEntries":`Project config`,"settings.plugins.sidebar.group.projectFiles":`Project plugin file`,"settings.plugins.sidebar.kind.npm":`npm package`,"settings.plugins.sidebar.kind.path":`Local path`,"settings.plugins.sidebar.kind.file":`Plugin file`,"settings.plugins.sidebar.deleteDialog.title":`Delete plugin`,"settings.plugins.sidebar.deleteDialog.description":`Are you sure you want to delete "{name}"?`,"settings.plugins.sidebar.toast.deleted":`Plugin "{name}" deleted`,"settings.plugins.sidebar.toast.deleteFailed":`Failed to delete plugin`,"settings.plugins.page.empty.select":`Select a plugin to view or edit`,"settings.plugins.page.empty.add":`Or click + to add a new plugin`,"settings.plugins.page.header.entry":`Installed plugin`,"settings.plugins.page.header.file":`Plugin file`,"settings.plugins.page.field.spec":`Spec`,"settings.plugins.page.field.spec.placeholder":`npm-package@version or /absolute/path`,"settings.plugins.page.field.options":`Options (JSON)`,"settings.plugins.page.field.options.invalidJson":`Invalid JSON`,"settings.plugins.page.field.fileName":`Filename`,"settings.plugins.page.field.content":`Content`,"settings.plugins.page.field.scope":`Scope`,"settings.plugins.scope.user":`User`,"settings.plugins.scope.project":`Project`,"settings.plugins.page.action.save":`Save`,"settings.plugins.page.action.discard":`Discard`,"settings.plugins.dialog.add.title":`Add plugin`,"settings.plugins.dialog.add.tab.npm":`From npm`,"settings.plugins.dialog.add.tab.path":`From local path`,"settings.plugins.dialog.add.tab.file":`New file`,"settings.plugins.dialog.add.action.submit":`Add`,"settings.plugins.dialog.add.action.cancel":`Cancel`,"settings.plugins.toast.created":`Plugin added`,"settings.plugins.toast.updated":`Plugin updated`,"settings.plugins.toast.reloadFailed":`OpenCode reload failed — restart required`,"settings.plugins.validation.fileName":`Filename must be lowercase, end in .js / .ts / .mjs / .cjs`,"settings.plugins.validation.specRequired":`Spec is required`,"settings.plugins.registry.badge.update.label":`↑ {version}`,"settings.plugins.registry.badge.update.tooltip":`Update available: {current} → {latest}`,"settings.plugins.registry.badge.malformed.tooltip":`Spec is malformed`,"settings.plugins.registry.badge.missingPackage.tooltip":`Package {name} not found on npm`,"settings.plugins.registry.badge.missingVersion.tooltip":`Version {version} of {name} not published`,"settings.plugins.registry.badge.pathMissing.tooltip":`File not found: {path}`,"settings.plugins.registry.badge.pathUnreadable.tooltip":`File not readable: {path}`,"settings.plugins.registry.badge.network.tooltip":`Could not reach npm registry`,"settings.plugins.registry.banner.updateAvailable.title":`Update available`,"settings.plugins.registry.banner.updateAvailable.description":`{current} → {latest}`,"settings.plugins.registry.banner.updateAvailable.action":`Update to {latest}`,"settings.plugins.registry.banner.invalid.title":`Invalid plugin`,"settings.plugins.registry.banner.invalid.malformed":`Spec syntax is malformed`,"settings.plugins.registry.banner.invalid.missingPackage":`Package not found on npm`,"settings.plugins.registry.banner.invalid.missingVersion":`Version not published`,"settings.plugins.registry.banner.invalid.pathMissing":`File does not exist`,"settings.plugins.registry.banner.invalid.pathUnreadable":`File is not readable`,"settings.plugins.sidebar.actions.updateToLatest":`Update to latest`,"settings.plugins.sidebar.actions.refresh":`Check for updates`,"settings.plugins.sidebar.group.updatesAvailable_one":`{count} update available`,"settings.plugins.sidebar.group.updatesAvailable_other":`{count} updates available`,"settings.plugins.toast.updatedToLatest":`Plugin updated to {version}`,"settings.plugins.toast.refreshing":`Checking npm for updates…`,"settings.plugins.toast.refreshFailed":`Could not check npm registry`,"settings.openchamber.keyboardShortcuts.title":`Keyboard Shortcuts`,"settings.openchamber.keyboardShortcuts.actions.resetAll":`Reset All`,"settings.openchamber.keyboardShortcuts.actions.overwrite":`Overwrite`,"settings.openchamber.keyboardShortcuts.tooltip":`Capture a new key combo, save it, and bindings will update immediately.`,"settings.openchamber.keyboardShortcuts.overwritePrompt":`This combo is already used by another shortcut. Overwrite and clear that other mapping?`,"settings.openchamber.keyboardShortcuts.field.pressKeys":`Press keys...`,"settings.openchamber.keyboardShortcuts.error.captureFirst":`Capture a shortcut first.`,"settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut":`This shortcut can conflict with browser defaults. It is still saved.`,"settings.openchamber.keyboardShortcuts.action.open_go_to_line.label":`Go to line (files editor)`,"settings.openchamber.keyboardShortcuts.action.open_command_palette.label":`Open command palette`,"settings.openchamber.keyboardShortcuts.action.focus_input.label":`Focus input`,"settings.openchamber.keyboardShortcuts.action.open_settings.label":`Open settings`,"settings.openchamber.keyboardShortcuts.action.toggle_terminal.label":`Toggle terminal`,"settings.openchamber.keyboardShortcuts.action.toggle_bottom_panel.label":`Toggle bottom panel`,"settings.openchamber.keyboardShortcuts.action.toggle_terminal_expanded.label":`Toggle terminal expanded`,"settings.openchamber.keyboardShortcuts.action.new_terminal_tab.label":`New terminal tab`,"settings.openchamber.keyboardShortcuts.action.open_new_terminal.label":`Open new terminal`,"settings.openchamber.keyboardShortcuts.action.previous_terminal_tab.label":`Previous terminal tab`,"settings.openchamber.keyboardShortcuts.action.next_terminal_tab.label":`Next terminal tab`,"settings.openchamber.keyboardShortcuts.action.toggle_sidebar.label":`Toggle sidebar`,"settings.openchamber.keyboardShortcuts.action.toggle_right_sidebar.label":`Toggle review panel`,"settings.openchamber.keyboardShortcuts.action.open_right_sidebar_git.label":`Open right sidebar Git tab`,"settings.openchamber.keyboardShortcuts.action.open_right_sidebar_files.label":`Open right sidebar Files tab`,"settings.openchamber.keyboardShortcuts.action.cycle_right_sidebar_tab.label":`Cycle right sidebar tab`,"settings.openchamber.keyboardShortcuts.action.close_context_panel_tab.label":`Close context panel tab`,"settings.openchamber.keyboardShortcuts.action.previous_session.label":`Previous session`,"settings.openchamber.keyboardShortcuts.action.next_session.label":`Next session`,"settings.openchamber.keyboardShortcuts.action.new_chat.label":`New session`,"settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label":`New worktree draft`,"settings.openchamber.keyboardShortcuts.action.new_mini_chat.label":`New Mini Chat window`,"settings.openchamber.keyboardShortcuts.action.open_help.label":`Open keyboard shortcuts`,"settings.openchamber.keyboardShortcuts.action.toggle_context_plan.label":`Toggle plan context panel`,"settings.openchamber.keyboardShortcuts.action.toggle_services_menu.label":`Toggle services menu`,"settings.openchamber.keyboardShortcuts.action.open_usage.label":`Open usage`,"settings.openchamber.keyboardShortcuts.action.cycle_services_tab.label":`Cycle services tab`,"settings.openchamber.keyboardShortcuts.action.cycle_theme.label":`Cycle theme`,"settings.openchamber.keyboardShortcuts.action.zoom_in.label":`Zoom in`,"settings.openchamber.keyboardShortcuts.action.zoom_out.label":`Zoom out`,"settings.openchamber.keyboardShortcuts.action.zoom_reset.label":`Reset zoom`,"settings.openchamber.keyboardShortcuts.action.cycle_agent.label":`Cycle agent`,"settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_forward.label":`Cycle favorite model forward`,"settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_backward.label":`Cycle favorite model backward`,"settings.openchamber.keyboardShortcuts.action.open_model_selector.label":`Open model selector`,"settings.openchamber.keyboardShortcuts.action.expand_input.label":`Expand input`,"settings.openchamber.keyboardShortcuts.action.clear_all_messages.label":`Clear all messages`,"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label":`Open conversation timeline`,"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label":`Toggle prompt navigator`,"settings.projects.sidebar.total":`Total {count}`,"settings.projects.sidebar.actions.addProject":`Add project`,"settings.projects.page.empty.noProjects":`No projects available.`,"settings.projects.page.title.default":`Project Settings`,"settings.projects.page.section.worktree":`Worktree`,"settings.projects.page.field.projectName":`Project Name`,"settings.projects.page.field.projectNamePlaceholder":`Project name`,"settings.projects.page.field.defaultModel":`Default model for new chats`,"settings.projects.page.field.defaultModelDescription":`Used when starting a new chat in this project. Falls back to global defaults when unset.`,"settings.projects.page.field.accentColor":`Accent Color`,"settings.projects.page.field.projectIcon":`Project Icon`,"settings.projects.page.field.projectIconBackgroundAria":`Project icon background color`,"settings.projects.page.field.clearIconBackgroundAria":`Clear icon background`,"settings.projects.page.field.clearBackground":`Clear background`,"settings.projects.page.field.none":`None`,"settings.projects.page.field.preview":`Preview`,"settings.projects.page.actions.uploadIcon":`Upload Icon`,"settings.projects.page.actions.uploading":`Uploading...`,"settings.projects.page.actions.discoverFavicon":`Discover Favicon`,"settings.projects.page.actions.discovering":`Discovering...`,"settings.projects.page.actions.removeProjectIcon":`Remove Project Icon`,"settings.projects.page.actions.removing":`Removing...`,"settings.projects.page.actions.undoRemove":`Undo Remove`,"settings.projects.page.toast.uploadIconFailed":`Failed to upload project icon`,"settings.projects.page.toast.iconUpdated":`Project icon updated`,"settings.projects.page.toast.removeIconFailed":`Failed to remove project icon`,"settings.projects.page.toast.iconRemoved":`Project icon removed`,"settings.projects.page.toast.discoverIconFailed":`Failed to discover project icon`,"settings.projects.page.toast.customIconAlreadySet":`Custom icon already set for this project`,"settings.projects.page.toast.iconDiscovered":`Project icon discovered`,"settings.projects.page.toast.saveFailed":`Failed to save project settings`,"settings.usage.sidebar.title":`Usage`,"settings.usage.sidebar.total":`Total {count}`,"settings.usage.sidebar.actions.toggleAutoRefreshAria":`Toggle auto refresh`,"settings.usage.sidebar.field.autoRefresh":`Auto-refresh`,"settings.usage.sidebar.field.refreshInterval":`Refresh interval`,"settings.usage.sidebar.actions.refreshAria":`Refresh usage`,"settings.usage.sidebar.actions.refreshTitle":`Refresh usage`,"settings.usage.sidebar.tooltip.autoRefresh":`Auto-refresh usage data at set interval`,"settings.usage.sidebar.field.intervalPlaceholder":`Interval`,"settings.usage.sidebar.field.display":`Display`,"settings.usage.sidebar.field.displayModePlaceholder":`Display mode`,"settings.usage.sidebar.field.displayModeUsage":`Usage`,"settings.usage.sidebar.field.displayModeRemaining":`Quota remaining`,"settings.usage.sidebar.field.showPredictions":`Show predictions`,"settings.usage.sidebar.status.notSet":`Not set`,"settings.usage.page.empty.selectProvider":`Select a provider to view usage details.`,"settings.usage.page.header.providerUsage":`{provider} Usage`,"settings.usage.page.header.refreshing":`Refreshing usage...`,"settings.usage.page.header.lastUpdated":`Last updated: {time}`,"settings.usage.page.options.showInHeaderAria":`Show in header menu`,"settings.usage.page.options.showInHeader":`Show in Header Menu`,"settings.usage.page.options.showInHeaderTooltip":`When enabled, this provider's usage will be visible in the quick access dropdown menu in the app header.`,"settings.usage.page.state.noData":`No usage data available yet.`,"settings.usage.page.state.refreshFailedTitle":`Failed to refresh usage data`,"settings.usage.page.state.providerNotConfiguredTitle":`Provider not configured`,"settings.usage.page.state.providerNotConfiguredDescription":`Add credentials in the Providers tab to enable usage tracking.`,"settings.usage.page.section.modelQuotas":`Model Quotas`,"settings.usage.page.section.otherModels":`Other Models`,"settings.usage.page.state.noQuotaWindowsTitle":`No quota windows reported`,"settings.usage.page.state.noQuotaWindowsDescription":`This provider does not currently report any rate limits or usage quotas.`,"settings.usage.pace.status.onTrack":`On track`,"settings.usage.pace.status.slightlyFast":`Slightly fast`,"settings.usage.pace.status.tooFast":`Too fast`,"settings.usage.pace.status.usedUp":`Used up`,"settings.usage.pace.predictionTooltip":`Predicted usage at window end based on current pace: {prediction}`,"settings.usage.pace.wait":`Wait {duration}`,"settings.usage.pace.prediction":`Pred: {prediction}`,"settings.usage.pace.rate":`Pace: {rate}`,"settings.usage.pace.waitSeparator":` · Wait `,"settings.usage.pace.predictionLabel":`Pred: `,"settings.remoteInstances.page.title":`Remote Instance`,"settings.remoteInstances.page.description":`Connect to another machine over SSH and open OpenChamber there.`,"settings.remoteInstances.page.empty.selectInstance":`Select an instance to view and edit its settings.`,"settings.remoteInstances.page.empty.noExtraForwards":`No extra port forwards configured.`,"settings.remoteInstances.page.section.actions":`Actions`,"settings.remoteInstances.page.section.actionsDescription":`Connect, reconnect, view logs, or remove this connection.`,"settings.remoteInstances.page.section.remoteServer":`OpenChamber on the remote machine`,"settings.remoteInstances.page.section.remoteServerDescription":`Choose how OpenChamber should run after SSH connects.`,"settings.remoteInstances.page.section.mainTunnel":`Local access`,"settings.remoteInstances.page.section.mainTunnelDescription":`Choose the local address used to open this remote OpenChamber server.`,"settings.remoteInstances.page.section.authentication":`Authentication`,"settings.remoteInstances.page.section.authenticationDescription":`Optional credentials for SSH and the remote OpenChamber UI.`,"settings.remoteInstances.page.section.portForwards":`Port Forwards`,"settings.remoteInstances.page.section.portForwardsDescription":`Optional extra ports to make available through this SSH connection.`,"settings.remoteInstances.page.field.sshCommand":`SSH command`,"settings.remoteInstances.page.field.sshCommandPlaceholder":`ssh user@host`,"settings.remoteInstances.page.field.nickname":`Nickname`,"settings.remoteInstances.page.field.nicknamePlaceholder":`Work laptop`,"settings.remoteInstances.page.field.connectionTimeoutSeconds":`Connection timeout (seconds)`,"settings.remoteInstances.page.field.installMethod":`Install method`,"settings.remoteInstances.page.field.installMethodHint":`How OpenChamber should be placed on the remote machine when this app starts it for you.`,"settings.remoteInstances.page.field.selectInstallMethodPlaceholder":`Select install method`,"settings.remoteInstances.page.field.installMethodDownloadRelease":`Download release`,"settings.remoteInstances.page.field.installMethodUploadBundle":`Upload bundle`,"settings.remoteInstances.page.field.selectBindHostPlaceholder":`Select bind host`,"settings.remoteInstances.page.field.sshPasswordOptional":`SSH password (optional)`,"settings.remoteInstances.page.field.sshPasswordPlaceholder":`Enter SSH password`,"settings.remoteInstances.page.field.uiPasswordOptional":`UI password (optional)`,"settings.remoteInstances.page.field.uiPasswordPlaceholder":`Enter UI password`,"settings.remoteInstances.page.field.forwardTypeHint":`Choose what kind of port access this SSH connection should provide.`,"settings.remoteInstances.page.field.typePlaceholder":`Type`,"settings.remoteInstances.page.forwardType.local":`Local (-L)`,"settings.remoteInstances.page.forwardType.remote":`Remote (-R)`,"settings.remoteInstances.page.forwardType.dynamic":`Dynamic (-D)`,"settings.remoteInstances.page.forwardTypeDescription.local":`Open a local port that connects to something on the remote machine.`,"settings.remoteInstances.page.forwardTypeDescription.remote":`Open a port on the remote machine that connects back to your computer.`,"settings.remoteInstances.page.forwardTypeDescription.dynamic":`Open a local SOCKS proxy through the SSH connection.`,"settings.remoteInstances.page.actions.create":`Create`,"settings.remoteInstances.page.actions.cancel":`Cancel`,"settings.remoteInstances.page.actions.connecting":`Connecting...`,"settings.remoteInstances.page.actions.reconnecting":`Reconnecting...`,"settings.remoteInstances.page.actions.reconnectNow":`Reconnect now`,"settings.remoteInstances.page.actions.logs":`SSH Logs`,"settings.remoteInstances.page.actions.pickRandomPort":`Pick random port`,"settings.remoteInstances.page.actions.enableForwardAria":`Enable forward`,"settings.remoteInstances.page.actions.openLocal":`Open local`,"settings.remoteInstances.page.actions.addForward":`Add forward`,"settings.remoteInstances.page.import.sectionTitle":`Saved SSH hosts`,"settings.remoteInstances.page.import.loading":`Loading SSH hosts...`,"settings.remoteInstances.page.import.noneFound":`No SSH hosts found.`,"settings.remoteInstances.page.import.noneAvailable":`No SSH hosts available to import.`,"settings.remoteInstances.page.import.patternSuffix":`(pattern)`,"settings.remoteInstances.page.status.currentLocalUrl":`Current local URL:`,"settings.remoteInstances.page.status.reconnectStale":`Reconnection looks stuck. You can retry now.`,"settings.remoteInstances.page.logsDialog.title":`SSH Logs`,"settings.remoteInstances.page.logsDialog.loading":`Loading logs...`,"settings.remoteInstances.page.logsDialog.empty":`No SSH logs yet.`,"settings.remoteInstances.page.patternDialog.title":`Choose an SSH destination`,"settings.remoteInstances.page.patternDialog.destinationPlaceholder":`user@host`,"settings.remoteInstances.page.phase.resolvingConfiguration":`Resolving configuration`,"settings.remoteInstances.page.phase.checkingAuth":`Checking authentication`,"settings.remoteInstances.page.phase.establishingSsh":`Establishing SSH connection`,"settings.remoteInstances.page.phase.probingRemote":`Checking remote machine`,"settings.remoteInstances.page.phase.installingOpenChamber":`Installing OpenChamber`,"settings.remoteInstances.page.phase.updatingOpenChamber":`Updating OpenChamber`,"settings.remoteInstances.page.phase.detectingServer":`Detecting server`,"settings.remoteInstances.page.phase.startingServer":`Starting server`,"settings.remoteInstances.page.phase.forwardingPorts":`Forwarding ports`,"settings.remoteInstances.page.phase.reconnecting":`Reconnecting`,"settings.remoteInstances.page.confirm.storeSshPasswordPlaintext":`Store SSH password in plaintext on disk?`,"settings.remoteInstances.page.confirm.storeUiPasswordPlaintext":`Store UI password in plaintext on disk?`,"settings.remoteInstances.page.confirm.removeInstance":`Remove this remote instance?`,"settings.remoteInstances.page.toast.sshCommandRequired":`SSH command is required`,"settings.remoteInstances.page.toast.saveFailed":`Failed to save instance`,"settings.remoteInstances.page.toast.instanceSaved":`Instance saved`,"settings.remoteInstances.page.toast.instanceCreated":`Instance created`,"settings.remoteInstances.page.toast.destinationRequired":`Destination is required`,"settings.remoteInstances.page.toast.noLogsToCopy":`No logs to copy`,"settings.remoteInstances.page.toast.logsCopied":`Logs copied`,"settings.remoteInstances.page.toast.logsCleared":`Logs cleared`,"settings.remoteInstances.page.toast.clearLogsFailed":`Failed to clear logs`,"settings.remoteInstances.page.toast.instanceUrlUnavailable":`Instance URL is unavailable`,"settings.remoteInstances.page.toast.connectFailed":`Failed to connect instance`,"settings.remoteInstances.page.toast.cancelConnectionFailed":`Failed to cancel connection`,"settings.remoteInstances.page.toast.disconnectFailed":`Failed to disconnect instance`,"settings.remoteInstances.page.toast.retryFailed":`Failed to retry connection`,"settings.remoteInstances.page.toast.instanceRemoved":`Instance removed`,"settings.remoteInstances.page.toast.removeInstanceFailed":`Failed to remove instance`,"settings.openchamber.worktrees.state.selectProject":`Select a project to manage worktrees.`,"settings.openchamber.worktrees.state.gitOnly":`Worktree settings are only available for Git repositories.`,"settings.openchamber.worktrees.setup.title":`Setup commands`,"settings.openchamber.worktrees.setup.tooltipPrefix":`Run automatically inside the new worktree directory when a worktree is created. Use`,"settings.openchamber.worktrees.setup.tooltipSuffix":`for the project root.`,"settings.openchamber.worktrees.setup.loading":`Loading...`,"settings.openchamber.worktrees.setup.commandPlaceholder":`e.g., bun install`,"settings.openchamber.worktrees.setup.removeCommandAria":`Remove command`,"settings.openchamber.worktrees.setup.addCommand":`Add command`,"settings.openchamber.worktrees.setup.waitForCommands":`Wait for setup commands before creating or sending a session`,"settings.openchamber.worktrees.setup.waitForCommandsAria":`Wait for Worktree setup commands before creating or sending a session`,"settings.openchamber.worktrees.setup.toast.saveFailed":`Failed to save worktree setup commands`,"settings.openchamber.worktrees.list.title":`Existing worktrees`,"settings.openchamber.worktrees.list.tooltip":`Worktrees live outside the repo (OpenCode-managed). Deleting a worktree also removes linked sessions.`,"settings.openchamber.worktrees.list.loading":`Loading worktrees...`,"settings.openchamber.worktrees.list.empty":`No worktrees found for this project`,"settings.openchamber.worktrees.list.detachedHead":`Detached HEAD`,"settings.openchamber.worktrees.list.deleteWorktreeAria":`Delete worktree {name}`,"settings.agents.modelSelector.title":`Select model`,"settings.agents.modelSelector.searchPlaceholder":`Search models`,"settings.agents.modelSelector.selectPlaceholder":`Select model...`,"settings.agents.modelSelector.notSelected":`Not selected`,"settings.agents.modelSelector.noModelOptional":`No model (optional)`,"settings.agents.modelSelector.section.favorites":`Favorites`,"settings.agents.modelSelector.section.recents":`Recents`,"settings.agents.modelSelector.section.recent":`Recent`,"settings.agents.modelSelector.badge.current":`Current`,"settings.agents.modelSelector.actions.favorite":`Favorite`,"settings.agents.modelSelector.actions.unfavorite":`Unfavorite`,"settings.agents.modelSelector.actions.addToFavorites":`Add to favorites`,"settings.agents.modelSelector.actions.removeFromFavorites":`Remove from favorites`,"settings.agents.modelSelector.state.noModelsFound":`No models found`,"settings.agents.modelSelector.keyboardHints":`↑↓ navigate • Enter select • Esc close`,"settings.providers.sidebar.title":`Providers`,"settings.providers.sidebar.total":`Total {count}`,"settings.providers.sidebar.actions.connectProviderAria":`Connect provider`,"settings.providers.sidebar.actions.connectProviderTitle":`Connect provider`,"settings.providers.sidebar.empty.title":`No providers found`,"settings.providers.sidebar.empty.description":`Check your OpenCode configuration`,"settings.providers.sidebar.section.userProviders":`User Providers`,"settings.providers.sidebar.section.projectProviders":`Project Providers`,"settings.providers.page.state.loading":`Loading...`,"settings.providers.page.state.unableToLoadProviderList":`Unable to load provider list`,"settings.providers.page.empty.noProvidersDetected":`No providers detected`,"settings.providers.page.empty.checkOpenCodeConfiguration":`Check your OpenCode configuration`,"settings.providers.page.empty.selectProviderFromSidebar":`Select a provider from the sidebar`,"settings.providers.page.empty.reviewDetailsAndConfigureAuth":`Review details and configure auth`,"settings.providers.page.connect.title":`Connect Provider`,"settings.providers.page.connect.selectProviderTitle":`Select Provider`,"settings.providers.page.connect.providerField":`Provider`,"settings.providers.page.connect.selectProviderPlaceholder":`Select provider`,"settings.providers.page.connect.searchProvidersPlaceholder":`Search...`,"settings.providers.page.connect.noProvidersFound":`No providers found`,"settings.providers.page.connect.allProvidersConnected":`All providers connected.`,"settings.providers.page.auth.title":`Authentication`,"settings.providers.page.auth.loadingMethods":`Loading authentication methods...`,"settings.providers.page.auth.apiKeyLabel":`API Key`,"settings.providers.page.auth.apiKeyTooltip":`Keys are sent directly to OpenCode and never stored by OpenChamber.`,"settings.providers.page.auth.apiKeyPlaceholder":`sk-...`,"settings.providers.page.auth.oauthMethodFallback":`OAuth method {index}`,"settings.providers.page.auth.pasteAuthorizationCodePlaceholder":`Paste authorization code`,"settings.providers.page.auth.connected":`Connected`,"settings.providers.page.auth.useReconnectHint":`· Use Reconnect to update credentials`,"settings.providers.page.connectionDetails.title":`Connection Details`,"settings.providers.page.connectionDetails.configuredIn":`Configured in:`,"settings.providers.page.connectionDetails.noActiveSource":`No active configuration source`,"settings.providers.page.connectionDetails.source.authCredentials":`auth credentials`,"settings.providers.page.connectionDetails.source.userConfig":`user config`,"settings.providers.page.connectionDetails.source.projectConfig":`project config`,"settings.providers.page.connectionDetails.source.customConfig":`custom config`,"settings.providers.page.models.title":`Available Models`,"settings.providers.page.models.filterPlaceholder":`Filter models...`,"settings.providers.page.models.noModelsMatchFilter":`No models match this filter.`,"settings.providers.page.models.capability.toolCalling":`Tool calling`,"settings.providers.page.models.capability.reasoning":`Reasoning`,"settings.providers.page.models.capability.imageInput":`Image input`,"settings.providers.page.models.tokenBadge.context":`ctx`,"settings.providers.page.models.tokenBadge.output":`out`,"settings.providers.page.models.actions.hideModelFromSelectors":`Hide model from selectors`,"settings.providers.page.models.actions.showModelInSelectors":`Show model in selectors`,"settings.providers.page.models.actions.hideModel":`Hide model`,"settings.providers.page.models.actions.showModel":`Show model`,"settings.providers.page.actions.saving":`Saving...`,"settings.providers.page.actions.saveKey":`Save Key`,"settings.providers.page.actions.connect":`Connect`,"settings.providers.page.actions.copyCode":`Copy Code`,"settings.providers.page.actions.open":`Open`,"settings.providers.page.actions.copy":`Copy`,"settings.providers.page.actions.complete":`Complete`,"settings.providers.page.actions.hide":`Hide`,"settings.providers.page.actions.reconnect":`Reconnect`,"settings.providers.page.actions.disconnecting":`Disconnecting...`,"settings.providers.page.actions.disconnect":`Disconnect`,"settings.providers.page.actions.hideAll":`Hide all`,"settings.providers.page.actions.showAll":`Show all`,"settings.providers.page.toast.authMethodsLoadFailed":`Failed to load provider authentication methods`,"settings.providers.page.toast.providerSourcesLoadFailed":`Failed to load provider sources`,"settings.providers.page.toast.apiKeyRequired":`API key is required`,"settings.providers.page.toast.apiKeySaveFailed":`Failed to save API key`,"settings.providers.page.toast.apiKeySaved":`API key saved`,"settings.providers.page.toast.oauthStartFailed":`Failed to start OAuth flow`,"settings.providers.page.toast.oauthDetailsMissing":`No OAuth details returned`,"settings.providers.page.toast.completeOAuthInBrowser":`Complete the OAuth flow in your browser`,"settings.providers.page.toast.oauthCompleteFailed":`Failed to complete OAuth flow`,"settings.providers.page.toast.oauthCompleted":`OAuth connection completed`,"settings.providers.page.toast.oauthLinkCopied":`OAuth link copied`,"settings.providers.page.toast.oauthLinkCopyFailed":`Failed to copy OAuth link`,"settings.providers.page.toast.deviceCodeCopied":`Device code copied`,"settings.providers.page.toast.deviceCodeCopyFailed":`Failed to copy device code`,"settings.providers.page.toast.providerDisconnected":`Provider disconnected`,"settings.providers.page.toast.providerDisconnectFailed":`Failed to disconnect provider`,"settings.mcp.page.empty.selectServer":`Select an MCP server from the sidebar`,"settings.mcp.page.empty.addNewOne":`Or add a new one`,"settings.mcp.page.header.newServer":`New MCP Server`,"settings.mcp.page.header.configureNewServer":`Configure a new MCP server`,"settings.mcp.page.header.transport":`{type} transport`,"settings.mcp.page.transport.local":`Local · stdio`,"settings.mcp.page.transport.remote":`Remote · SSE`,"settings.mcp.page.status.label.connected":`Connected`,"settings.mcp.page.status.label.failed":`Failed`,"settings.mcp.page.status.label.needsAuth":`Needs auth`,"settings.mcp.page.status.label.needsRegistration":`Needs registration`,"settings.mcp.page.status.description.connected":`Connected and ready for OpenCode to discover tools and resources.`,"settings.mcp.page.status.description.failedDefault":`OpenCode could not reach this MCP server.`,"settings.mcp.page.status.description.needsAuth":`This remote MCP server requires authorization before it can connect.`,"settings.mcp.page.status.description.needsClientRegistrationDefault":`This remote MCP server requires client registration before authorization can complete.`,"settings.mcp.page.status.description.disabled":`This MCP server is disabled in configuration.`,"settings.mcp.page.status.description.default":`Refresh or test the connection to load live runtime status.`,"settings.mcp.page.status.runtimeStatus":`Runtime Status`,"settings.mcp.page.status.projectScopedTo":`Project-scoped to {directory}`,"settings.mcp.page.status.userScoped":`User-scoped configuration`,"settings.mcp.page.status.activeProject":`the active project`,"settings.mcp.page.actions.connect":`Connect`,"settings.mcp.page.actions.disconnect":`Disconnect`,"settings.mcp.page.actions.authorize":`Authorize`,"settings.mcp.page.actions.reauthorize":`Reauthorize`,"settings.mcp.page.actions.clearAuth":`Clear Auth`,"settings.mcp.page.actions.test":`Test`,"settings.mcp.page.actions.testConnection":`Test Connection`,"settings.mcp.page.actions.working":`Working...`,"settings.mcp.page.actions.starting":`Starting...`,"settings.mcp.page.actions.clearing":`Clearing...`,"settings.mcp.page.actions.testing":`Testing...`,"settings.mcp.page.actions.completing":`Completing...`,"settings.mcp.page.actions.completeAuthorization":`Complete Authorization`,"settings.mcp.page.actions.openInBrowser":`Open in Browser`,"settings.mcp.page.actions.copyLink":`Copy Link`,"settings.mcp.page.actions.deleting":`Deleting…`,"settings.mcp.page.auth.authorizationUrl":`Authorization URL`,"settings.mcp.page.auth.manualFallbackTitle":`Manual Authorization Fallback`,"settings.mcp.page.auth.manualFallbackDescription":`If the browser returns to a different machine or shows a callback URL with a code, paste that full URL or the raw code here.`,"settings.mcp.page.auth.callbackInputPlaceholder":`Paste the callback URL or authorization code`,"settings.mcp.page.auth.waitingForOpenCode":`Waiting for OpenCode to observe the completed browser authorization flow...`,"settings.mcp.page.server.title":`Server`,"settings.mcp.page.server.name":`Server Name`,"settings.mcp.page.server.namePlaceholder":`my-mcp-server`,"settings.mcp.page.server.importJson":`Import from JSON Snippet`,"settings.mcp.page.server.importJsonTitle":`Import a full MCP server configuration from a JSON snippet`,"settings.mcp.page.server.enable":`Enable Server`,"settings.mcp.page.server.enableAria":`Enable server`,"settings.mcp.page.server.transportMode":`Transport Mode`,"settings.mcp.page.connection.command":`Command`,"settings.mcp.page.connection.serverUrl":`Server URL`,"settings.mcp.page.connection.serverUrlPlaceholder":`https://mcp.example.com/mcp`,"settings.mcp.page.connection.pasteCommand":`Paste Command`,"settings.mcp.page.connection.pasteCommandTitle":`Paste a local command from clipboard and auto-split`,"settings.mcp.page.connection.previewArgs":`Preview ({count} args)`,"settings.mcp.page.advanced.title":`Advanced Remote Options`,"settings.mcp.page.advanced.configure":`Configure advanced options`,"settings.mcp.page.advanced.autoDetect":`Auto-detect`,"settings.mcp.page.advanced.custom":`Custom`,"settings.mcp.page.advanced.headers":`headers`,"settings.mcp.page.advanced.timeoutMs":`Timeout (ms)`,"settings.mcp.page.advanced.timeoutHint":`Leave blank to use OpenCode's default MCP timeout.`,"settings.mcp.page.advanced.requestHeaders":`Request Headers`,"settings.mcp.page.advanced.headerNamePlaceholder":`Header-Name`,"settings.mcp.page.advanced.pasteHeaders":`Paste headers`,"settings.mcp.page.advanced.pasteHeadersTitle":`Paste KEY=VALUE header lines from clipboard`,"settings.mcp.page.advanced.oauthAutoDetection":`Enable OAuth auto-detection`,"settings.mcp.page.advanced.oauthAutoDetectionAria":`Enable OAuth auto-detection`,"settings.mcp.page.advanced.oauthClientIdPlaceholder":`OAuth client ID`,"settings.mcp.page.advanced.oauthClientSecretPlaceholder":`OAuth client secret`,"settings.mcp.page.advanced.oauthScopesPlaceholder":`Scopes (space-delimited)`,"settings.mcp.page.advanced.oauthRedirectUriPlaceholder":`Redirect URI`,"settings.mcp.page.advanced.oauthHint":`Leave these fields blank to let OpenCode infer OAuth settings from the MCP server.`,"settings.mcp.page.advanced.oauthCallbackHint":`Browser-based MCP authorization uses this callback URL when the redirect URI is blank:`,"settings.mcp.page.env.title":`Environment Variables`,"settings.mcp.page.env.key":`Key`,"settings.mcp.page.env.value":`Value`,"settings.mcp.page.env.valuePlaceholder":`value`,"settings.mcp.page.env.hide":`Hide`,"settings.mcp.page.env.show":`Show`,"settings.mcp.page.env.addVariable":`Add variable`,"settings.mcp.page.env.addEnvironmentVariable":`Add environment variable`,"settings.mcp.page.env.keyPlaceholder":`API_KEY`,"settings.mcp.page.env.pasteEnv":`Paste .env`,"settings.mcp.page.env.pasteEnvTitle":`Paste KEY=VALUE lines from clipboard`,"settings.mcp.page.env.plainTextWarning":`⚠ Values are stored as plain text in opencode.json`,"settings.mcp.page.env.removeVariableAria":`Remove variable`,"settings.mcp.page.importDialog.title":`Import JSON Snippet`,"settings.mcp.page.importDialog.description":`Paste a full MCP JSON snippet from docs or another config file. The parsed values will populate this form for review before saving.`,"settings.mcp.page.importDialog.pasteFromClipboard":`Paste JSON from Clipboard`,"settings.mcp.page.deleteDialog.title":`Delete "{name}"?`,"settings.mcp.page.deleteDialog.descriptionPrefix":`This removes the server from`,"settings.mcp.page.deleteDialog.descriptionSuffix":`OpenCode will need to reload.`,"settings.mcp.page.toast.clipboardReadFailed":`Cannot read clipboard`,"settings.mcp.page.toast.configImported":`MCP configuration imported`,"settings.mcp.page.toast.nameRequired":`Name is required`,"settings.mcp.page.toast.serverNameExists":`A server with this name already exists`,"settings.mcp.page.toast.localCommandRequired":`Command cannot be empty for a local server`,"settings.mcp.page.toast.remoteUrlRequired":`URL cannot be empty for a remote server`,"settings.mcp.page.toast.serverCreatedReloadFailed":`MCP server created, but OpenCode reload failed.`,"settings.mcp.page.toast.savedReloadFailed":`Saved, but OpenCode reload failed.`,"settings.mcp.page.toast.retryRefreshHint":`Retry refresh or reopen Settings before authorizing this server.`,"settings.mcp.page.toast.serverCreatedReloading":`MCP server created. OpenCode reloading…`,"settings.mcp.page.toast.savedReloading":`Saved. OpenCode reloading…`,"settings.mcp.page.toast.saveFailed":`Failed to save`,"settings.mcp.page.toast.unexpectedError":`An error occurred`,"settings.mcp.page.toast.serverDeletedReloadFailed":`"{name}" deleted, but OpenCode reload failed`,"settings.mcp.page.toast.refreshListIfStale":`Refresh the MCP list if the UI looks stale.`,"settings.mcp.page.toast.serverDeleted":`"{name}" deleted`,"settings.mcp.page.toast.deleteFailed":`Failed to delete`,"settings.mcp.page.toast.disconnected":`Disconnected`,"settings.mcp.page.toast.connected":`Connected`,"settings.mcp.page.toast.connectionNeedsAuthorization":`Connection requires authorization`,"settings.mcp.page.toast.connectionNeedsClientRegistration":`Connection requires client registration`,"settings.mcp.page.toast.connectionFailed":`Connection failed`,"settings.mcp.page.toast.connectionAttemptFinished":`Connection attempt finished. Refresh status for details.`,"settings.mcp.page.toast.createServerBeforeLiveActions":`Create the server before running live actions`,"settings.mcp.page.toast.saveBeforeLiveActions":`Save changes before running live actions`,"settings.mcp.page.toast.refreshStatusFailed":`Failed to refresh MCP status`,"settings.mcp.page.toast.oauthRedirectUrlBuildFailed":`Unable to build MCP OAuth redirect URL`,"settings.mcp.page.toast.oauthBrowserCallbackSaveFailed":`Failed to save the browser callback URL for MCP authorization`,"settings.mcp.page.toast.openCodeReloadFailedAfterCallbackSave":`OpenCode reload failed after saving the browser callback URL`,"settings.mcp.page.toast.completeAuthorizationInBrowserWithPaste":`Complete the MCP authorization flow in your browser, then paste the returned code or callback URL here`,"settings.mcp.page.toast.completeAuthorizationInBrowser":`Complete the MCP authorization flow in your browser`,"settings.mcp.page.toast.openAuthorizationUrlFailed":`Could not open the authorization URL automatically`,"settings.mcp.page.toast.authorizationStartFailed":`Failed to start authorization`,"settings.mcp.page.toast.authSessionExpired":`Authorization session expired or was cleared during reload. Click Authorize again.`,"settings.mcp.page.toast.savedAuthorizationRemoved":`Saved MCP authorization was removed`,"settings.mcp.page.toast.clearAuthorizationFailed":`Failed to clear authorization`,"settings.mcp.page.toast.authorizationUrlCopied":`Authorization URL copied`,"settings.mcp.page.toast.authorizationUrlCopyFailed":`Failed to copy authorization URL`,"settings.mcp.page.toast.pasteCallbackOrCodeFirst":`Paste the callback URL or authorization code first`,"settings.mcp.page.toast.missingServerDetails":`Missing MCP server details. Select the server again or paste the full callback URL.`,"settings.mcp.page.toast.authorizationCompleted":`MCP authorization completed`,"settings.mcp.page.toast.authorizationCompletedFor":`MCP authorization completed for {name}`,"settings.mcp.page.toast.authorizationCompleteFailed":`Failed to complete MCP authorization`,"settings.mcp.page.toast.enableServerBeforeTest":`Enable this server before testing the connection`,"settings.mcp.page.toast.connectionTestSucceeded":`Connection test succeeded`,"settings.mcp.page.toast.connectionTestFailed":`Connection test failed`,"settings.mcp.page.toast.connectionTestFinished":`Connection test finished. Refresh status for details.`,"settings.mcp.page.toast.authorizationFailed":`Authorization failed`,"settings.mcp.page.toast.authorizationStillInProgress":`Authorization is still in progress in your browser. Paste the callback URL or code if needed.`,"settings.mcp.page.toast.noKeyValuePairsFound":`No KEY=VALUE pairs found in clipboard`,"settings.mcp.page.toast.importedVariablesCount":`Imported variables: {count}`,"settings.mcp.page.toast.pastedArgumentsCount":`Pasted arguments: {count}`,"settings.shared.projectSelector.fallbackProject":`Project`,"settings.shared.projectSelector.switchProjectAria":`Switch project`,"settings.shared.projectSelector.switchProjectTitle":`Switch project`,"settings.openchamber.defaults.title":`Session Defaults`,"settings.openchamber.defaults.summaryPrefix":`New sessions will start with:`,"settings.openchamber.defaults.summaryOpenCodeDefault":`OpenCode agent default`,"settings.openchamber.defaults.field.defaultModel":`Default Model`,"settings.openchamber.defaults.field.defaultThinking":`Default Thinking`,"settings.openchamber.defaults.field.thinkingPlaceholder":`Thinking`,"settings.openchamber.defaults.field.defaultAgent":`Default Agent`,"settings.openchamber.defaults.field.showDeletionDialogAria":`Show deletion dialog`,"settings.openchamber.defaults.field.showDeletionDialog":`Show Deletion Dialog`,"settings.openchamber.defaults.smallModel.title":`Small Model`,"settings.openchamber.defaults.smallModel.description":`A cheap model for quick utility tasks like short recaps and summaries.`,"settings.openchamber.defaults.smallModel.useDefault":`Use default small model`,"settings.openchamber.defaults.smallModel.useDefaultAria":`Use default small model`,"settings.openchamber.defaults.smallModel.overrideModel":`Override model`,"settings.openchamber.defaults.summary.title":`Summary AI`,"settings.openchamber.defaults.summary.description":`Controls commit-message generation and automatic session title refreshes.`,"settings.openchamber.defaults.summary.modelSourceAria":`Summary model source`,"settings.openchamber.defaults.summary.modelSourceTitle":`Model Source`,"settings.openchamber.defaults.summary.provider":`OpenCode provider`,"settings.openchamber.defaults.summary.providerDescription":`Uses an authenticated OpenCode provider and only shows models the summary service can call.`,"settings.openchamber.defaults.summary.custom":`Custom OpenAI-compatible API`,"settings.openchamber.defaults.summary.customDescription":`Calls your Base URL directly with the model ID and API token below.`,"settings.openchamber.defaults.summary.providerUnavailable":`Connect a supported provider before selecting a provider model.`,"settings.openchamber.defaults.summary.providerModel":`Provider model`,"settings.openchamber.defaults.summary.baseUrl":`Base URL`,"settings.openchamber.defaults.summary.baseUrlPlaceholder":`https://api.example.com/v1`,"settings.openchamber.defaults.summary.modelId":`Model ID`,"settings.openchamber.defaults.summary.modelIdPlaceholder":`gpt-4.1-mini`,"settings.openchamber.defaults.summary.apiToken":`API token`,"settings.openchamber.defaults.summary.apiTokenStored":`Token saved. Enter a value to replace it.`,"settings.openchamber.defaults.summary.apiTokenPlaceholder":`Enter API token`,"settings.openchamber.defaults.summary.clearToken":`Clear token`,"settings.openchamber.defaults.summary.promptTitle":`Feature Prompts`,"settings.openchamber.defaults.summary.promptDescription":`These instructions affect generated commit messages and automatic session title refreshes.`,"settings.openchamber.defaults.summary.commitPrompt":`Commit prompt`,"settings.openchamber.defaults.summary.commitPromptDescription":`Controls Commit Message generation from the selected staged files.`,"settings.openchamber.defaults.summary.commitPromptPlaceholder":`Leave empty to use the built-in commit prompt.`,"settings.openchamber.defaults.summary.sessionTitlePrompt":`Session title prompt`,"settings.openchamber.defaults.summary.sessionTitlePromptDescription":`Controls titles generated when a new session first becomes idle and after later idle periods of about 15 seconds.`,"settings.openchamber.defaults.summary.sessionTitlePromptPlaceholder":`Leave empty to use the built-in session title prompt.`,"settings.openchamber.defaults.summary.save":`Save summary settings`,"settings.openchamber.defaults.field.openFilesPreviewAria":`Open previewable files in preview mode`,"settings.openchamber.defaults.field.openFilesPreview":`Open previewable files in preview mode`,"settings.openchamber.defaults.option.default":`Default`,"settings.openchamber.defaults.option.defaultLowercase":`default`,"settings.openchamber.git.title":`Git Preferences`,"settings.openchamber.git.changesViewTitle":`Changes View`,"settings.openchamber.git.changesViewAria":`Git changes view mode`,"settings.openchamber.git.option.flatList":`Flat List`,"settings.openchamber.git.option.treeView":`Tree View`,"settings.openchamber.git.optionAria":`Git changes view mode: {option}`,"settings.openchamber.git.enableGitmojiAria":`Enable Gitmoji picker`,"settings.openchamber.git.enableGitmoji":`Enable Gitmoji Picker`,"settings.openchamber.git.showGitignoredAria":`Display gitignored files`,"settings.openchamber.git.showGitignored":`Display Gitignored Files`,"settings.github.page.tooltip.connectAccount":`Connect a GitHub account for in-app PR and issue workflows.`,"settings.github.page.avatarAlt.withLogin":`{login} avatar`,"settings.github.page.avatarAlt.fallback":`GitHub avatar`,"settings.github.page.label.unknownUser":`unknown`,"settings.github.page.label.scopes":`Scopes: {value}`,"settings.github.page.label.otherAccounts":`Other Accounts`,"settings.github.page.accountSource.oauth":`OAuth`,"settings.github.page.accountSource.cli":`CLI`,"settings.github.page.actions.disconnect":`Disconnect`,"settings.github.page.actions.connect":`Connect GitHub`,"settings.github.page.actions.switchTo":`Switch to`,"settings.github.page.actions.addAccount":`Add Account`,"settings.github.page.actions.openGithub":`Open GitHub`,"settings.github.page.status.notConnected":`Not Connected`,"settings.github.page.status.active":`Active`,"settings.github.page.flow.title":`Authorize OpenChamber`,"settings.github.page.flow.description":`In GitHub, enter the following code to authorize this device:`,"settings.github.page.flow.waiting":`Waiting for approval… (auto-refresh)`,"settings.github.page.toast.startConnectFailed":`Failed to start GitHub connect`,"settings.github.page.toast.connected":`GitHub connected`,"settings.github.page.toast.authorizationFailed":`GitHub authorization failed`,"settings.github.page.toast.disconnected":`GitHub disconnected`,"settings.github.page.toast.disconnectFailed":`Failed to disconnect GitHub`,"settings.github.page.toast.accountSwitched":`GitHub account switched`,"settings.github.page.toast.accountSwitchFailed":`Failed to switch GitHub account`,"settings.github.page.oauth.title":`GitHub OAuth Token`,"settings.github.page.ghCli.title":`GitHub CLI Token`,"settings.github.page.ghCli.activeDescription":`Authenticated via the gh CLI`,"settings.github.page.ghCli.fallbackDescription":`Available as fallback if OpenChamber auth is removed`,"settings.github.page.ghCli.disabledDescription":`Installed but not used as a fallback`,"settings.github.page.ghCli.actions.disable":`Disable`,"settings.github.page.ghCli.actions.enable":`Enable`,"settings.github.page.toast.ghCliEnabled":`gh CLI fallback enabled`,"settings.github.page.toast.ghCliDisabled":`gh CLI fallback disabled`,"settings.github.page.toast.ghCliUpdateFailed":`Failed to update gh CLI setting`,"settings.notifications.page.delivery.title":`Notification Delivery`,"settings.notifications.page.delivery.enableAria":`Enable notifications`,"settings.notifications.page.delivery.enableLabel":`Enable Notifications`,"settings.notifications.page.delivery.focusedAria":`Notify while app is focused`,"settings.notifications.page.delivery.focusedLabel":`Notify While App is Focused`,"settings.notifications.page.delivery.testAction":`Send test notification`,"settings.notifications.page.delivery.browserPermissionHint":`Your browser may ask for permission the first time.`,"settings.notifications.page.delivery.permissionDenied":`Notification permission denied. Enable it in your browser settings.`,"settings.notifications.page.delivery.permissionGrantedButDisabled":`Permission granted, but notifications are disabled.`,"settings.notifications.page.delivery.vscodeHint":`When enabled, notifications are delivered through VS Code native notifications.`,"settings.notifications.page.events.title":`Notification Events`,"settings.notifications.page.events.completionAria":`Agent completion`,"settings.notifications.page.events.completionLabel":`Agent Completion`,"settings.notifications.page.events.subtaskAria":`Subagent completion`,"settings.notifications.page.events.subtaskLabel":`Subagent Completion`,"settings.notifications.page.events.errorAria":`Agent errors`,"settings.notifications.page.events.errorLabel":`Agent Errors`,"settings.notifications.page.events.questionAria":`Agent questions`,"settings.notifications.page.events.questionLabel":`Agent Questions`,"settings.notifications.page.template.title":`Notification Templates`,"settings.notifications.page.template.variablesLabel":`Variables:`,"settings.notifications.page.template.event.completion":`Completion`,"settings.notifications.page.template.event.subtask":`Subagent Completion`,"settings.notifications.page.template.event.error":`Error`,"settings.notifications.page.template.event.question":`Question`,"settings.notifications.page.template.field.title":`Title`,"settings.notifications.page.template.field.message":`Message`,"settings.notifications.page.template.defaults.completion.title":`{agent_name} is ready`,"settings.notifications.page.template.defaults.completion.message":`{model_name} completed the task`,"settings.notifications.page.template.defaults.error.title":`Tool error`,"settings.notifications.page.template.defaults.error.message":`{last_message}`,"settings.notifications.page.template.defaults.question.title":`Input needed`,"settings.notifications.page.template.defaults.question.message":`{last_message}`,"settings.notifications.page.template.defaults.subtask.title":`{agent_name} is ready`,"settings.notifications.page.template.defaults.subtask.message":`{model_name} completed the task`,"settings.notifications.page.summary.title":`AI Summarization`,"settings.notifications.page.summary.toggleAria":`Summarize last message`,"settings.notifications.page.summary.toggleLabel":`Summarize Last Message`,"settings.notifications.page.summary.requiresTemplateVariable":`Requires`,"settings.notifications.page.summary.modelLabel":`Summarization Model`,"settings.notifications.page.summary.modelTooltip":`Used for notification and voice summaries.`,"settings.notifications.page.summary.notSelected":`Not selected`,"settings.notifications.page.summary.thresholdLabel":`Threshold`,"settings.notifications.page.summary.thresholdHint":`Messages longer than this will be summarized`,"settings.notifications.page.summary.resetThresholdAria":`Reset threshold`,"settings.notifications.page.summary.lengthLabel":`Length`,"settings.notifications.page.summary.lengthHint":`Target character length of the summary`,"settings.notifications.page.summary.resetLengthAria":`Reset summary length`,"settings.notifications.page.summary.maxLengthLabel":`Max Length`,"settings.notifications.page.summary.maxLengthHint":`Truncate {last_message} to this length`,"settings.notifications.page.summary.resetMaxLengthAria":`Reset max message length`,"settings.notifications.page.push.title":`Background Push Notifications`,"settings.notifications.page.push.enableAria":`Enable push notifications`,"settings.notifications.page.push.enableLabel":`Enable push notifications`,"settings.notifications.page.push.unsupportedHint":`Push not supported. Desktop Chrome/Edge and Android support push. iOS requires an installed PWA.`,"settings.notifications.page.push.supportedHint":`Receive alerts via your operating system background service`,"settings.notifications.page.push.loadingAria":`Loading`,"settings.notifications.page.toast.permissionDenied.title":`Notification permission denied`,"settings.notifications.page.toast.permissionDenied.description":`Please enable notifications in your browser settings.`,"settings.notifications.page.toast.permissionDenied.enableInBrowser":`Enable notifications in your browser settings.`,"settings.notifications.page.toast.requestPermissionFailed":`Failed to request notification permission`,"settings.notifications.page.toast.notificationsApiUnavailable":`Notifications API not available`,"settings.notifications.page.toast.testNotificationSent":`Test notification sent successfully`,"settings.notifications.page.toast.testNotificationFailed":`Failed to send test notification`,"settings.notifications.page.toast.pushUnsupported":`Push notifications not supported`,"settings.notifications.page.toast.pushApiUnavailable":`Push API not available`,"settings.notifications.page.toast.pushKeyLoadFailed":`Failed to load push key`,"settings.notifications.page.toast.enableBackgroundFailed":`Failed to enable background notifications`,"settings.notifications.page.toast.backgroundEnabled":`Background notifications enabled`,"settings.notifications.page.toast.backgroundDisabled":`Background notifications disabled`,"settings.notifications.page.testNotification.title":`Test Notification`,"settings.notifications.page.testNotification.body":`This is a test notification from OpenChamber.`,"settings.voice.page.section.speechRecognition":`Speech Recognition`,"settings.voice.page.field.enableVoiceInput":`Enable voice input`,"settings.voice.page.field.enableVoiceInputAria":`Enable voice input (dictation)`,"settings.voice.page.section.playbackAndSummary":`Playback`,"settings.voice.page.field.provider":`Provider`,"settings.voice.page.provider.browser":`Browser`,"settings.voice.page.provider.custom":`Custom`,"settings.voice.page.provider.say":`Say`,"settings.voice.page.provider.server":`Server`,"settings.voice.page.provider.local":`Local`,"settings.voice.page.tooltip.sttLocal":`On-device transcription on the OpenChamber server. Models download automatically; no API key needed.`,"settings.voice.page.tooltip.localTts":`On-device synthesis on the OpenChamber server (Kokoro, English). The model downloads automatically; no API key needed.`,"settings.voice.page.stt.model.parakeetV2":`Parakeet v2 (English)`,"settings.voice.page.stt.model.parakeetV3":`Parakeet v3 (25 European languages)`,"settings.voice.page.stt.model.whisperBase":`Whisper base (multilingual)`,"settings.voice.page.stt.model.whisperTiny":`Whisper tiny (multilingual)`,"settings.voice.page.stt.badge.bestForEnglish":`Best for English`,"settings.voice.page.stt.badge.bestForMultilingual":`Best for multilingual`,"settings.voice.page.stt.meta.accuracy":`Accuracy`,"settings.voice.page.stt.meta.speed":`Speed`,"settings.voice.page.stt.modelInstalled":`Model installed`,"settings.voice.page.stt.modelDownloading":`Downloading model...`,"settings.voice.page.stt.modelDownloadingProgress":`Downloading model... {percent}%`,"settings.voice.page.stt.modelNotInstalled":`Model not downloaded`,"settings.voice.page.stt.modelDownload":`Download`,"settings.voice.page.stt.modelDelete":`Delete model`,"settings.voice.page.stt.modelRetry":`Retry`,"settings.voice.page.provider.wasm":`Local`,"settings.voice.page.stt.wasmModel":`Whisper Model`,"settings.voice.page.stt.wasmLoaded":`Model loaded, ready`,"settings.voice.page.stt.wasmDownloading":`Downloading model...`,"settings.voice.page.stt.wasmLoading":`Loading model...`,"settings.voice.page.stt.wasmNotLoaded":`Model will load on first voice use`,"settings.voice.page.stt.wasmDownload":`Load`,"settings.voice.page.stt.wasmRetry":`Retry`,"settings.voice.page.tooltip.browser":`Free, offline, limited mobile support.`,"settings.voice.page.tooltip.openai":`High quality, mobile ready, needs API key.`,"settings.voice.page.tooltip.custom":`OpenAI-compatible server (for example Kokoro).`,"settings.voice.page.tooltip.say":`macOS native. Fast, free, offline.`,"settings.voice.page.tooltip.sttBrowser":`Web Speech API (Chrome/Edge). Free, no setup.`,"settings.voice.page.tooltip.sttServer":`OpenAI-compatible Whisper server. Better accuracy, any language.`,"settings.voice.page.field.apiKey":`API Key`,"settings.voice.page.field.apiKeyHintUsingConfig":`Using key from configuration`,"settings.voice.page.field.apiKeyHintRequired":`OpenAI TTS requires an API key`,"settings.voice.page.field.apiKeyHintProvide":`Provide your OpenAI key`,"settings.voice.page.field.serverUrl":`Server URL`,"settings.voice.page.field.serverUrlHint":`Base URL of the OpenAI-compatible TTS server`,"settings.voice.page.field.model":`Model`,"settings.voice.page.field.voice":`Voice`,"settings.voice.page.field.voiceIdentifierHint":`Voice identifier supported by the server`,"settings.voice.page.field.configuredAbove":`Configured above`,"settings.voice.page.actions.preview":`Preview`,"settings.voice.page.field.selectVoicePlaceholder":`Select voice`,"settings.voice.page.field.auto":`Auto`,"settings.voice.page.field.speechRate":`Speech Rate`,"settings.voice.page.field.speechPitch":`Speech Pitch`,"settings.voice.page.field.speechVolume":`Speech Volume`,"settings.voice.page.field.language":`Language`,"settings.voice.page.field.selectLanguagePlaceholder":`Select language`,"settings.voice.page.field.sttBrowserSupportError":`MediaRecorder or AudioContext is not available in this browser. Server STT may not work.`,"settings.voice.page.field.sttServerUrlHint":`Base URL of the Whisper-compatible server`,"settings.voice.page.field.sttLanguageHint":`BCP-47 code (for example en, fr). Leave blank for auto-detect.`,"settings.voice.page.field.silenceThreshold":`Silence Threshold`,"settings.voice.page.field.silenceHold":`Silence Hold`,"settings.voice.page.field.transcribeOnStopAria":`Transcribe when stopping recording`,"settings.voice.page.field.transcribeOnStop":`Transcribe on Stop`,"settings.voice.page.field.millisecondsUnit":`ms`,"settings.voice.page.field.messageReadAloudButtonAria":`Message read aloud button`,"settings.voice.page.field.messageReadAloudButton":`Read message aloud button`,"settings.voice.page.field.summarizeBeforePlaybackAria":`Summarize before playback`,"settings.voice.page.field.summarizeBeforePlayback":`Summarize Before Playback`,"settings.voice.page.field.summarizeVoiceModeResponsesAria":`Summarize voice mode responses`,"settings.voice.page.field.summarizeVoiceModeResponses":`Summarize Voice Mode Responses`,"settings.voice.page.field.summarizationThreshold":`Summarization Threshold`,"settings.voice.page.field.summaryMaxLength":`Summary Max Length`,"settings.voice.page.hint.shiftClickPrefix":`Press`,"settings.voice.page.hint.shiftClickSuffix":`on the mic button to toggle continuous mode`,"settings.voice.page.preview.browserVoiceFallback":`your browser voice`,"settings.voice.page.preview.voiceLine":`Hello! I'm {voiceName}. This is how I sound.`,"settings.voice.page.preview.customServerLine":`Hello! This is a preview of the custom TTS server.`,"settings.voice.page.field.ttsInputMode":`TTS Input Mode`,"settings.voice.page.field.ttsInputModeSanitized":`Sanitized`,"settings.voice.page.field.ttsInputModeRaw":`Raw Markdown`,"settings.voice.page.field.ttsInputModeSummarized":`Summarized`,"settings.openchamber.visual.section.colorMode":`Theme`,"settings.openchamber.visual.field.themeMode":`Switch theme`,"settings.openchamber.visual.field.display":`Display`,"settings.openchamber.visual.section.localization":`Localization`,"settings.openchamber.visual.section.spacingAndLayout":`Spacing & Layout`,"settings.openchamber.visual.section.navigation":`Navigation`,"settings.openchamber.visual.section.chatRenderMode":`Chat Render Mode`,"settings.openchamber.visual.section.chatRenderModeAria":`Chat render mode`,"settings.openchamber.visual.section.messageStreamTransport":`Message Stream Transport`,"settings.openchamber.visual.section.activityDefault":`Activity Default`,"settings.openchamber.visual.section.activityDefaultAria":`Activity default mode`,"settings.openchamber.visual.section.showToolsOpenedByDefault":`Show tools opened by default:`,"settings.openchamber.visual.section.sessionAssistance":`Session Assistance`,"settings.openchamber.visual.section.reasoning":`Reasoning`,"settings.openchamber.visual.section.messageAppearance":`Message Appearance`,"settings.openchamber.visual.section.toolsAndFiles":`Tools & Files`,"settings.openchamber.visual.section.composer":`Composer`,"settings.openchamber.visual.section.userMessageRendering":`User Message Rendering`,"settings.openchamber.visual.section.userMessageRenderingAria":`User message rendering mode`,"settings.openchamber.visual.section.mermaidRendering":`Mermaid Rendering`,"settings.openchamber.visual.section.mermaidRenderingAria":`Mermaid rendering mode`,"settings.openchamber.visual.section.diffLayout":`Diff Layout`,"settings.openchamber.visual.section.diffLayoutAria":`Diff layout`,"settings.openchamber.visual.section.privacy":`Privacy`,"settings.openchamber.visual.field.lightTheme":`Light Theme`,"settings.openchamber.visual.field.darkTheme":`Dark Theme`,"settings.openchamber.visual.field.selectLightThemeAria":`Select light theme`,"settings.openchamber.visual.field.selectDarkThemeAria":`Select dark theme`,"settings.openchamber.visual.field.selectThemePlaceholder":`Select theme`,"settings.openchamber.visual.field.timeFormat":`Time Format`,"settings.openchamber.visual.field.weekStartsOn":`Week Starts On`,"settings.openchamber.visual.field.selectTimeFormatAria":`Select time format`,"settings.openchamber.visual.field.selectWeekStartAria":`Select week start`,"settings.openchamber.visual.actions.reloadThemes":`Reload themes`,"settings.openchamber.visual.actions.reloadingThemes":`Reloading themes...`,"settings.openchamber.visual.field.macVibrancy":`Window transparency`,"settings.openchamber.visual.field.macVibrancyHint":`Use the native macOS blur (vibrancy) behind the sidebar. Turn off for fully solid, opaque surfaces.`,"settings.openchamber.visual.field.dockBadge":`Dock badge`,"settings.openchamber.visual.field.dockBadgeHint":`Show a count of chats with unseen activity on the macOS dock icon.`,"settings.openchamber.visual.actions.saveAndRestart":`Save & restart`,"settings.openchamber.visual.actions.restarting":`Restarting…`,"settings.openchamber.visual.field.themeImportInfoAria":`Theme import info`,"settings.openchamber.visual.field.themeImportInfoTooltip":`Import custom themes from ~/.config/openchamber/themes/`,"settings.openchamber.visual.field.installAppName":`Install App Name`,"settings.openchamber.visual.field.sidebarBrand":`Sidebar Brand`,"settings.openchamber.visual.field.sidebarBrandHint":`Enter the full sidebar logo text. The final space-separated word uses the accent color. Leave empty to hide the logo.`,"settings.openchamber.visual.field.sidebarBrandAria":`Sidebar brand`,"settings.openchamber.visual.field.installAppNameHint":`Used by PWA installation process.`,"settings.openchamber.visual.field.pwaInstallAppNameAria":`PWA install app name`,"settings.openchamber.visual.actions.resetInstallAppNameAria":`Reset install app name`,"settings.openchamber.visual.field.installOrientation":`Install Orientation`,"settings.openchamber.visual.field.installOrientationHint":`Used by the installed web app. Reinstall the PWA after changing this.`,"settings.openchamber.visual.field.pwaInstallOrientationAria":`PWA install orientation`,"settings.openchamber.visual.field.selectOrientationPlaceholder":`Select orientation`,"settings.openchamber.visual.actions.resetInstallOrientationAria":`Reset install orientation`,"settings.openchamber.visual.field.mobileKeyboardMode":`Mobile Keyboard Behavior`,"settings.openchamber.visual.field.mobileKeyboardModeHint":`Default browser behavior is safest. Resize content asks supported browsers to shrink the app when the on-screen keyboard opens.`,"settings.openchamber.visual.field.mobileKeyboardModeAria":`Mobile keyboard behavior`,"settings.openchamber.visual.field.selectMobileKeyboardModePlaceholder":`Select keyboard behavior`,"settings.openchamber.visual.actions.resetMobileKeyboardModeAria":`Reset mobile keyboard behavior`,"settings.openchamber.visual.field.interfaceFontSize":`Interface Font Size`,"settings.openchamber.visual.field.interfaceFont":`Interface Font`,"settings.openchamber.visual.field.selectInterfaceFontAria":`Select interface font`,"settings.openchamber.visual.actions.resetInterfaceFontAria":`Reset interface font`,"settings.openchamber.visual.field.fontSizePercentageAria":`Font size percentage`,"settings.openchamber.visual.actions.resetFontSizeAria":`Reset font size`,"settings.openchamber.visual.field.terminalFontSize":`Terminal Font Size`,"settings.openchamber.visual.field.editorFontSize":`Editor Font Size`,"settings.openchamber.visual.field.codeFont":`Code Font`,"settings.openchamber.visual.field.codeFontSize":`Code Font Size`,"settings.openchamber.visual.field.codeFontSizePercentageAria":`Code font size percentage`,"settings.openchamber.visual.field.selectCodeFontAria":`Select code font`,"settings.openchamber.visual.actions.resetCodeFontAria":`Reset code font`,"settings.openchamber.visual.actions.resetCodeFontSizeAria":`Reset code font size`,"settings.openchamber.visual.actions.resetTerminalFontSizeAria":`Reset terminal font size`,"settings.openchamber.visual.actions.resetEditorFontSizeAria":`Reset editor font size`,"settings.openchamber.visual.field.spacingDensity":`Spacing Density`,"settings.openchamber.visual.actions.resetSpacingAria":`Reset spacing`,"settings.openchamber.visual.field.inputBarOffset":`Input Bar Offset`,"settings.openchamber.visual.field.inputBarOffsetTooltip":`Raise input bar to avoid OS-level screen obstructions like home bars.`,"settings.openchamber.visual.actions.resetInputBarOffsetAria":`Reset input bar offset`,"settings.openchamber.visual.field.terminalQuickKeysAria":`Terminal quick keys`,"settings.openchamber.visual.field.terminalQuickKeys":`Terminal Quick Keys`,"settings.openchamber.visual.field.terminalQuickKeysTooltip":`Show Esc, Ctrl, Arrows in terminal view`,"settings.openchamber.visual.field.fileEditorKeymap":`File editor keymap`,"settings.openchamber.visual.option.fileEditorKeymap.default":`Default`,"settings.openchamber.visual.option.fileEditorKeymap.vim":`Vim`,"settings.openchamber.visual.field.activityDefaultModeAria":`Activity default mode: {option}`,"settings.openchamber.visual.field.showExpandedBashToolsAria":`Show expanded bash tools`,"settings.openchamber.visual.field.bash":`Bash`,"settings.openchamber.visual.field.userMessageRenderingAria":`User message rendering: {option}`,"settings.openchamber.visual.field.mermaidRenderingAria":`Mermaid rendering: {option}`,"settings.openchamber.visual.field.diffLayoutAria":`Diff layout: {option}`,"settings.openchamber.visual.field.sessionRecap":`Generate Session Recap`,"settings.openchamber.visual.field.sessionRecapAria":`Generate a recap after the agent finishes`,"settings.openchamber.visual.field.sessionTitleRefresh":`Refresh Session Title From Latest Chat`,"settings.openchamber.visual.field.sessionTitleRefreshAria":`Every 5 minutes after idle, refresh the session title from the latest conversation topic`,"settings.openchamber.visual.field.sessionGoal":`Enable Session Goals`,"settings.openchamber.visual.field.sessionGoalAria":`Keep the session working toward a goal automatically`,"settings.openchamber.visual.goal.sectionTitle":`Goal`,"settings.openchamber.visual.goal.budgetLabel":`Default token budget`,"settings.openchamber.visual.goal.budgetAria":`Apply a default token budget to new goals`,"settings.openchamber.visual.goal.description":`Arm the target button in the composer and the next message becomes a goal: the agent keeps working toward it automatically, audited by the small model, even while you are away.`,"settings.openchamber.visual.field.showReasoningTracesAria":`Show reasoning traces`,"settings.openchamber.visual.field.showReasoningTraces":`Show Reasoning Traces`,"settings.openchamber.visual.field.collapsibleThinkingBlocksAria":`Enable collapsible reasoning blocks`,"settings.openchamber.visual.field.collapsibleThinkingBlocks":`Enable Collapsible Reasoning Blocks`,"settings.openchamber.visual.field.collapsibleUserMessagesAria":`Collapse long user messages`,"settings.openchamber.visual.field.collapsibleUserMessages":`Collapse Long User Messages`,"settings.openchamber.visual.field.stickyUserHeaderAria":`Sticky user header`,"settings.openchamber.visual.field.stickyUserHeader":`Sticky User Header`,"settings.openchamber.visual.field.promptNavigatorEnabledAria":`Prompt navigator`,"settings.openchamber.visual.field.promptNavigatorEnabled":`Prompt Navigator`,"settings.openchamber.visual.field.expandedEditorToolbarAria":`Always show editor toolbar`,"settings.openchamber.visual.field.expandedEditorToolbar":`Always show editor toolbar (docked under the file tabs)`,"settings.openchamber.visual.field.wideChatLayoutAria":`Wide chat layout`,"settings.openchamber.visual.field.wideChatLayout":`Wide Chat Layout`,"settings.openchamber.visual.field.codeBlockLineWrapAria":`Wrap code block lines`,"settings.openchamber.visual.field.codeBlockLineWrap":`Wrap Code Block Lines`,"settings.openchamber.visual.field.showSplitAssistantMessageActionsAria":`Inline assistant actions`,"settings.openchamber.visual.field.showSplitAssistantMessageActions":`Inline Assistant Actions`,"settings.openchamber.visual.field.showSplitAssistantMessageActionsTooltip":`Show Copy Answer, Save as image, and Read aloud on assistant text blocks that appear before later tool calls in the same response.`,"settings.openchamber.visual.field.showAssistantTpsAria":`Show TPS generation rate`,"settings.openchamber.visual.field.showAssistantTps":`Show TPS Generation Rate`,"settings.openchamber.visual.field.showAssistantTpsTooltip":`Show generation speed (tokens per second) on completed assistant messages and in the context panel. Tool call time is excluded.`,"settings.openchamber.visual.field.allowPromptingSubagentSessionsAria":`Allow prompting subagent sessions`,"settings.openchamber.visual.field.allowPromptingSubagentSessions":`Allow Prompting Subagent Sessions`,"settings.openchamber.visual.field.showToolFileIconsAria":`Show tool file icons`,"settings.openchamber.visual.field.showToolFileIcons":`Show Tool File Icons`,"settings.openchamber.visual.field.showSubagentTaskDetailsAria":`Show sub-agent work details`,"settings.openchamber.visual.field.showSubagentTaskDetails":`Show Sub-agent Work Details`,"settings.openchamber.visual.field.showSubagentTaskDetailsHint":`When off, sub-agent tasks stay compact. Click the row to open the sub-agent session.`,"settings.openchamber.visual.field.showTurnChangedFilesAria":`Show changed files for completed turns`,"settings.openchamber.visual.field.showTurnChangedFiles":`Show Changed Files for Completed Turns`,"settings.openchamber.visual.field.showDotfilesAria":`Show dotfiles`,"settings.openchamber.visual.field.showDotfiles":`Show Dotfiles`,"settings.openchamber.visual.field.queueMessagesByDefaultAria":`Queue messages by default`,"settings.openchamber.visual.field.queueMessagesByDefault":`Queue Messages by Default`,"settings.openchamber.visual.field.queueMessagesByDefaultTooltip":`When enabled, Enter queues messages. Use {modifier}+Enter to send.`,"settings.openchamber.visual.field.persistDraftMessagesAria":`Persist draft messages`,"settings.openchamber.visual.field.persistDraftMessages":`Persist Draft Messages`,"settings.openchamber.visual.field.enableSpellcheckInTextInputsAria":`Enable spellcheck in text inputs`,"settings.openchamber.visual.field.enableSpellcheckInTextInputs":`Enable Spellcheck in Text Inputs`,"settings.openchamber.visual.field.sendAnonymousUsageReportsAria":`Send anonymous usage reports`,"settings.openchamber.visual.field.sendAnonymousUsageReports":`Send anonymous usage reports`,"settings.openchamber.visual.field.sendAnonymousUsageReportsHint":`Helps us understand which app versions are actively used so we can prioritize improvements. Only app version, platform, and runtime are collected - no personal data or code.`,"settings.openchamber.visual.transcriptCache.label":`Clear local session cache`,"settings.openchamber.visual.transcriptCache.description":`Removes cached conversation content from this runtime. Server history stays available.`,"settings.openchamber.visual.transcriptCache.action":`Clear cache`,"settings.openchamber.visual.transcriptCache.dialog.title":`Clear local session cache?`,"settings.openchamber.visual.transcriptCache.dialog.description":`Cached conversation content on this device will be removed. Server history stays available.`,"settings.openchamber.visual.transcriptCache.dialog.clearing":`Clearing…`,"settings.openchamber.visual.transcriptCache.toast.cleared":`Local session cache cleared`,"settings.openchamber.visual.transcriptCache.toast.failed":`Could not clear local session cache`,"settings.openchamber.visual.option.themeMode.system":`System`,"settings.openchamber.visual.option.themeMode.light":`Light`,"settings.openchamber.visual.option.themeMode.dark":`Dark`,"settings.openchamber.visual.option.diffLayout.dynamic.label":`Dynamic`,"settings.openchamber.visual.option.diffLayout.dynamic.description":`New inline, modified side-by-side.`,"settings.openchamber.visual.option.diffLayout.inline.label":`Always inline`,"settings.openchamber.visual.option.diffLayout.inline.description":`Show as a single unified view.`,"settings.openchamber.visual.option.diffLayout.sideBySide.label":`Always side-by-side`,"settings.openchamber.visual.option.diffLayout.sideBySide.description":`Compare original and modified files.`,"settings.openchamber.visual.option.mermaidRendering.svg.label":`SVG`,"settings.openchamber.visual.option.mermaidRendering.svg.description":`Render diagrams as scalable graphics.`,"settings.openchamber.visual.option.mermaidRendering.ascii.label":`ASCII`,"settings.openchamber.visual.option.mermaidRendering.ascii.description":`Render diagrams as text blocks.`,"settings.openchamber.visual.option.pwaOrientation.system.label":`Follow system`,"settings.openchamber.visual.option.pwaOrientation.system.description":`Respect the device rotation setting.`,"settings.openchamber.visual.option.pwaOrientation.portrait.label":`Portrait lock`,"settings.openchamber.visual.option.pwaOrientation.portrait.description":`Install the app locked to portrait.`,"settings.openchamber.visual.option.pwaOrientation.landscape.label":`Landscape lock`,"settings.openchamber.visual.option.pwaOrientation.landscape.description":`Install the app locked to landscape.`,"settings.openchamber.visual.option.mobileKeyboardMode.native.label":`Follow browser`,"settings.openchamber.visual.option.mobileKeyboardMode.native.description":`Use the browser default for panning and viewport changes when the keyboard opens.`,"settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.label":`Resize content`,"settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.description":`Ask supported browsers to shrink the app layout instead of relying only on panning.`,"settings.openchamber.visual.option.userMessageRendering.markdown.label":`Markdown`,"settings.openchamber.visual.option.userMessageRendering.markdown.description":`Render user text with markdown formatting.`,"settings.openchamber.visual.option.userMessageRendering.plain.label":`Plain text`,"settings.openchamber.visual.option.userMessageRendering.plain.description":`Render user text with preserved whitespace and links.`,"chat.message.userText.collapseAria":`Collapse user message`,"settings.openchamber.visual.option.chatRenderMode.sorted.label":`Sorted`,"settings.openchamber.visual.option.chatRenderMode.sorted.description":`Park intermediate work in Activity; stream only the final conclusion.`,"settings.openchamber.visual.option.chatRenderMode.live.label":`Live`,"settings.openchamber.visual.option.chatRenderMode.live.description":`Stream assistant text and tools as they arrive.`,"settings.openchamber.visual.option.messageTransport.auto.label":`Auto`,"settings.openchamber.visual.option.messageTransport.auto.description":`Prefer WebSocket and fall back to SSE if needed.`,"settings.openchamber.visual.option.messageTransport.ws.label":`WebSocket`,"settings.openchamber.visual.option.messageTransport.ws.description":`Use WebSocket for message streaming.`,"settings.openchamber.visual.option.messageTransport.sse.label":`SSE`,"settings.openchamber.visual.option.messageTransport.sse.description":`Use Server-Sent Events for message streaming.`,"settings.openchamber.visual.option.activityRenderMode.collapsed.label":`Collapsed`,"settings.openchamber.visual.option.activityRenderMode.collapsed.description":`Keep Activity collapsed by default.`,"settings.openchamber.visual.option.activityRenderMode.summary.label":`Expanded`,"settings.openchamber.visual.option.activityRenderMode.summary.description":`Expand Activity by default.`,"settings.openchamber.visual.option.timeFormat.auto.label":`Auto`,"settings.openchamber.visual.option.timeFormat.auto.description":`Use system locale preference.`,"settings.openchamber.visual.option.timeFormat.24h.label":`24-hour`,"settings.openchamber.visual.option.timeFormat.24h.description":`Show time as 14:15.`,"settings.openchamber.visual.option.timeFormat.12h.label":`12-hour`,"settings.openchamber.visual.option.timeFormat.12h.description":`Show time as 02:15 PM.`,"settings.openchamber.visual.option.weekStart.auto.label":`Auto`,"settings.openchamber.visual.option.weekStart.auto.description":`Use locale week start.`,"settings.openchamber.visual.option.weekStart.monday.label":`Monday`,"settings.openchamber.visual.option.weekStart.sunday.label":`Sunday`,"settings.magicPrompts.page.loading.aria":`Loading`,"settings.magicPrompts.page.loading.text":`Loading Magic Prompts...`,"settings.magicPrompts.page.block.visiblePrompt":`Visible Prompt`,"settings.magicPrompts.page.block.instructions":`Instructions`,"settings.magicPrompts.page.group.gitCommitGenerate.title":`Commit Generation`,"settings.magicPrompts.page.group.gitCommitGenerate.description":`Prompts used for commit message generation: visible user message + hidden instructions.`,"settings.magicPrompts.page.group.gitPrGenerate.title":`PR Generation`,"settings.magicPrompts.page.group.gitPrGenerate.description":`Prompts used for PR title/body generation: visible user message + hidden instructions.`,"settings.magicPrompts.page.group.githubPrReview.title":`PR Review`,"settings.magicPrompts.page.group.githubPrReview.description":`Prompts used for PR review flow: visible user message + hidden instruction payload.`,"settings.magicPrompts.page.group.githubIssueReview.title":`Issue Review`,"settings.magicPrompts.page.group.githubIssueReview.description":`Prompts used for issue review flow: visible user message + hidden instruction payload.`,"settings.magicPrompts.page.group.githubPrFailedChecksReview.title":`PR Failed Checks Review`,"settings.magicPrompts.page.group.githubPrFailedChecksReview.description":`Prompts used for PR failed checks analysis.`,"settings.magicPrompts.page.group.githubPrCommentsReview.title":`PR Comments Review`,"settings.magicPrompts.page.group.githubPrCommentsReview.description":`Prompts used for PR comments analysis.`,"settings.magicPrompts.page.group.githubSinglePrCommentReview.title":`Single PR Comment Review`,"settings.magicPrompts.page.group.githubSinglePrCommentReview.description":`Prompts used for single PR comment analysis.`,"settings.magicPrompts.page.group.gitConflictResolve.title":`Merge/Rebase Conflict Resolution`,"settings.magicPrompts.page.group.gitConflictResolve.description":`Prompts used when resolving merge/rebase conflicts with AI.`,"settings.magicPrompts.page.group.gitCherrypickConflictResolve.title":`Cherry-pick Conflict Resolution`,"settings.magicPrompts.page.group.gitCherrypickConflictResolve.description":`Prompts used when resolving cherry-pick conflicts in integrate flow.`,"settings.magicPrompts.page.group.planImprove.title":`Improve Plan`,"settings.magicPrompts.page.group.planImprove.description":`Hidden prompt used when sending a saved plan into an improve flow.`,"settings.magicPrompts.page.group.planTodo.title":`Todo Planning`,"settings.magicPrompts.page.group.planTodo.description":`Hidden prompt used when sending a todo into a new planning session.`,"settings.magicPrompts.page.group.planImplement.title":`Implement Plan`,"settings.magicPrompts.page.group.planImplement.description":`Hidden prompt used when sending a saved plan into an implement flow.`,"settings.magicPrompts.page.group.sessionSummary.title":`Session Summary`,"settings.magicPrompts.page.group.sessionSummary.description":`Prompts used by the /summary slash command: visible user message + hidden instructions. Non-destructive - does not compact session history.`,"settings.magicPrompts.page.group.sessionWorkspaceReview.title":`Workspace Review`,"settings.magicPrompts.page.group.sessionExplore.title":`Codebase Tour`,"settings.magicPrompts.page.group.sessionExplore.description":`Prompts used by the /explore slash command: visible user message + hidden instructions. Investigates the repository and gives a structured orientation — the big picture, main modules, how they connect, and where to start — rather than a file-by-file dump.`,"settings.magicPrompts.page.group.sessionWorkspaceReview.description":`Prompts used by the /workspace-review slash command: visible user message + hidden instructions. Reviews the workspace diff for whether it achieves its intent and is correct and adequate, classifying findings by severity.`,"settings.magicPrompts.page.group.sessionFeaturePlan.title":`Feature Planning`,"settings.magicPrompts.page.group.sessionFeaturePlan.description":`Prompts used by the /plan-feature slash command: visible user message + hidden instructions. Runs a guided dialogue that researches the code and asks clarifying questions in small batches before producing an implementation plan.`,"settings.magicPrompts.page.group.sessionCatchUp.title":`Catch Up`,"settings.magicPrompts.page.group.sessionCatchUp.description":`Prompts used by the /catch-up slash command: visible user message + hidden instructions. Builds branch-aware context — the branch's commits, its PR, and uncommitted work together — to understand what you were doing, then gives a digestible summary and a product-focused next step.`,"settings.magicPrompts.page.group.sessionDebug.title":`Debugging`,"settings.magicPrompts.page.group.sessionDebug.description":`Prompts used by the /debug slash command: visible user message + hidden instructions. Runs a guided root-cause investigation — captures the symptom, forms hypotheses, checks them against the code, and confirms the cause before proposing a fix.`,"settings.magicPrompts.page.group.sessionWeigh.title":`Weigh Options`,"settings.magicPrompts.page.group.sessionWeigh.description":`Prompts used by the /weigh slash command: visible user message + hidden instructions. Investigates the code, then lays out 2-3 distinct approaches with trade-offs and a recommendation — without writing a plan or code.`,"settings.magicPrompts.page.group.sessionFusion.title":`Fusion`,"settings.magicPrompts.page.group.sessionFusion.description":`Prompts used when combining multi-run outputs into one final answer: visible user message + hidden instructions before source results.`,"settings.magicPrompts.page.actions.resetting":`Resetting...`,"settings.magicPrompts.page.actions.resetAllOverrides":`Reset All Overrides`,"settings.magicPrompts.page.actions.resetToDefault":`Reset to Default`,"settings.magicPrompts.page.actions.save":`Save`,"settings.magicPrompts.page.placeholdersLabel":`Placeholders:`,"settings.magicPrompts.page.validation.visiblePromptRequired":`Visible prompt cannot be empty.`,"settings.magicPrompts.page.status.unsavedChanges":`Unsaved changes`,"settings.magicPrompts.page.status.usingSavedOverride":`Using saved override`,"settings.magicPrompts.page.status.usingBuiltinDefault":`Using built-in default`,"settings.magicPrompts.page.toast.loadFailed":`Failed to load Magic Prompts`,"settings.magicPrompts.page.toast.visiblePromptRequired":`Visible prompt cannot be empty`,"settings.magicPrompts.page.toast.saved":`Magic prompt saved`,"settings.magicPrompts.page.toast.saveFailed":`Failed to save magic prompt`,"settings.magicPrompts.page.toast.resetSuccess":`Prompt reset to default`,"settings.magicPrompts.page.toast.resetFailed":`Failed to reset prompt`,"settings.magicPrompts.page.toast.resetAllSuccess":`All prompt overrides reset`,"settings.magicPrompts.page.toast.resetAllFailed":`Failed to reset all prompts`,"settings.openchamber.visual.section.followUpBehavior":`Follow-up behavior`,"settings.openchamber.visual.section.followUpBehaviorAria":`Follow-up behavior`,"settings.openchamber.visual.field.followUpBehaviorAria":`Follow-up behavior: {option}`,"settings.openchamber.visual.field.followUpBehaviorDescription":`Choose what happens when you press Enter on a follow-up message while the agent is still responding.`,"settings.openchamber.visual.option.followUpBehavior.steer.label":`Steer`,"settings.openchamber.visual.option.followUpBehavior.queue.label":`Queue`,"settings.page.assistants.title":`Assistants`,"assistants.title":`Assistants`,"assistants.subtitle":`Your persistent helpers`,"assistants.listAria":`Assistant list`,"assistants.menu.edit":`Edit`,"assistants.selectorAria":`Switch assistant. Current: {name}`,"assistants.state.unsupportedTitle":`Assistants are unsupported`,"assistants.state.unsupportedDescription":`This OpenChamber instance does not provide the Assistant capability.`,"assistants.state.instanceDisabledDescription":`Enable Assistants in Settings to use this feature.`,"assistants.onboarding.title":`Create your first assistant`,"assistants.onboarding.description":`Set up a persistent helper, then keep one long conversation with it here.`,"assistants.onboarding.action":`Create assistant`,"assistants.actions.retry":`Try again`,"assistants.actions.backToChat":`Back to chat`,"assistants.mode.continuous":`Continuous`,"assistants.mode.stateless":`Stateless`,"assistants.state.unavailable":`Assistants are unavailable on this instance.`,"assistants.state.staleSnapshot":`Showing the last available snapshot. Refresh failed.`,"assistants.state.sending":`Sending`,"assistants.state.reconciling":`Confirming delivery…`,"assistants.state.sendFailed":`Delivery failed. You can retry safely.`,"assistants.state.instanceDisabled":`Assistants are disabled for this instance.`,"assistants.state.assistantDisabled":`This assistant is disabled.`,"assistants.state.invalidConfiguration":`This assistant’s model configuration is unavailable.`,"assistants.state.messagesFailed":`The conversation could not be loaded.`,"assistants.conversation.continuousHint":`One continuous conversation`,"assistants.conversation.statelessHint":`Each turn runs in a fresh session without prior chat context`,"assistants.conversation.newSessionDivider":`New conversation`,"assistants.conversation.emptyTitle":`Start a conversation with {name}`,"assistants.conversation.emptyDescription":`Send a message to begin this long-running conversation.`,"assistants.composer.attachment":`Image attachment`,"assistants.composer.removeAttachment":`Remove attachment`,"assistants.composer.addImage":`Add image`,"assistants.composer.send":`Send message`,"assistants.composer.placeholder":`Message your assistant…`,"assistants.composer.disabledPlaceholder":`Assistant unavailable`,"assistants.composer.selectionConflict":`The selection changed elsewhere. The latest settings were reloaded.`,"assistants.composer.selectionSaveFailed":`Could not save the model and agent selection.`,"assistants.composer.commandUnavailable":`Available commands are /new and /compact.`,"assistants.settings.description":`Configure assistants to help with your work. `,"assistants.settings.descriptionLearnMore":`Learn more`,"assistants.settings.instanceEnabled":`On`,"assistants.settings.listTitle":`Assistants`,"assistants.settings.create":`New assistant`,"assistants.settings.delete":`Delete`,"assistants.settings.deleteConfirm":`Delete {name}? Its conversation history will be archived.`,"assistants.settings.name":`Name`,"assistants.settings.enabled":`Assistant enabled`,"assistants.settings.defaultShare":`Default assistant for sharing from this client`,"assistants.settings.defaultPrompt":`Default prompt`,"assistants.settings.defaultPromptPlaceholder":`Set the assistant’s role and working style…`,"assistants.settings.runtime":`Runtime`,"assistants.settings.model":`Provider and model`,"assistants.settings.agent":`OpenCode agent`,"assistants.settings.mode":`Conversation mode`,"assistants.settings.workspace":`Workspace`,"assistants.settings.workspacePlaceholder":`Managed workspace`,"assistants.settings.workspaceCurrentPath":`Current path`,"assistants.settings.workspaceChangeHint":`Changing workspace starts a new assistant session.`,"assistants.settings.save":`Save assistant`,"assistants.settings.empty":`Create your first assistant.`,"assistants.settings.validation.required":`Name and model are required.`,"assistants.settings.toast.saved":`Assistant saved.`,"assistants.settings.toast.saveFailed":`Assistant could not be saved.`,"assistants.settings.toast.deleted":`Assistant deleted.`,"assistants.settings.toast.deleteFailed":`Assistant could not be deleted.`,"assistants.settings.toast.toggleFailed":`Assistant availability could not be changed.`,"assistants.shareWelcome.title":`Share content with your assistant`,"assistants.shareWelcome.description":`From any app, tap Share and choose an OpenChamber assistant. Links, text, and images land in its Inbox Topic.`,"assistants.shareWelcome.examplesAria":`Examples of shareable content`,"assistants.shareWelcome.example.chat.title":`iOS Share Sheet`,"assistants.shareWelcome.example.chat.description":`Open Share and choose your assistant.`,"assistants.shareWelcome.example.article.title":`Android Direct Share`,"assistants.shareWelcome.example.article.description":`Your assistant appears among quick contacts.`,"assistants.shareWelcome.example.note.title":`Choose an assistant`,"assistants.shareWelcome.example.note.description":`The shared item is delivered to its Inbox Topic.`,"assistants.shareWelcome.action":`Got it`,"common.loading":`Loading...`,"sessions.startupSync.title":`Syncing sessions`,"sessions.startupSync.progress":`Loaded {completed} of {total} projects`,"common.unavailable":`Unavailable`,"common.language.english":`English`,"common.language.french":`French`,"common.language.simplifiedChinese":`Chinese (Simplified)`,"common.language.traditionalChinese":`Chinese (Traditional)`,"common.language.ukrainian":`Ukrainian`,"common.language.spanish":`Spanish`,"common.language.brazilianPortuguese":`Brazilian Portuguese`,"common.language.korean":`Korean`,"common.language.polish":`Polish`,"common.language.japanese":`Japanese`,"common.revealPath.finder":`Reveal in Finder`,"common.revealPath.fileExplorer":`Open in File Explorer`,"common.revealPath.fileManager":`Open in File Manager`,"pwa.installPrompt.description":`Install OpenChamber for quicker access`,"pwa.installPrompt.action":`Install`,"pwa.installPrompt.dismiss":`Dismiss`,"pwa.installPrompt.started":`Install started`,"pwa.installPrompt.installed":`OpenChamber installed`,"shareOpinion.actions.shareOpinion":`Share opinion`,"shareOpinion.actions.bookCall":`Book a call`,"shareOpinion.actions.shortSurvey":`Short survey`,"shareOpinion.dialog.title":`Share your opinion`,"shareOpinion.toast.title":`Help shape OpenChamber`,"shareOpinion.toast.description":`Share what is useful, confusing, or missing to help shape what comes next.`,"sessions.sidebar.footer.actions.shareOpinion":`Share opinion`,"layout.mainTab.chat":`Chat`,"layout.mainTab.plan":`Plan`,"layout.mainTab.diff":`Diff`,"layout.mainTab.diagram":`Diagram`,"layout.mainTab.files":`Files`,"layout.mainTab.terminal":`Terminal`,"layout.mainTab.context":`Context`,"mobile.nav.aria":`Mobile navigation`,"mobile.nav.secondaryPageAria":`Detail page`,"mobile.connect.welcome.title":`Connect to OpenChamber`,"mobile.connect.welcome.description":`Add a server URL or scan a pairing QR code to start using the mobile app.`,"mobile.connect.url.label":`Server URL`,"mobile.connect.url.placeholder":`http://192.168.1.74:2606`,"mobile.connect.link.divider":`Or use a pairing link`,"mobile.connect.address.divider":`Or enter a server address`,"mobile.connect.link.label":`Pairing link`,"mobile.connect.link.placeholder":`Paste openchamber://connect link`,"mobile.connect.link.invalid":`That pairing link is not valid or has expired.`,"mobile.connect.token.label":`Client token`,"mobile.connect.token.placeholder":`Paste access token`,"mobile.connect.token.hint":`Only needed if your server requires a token instead of a password.`,"mobile.connect.password.label":`Password`,"mobile.connect.password.placeholder":`OpenChamber password`,"mobile.connect.connectButton":`Connect`,"mobile.connect.unlockButton":`Unlock and connect`,"mobile.connect.cancelPassword":`Use another server`,"mobile.connect.connecting":`Connecting...`,"mobile.connect.scanQr":`Scan QR code`,"mobile.connect.welcome.scanHint":`On your computer, open «Add a device» to show a QR code, then scan it here.`,"mobile.connect.advanced":`Advanced`,"mobile.connect.manual.toggle":`Manual connection`,"mobile.connect.scan.permissionDenied":`Camera access is off. Enable it in Settings to scan a QR code.`,"mobile.connect.scan.failed":`Could not scan that QR code. Try again or enter the URL manually.`,"mobile.connect.scan.invalid":`That QR code is not an OpenChamber connection code.`,"mobile.connect.scan.unsupported":`QR scanning is only available in the installed mobile app.`,"mobile.connect.saved.title":`Saved connections`,"mobile.connect.saved.empty":`No saved connections yet.`,"mobile.connect.relay.badge":`Via OpenChamber Relay`,"mobile.connect.error.urlRequired":`Enter a server URL.`,"mobile.connect.splash.connectingTo":`Connecting to device:`,"mobile.connect.error.invalidUrl":`That server URL is not valid.`,"mobile.connect.error.unreachable":`Could not reach that OpenChamber server.`,"mobile.connect.error.authRequired":`This server needs a password or client token.`,"mobile.connect.error.passwordFailed":`Could not unlock that server. Check the password.`,"mobile.instances.addTitle":`Add instance`,"mobile.instances.addManual":`Add by address`,"mobile.instances.editTitle":`Edit instance`,"mobile.instances.edit":`Edit`,"mobile.instances.delete":`Delete`,"mobile.instances.deleteAria":`Delete {label}`,"mobile.instances.confirmDeleteAria":`Confirm deleting {label}`,"mobile.instances.cancelDeleteAria":`Keep {label}`,"mobile.instances.cancelEdit":`Cancel`,"mobile.instances.label.label":`Name`,"mobile.instances.label.placeholder":`Optional display name`,"mobile.instances.saveNew":`Save instance`,"mobile.instances.status.connectedDirect":`Connected · Local network`,"mobile.instances.status.connectedRelay":`Connected · Relay`,"mobile.instances.saveEdit":`Save changes`,"mobile.nav.changes":`Changes`,"mobile.nav.settings":`Settings`,"mobile.tabs.projects":`Projects`,"mobile.tabs.assistant":`Agent`,"mobile.tabs.scheduled":`Schedule`,"mobile.tabs.settings":`Settings`,"mobile.surface.closeAria":`Close`,"mobile.header.openMenuAria":`Open menu`,"mobile.header.openMetadataAria":`Open session metadata`,"mobile.header.metadata.context":`Context`,"mobile.header.metadata.branch":`Branch`,"mobile.header.metadata.usage":`Usage`,"mobile.menu.titleAria":`Workspace tools`,"mobile.menu.newSession":`New Session`,"mobile.chat.syncingMessages":`Syncing messages...`,"mobile.menu.files":`Files`,"mobile.menu.changes":`Changes`,"mobile.menu.mcp":`MCP`,"mobile.menu.instances":`Instances`,"mobile.settings.switchInstance":`Switch instance`,"mobile.menu.update":`Update`,"mobile.menu.settings":`Settings`,"mobile.sessions.newChatCta":`New Session in {project}`,"mobile.sessions.dateGroup.today":`Today`,"mobile.sessions.dateGroup.yesterday":`Yesterday`,"mobile.sessions.dateGroup.thisWeek":`Earlier this week`,"mobile.sessions.dateGroup.older":`Older`,"mobile.sessions.section.worktrees":`Worktrees`,"mobile.sessions.mainWorkspace":`Main workspace`,"mobile.sessions.section.pinned":`Pinned`,"mobile.sessions.searchAria":`Search sessions`,"mobile.sessions.section.otherProjects":`Switch project`,"mobile.sessions.section.projects":`Projects`,"mobile.sessions.empty.noProjectsTitle":`No projects yet`,"mobile.sessions.empty.noProjectsDescription":`Add a project to start chatting with your code.`,"mobile.sessions.empty.noSessionsTitle":`No sessions yet`,"mobile.sessions.empty.noSessionsDescription":`Start your first chat to see it here.`,"mobile.sessions.empty.searchTitle":`No matches`,"mobile.sessions.empty.searchDescription":`Try a different search term.`,"mobile.sessions.showArchived":`Show archived ({count})`,"mobile.sessions.hideArchived":`Hide archived`,"mobile.sessions.activeWorktreeAria":`Active worktree`,"mobile.sessions.activeProjectAria":`Active project`,"mobile.sessions.startNewChat":`New Session`,"mobile.sessions.newChat":`New Session`,"mobile.sessions.editOrder":`Reorder projects`,"mobile.sessions.doneEditing":`Done`,"mobile.sessions.editOrderHint":`Drag the handle to reorder projects. Tap the check to finish.`,"mobile.sessions.editProjectAria":`Edit {label}`,"mobile.sessions.dragHandleAria":`Drag {label} to reorder`,"mobile.sessions.moveUpAria":`Move {label} up`,"mobile.sessions.moveDownAria":`Move {label} down`,"mobile.sessions.removeProjectAria":`Remove {label}`,"mobile.sessions.cancelRemoveProjectAria":`Cancel removing {label}`,"mobile.sessions.confirmRemoveProject":`Close`,"mobile.sessions.confirmRemoveProjectAria":`Confirm removing {label}`,"mobile.projects.closeConfirmMessage":`Close “{title}”? It will leave your project list. Sessions stay on disk.`,"mobile.sessions.toast.projectRemoved":`Removed {label}`,"mobile.sessions.archiveSessionAria":`Archive {title}`,"mobile.sessions.cancelArchiveAria":`Cancel archiving {title}`,"mobile.sessions.stopSessionAria":`Stop {title}`,"mobile.sessions.stopGroupAria":`Stop all running in {label}`,"mobile.sessions.stopSubsessionsAria":`Stop running subsessions of {title}`,"mobile.projectEdit.worktreesTitle":`Worktrees`,"mobile.projectEdit.worktreesEmpty":`No worktrees in this project yet.`,"mobile.projectEdit.reorderHint":`Drag to reorder worktrees.`,"mobile.projectEdit.dragWorktreeAria":`Drag {label} to reorder`,"mobile.projectEdit.deleteWorktreeAria":`Remove worktree {label}`,"mobile.projectEdit.deleteWorktreeTitle":`Remove worktree`,"mobile.projectEdit.deleteWorktreeConfirmButton":`Remove`,"mobile.projectEdit.deleteWorktreeConfirm":`Remove the worktree “{name}”? This can’t be undone.`,"mobile.projectEdit.deleteWorktreeDirty":`This worktree has uncommitted changes that will be lost.`,"mobile.projectEdit.deleteWorktreeArchiveNote":`{count} attached session(s) will be archived.`,"mobile.projectEdit.deleteLocalBranch":`Also delete local branch`,"mobile.projectEdit.deleteRemoteBranch":`Also delete remote branch`,"mobile.sessions.showMore":`Show {count} more`,"mobile.sessions.search.section.sessions":`Sessions`,"mobile.sessions.search.section.archived":`Archived`,"mobile.sessions.search.section.projects":`Projects`,"mobile.sessions.clearSearchAria":`Clear search`,"mobile.header.noProject":`Select a project`,"mobile.header.activeSession":`Active session`,"mobile.header.noSession":`No active session`,"mobile.sessions.openSheetAria":`Open sessions and projects`,"mobile.sessions.closeSheetAria":`Close sessions and projects`,"mobile.sessions.sheet.title":`Recent conversations`,"mobile.sessions.sheet.resizeAria":`Resize sessions panel`,"mobile.changes.sheet.resizeAria":`Resize changes panel`,"mobile.sessions.sheet.description":`Switch projects, open sessions, or start a new chat.`,"mobile.sessions.search.placeholder":`Search sessions`,"mobile.sessions.empty":`No sessions found.`,"mobile.sessions.unassignedProject":`Other sessions`,"mobile.sessions.newSessionAria":`Start a new chat in this project`,"mobile.sessions.untitled":`Untitled session`,"mobile.sessions.project.sessionsSingle":`1 session`,"mobile.sessions.project.sessionsPlural":`{count} sessions`,"mobile.files.refreshAria":`Refresh files`,"mobile.files.backToParentAria":`Back to {name}`,"mobile.files.rootDirectory":`Project files`,"mobile.files.search.placeholder":`Search files`,"mobile.files.search.empty":`No files found.`,"mobile.files.parentDirectory":`Parent directory`,"mobile.files.empty.noDirectory":`Select a project to browse files.`,"mobile.files.empty.directory":`This directory is empty.`,"mobile.files.error.listFailed":`Failed to load files`,"mobile.files.error.readUnavailable":`File preview is unavailable in this runtime.`,"mobile.files.file.truncated":`File preview truncated for mobile.`,"mobile.files.copyPathAria":`Copy file path`,"mobile.files.copyContent":`Copy content`,"mobile.files.copyContentAria":`Copy file content`,"mobile.files.toast.pathCopied":`Path copied`,"mobile.files.toast.contentCopied":`Content copied`,"mobile.files.toast.copyFailed":`Copy failed`,"mobile.changes.placeholder.title":`Changes`,"mobile.changes.placeholder.description":`Working-tree review, sync, and commit actions will live here.`,"mobile.changes.branchLabel":`Branch: {branch}`,"mobile.changes.noRemote":`No remote available`,"mobile.changes.cleanDescription":`There are no changed files in this workspace.`,"mobile.changes.diffDetail.subtitle":`Read-only diff`,"mobile.changes.diffDetail.loadFailed":`Failed to load diff`,"mobile.changes.diffDetail.missingTitle":`File is no longer changed`,"mobile.changes.diffDetail.missingDescription":`Go back to Changes and refresh the list.`,"mobile.changes.diffDetail.imageUnavailable":`Image diffs are not available in mobile Changes yet.`,"mobile.settings.placeholder.title":`Settings`,"mobile.settings.placeholder.description":`Focused mobile connection and app settings will live here.`,"layout.rightSidebar.git":`Git`,"layout.rightSidebar.files":`Files`,"layout.rightSidebar.context":`Context`,"layout.services.instance":`Instance`,"layout.services.usage":`Usage`,"sessions.sidebar.header.actions.closeSessions":`Close sessions`,"sessions.sidebar.header.actions.addProject":`Add project`,"sessions.sidebar.header.actions.newSession":`New chat`,"sessions.sidebar.header.actions.newMultiRun":`New multi-run`,"sessions.sidebar.header.actions.scheduledTasks":`Schedule`,"sessions.scheduledTasks.dialog.title":`Schedule`,"sessions.scheduledTasks.dialog.description":`Server-side schedules create a new session and send a configured prompt.`,"sessions.scheduledTasks.dialog.project.label":`Project`,"sessions.scheduledTasks.dialog.project.placeholder":`Select project`,"sessions.scheduledTasks.dialog.project.empty":`No projects`,"sessions.scheduledTasks.dialog.actions.newTask":`New schedule`,"sessions.scheduledTasks.dialog.actions.create":`Create`,"sessions.scheduledTasks.dialog.actions.moreAria":`More actions for {taskName}`,"sessions.scheduledTasks.dialog.actions.delete":`Delete`,"sessions.scheduledTasks.dialog.actions.pause":`Pause`,"sessions.scheduledTasks.dialog.actions.resume":`Resume`,"sessions.scheduledTasks.workspace.filters.all":`All`,"sessions.scheduledTasks.workspace.filters.active":`Active`,"sessions.scheduledTasks.workspace.filters.paused":`Paused`,"sessions.scheduledTasks.workspace.views.aria":`Schedule views`,"sessions.scheduledTasks.workspace.views.tasks":`Tasks`,"sessions.scheduledTasks.workspace.views.history":`History`,"sessions.scheduledTasks.history.loading":`Loading run history…`,"sessions.scheduledTasks.history.error.title":`Run history could not load`,"sessions.scheduledTasks.history.error.description":`OpenChamber could not load the recorded runs.`,"sessions.scheduledTasks.history.error.more":`More runs could not load. Your loaded history is still available.`,"sessions.scheduledTasks.history.retry":`Retry`,"sessions.scheduledTasks.history.empty.title":`No runs yet`,"sessions.scheduledTasks.history.empty.description":`Scheduled and manual runs will appear here.`,"sessions.scheduledTasks.history.trigger.scheduled":`Scheduled`,"sessions.scheduledTasks.history.trigger.manual":`Manual`,"sessions.scheduledTasks.history.meta.trigger":`Trigger`,"sessions.scheduledTasks.history.meta.started":`Started`,"sessions.scheduledTasks.history.meta.ended":`Ended`,"sessions.scheduledTasks.history.meta.duration":`Duration`,"sessions.scheduledTasks.history.ended.unavailable":`—`,"sessions.scheduledTasks.history.duration.pending":`In progress`,"sessions.scheduledTasks.history.duration.lessThanOneSecond":`<1 sec`,"sessions.scheduledTasks.history.duration.milliseconds":`{count} ms`,"sessions.scheduledTasks.history.duration.seconds":`{count} sec`,"sessions.scheduledTasks.history.duration.minutesSeconds":`{minutes} min {seconds} sec`,"sessions.scheduledTasks.history.duration.minutes":`{count} min`,"sessions.scheduledTasks.history.duration.hoursMinutes":`{hours} h {minutes} min`,"sessions.scheduledTasks.history.duration.hours":`{count} h`,"sessions.scheduledTasks.history.openSession":`Open session`,"sessions.toast.openFailed":`Unable to load conversation {sessionId}`,"sessions.toast.openFailedMissingDirectory":`Unable to load conversation {sessionId}. Workspace path is missing.`,"sessions.toast.openFailedMissingSessionId":`Unable to open conversation. Session id is missing.`,"sessions.scheduledTasks.history.loadingMore":`Loading more…`,"sessions.scheduledTasks.history.loadMore":`Load more`,"sessions.scheduledTasks.workspace.search.placeholder":`Search schedules…`,"sessions.scheduledTasks.workspace.search.noResults":`No schedules match your search.`,"sessions.scheduledTasks.workspace.partialLoadWarning":`Some projects could not load schedules. Loaded schedules remain available.`,"sessions.scheduledTasks.workspace.editor.emptyTitle":`Select a schedule`,"sessions.scheduledTasks.workspace.editor.emptyDescription":`Choose a schedule from the list or create a new one.`,"sessions.scheduledTasks.workspace.confirm.discardChanges":`Unsaved changes will be discarded. Continue?`,"sessions.scheduledTasks.editor.panel.details":`Details`,"sessions.scheduledTasks.editor.panel.frequency":`Frequency`,"sessions.scheduledTasks.dialog.actions.runNow":`Run now`,"sessions.scheduledTasks.dialog.actions.edit":`Edit`,"sessions.scheduledTasks.dialog.actions.editAria":`Edit {taskName}`,"sessions.scheduledTasks.dialog.actions.deleteAria":`Delete {taskName}`,"sessions.scheduledTasks.dialog.loading":`Loading schedules...`,"sessions.scheduledTasks.dialog.empty.noTasks":`No schedules yet.`,"sessions.scheduledTasks.dialog.empty.selectProject":`Select a project to manage schedules.`,"sessions.scheduledTasks.dialog.error.chooseProjectFirst":`Choose a project first`,"sessions.scheduledTasks.dialog.toast.loadFailed":`Failed to load schedules`,"sessions.scheduledTasks.dialog.toast.saved":`Schedule saved`,"sessions.scheduledTasks.dialog.toast.updateFailed":`Failed to update schedule`,"sessions.scheduledTasks.dialog.toast.deleted":`Schedule deleted`,"sessions.scheduledTasks.dialog.toast.deleteFailed":`Failed to delete schedule`,"sessions.scheduledTasks.dialog.toast.started":`Schedule started`,"sessions.scheduledTasks.dialog.toast.runFailed":`Failed to run schedule`,"sessions.scheduledTasks.dialog.confirm.deleteTask":`Delete schedule "{taskName}"?`,"sessions.scheduledTasks.dialog.schedule.daily":`Daily {time}`,"sessions.scheduledTasks.dialog.schedule.dailyWithTimezone":`Daily {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.weekly":`Weekly {days} {time}`,"sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone":`Weekly {days} {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.once":`One-time {date} {time}`,"sessions.scheduledTasks.dialog.schedule.onceWithTimezone":`One-time {date} {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.cron":`Cron: {cron}`,"sessions.scheduledTasks.dialog.schedule.cronWithTimezone":`Cron: {cron} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.unknownDate":`Unknown date`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.sun":`Sun`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.mon":`Mon`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.tue":`Tue`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.wed":`Wed`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.thu":`Thu`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.fri":`Fri`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.sat":`Sat`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown":`?`,"sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute":`in <1m`,"sessions.scheduledTasks.dialog.relativeTime.justNow":`just now`,"sessions.scheduledTasks.dialog.relativeTime.inMinutes":`in {count}m`,"sessions.scheduledTasks.dialog.relativeTime.minutesAgo":`{count}m ago`,"sessions.scheduledTasks.dialog.relativeTime.inDuration":`in {duration}`,"sessions.scheduledTasks.dialog.relativeTime.durationAgo":`{duration} ago`,"sessions.scheduledTasks.dialog.status.success":`Success`,"sessions.scheduledTasks.dialog.status.error":`Error`,"sessions.scheduledTasks.dialog.status.running":`Running`,"sessions.scheduledTasks.dialog.status.idle":`Idle`,"sessions.scheduledTasks.dialog.nextRun.label":`Next`,"sessions.scheduledTasks.dialog.lastRun.label":`Last run`,"sessions.scheduledTasks.dialog.lastRun.runningNow":`running now`,"sessions.scheduledTasks.dialog.lastRun.never":`never`,"sessions.scheduledTasks.dialog.taskToggle.enableAria":`Enable {taskName}`,"sessions.scheduledTasks.dialog.taskToggle.pauseAria":`Pause {taskName}`,"sessions.scheduledTasks.dialog.taskToggle.enabled":`Enabled`,"sessions.scheduledTasks.dialog.taskToggle.paused":`Paused`,"sessions.scheduledTasks.editor.title.edit":`Edit schedule`,"sessions.scheduledTasks.editor.title.new":`New schedule`,"sessions.scheduledTasks.editor.description":`Configure a server-side schedule that creates a new session and sends a prompt.`,"sessions.scheduledTasks.editor.taskName.label":`Schedule name`,"sessions.scheduledTasks.editor.taskName.placeholder":`Daily sync`,"sessions.scheduledTasks.editor.scheduleType.label":`Schedule type`,"sessions.scheduledTasks.editor.scheduleType.daily":`Daily`,"sessions.scheduledTasks.editor.scheduleType.weekly":`Weekly`,"sessions.scheduledTasks.editor.scheduleType.once":`One-time`,"sessions.scheduledTasks.editor.scheduleType.cron":`Cron`,"sessions.scheduledTasks.editor.date.label":`Date`,"sessions.scheduledTasks.editor.date.placeholder":`Select date`,"sessions.scheduledTasks.editor.date.previousMonth":`Previous month`,"sessions.scheduledTasks.editor.date.nextMonth":`Next month`,"sessions.scheduledTasks.editor.date.jumpToToday":`Jump to today`,"sessions.scheduledTasks.editor.date.today":`Today`,"sessions.scheduledTasks.editor.time.label":`Time`,"sessions.scheduledTasks.editor.time.hourAria":`Hours`,"sessions.scheduledTasks.editor.time.minuteAria":`Minutes`,"sessions.scheduledTasks.editor.time.periodAria":`Period`,"sessions.scheduledTasks.editor.time.period.am":`AM`,"sessions.scheduledTasks.editor.time.period.pm":`PM`,"sessions.scheduledTasks.editor.times.label":`Times`,"sessions.scheduledTasks.editor.times.add":`Add time`,"sessions.scheduledTasks.editor.times.removeAria":`Remove time`,"sessions.scheduledTasks.editor.timezone.label":`Timezone`,"sessions.scheduledTasks.editor.weekdays.label":`Weekdays`,"sessions.scheduledTasks.editor.model.label":`Model`,"sessions.scheduledTasks.editor.thinkingLevel.label":`Thinking level`,"sessions.scheduledTasks.editor.thinkingLevel.default":`Default`,"sessions.scheduledTasks.editor.agent.label":`Agent`,"sessions.scheduledTasks.editor.prompt.label":`Prompt`,"sessions.scheduledTasks.editor.prompt.placeholder":`Summarize open tasks and propose next actions`,"sessions.scheduledTasks.editor.enabled.aria":`Enable schedule`,"sessions.scheduledTasks.editor.enabled.label":`Enabled`,"sessions.scheduledTasks.editor.goal.label":`Run as goal`,"sessions.scheduledTasks.editor.goal.aria":`Run this schedule as a goal the agent pursues to completion`,"sessions.scheduledTasks.editor.goal.budgetLabel":`Token budget`,"sessions.scheduledTasks.editor.goal.budgetAria":`Limit the goal to a token budget`,"sessions.scheduledTasks.editor.actions.closeAria":`Close`,"sessions.scheduledTasks.editor.actions.cancel":`Cancel`,"sessions.scheduledTasks.editor.actions.save":`Save`,"sessions.scheduledTasks.editor.actions.saving":`Saving...`,"sessions.scheduledTasks.editor.toast.saveFailed":`Failed to save schedule`,"sessions.scheduledTasks.editor.validation.taskNameRequired":`Schedule name is required`,"sessions.scheduledTasks.editor.validation.promptRequired":`Prompt is required`,"sessions.scheduledTasks.editor.validation.modelRequired":`Model is required`,"sessions.scheduledTasks.editor.validation.dateFormat":`Date must use YYYY-MM-DD`,"sessions.scheduledTasks.editor.validation.timeFormat":`Time must use HH:mm`,"sessions.scheduledTasks.editor.validation.atLeastOneTime":`Add at least one valid time`,"sessions.scheduledTasks.editor.validation.atLeastOneWeekday":`Select at least one weekday`,"sessions.scheduledTasks.editor.validation.timezoneRequired":`Timezone is required`,"sessions.scheduledTasks.editor.validation.cronRequired":`Cron expression is required`,"sessions.scheduledTasks.editor.validation.cronInvalid":`Invalid cron expression`,"sessions.scheduledTasks.editor.cronExpression.label":`Cron expression`,"sessions.scheduledTasks.editor.cronExpression.placeholder":`*/5 * * * *`,"sessions.scheduledTasks.editor.cronExpression.nextRuns":`Next runs`,"sessions.scheduledTasks.editor.cronExpression.examples":`Examples`,"sessions.scheduledTasks.editor.cronExpression.examples.every5min":`Every 5 minutes`,"sessions.scheduledTasks.editor.cronExpression.examples.everyHour":`Every hour`,"sessions.scheduledTasks.editor.cronExpression.examples.monday9am":`Every Monday at 9am`,"sessions.scheduledTasks.editor.cronExpression.examples.9am5pm":`9am and 5pm daily`,"sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth":`First of every month`,"multirun.launcher.title":`New Multi-Run`,"multirun.launcher.actions.closeEsc":`Close (Esc)`,"multirun.launcher.actions.cancel":`Cancel`,"multirun.launcher.actions.creating":`Creating...`,"multirun.launcher.actions.startWithModelCount":`Start ({count} models)`,"multirun.launcher.project.label":`Project`,"multirun.launcher.project.placeholder":`Select project`,"multirun.launcher.project.empty":`Add a project first.`,"multirun.launcher.project.gitRequired":`No worktree isolation: runs use the same directory.`,"multirun.launcher.groupName.label":`Group name`,"multirun.launcher.groupName.info":`Used for worktree directory and branch names`,"multirun.launcher.groupName.placeholder":`feature-auth, bugfix-login`,"multirun.launcher.baseBranch.label":`Base branch`,"multirun.launcher.baseBranch.info":`New branch created from this base per model`,"multirun.launcher.isolateRuns.label":`Isolate runs`,"multirun.launcher.agent.label":`Agent`,"multirun.launcher.agent.info":`Agent used for all runs. Defaults to your configured agent.`,"multirun.launcher.setupCommands.label":`Setup commands`,"multirun.launcher.setupCommands.loading":`Loading...`,"multirun.launcher.setupCommands.commandPlaceholder":`bun install`,"multirun.launcher.setupCommands.removeCommandAria":`Remove command`,"multirun.launcher.setupCommands.addCommand":`Add command`,"multirun.launcher.prompt.label":`Prompt`,"multirun.launcher.prompt.placeholder":`Enter the prompt to send to all models...`,"multirun.launcher.attachments.attach":`Attach`,"multirun.launcher.attachments.tooltip":`Same files sent to all runs`,"multirun.launcher.models.label":`Models`,"multirun.launcher.models.info":`Select 2-{max} models. Same model can be added multiple times.`,"multirun.launcher.toast.fileTooLarge":`File "{fileName}" is too large (max 10MB)`,"multirun.launcher.toast.attachFailed":`Failed to attach "{fileName}"`,"multirun.launcher.toast.attachedSingle":`Attached {count} file`,"multirun.launcher.toast.attachedPlural":`Attached {count} files`,"multirun.modelMultiSelect.actions.addModel":`Add model`,"multirun.modelMultiSelect.search.placeholder":`Search models`,"multirun.modelMultiSelect.search.noResults":`No models found`,"multirun.modelMultiSelect.sections.favorites":`Favorites`,"multirun.modelMultiSelect.sections.recent":`Recent`,"multirun.modelMultiSelect.variant.placeholder":`Thinking`,"multirun.modelMultiSelect.variant.default":`Default`,"multirun.modelMultiSelect.keyboard.hint":`↑↓ navigate • Enter select • Esc close`,"multirun.modelMultiSelect.validation.minOnly":`Select at least {min} models.`,"multirun.modelMultiSelect.validation.minToMax":`Select from {min} to {max} models.`,"multirun.agentSelector.placeholder":`Select an agent`,"multirun.fusion.title":`Run fusion`,"multirun.fusion.description":`Combine the selected multi-run outputs into one stronger answer.`,"multirun.fusion.provider.placeholder":`Provider`,"multirun.fusion.model.placeholder":`Model`,"multirun.fusion.sources.label":`Sources ({count})`,"multirun.fusion.actions.cancel":`Cancel`,"multirun.fusion.actions.start":`Start fusion`,"multirun.fusion.actions.starting":`Starting...`,"multirun.fusion.toast.noOutputs":`No assistant outputs found to fuse.`,"multirun.fusion.toast.failed":`Failed to start fusion.`,"multirun.launcher.attachments.label":`Files`,"multirun.launcher.actions.startWithRunCount":`Start ({count} runs)`,"multirun.launcher.groups.addGroup":`Add run group`,"multirun.launcher.groups.removeGroup":`Remove group`,"multirun.launcher.groups.groupLabel":`Run group {index}`,"multirun.launcher.groups.template.label":`Template`,"multirun.launcher.groups.template.placeholder":`Select a template...`,"multirun.launcher.groups.template.custom":`Custom prompt`,"multirun.launcher.groups.prompt.label":`Prompt`,"multirun.launcher.groups.prompt.placeholder":`Enter the prompt for this group...`,"sessions.sidebar.header.actions.searchSessions":`Search sessions`,"sessions.sidebar.header.actions.exitSelection":`Exit selection`,"sessions.sidebar.header.actions.selectSessions":`Select sessions`,"sessions.sidebar.header.actions.sortProjects":`Sort projects`,"sessions.sidebar.header.actions.sessionDisplayMode":`Project expand/collapse actions`,"sessions.sidebar.header.displayMode.label":`Expand/collapse projects`,"sessions.sidebar.header.displayMode.default":`Default`,"sessions.sidebar.header.displayMode.minimal":`Minimal`,"sessions.sidebar.header.displayMode.showRecent":`Show recent section`,"sessions.sidebar.header.displayMode.showArchived":`Show archived sessions`,"sessions.sidebar.header.displayMode.collapseAll":`Collapse all`,"sessions.sidebar.header.displayMode.expandAll":`Expand all`,"sessions.sidebar.header.projectSort.manual":`Manual`,"sessions.sidebar.header.projectSort.aToZ":`A → Z`,"sessions.sidebar.header.projectSort.zToA":`Z → A`,"sessions.sidebar.header.projectSort.dateAdded":`Newest`,"sessions.sidebar.header.projectSort.recent":`Recent`,"sessions.sidebar.header.search.matchCountSingle":`{count} match`,"sessions.sidebar.header.search.matchCountPlural":`{count} matches`,"sessions.sidebar.header.search.escapeHint":`Esc to clear`,"sessions.sidebar.header.search.placeholder":`Search sessions...`,"sessions.sidebar.header.search.clear":`Clear search`,"sessions.sidebar.footer.actions.settings":`Settings`,"sessions.sidebar.footer.actions.shortcuts":`Shortcuts`,"sessions.sidebar.footer.actions.aboutOpenChamber":`About OpenChamber`,"sessions.sidebar.footer.actions.update":`Update`,"sessions.sidebar.empty.noSessions.title":`No sessions yet`,"sessions.sidebar.empty.noSessions.description":`Create your first session to start coding.`,"sessions.sidebar.empty.noMatches.title":`No matching sessions`,"sessions.sidebar.empty.noMatches.description":`Try a different title, branch, folder, or path.`,"sessions.sidebar.activity.recentTitle":`Recent`,"sessions.sidebar.projectsTitle":`Projects`,"sessions.sidebar.projectsSyncing":`Syncing sessions…`,"sessions.sidebar.project.loadingSessions":`Loading sessions…`,"sessions.switcher.openAria":`Open session switcher`,"sessions.switcher.empty":`No recent sessions`,"sessions.switcher.draftTitle":`New session`,"sessions.sidebar.updateCheck.errorTitle":`Failed to check for updates`,"sessions.sidebar.updateCheck.latestVersion":`You are on the latest version`,"sessions.sidebar.directory.errorAddProjectTitle":`Failed to add project`,"sessions.sidebar.directory.errorAddProjectDescription":`Please select a valid directory.`,"sessions.sidebar.directory.errorSelectDirectoryTitle":`Failed to select directory`,"sessions.sidebar.folder.newFolderName":`New folder`,"sessions.sidebar.bulkActions.delete":`Delete`,"sessions.sidebar.bulkActions.archive":`Archive`,"sessions.sidebar.bulkActions.selectedCount":`{count} selected`,"sessions.sidebar.bulkActions.moveToFolder":`Move to folder`,"sessions.sidebar.bulkActions.deletedSingle":`Deleted {count} session`,"sessions.sidebar.bulkActions.deletedPlural":`Deleted {count} sessions`,"sessions.sidebar.bulkActions.failedDeleteSingle":`Failed to delete {count} session`,"sessions.sidebar.bulkActions.failedDeletePlural":`Failed to delete {count} sessions`,"sessions.sidebar.bulkActions.archivedSingle":`Archived {count} session`,"sessions.sidebar.bulkActions.archivedPlural":`Archived {count} sessions`,"sessions.sidebar.bulkActions.failedArchiveSingle":`Failed to archive {count} session`,"sessions.sidebar.bulkActions.failedArchivePlural":`Failed to archive {count} sessions`,"sessions.sidebar.bulkActions.archiveUndoFailed":`Failed to restore {count} sessions`,"sessions.sidebar.undo":`Undo`,"sessions.sidebar.openSettings":`Settings`,"sessions.sidebar.folders.none":`No folders yet`,"sessions.sidebar.folders.newFolderEllipsis":`New folder...`,"sessions.sidebar.folders.removeFromFolder":`Remove from folder`,"sessions.sidebar.folders.moveToFolder":`Move to folder`,"sessions.sidebar.project.actions.newWorktree":`New worktree`,"sessions.sidebar.project.actions.newWorktreeEllipsis":`New worktree...`,"sessions.sidebar.project.actions.projectMenu":`Project menu`,"sessions.sidebar.project.actions.syncSessions":`Sync sessions`,"sessions.sidebar.project.actions.newSession":`New Session`,"sessions.sidebar.project.actions.edit":`Edit`,"sessions.sidebar.project.actions.closeProject":`Close project`,"sessions.sidebar.project.actions.newDraftSession":`New draft session`,"sessions.sidebar.session.menu.rename":`Rename`,"sessions.sidebar.session.rename.save":`Save session name`,"sessions.sidebar.session.rename.cancel":`Cancel renaming session`,"sessions.sidebar.session.rename.smartTitle":`Generate titles automatically`,"sessions.sidebar.session.menu.unpin":`Unpin`,"sessions.sidebar.session.menu.pin":`Pin`,"sessions.sidebar.session.menu.share":`Share`,"sessions.sidebar.session.menu.copied":`Copied`,"sessions.sidebar.session.menu.copyLink":`Copy link`,"sessions.sidebar.session.menu.unshare":`Unshare`,"sessions.sidebar.session.menu.exportMarkdown":`Export Markdown`,"sessions.sidebar.session.menu.refreshTranscript":`Sync messages`,"sessions.sidebar.session.menu.refreshTranscriptSuccess":`Messages synced`,"sessions.sidebar.session.menu.refreshTranscriptFailed":`Failed to sync messages`,"sessions.sidebar.session.menu.runFusion":`Run fusion`,"sessions.sidebar.session.menu.openInSidePanel":`Open in Side Panel`,"sessions.sidebar.session.actions.openInEditor":`Open in Editor`,"sessions.sidebar.session.menu.betaBadge":`beta`,"sessions.sidebar.session.menu.label":`Session menu`,"sessions.sidebar.session.untitled":`Untitled Session`,"sessions.sidebar.session.export.nothingToExport":`Nothing to export`,"sessions.sidebar.session.export.success":`Session exported`,"sessions.sidebar.session.export.failedRevealPath":`Failed to reveal path`,"sessions.sidebar.session.export.untitledSubagent":`Untitled Sub-agent`,"sessions.sidebar.session.export.skippedSubtaskSingle":`Exported session, but skipped {count} sub-agent task that could not be loaded.`,"sessions.sidebar.session.export.skippedSubtaskMany":`Exported session, but skipped {count} sub-agent tasks that could not be loaded.`,"sessions.sidebar.session.export.dialog.title":`Export Markdown`,"sessions.sidebar.session.export.dialog.descriptionSingle":`This session has {count} sub-agent task. Include it in the export?`,"sessions.sidebar.session.export.dialog.descriptionMany":`This session has {count} sub-agent tasks. Include them in the export?`,"sessions.sidebar.session.export.dialog.includeSubtasks":`Include sub-agent tasks`,"sessions.sidebar.session.export.dialog.confirm":`Export`,"sessions.sidebar.session.status.active":`Session active`,"sessions.sidebar.session.status.unread":`Unread updates`,"sessions.sidebar.session.status.pinned":`Pinned session`,"sessions.sidebar.session.actions.pinned":`Pinned`,"sessions.sidebar.session.status.permissionRequired":`Permission required`,"sessions.sidebar.session.status.questionRequired":`Question required`,"sessions.sidebar.session.subsessions.collapse":`Collapse subsessions`,"sessions.sidebar.session.subsessions.expand":`Expand subsessions`,"sessions.sidebar.dialogs.deleteSession.title":`Delete session?`,"sessions.sidebar.dialogs.archiveSession.title":`Archive session?`,"sessions.sidebar.dialogs.deleteSession.withOneSubtask":`"{sessionTitle}" and its {count} sub-task will be permanently deleted.`,"sessions.sidebar.dialogs.deleteSession.withManySubtasks":`"{sessionTitle}" and its {count} sub-tasks will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSession.withOneSubtask":`"{sessionTitle}" and its {count} sub-task will be archived.`,"sessions.sidebar.dialogs.archiveSession.withManySubtasks":`"{sessionTitle}" and its {count} sub-tasks will be archived.`,"sessions.sidebar.dialogs.deleteSession.single":`"{sessionTitle}" will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSession.single":`"{sessionTitle}" will be archived.`,"sessions.sidebar.dialogs.neverAsk":`Never ask`,"sessions.sidebar.dialogs.cancel":`Cancel`,"sessions.sidebar.dialogs.deleteSession.titleAction":`Delete session`,"sessions.sidebar.dialogs.deleteSessions.titleAction":`Delete sessions`,"sessions.sidebar.dialogs.deleteSessions.title":`Delete sessions?`,"sessions.sidebar.dialogs.archiveSessions.title":`Archive sessions?`,"sessions.sidebar.dialogs.deleteSessions.singleDescription":`{count} session will be permanently deleted.`,"sessions.sidebar.dialogs.deleteSessions.pluralDescription":`{count} sessions will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSessions.singleDescription":`{count} session will be archived.`,"sessions.sidebar.dialogs.archiveSessions.pluralDescription":`{count} sessions will be archived.`,"sessions.sidebar.dialogs.deleteFolder.title":`Delete folder?`,"sessions.sidebar.dialogs.deleteFolder.withOneSubfolder":`"{folderName}" will be deleted along with {count} sub-folder. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.withManySubfolders":`"{folderName}" will be deleted along with {count} sub-folders. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders":`"{folderName}" will be deleted. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.single":`"{folderName}" will be permanently deleted.`,"sessions.sidebar.dialogs.deleteResult.singleFailedToDelete":`{count} session could not be deleted.`,"sessions.sidebar.dialogs.deleteResult.manyFailedToDelete":`{count} sessions could not be deleted.`,"sessions.sidebar.dialogs.deleteResult.singleFailedToArchive":`{count} session could not be archived.`,"sessions.sidebar.dialogs.deleteResult.manyFailedToArchive":`{count} sessions could not be archived.`,"sessions.sidebar.dialogs.deleteResult.removedFromDate":`Removed all sessions from {dateLabel}.`,"sessions.sidebar.dialogs.deleteResult.tryAgain":`Please try again in a moment.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked":`This removes the selected worktree.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked":`This removes the selected worktree and archives {count} linked session.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked":`This removes the selected worktree and archives {count} linked sessions.`,"sessions.sidebar.dialogs.sessionDelete.descriptionOne":`This action permanently removes 1 session.`,"sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate":`This action permanently removes 1 session from {dateLabel}.`,"sessions.sidebar.dialogs.sessionDelete.descriptionMany":`This action permanently removes {count} sessions.`,"sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate":`This action permanently removes {count} sessions from {dateLabel}.`,"sessions.sidebar.dialogs.sessionList.more":`+{count} more`,"sessions.sidebar.session.share.successTitle":`Session shared`,"sessions.sidebar.session.share.successDescription":`You can copy the link from the menu.`,"sessions.sidebar.session.share.error":`Unable to share session`,"sessions.sidebar.session.share.copyUrlError":`Failed to copy URL`,"sessions.sidebar.session.unshare.success":`Session unshared`,"sessions.sidebar.session.unshare.error":`Unable to unshare session`,"sessions.sidebar.session.delete.success":`Session deleted`,"sessions.sidebar.session.delete.error":`Failed to delete session`,"sessions.sidebar.session.archive.success":`Session archived`,"sessions.sidebar.session.archive.error":`Failed to archive session`,"sessions.sidebar.session.archive.undoFailed":`Failed to undo archive`,"sessions.sidebar.group.pr.checksPassed":`{success}/{total} checks passed`,"sessions.sidebar.group.pr.failingCount":`{count} failing`,"sessions.sidebar.group.pr.pendingCount":`{count} pending`,"sessions.sidebar.group.pr.conflictsOrBlocked":`Conflicts or blocked`,"sessions.sidebar.group.pr.mergeable":`Mergeable`,"sessions.sidebar.group.pr.mergeState":`Merge state: {state}`,"sessions.sidebar.group.pr.status.merged":`Merged`,"sessions.sidebar.group.pr.status.readyToMerge":`Ready to merge`,"sessions.sidebar.group.pr.status.open":`PR open`,"sessions.sidebar.group.pr.status.mergeConflicts":`Merge conflicts`,"sessions.sidebar.group.pr.status.mergeBlocked":`Merge blocked`,"sessions.sidebar.group.pr.status.draft":`Draft PR`,"sessions.sidebar.group.pr.status.closed":`Closed`,"sessions.sidebar.group.empty.noArchivedSessions":`No archived sessions yet.`,"sessions.sidebar.group.empty.noSessionsInWorkspace":`No sessions in this workspace yet.`,"sessions.sidebar.group.showMore":`More`,"sessions.sidebar.group.showMoreSingle":`Show {count} more session`,"sessions.sidebar.group.showMorePlural":`Show {count} more sessions`,"sessions.sidebar.group.showFewer":`Fewer`,"sessions.sidebar.group.expandAria":`Expand {label}`,"sessions.sidebar.group.collapseAria":`Collapse {label}`,"sessions.sidebar.group.actions.deleteArchivedInGroupAria":`Delete archived sessions in {label}`,"sessions.sidebar.group.actions.deleteArchivedSessions":`Delete archived sessions`,"sessions.sidebar.group.actions.deleteGroupAria":`Delete {label}`,"sessions.sidebar.group.actions.deleteWorktree":`Delete worktree`,"sessions.sidebar.group.actions.newDraftInGroupAria":`New draft session in {label}`,"sessions.sidebar.grouping.projectRoot":`Project root`,"sessions.sidebar.grouping.projectRootWithBranch":`Project root: {branch}`,"sessions.sidebar.grouping.archived":`Archived`,"sessions.sidebar.grouping.archivedDescription":`Archived and unassigned sessions`,"sessions.sidebar.folderItem.expandAria":`Expand folder {folderName}`,"sessions.sidebar.folderItem.collapseAria":`Collapse folder {folderName}`,"sessions.sidebar.folderItem.namePlaceholder":`Folder name`,"sessions.sidebar.folderItem.newSessionAria":`New session in {folderName}`,"sessions.sidebar.folderItem.newSubfolderAria":`New sub-folder in {folderName}`,"sessions.sidebar.folderItem.newSubfolder":`New sub-folder`,"sessions.sidebar.folderItem.renameAria":`Rename folder {folderName}`,"sessions.sidebar.folderItem.deleteArchivedInFolderAria":`Delete archived sessions in folder {folderName}`,"sessions.sidebar.folderItem.deleteFolderAria":`Delete folder {folderName}`,"sessions.sidebar.folderItem.emptyFolder":`Empty folder`,"sessions.sidebar.sessionDialogs.ok":`OK`,"sessions.sidebar.sessionDialogs.linkedSessionSingle":`Linked session`,"sessions.sidebar.sessionDialogs.linkedSessionPlural":`Linked sessions`,"sessions.sidebar.sessionDialogs.delete.note":`Worktree directories stay intact. Subsessions linked to the selected sessions will also be removed.`,"sessions.sidebar.sessionDialogs.directory.errorSelectTitle":`Failed to select directory`,"sessions.sidebar.sessionDialogs.directory.errorOpenTitle":`Failed to open directory`,"sessions.sidebar.sessionDialogs.directory.errorOpenDescription":`Desktop could not grant file access.`,"sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle":`Failed to add project`,"sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription":`Please select a valid directory path.`,"sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle":`Failed to remove worktree`,"sessions.sidebar.sessionDialogs.worktree.removedTitle":`Worktree removed`,"sessions.sidebar.sessionDialogs.worktree.removed":`Worktree removed.`,"sessions.sidebar.sessionDialogs.worktree.removedWithRemote":`Worktree and remote branch removed.`,"sessions.sidebar.sessionDialogs.worktree.attachedArchived":`Attached worktree archived.`,"sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural":`Attached worktrees archived.`,"sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved":`Archived worktrees and removed remote branches.`,"sessions.sidebar.sessionDialogs.worktree.label":`Worktree`,"sessions.sidebar.sessionDialogs.worktree.pathUnavailable":`Worktree path unavailable.`,"sessions.sidebar.sessionDialogs.worktree.uncommittedWarning":`Uncommitted changes will be discarded.`,"sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch":`Delete remote branch`,"sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable":`Remote branch info unavailable`,"sessions.sidebar.sessionDialogs.actions.deleteLocalBranch":`Delete local branch`,"sessions.sidebar.sessionDialogs.actions.deleting":`Deleting…`,"sessions.sidebar.sessionDialogs.actions.deleteWorktree":`Delete worktree`,"gitView.branch.branchToMergeInto":`Branch to merge into {branch}`,"gitView.branch.branchToRebaseOnto":`Branch to rebase onto`,"gitView.branch.create":`Create new branch...`,"gitView.branch.currentBadge":`Current`,"gitView.branch.currentBranchFallback":`Current branch`,"gitView.branch.currentBranchTooltip":`Current branch`,"gitView.branch.detachedHead":`Detached HEAD`,"gitView.branch.dialogDescriptionPrefix":`Choose how to bring another branch into`,"gitView.branch.empty":`No branches found.`,"gitView.branch.localBranches":`Local branches`,"gitView.branch.mergeDescription":`Create a merge commit and preserve branch history.`,"gitView.branch.mergeRebase":`Merge/Rebase`,"gitView.branch.mergeRebaseTooltip":`Update this branch from another branch.`,"gitView.branch.mergingInProgress":`Merging In Progress`,"gitView.branch.namePlaceholder":`Branch name`,"gitView.branch.newBranchPlaceholder":`New branch name`,"gitView.branch.noLocalBranches":`No local branches`,"gitView.branch.noRemoteBranches":`No remote branches`,"gitView.branch.operation":`Operation`,"gitView.branch.operationCompleted":`Operation Completed`,"gitView.branch.operationFailed":`Operation Failed`,"gitView.branch.pushToPrefix":`Push To Prefix`,"gitView.branch.pushToSuffix":`Push To Suffix`,"gitView.branch.rebaseDescription":`Replay your commits on top of the selected branch.`,"gitView.branch.rebasingInProgress":`Rebasing In Progress`,"gitView.branch.remoteBranches":`Remote branches`,"gitView.branch.renameTitle":`Rename branch`,"gitView.branch.renameSave":`Save branch name`,"gitView.branch.renameSaving":`Saving branch name`,"gitView.branch.renameCancel":`Cancel branch rename`,"gitView.branch.searchPlaceholder":`Search branches...`,"gitView.branch.selectBranch":`Select Branch`,"gitView.branch.summaryMergeInfix":`into`,"gitView.branch.summaryMergePrefix":`This will merge`,"gitView.branch.summaryRebaseInfix":`onto`,"gitView.branch.summaryRebasePrefix":`This will rebase`,"gitView.branch.updateDescriptionPrefix":`Bring the latest changes into`,"gitView.branch.updateTitle":`Update branch`,"gitView.changes.changedFilesAria":`Changed files`,"gitView.changes.clearSelectionAria":`Clear file selection`,"gitView.changes.collapseDirectoryAria":`Collapse directory {path}`,"gitView.changes.expandDirectoryAria":`Expand directory {path}`,"gitView.changes.revertAll":`Revert all`,"gitView.changes.revertAllDescriptionPlural":`Revert {count} changed files? This cannot be undone.`,"gitView.changes.revertAllDescriptionSingle":`Revert {count} changed file? This cannot be undone.`,"gitView.changes.revertAllDialogTitle":`Revert all changes?`,"gitView.changes.revertDirectoryAria":`Revert changes in {path}`,"gitView.changes.revertDirectory":`Revert folder`,"gitView.changes.revertDirectoryDescriptionPlural":`This will discard local changes in {count} files under {path}.`,"gitView.changes.revertDirectoryDescriptionSingle":`This will discard local changes in {count} file under {path}.`,"gitView.changes.revertDirectoryDialogTitle":`Revert folder changes?`,"gitView.changes.revertDirectoryTooltip":`Revert folder changes`,"gitView.changes.revertFileAria":`Revert changes in {path}`,"gitView.changes.revertFileTooltip":`Revert changes`,"gitView.changes.reverting":`Reverting...`,"gitView.changes.selectAllAria":`Select all files`,"gitView.changes.selectFileAria":`Select {path}`,"gitView.changes.stagedTitle":`Staged`,"gitView.changes.resizeSplitAria":`Resize staged and unstaged changes`,"gitView.changes.stageAllAria":`Stage all changes`,"gitView.changes.stageDirectoryAria":`Stage all changes in {path}`,"gitView.changes.stageFileAria":`Stage {path}`,"gitView.changes.title":`Changes`,"gitView.changes.toggleDirectorySelectionAria":`Toggle selection for {path}`,"gitView.changes.unstageAllAria":`Unstage all changes`,"gitView.changes.unstageDirectoryAria":`Unstage all changes in {path}`,"gitView.changes.unstageFileAria":`Unstage {path}`,"gitView.commit.addGitmoji":`Add gitmoji`,"gitView.commit.aiHighlights.insertAria":`Insert aria label`,"gitView.commit.aiHighlights.insertTooltip":`Insert tooltip`,"gitView.commit.aiHighlights.title":`Highlights`,"gitView.commit.commit":`Commit`,"gitView.commit.commitAria":`Commit aria label`,"gitView.commit.committing":`Committing...`,"gitView.commit.generate":`Generate`,"gitView.commit.generateAria":`Generate commit message`,"gitView.commit.messagePlaceholder":`Commit message`,"gitView.commit.push":`Commit & sync`,"gitView.commit.pushAria":`Commit and sync`,"gitView.commit.pushing":`Syncing...`,"gitView.commit.selectFilesHint":`Select files in Changes to enable commit.`,"gitView.commit.stageFilesHint":`Stage files to enable commit.`,"gitView.commit.title":`Commit`,"gitView.common.cancel":`Cancel`,"gitView.common.close":`Close`,"gitView.common.done":`Done`,"gitView.common.processing":`Processing...`,"gitView.common.reset":`Reset`,"gitView.conflict.abortOperation":`Abort {operation}`,"gitView.conflict.conflictedFiles":`Conflicted files:`,"gitView.conflict.continueLater":`Continue later`,"gitView.conflict.detectedDescription":`Resolve the {operation} conflicts to continue.`,"gitView.conflict.detectedTitle":`{operation} conflicts detected`,"gitView.conflict.errorLoadingDetails":`Failed to load conflict details: {message}`,"gitView.conflict.headInfo":`HEAD information:`,"gitView.conflict.loadFailed":`Failed to load conflict details`,"gitView.conflict.loading":`Loading conflict details...`,"gitView.conflict.noActiveSession":`No active session`,"gitView.conflict.noActiveSessionDescription":`Open or create a session to resolve conflicts.`,"gitView.conflict.resolveCurrentSession":`Resolve in current session`,"gitView.conflict.resolveNewSession":`Resolve in new session`,"gitView.empty.cleanDescription":`All changes have been committed`,"gitView.empty.cleanTitle":`Working tree clean`,"gitView.empty.pullBehindPlural":`Pull {count} commits`,"gitView.empty.pullBehindSingle":`Pull {count} commit`,"gitView.header.identityTooltip":`Git identity`,"gitView.header.noIdentity":`No identity`,"gitView.header.noProfiles":`No profiles available to apply.`,"gitView.header.repositoryViews":`Repository views`,"gitView.header.removeRemoteAria":`Remove remote {name}`,"gitView.header.removeRemoteTitle":`Remove remote {name}`,"gitView.header.upstreamSynced":`synced`,"gitView.header.upstreamTooltip":`Compared with {target}.`,"gitView.header.upstreamTooltipTracking":`Compared with {target}. Primary sync badges still reflect {tracking}.`,"gitView.history.actions.cancelButton":`Cancel`,"gitView.history.actions.checkout":`Checkout`,"gitView.history.actions.checkoutConfirm":`Check out this commit as detached HEAD?`,"gitView.history.actions.cherryPick":`Cherry-pick`,"gitView.history.actions.cherryPickConfirm":`Cherry-pick this commit onto the current branch?`,"gitView.history.actions.conflictToastDescription":`Conflicts in: {files}. Resolve manually and commit, or abort with git cherry-pick/revert --abort.`,"gitView.history.actions.conflictToastTitle":`Conflict`,"gitView.history.actions.confirmButton":`Confirm`,"gitView.history.actions.createBranch":`Create branch here`,"gitView.history.actions.createBranchConfirm":`Create`,"gitView.history.actions.createBranchPlaceholder":`Branch name`,"gitView.history.actions.detachedHead":`Checked out (detached HEAD)`,"gitView.history.actions.merge":`Merge into current`,"gitView.history.actions.mergeConfirm":`Merge this commit into the current branch?`,"gitView.history.actions.rebase":`Rebase onto this`,"gitView.history.actions.rebaseConfirm":`Rebase current branch onto this commit?`,"gitView.history.actions.reset":`Reset...`,"gitView.history.actions.resetHard":`Hard — discard all changes`,"gitView.history.actions.resetHardConfirm":`Hard reset — HEAD moves, all uncommitted changes permanently discarded.`,"gitView.history.actions.resetHardConfirmButton":`Discard changes`,"gitView.history.actions.resetMixed":`Mixed — unstage changes`,"gitView.history.actions.resetMixedConfirm":`Mixed reset — HEAD moves, changes unstaged.`,"gitView.history.actions.resetSoft":`Soft — keep staged`,"gitView.history.actions.resetSoftConfirm":`Soft reset — HEAD moves, staged changes preserved.`,"gitView.history.actions.revert":`Revert`,"gitView.history.actions.revertConfirm":`Stage a revert of this commit?`,"gitView.history.binary":`Binary`,"gitView.history.binaryNoDiff":`Binary file — no diff available`,"gitView.history.commitsPlaceholder":`Commits`,"gitView.history.copySha":`Copy SHA`,"gitView.history.diffError":`Failed to load diff. Click to retry.`,"gitView.history.largeDiffDescription":`Rendering may be slow. You can still view the diff by clicking below.`,"gitView.history.largeDiffTitle":`Large diff ({count} changed lines)`,"gitView.history.loadingDiff":`Loading diff...`,"gitView.history.loadingFiles":`Loading files...`,"gitView.history.loadMore":`Load more`,"gitView.history.loadingMore":`Loading...`,"gitView.history.logSize100":`100 commits`,"gitView.history.logSize25":`25 commits`,"gitView.history.logSize50":`50 commits`,"gitView.history.noCommits":`No commits found`,"gitView.history.noFiles":`No files`,"gitView.history.renamedNoDiff":`Renamed file — diff not supported`,"gitView.history.renderDiffAnyway":`Render anyway`,"gitView.history.title":`History`,"gitView.graph.title":`Graph`,"gitView.integrate.checking":`Checking…`,"gitView.integrate.cherryPickAbortedToast":`Cherry-pick aborted`,"gitView.integrate.cherryPickConflictDescription":`Resolve the cherry-pick conflicts to continue.`,"gitView.integrate.cherryPickConflictToast":`Cherry-pick conflicts detected`,"gitView.integrate.cherryPickContinueFailedToast":`Failed to continue cherry-pick`,"gitView.integrate.cherryPickFinishedToast":`Cherry-pick finished`,"gitView.integrate.commitsMovedDescriptionPlural":`Moved {count} commits to {branch}.`,"gitView.integrate.commitsMovedDescriptionSingle":`Moved {count} commit to {branch}.`,"gitView.integrate.commitsMovedToast":`Commits moved`,"gitView.integrate.commitsToMove":`Commits to move`,"gitView.integrate.conflictsInFiles":`Conflicts in files`,"gitView.integrate.currentCommit":`Current commit`,"gitView.integrate.currentSession":`Current session`,"gitView.integrate.failedToMoveToast":`Failed to move commits`,"gitView.integrate.moreFiles":`More files`,"gitView.integrate.move":`Move`,"gitView.integrate.moveCommits":`Move commits`,"gitView.integrate.moving":`Moving…`,"gitView.integrate.newSession":`New session`,"gitView.integrate.noActiveSession":`No active session`,"gitView.integrate.noActiveSessionDescription":`Open or create a session to continue.`,"gitView.integrate.noCommitsToMove":`No commits to move.`,"gitView.integrate.noCommitsToMoveToast":`No commits to move`,"gitView.integrate.previewUnavailable":`Preview unavailable`,"gitView.integrate.showAll":`Show all`,"gitView.integrate.showLess":`Show less`,"gitView.integrate.showingFirstCommits":`Showing first commits`,"gitView.integrate.target":`Target`,"gitView.integrate.title":`Re-integrate commits`,"gitView.integrate.toMoveCount":`To move`,"gitView.operation.abort":`Abort`,"gitView.operation.continue":`Continue`,"gitView.operation.inProgressTitle":`{operation} in progress`,"gitView.operation.merge":`Merge`,"gitView.operation.mergeInProgressWithHead":`Merging {head}`,"gitView.operation.mergingMessage":`Merging: {message}`,"gitView.operation.rebase":`Rebase`,"gitView.operation.rebaseInProgress":`Rebase in progress`,"gitView.operation.rebasingOnto":`Rebasing {headName} onto {onto}`,"gitView.operation.resolveConflictsHint":`Resolve conflicts, then continue the operation.`,"gitView.operation.resolveWithAi":`Resolve with AI`,"gitView.stash.confirmButton":`{operation}`,"gitView.stash.description":`Stash your local changes before starting the {operation}.`,"gitView.stash.mergeWith":`with`,"gitView.stash.rebaseOnto":`onto`,"gitView.stash.restoreAfterOperation":`Restore stashed changes after {operation}`,"gitView.stash.restoreAria":`Restore stashed changes after operation`,"gitView.stash.stepRestore":`Restore your stashed changes`,"gitView.stash.stepStash":`Stash your uncommitted changes`,"gitView.stash.thisWill":`This will:`,"gitView.stash.title":`Uncommitted Changes`,"gitView.stashes.actions.apply":`Apply`,"gitView.stashes.actions.drop":`Drop`,"gitView.stashes.actions.pop":`Pop`,"gitView.stashes.actions.stashCurrent":`Stash current changes`,"gitView.stashes.actions.stashCurrentWithCount":`Stash {count} files`,"gitView.stashes.confirm.drop":`Drop {ref}?`,"gitView.stashes.description":`Save, restore, and clean up Git stashes for this repository.`,"gitView.stashes.empty.list":`No stashes yet.`,"gitView.stashes.empty.search":`No matching stashes.`,"gitView.stashes.includeUntrackedHint":`Untracked files are included automatically.`,"gitView.stashes.fileCount":`{count} files`,"gitView.stashes.fileCountLoading":`counting files...`,"gitView.stashes.itemNumber":`#{number}`,"gitView.stashes.latestLabel":`Latest`,"gitView.stashes.messagePlaceholder":`Stash name`,"gitView.stashes.searchPlaceholder":`Search stashes`,"gitView.stashes.title":`Stashes`,"gitView.stashes.toast.applyFailed":`Failed to apply stash`,"gitView.stashes.toast.applySuccess":`Stash applied`,"gitView.stashes.toast.createFailed":`Failed to stash changes`,"gitView.stashes.toast.created":`Changes stashed`,"gitView.stashes.toast.dropFailed":`Failed to drop stash`,"gitView.stashes.toast.dropSuccess":`Stash dropped`,"gitView.stashes.toast.loadFailed":`Failed to load stashes`,"gitView.stashes.toast.noChanges":`No local changes to stash`,"gitView.stashes.toast.popFailed":`Failed to pop stash`,"gitView.stashes.toast.popSuccess":`Stash popped`,"gitView.stashes.untitled":`Untitled stash`,"gitView.sync.fetch":`Fetch`,"gitView.sync.fetchFromRemote":`Fetch from {name}`,"gitView.sync.fetchTooltip":`Fetch from remote`,"gitView.sync.commitOrStashTooltip":`Commit or stash your changes before syncing`,"gitView.sync.moreActionsAria":`More sync actions`,"gitView.sync.noRemoteTooltip":`No remotes configured`,"gitView.sync.pull":`Pull`,"gitView.sync.pullTooltip":`Pull changes`,"gitView.sync.pullTooltipBehind":`Pull changes ({count} behind)`,"gitView.sync.push":`Push`,"gitView.sync.pushTooltip":`Push changes`,"gitView.sync.pushTooltipAhead":`Push changes ({count} ahead)`,"gitView.sync.sync":`sync`,"gitView.sync.syncChanges":`Sync Changes`,"gitView.sync.syncChangesTooltip":`Sync Changes ({behind} down, {ahead} up)`,"gitView.sync.syncChangesWithCounts":`Sync Changes {behind}↓ {ahead}↑`,"gitView.sync.syncCounts":`{behind}↓ {ahead}↑`,"gitView.branch.actionsUnavailable":`Branch actions unavailable in this repository state`,"gitView.conflict.noDetailsAvailable":`No conflict details available`,"gitView.empty.notGitRepository":`This directory is not a Git repository`,"gitView.empty.notGitRepositoryDescription":`Initialize Git in this directory or open a repository.`,"gitView.empty.selectSessionOrDirectory":`Select a session or directory to view Git status`,"gitView.empty.worktreeFeaturesUnavailable":`Worktree features are unavailable in this workspace mode.`,"gitView.empty.worktreeSetupDescription":`Finishing worktree setup and preparing repository state.`,"gitView.empty.worktreeSetupInProgress":`Worktree setup in progress`,"worktree.bootstrap.toast.failed":`Worktree setup failed`,"worktree.bootstrap.toast.failedDescription":`The worktree was created, but background setup did not finish.`,"worktree.bootstrap.toast.timeoutDescription":`The worktree was created, but background setup timed out.`,"gitView.gitmoji.empty":`No gitmoji found`,"gitView.gitmoji.searchPlaceholder":`Search gitmoji...`,"gitView.gitmoji.title":`Insert gitmoji`,"gitView.history.dialogDescription":`Browse recent commits and inspect changed files.`,"gitView.loading.checkingRepository":`Checking repository...`,"gitView.loading.loading":`Loading...`,"gitView.pr.actions.add":`Add`,"gitView.pr.actions.cancelEditing":`Cancel editing`,"gitView.pr.actions.cancelEditingAria":`Cancel PR editing`,"gitView.pr.actions.createPr":`Create PR`,"gitView.pr.actions.edit":`Edit`,"gitView.pr.actions.editPr":`Edit PR`,"gitView.pr.actions.editPrAria":`Edit pull request`,"gitView.pr.actions.hide":`Hide`,"gitView.pr.actions.markReady":`Mark ready`,"gitView.pr.actions.markReadyAria":`Mark pull request ready for review`,"gitView.pr.actions.mergePr":`Merge PR`,"gitView.pr.actions.mergePrAria":`Merge pull request`,"gitView.pr.actions.openChecks":`Open checks`,"gitView.pr.actions.openChecksAria":`Open failed checks`,"gitView.pr.actions.openComments":`Open comments`,"gitView.pr.actions.openCommentsAria":`Open pull request comments`,"gitView.pr.actions.openOnGitHub":`Open on GitHub`,"gitView.pr.actions.openOnGitHubAria":`Open pull request on GitHub`,"gitView.pr.actions.openSettings":`Open settings`,"gitView.pr.actions.repo":`Repository`,"gitView.pr.actions.resolveFailedChecks":`Resolve failed checks`,"gitView.pr.actions.resolveFailedChecksAria":`Send failed checks to agent`,"gitView.pr.actions.savePr":`Save PR`,"gitView.pr.actions.savePrAria":`Save pull request changes`,"gitView.pr.actions.sendCommentToAgent":`Send comment to agent`,"gitView.pr.actions.sendCommentToAgentAria":`Send this comment to agent`,"gitView.pr.actions.sendToAgent":`Send to agent`,"gitView.pr.actions.shareComments":`Share comments`,"gitView.pr.actions.shareCommentsAria":`Send pull request comments to agent`,"gitView.pr.actions.toggleDraftAria":`Toggle draft state`,"gitView.pr.actions.refresh":`Refresh PR status`,"gitView.pr.actions.refreshAria":`Refresh pull request status`,"gitView.pr.additionalContext.added":`Added`,"gitView.pr.additionalContext.hint":`Add extra context for better review quality.`,"gitView.pr.additionalContext.optional":`Optional`,"gitView.pr.additionalContext.title":`Additional context`,"gitView.pr.checkDetails.empty":`No check details available`,"gitView.pr.checkDetails.title":`Failed check details`,"gitView.pr.checkingStatus":`Checking pull request status...`,"gitView.pr.checks.label":`checks`,"gitView.pr.checks.completedLabel":`Completed`,"gitView.pr.checks.conclusionLabel":`Conclusion`,"gitView.pr.checks.startedLabel":`Started`,"gitView.pr.checks.statusLabel":`Status`,"gitView.pr.checks.stepLabel":`Step`,"gitView.pr.checks.steps":`Steps`,"gitView.pr.comments.empty":`No comments found`,"gitView.pr.comments.generalContext":`General comment`,"gitView.pr.comments.reviewContext":`Review comment`,"gitView.pr.comments.title":`Comments`,"gitView.pr.comments.unknownAuthor":`Unknown author`,"gitView.pr.createTitle":`Create pull request`,"gitView.pr.draftMustBeReady":`Draft PR must be marked ready before merge.`,"gitView.pr.field.baseBranch":`Base branch`,"gitView.pr.field.description":`Description`,"gitView.pr.field.draft":`Draft`,"gitView.pr.field.title":`Title`,"gitView.pr.githubNotConnected":`GitHub is not connected`,"gitView.pr.loadingDescription":`Loading description...`,"gitView.pr.mergeMethod.merge":`Create a merge commit`,"gitView.pr.mergeMethod.rebase":`Rebase and merge`,"gitView.pr.mergeMethod.squash":`Squash and merge`,"gitView.pr.noDescription":`No description`,"gitView.pr.noMergePermission":`You do not have permission to merge this pull request.`,"gitView.pr.notMergeable":`Not mergeable`,"gitView.pr.numberLabel":`PR #{number}`,"gitView.pr.placeholder.additionalContext":`Any constraints, rollout notes, or reviewer context...`,"gitView.pr.placeholder.description":`Describe the change...`,"gitView.pr.placeholder.main":`Summarize your pull request`,"gitView.pr.placeholder.selectBaseBranch":`Select base branch`,"gitView.pr.placeholder.title":`Pull request title`,"gitView.pr.placeholder.whatChanged":`What changed and why?`,"gitView.pr.statusUnavailable":`Pull request status unavailable`,"gitView.pr.toast.baseBranchRequired":`Select a base branch`,"gitView.pr.toast.baseMustDifferFromHead":`Base branch must differ from current branch`,"gitView.pr.toast.createPrFailed":`Failed to create pull request`,"gitView.pr.toast.generateDescriptionFailed":`Failed to generate pull request description`,"gitView.pr.toast.githubApiUnavailable":`GitHub API is unavailable`,"gitView.pr.toast.loadCheckDetailsFailed":`Failed to load check details`,"gitView.pr.toast.loadChecksFailed":`Failed to load pull request checks`,"gitView.pr.toast.loadCommentsFailed":`Failed to load comments`,"gitView.pr.toast.loadPrCommentsFailed":`Failed to load pull request comments`,"gitView.pr.toast.markReadyFailed":`Failed to mark pull request ready`,"gitView.pr.toast.markedReady":`Pull request marked ready for review`,"gitView.pr.toast.mergeFailed":`Failed to merge pull request`,"gitView.pr.toast.noActiveSession":`No active chat session`,"gitView.pr.toast.noActiveSessionDescription":`Open or create a chat session to send context to an agent.`,"gitView.pr.toast.noFailedChecks":`No failed checks found`,"gitView.pr.toast.noModelSelected":`Select a model first`,"gitView.pr.toast.noPrComments":`No pull request comments found`,"gitView.pr.toast.prCreated":`Pull request created`,"gitView.pr.toast.prMerged":`Pull request merged`,"gitView.pr.toast.prNotMerged":`Pull request was not merged`,"gitView.pr.toast.prUpdated":`Pull request updated`,"gitView.pr.toast.sendMessageFailed":`Failed to send message to agent`,"gitView.pr.toast.titleRequired":`Title is required`,"gitView.pr.toast.updatePrFailed":`Failed to update pull request`,"gitView.pullRequest.createHint":`Create and manage pull requests from this branch.`,"gitView.pullRequest.availableOnFeatureBranches":`Available when the current branch can open a pull request.`,"gitView.pullRequest.title":`Pull request`,"gitView.tabs.commit":`Commit`,"gitView.tabs.pr":`PR`,"gitView.tabs.update":`Update`,"gitView.tabs.worktree":`Worktree`,"gitView.toast.abortOperationFailed":`Failed to abort operation`,"gitView.toast.appliedIdentity":`Applied identity: {name}`,"gitView.toast.applyIdentityFailed":`Failed to apply identity`,"gitView.toast.branchCreatedLocally":`Branch created locally, but failed to set upstream.`,"gitView.toast.cannotCheckout":`Cannot checkout branch: {reason}`,"gitView.toast.cannotCreateBranch":`Cannot create branch: {reason}`,"gitView.toast.cannotRemoveOriginRemote":`Cannot remove the origin remote`,"gitView.toast.cannotRenameBranch":`Cannot rename branch: {reason}`,"gitView.toast.checkedOut":`Checked out {name}`,"gitView.toast.checkoutFailed":`Failed to checkout {name}`,"gitView.toast.commitCreated":`Commit created`,"gitView.toast.commitHashCopied":`Commit hash copied`,"gitView.toast.continueOperationFailed":`Failed to continue operation`,"gitView.toast.copyFailed":`Failed to copy`,"gitView.toast.createBranchFailed":`Failed to create branch`,"gitView.toast.createCommitFailed":`Failed to create commit`,"gitView.toast.createdBranch":`Created branch {name}`,"gitView.toast.enterCommitMessage":`Enter a commit message`,"gitView.toast.fetchedFromRemote":`Fetched from {name}`,"gitView.toast.generateCommitMessageFailed":`Failed to generate commit message`,"gitView.toast.mergeAborted":`Merge aborted`,"gitView.toast.mergeCompleted":`Merge completed`,"gitView.toast.mergeConflictsDetected":`Merge conflicts detected`,"gitView.toast.mergedIntoBranch":`Merged {branch} into {currentBranch}`,"gitView.toast.pulledFilesPlural":`Pulled {count} files from {name}`,"gitView.toast.pulledFilesSingle":`Pulled {count} file from {name}`,"gitView.toast.pushedToUpstream":`Pushed to {name}`,"gitView.toast.commitOrStashBeforeSync":`Commit or stash your changes before syncing`,"gitView.toast.alreadyUpToDate":`Already up to date`,"gitView.toast.syncedPulledPluralAndPushed":`Pulled {count} files from {name} and pushed to upstream`,"gitView.toast.syncedPulledSingleAndPushed":`Pulled {count} file from {name} and pushed to upstream`,"gitView.toast.syncedChanges":`Synced changes`,"gitView.toast.rebaseAborted":`Rebase aborted`,"gitView.toast.rebaseConflictsDetected":`Rebase conflicts detected`,"gitView.toast.rebaseStepCompleted":`Rebase step completed`,"gitView.toast.rebasedOntoBranch":`Rebased {currentBranch} onto {branch}`,"gitView.toast.refreshRepositoryFailed":`Failed to refresh repository`,"gitView.toast.remoteNameRequired":`Remote name is required`,"gitView.toast.removedRemote":`Removed remote {name}`,"gitView.toast.renameBranchFailed":`Failed to rename {oldName} to {newName}`,"gitView.toast.renamedBranch":`Renamed {oldName} to {newName}`,"gitView.toast.restoreStashFailed":`Failed to restore stash`,"gitView.toast.restoreStashManually":`Stash restored manually required`,"gitView.toast.revertFailed":`Failed to revert changes`,"gitView.toast.revertedFile":`Reverted {path}`,"gitView.toast.revertedFilesPlural":`Reverted {count} files`,"gitView.toast.revertedFilesSingle":`Reverted {count} file`,"gitView.toast.revertedSomePlural":`Reverted {success} files, {failed} failed`,"gitView.toast.revertedSomeSingle":`Reverted {success} file, {failed} failed`,"gitView.toast.stageFileFailed":`Failed to stage changes`,"gitView.toast.stageFileToCommit":`Stage at least one file to commit`,"gitView.toast.stageFileToDescribe":`Stage at least one file to describe`,"gitView.toast.selectFileToCommit":`Select at least one file to commit`,"gitView.toast.selectFileToDescribe":`Select at least one file to describe`,"gitView.toast.stashedRestored":`Stashed changes restored`,"gitView.toast.syncActionFailed":`{action} failed`,"gitView.toast.unstageFileFailed":`Failed to unstage changes`,"gitView.toast.upstreamSet":`Set upstream for {branch} to {remote}`,"gitView.worktree.availableInWorktreeMode":`Available only in worktree mode`,"contextPanel.mode.chat":`Chat`,"contextPanel.mode.files":`Files`,"contextPanel.mode.diff":`Changes`,"contextPanel.mode.stagedDiff":`Staged Diff`,"contextPanel.mode.workingDiff":`Working Diff`,"contextPanel.mode.plan":`Plan`,"contextPanel.mode.context":`Context`,"contextPanel.mode.preview":`Preview`,"contextPanel.mode.browser":`Browser`,"contextPanel.browser.open":`Open browser panel`,"contextPanel.browser.addressAria":`Browser address`,"contextPanel.browser.empty":`Web browser`,"contextPanel.browser.emptyHint":`Enter an address above to start browsing the web`,"contextPanel.browser.inspectUnavailable":`This page cannot be inspected from the browser panel.`,"contextPanel.browser.trustNotice":`Pages opened here run with full access to OpenChamber — needed for inspect and screenshots. Only open sites you trust: a malicious page could read your data or act on your behalf.`,"contextPanel.tab.closeTabAria":`Close {label} tab`,"contextPanel.actions.collapsePanel":`Collapse panel`,"contextPanel.actions.expandPanel":`Expand panel`,"contextPanel.actions.closePanel":`Close panel`,"contextPanel.actions.resizePanelAria":`Resize context panel`,"contextPanel.iframe.sessionChatTitle":`Session chat {sessionID}`,"contextPanel.preview.actions.reload":`Reload preview`,"contextPanel.preview.actions.openExternal":`Open in browser`,"contextPanel.preview.actions.retry":`Retry`,"contextPanel.preview.iframeTitle":`Preview`,"contextPanel.preview.invalidUrl":`Preview needs a valid http(s) URL.`,"contextPanel.preview.empty":`No preview URL`,"contextPanel.preview.loading":`Connecting preview proxy...`,"contextPanel.preview.proxyError":`Could not start preview proxy.`,"contextPanel.preview.upstreamUnreachable":`Dev server is not responding.`,"contextPanel.preview.upstreamUnreachableHint":`Make sure your dev server is still running, then retry.`,"contextPanel.preview.startingServer":`Starting dev server...`,"contextPanel.preview.startingServerHint":`Waiting for the server to accept connections.`,"contextPanel.preview.title":`Preview`,"contextPanel.preview.description":`Use Project Actions or a terminal Preview button to open a preview.`,"contextPanel.preview.startPreview":`Start Preview`,"contextPanel.preview.starting":`Starting...`,"contextPanel.preview.noDevServer":`No dev server command found. Configure a project action or add a "dev" script to package.json.`,"contextPanel.preview.startFailed":`Failed to start preview server.`,"contextPanel.preview.serverExited":`Dev server exited unexpectedly.`,"contextPanel.preview.noUrlDetected":`Dev server started, but no URL was detected in its output. Open the Preview terminal tab to check logs.`,"contextPanel.preview.serverExitedWithLog":`Dev server exited unexpectedly. Last output:
7
+ Use @filename to include file contents.`,"settings.commands.page.templateHint.userInput":`user input`,"settings.commands.page.templateHint.shellOutput":`shell output`,"settings.commands.page.templateHint.fileContents":`file contents`,"settings.commands.agentSelector.title":`Select agent`,"settings.commands.agentSelector.notSelected":`Not selected`,"settings.commands.agentSelector.selectAgentPlaceholder":`Select agent...`,"settings.gitIdentities.page.section.title":`Identities`,"settings.gitIdentities.page.empty.title":`No identities configured`,"settings.gitIdentities.page.empty.description":`Create one to manage Git author settings per project`,"settings.gitIdentities.page.discoveredCredentials.title":`Found in ~/.git-credentials`,"settings.gitIdentities.page.badge.default":`Default`,"settings.gitIdentities.page.actions.setAsDefault":`Set as default`,"settings.gitIdentities.page.actions.unsetDefault":`Unset default`,"settings.gitIdentities.page.actions.import":`Import`,"settings.gitIdentities.page.toast.updateDefaultFailed":`Failed to update default identity`,"settings.gitIdentities.page.toast.defaultUpdated":`Default identity updated`,"settings.gitIdentities.page.toast.defaultUnset":`Default identity unset`,"settings.gitIdentities.page.toast.profileDeleted":`Profile "{name}" deleted`,"settings.gitIdentities.page.toast.deleteProfileFailed":`Failed to delete profile`,"settings.gitIdentities.page.deleteDialog.title":`Delete Profile`,"settings.gitIdentities.page.deleteDialog.description":`Are you sure you want to delete "{name}"?`,"settings.gitIdentities.editor.title.importCredential":`Import Credential`,"settings.gitIdentities.editor.title.newIdentity":`New Identity`,"settings.gitIdentities.editor.title.globalIdentity":`Global Identity`,"settings.gitIdentities.editor.title.editIdentity":`Edit Identity`,"settings.gitIdentities.editor.description.globalReadOnly":`System-wide Git identity (read-only)`,"settings.gitIdentities.editor.description.newProfile":`Create a new Git identity profile`,"settings.gitIdentities.editor.description.editProfile":`Edit identity profile settings`,"settings.gitIdentities.editor.section.commitSigning":`Commit signing`,"settings.gitIdentities.editor.field.profileName":`Profile Name`,"settings.gitIdentities.editor.field.profileNamePlaceholder":`Work Profile, Personal, etc.`,"settings.gitIdentities.editor.field.color":`Color`,"settings.gitIdentities.editor.field.icon":`Icon`,"settings.gitIdentities.editor.field.userName":`User Name`,"settings.gitIdentities.editor.field.userNameTooltip":`The name that will appear in Git commit messages.`,"settings.gitIdentities.editor.field.userNamePlaceholder":`John Doe`,"settings.gitIdentities.editor.field.emailAddress":`Email Address`,"settings.gitIdentities.editor.field.emailAddressTooltip":`Should match your email in GitHub/GitLab for proper attribution.`,"settings.gitIdentities.editor.field.emailAddressPlaceholder":`john@example.com`,"settings.gitIdentities.editor.field.authMethod":`Auth Method`,"settings.gitIdentities.editor.field.authToken":`Token`,"settings.gitIdentities.editor.field.sshKeyPath":`SSH Key Path`,"settings.gitIdentities.editor.field.sshKeyPathTooltip":`Optional path to private key. e.g. ~/.ssh/id_ed25519`,"settings.gitIdentities.editor.field.sshKeyPathPlaceholder":`~/.ssh/id_ed25519`,"settings.gitIdentities.editor.field.signCommits":`Sign commits with this identity`,"settings.gitIdentities.editor.field.signingKey":`Signing key`,"settings.gitIdentities.editor.field.signingKeyPlaceholder":`~/.ssh/id_ed25519.pub`,"settings.gitIdentities.editor.field.host":`Host`,"settings.gitIdentities.editor.field.hostTooltip":`Token will be read from ~/.git-credentials for this host.`,"settings.gitIdentities.editor.field.hostPlaceholder":`github.com`,"settings.gitIdentities.editor.actions.close":`Close`,"settings.gitIdentities.editor.actions.create":`Create`,"settings.gitIdentities.editor.actions.save":`Save`,"settings.gitIdentities.editor.toast.userNameEmailRequired":`User name and email are required`,"settings.gitIdentities.editor.toast.hostRequiredForToken":`Host is required for token-based authentication`,"settings.gitIdentities.editor.toast.signingKeyRequired":`Signing key is required when commit signing is enabled`,"settings.gitIdentities.editor.toast.profileCreated":`Profile created`,"settings.gitIdentities.editor.toast.profileUpdated":`Profile updated`,"settings.gitIdentities.editor.toast.createProfileFailed":`Failed to create profile`,"settings.gitIdentities.editor.toast.updateProfileFailed":`Failed to update profile`,"settings.gitIdentities.editor.toast.saveUnexpectedError":`An error occurred while saving`,"settings.gitIdentities.editor.toast.profileDeleted":`Profile deleted`,"settings.gitIdentities.editor.toast.deleteProfileFailed":`Failed to delete profile`,"settings.gitIdentities.editor.toast.deleteUnexpectedError":`An error occurred while deleting`,"settings.skills.sidebar.title":`Skills`,"settings.skills.sidebar.total":`Total {count}`,"settings.skills.sidebar.section.project":`Project Skills`,"settings.skills.sidebar.section.user":`User Skills`,"settings.skills.sidebar.empty.title":`No skills configured`,"settings.skills.sidebar.empty.description":`Use the + button above to create one`,"settings.skills.sidebar.badge.claude":`claude`,"settings.skills.sidebar.badge.agents":`agents`,"settings.skills.sidebar.badge.opencode":`opencode`,"settings.skills.sidebar.toast.skillDeleted":`Skill "{name}" deleted successfully`,"settings.skills.sidebar.toast.deleteSkillFailed":`Failed to delete skill`,"settings.skills.sidebar.toast.duplicateLoadFailed":`Failed to load skill details for duplication`,"settings.skills.sidebar.toast.renameLoadFailed":`Failed to load skill details`,"settings.skills.sidebar.toast.removeOldAfterRenameFailed":`Failed to remove old skill after rename`,"settings.skills.sidebar.toast.renameFailed":`Failed to rename skill`,"settings.skills.sidebar.deleteDialog.title":`Delete Skill`,"settings.skills.sidebar.deleteDialog.description":`Are you sure you want to delete skill "{name}"?`,"settings.skills.sidebar.renameDialog.title":`Rename Skill`,"settings.skills.sidebar.renameDialog.description":`Enter a new name for the skill "{name}"`,"settings.skills.sidebar.renameDialog.placeholder":`New skill name...`,"settings.skills.page.title.newSkill":`New Skill`,"settings.skills.page.subtitle.newSkill":`Configure a new skill`,"settings.skills.page.subtitle.skillLocation":`{location} skill`,"settings.skills.page.section.basicInformation":`Basic Information`,"settings.skills.page.section.instructions":`Instructions`,"settings.skills.page.section.supportingFiles":`Supporting Files`,"settings.skills.page.field.skillNameLocation":`Skill Name & Location`,"settings.skills.page.field.skillNameHint":`Lowercase, numbers, hyphens`,"settings.skills.page.field.skillNamePlaceholder":`skill-name`,"settings.skills.page.field.descriptionHint":`The agent uses this to decide when to load the skill`,"settings.skills.page.field.descriptionPlaceholder":`Brief description of what this skill does...`,"settings.skills.page.field.instructionsPlaceholder":`Step-by-step instructions, guidelines, or reference content...`,"settings.skills.page.badge.claudeCompatible":`Claude-compatible`,"settings.skills.page.badge.pending":`pending`,"settings.skills.page.actions.addFile":`Add File`,"settings.skills.page.actions.createSkill":`Create Skill`,"settings.skills.page.actions.createFile":`Create File`,"settings.skills.page.supportingFiles.empty":`No supporting files. Use "Add File" to include reference materials.`,"settings.skills.page.loading.details":`Loading skill details...`,"settings.skills.page.loading.fileContent":`Loading file content...`,"settings.skills.page.empty.title":`Select a skill from the sidebar`,"settings.skills.page.empty.description":`Or create a new one`,"settings.skills.page.deleteFileDialog.title":`Delete Supporting File`,"settings.skills.page.deleteFileDialog.description":`Are you sure you want to delete "{path}"?`,"settings.skills.page.fileDialog.titleEdit":`Edit Supporting File`,"settings.skills.page.fileDialog.titleAdd":`Add Supporting File`,"settings.skills.page.fileDialog.descriptionEdit":`Modify the file content`,"settings.skills.page.fileDialog.descriptionAdd":`Create a new file in the skill directory`,"settings.skills.page.fileDialog.field.filePath":`File Path`,"settings.skills.page.fileDialog.field.filePathPlaceholder":`example.md or docs/reference.txt`,"settings.skills.page.fileDialog.field.filePathHint":`Relative path within the skill directory. Subdirectories will be created automatically.`,"settings.skills.page.fileDialog.field.content":`Content`,"settings.skills.page.fileDialog.field.contentPlaceholder":`File content...`,"settings.skills.page.toast.skillNameRequired":`Skill name is required`,"settings.skills.page.toast.invalidSkillName":`Skill name must be 1-64 lowercase alphanumeric characters with hyphens, cannot start or end with hyphen`,"settings.skills.page.toast.descriptionRequired":`Description is required`,"settings.skills.page.toast.skillExists":`A skill with this name already exists`,"settings.skills.page.toast.skillCreated":`Skill created successfully`,"settings.skills.page.toast.skillUpdated":`Skill updated successfully`,"settings.skills.page.toast.createSkillFailed":`Failed to create skill`,"settings.skills.page.toast.updateSkillFailed":`Failed to update skill`,"settings.skills.page.toast.saveUnexpectedError":`An error occurred while saving`,"settings.skills.page.toast.loadFileContentFailed":`Failed to load file content`,"settings.skills.page.toast.fileNameRequired":`File name is required`,"settings.skills.page.toast.fileExists":`A file with this name already exists`,"settings.skills.page.toast.noSkillSelected":`No skill selected`,"settings.skills.page.toast.fileAdded":`File "{path}" added`,"settings.skills.page.toast.fileCreated":`File "{path}" created`,"settings.skills.page.toast.fileUpdated":`File "{path}" updated`,"settings.skills.page.toast.fileRemoved":`File "{path}" removed`,"settings.skills.page.toast.fileDeleted":`File "{path}" deleted`,"settings.skills.page.toast.createFileFailed":`Failed to create file`,"settings.skills.page.toast.updateFileFailed":`Failed to update file`,"settings.skills.page.toast.deleteFileFailed":`Failed to delete file`,"settings.skills.location.option.userOpencode.label":`User / OpenCode`,"settings.skills.location.option.userOpencode.description":`Global OpenCode config location`,"settings.skills.location.option.projectOpencode.label":`Project / OpenCode`,"settings.skills.location.option.projectOpencode.description":`Current project .opencode location`,"settings.skills.location.option.userClaude.label":`User / Claude`,"settings.skills.location.option.userClaude.description":`Global Claude skills location`,"settings.skills.location.option.projectClaude.label":`Project / Claude`,"settings.skills.location.option.projectClaude.description":`Current project .claude location`,"settings.skills.location.option.userAgents.label":`User / Agents`,"settings.skills.location.option.userAgents.description":`Global .agents compatibility location`,"settings.skills.location.option.projectAgents.label":`Project / Agents`,"settings.skills.location.option.projectAgents.description":`Current project .agents compatibility location`,"settings.skills.catalog.shared.field.repository":`Repository`,"settings.skills.catalog.shared.field.repositoryPlaceholder":`owner/repo or git@github.com:owner/repo.git`,"settings.skills.catalog.shared.field.optionalSubpath":`Optional subpath`,"settings.skills.catalog.shared.field.subpathPlaceholder":`e.g. skills`,"settings.skills.catalog.shared.field.targetLocation":`Target location`,"settings.skills.catalog.shared.field.project":`Project`,"settings.skills.catalog.shared.field.noProjects":`No projects available`,"settings.skills.catalog.shared.field.chooseProjectPlaceholder":`Choose project`,"settings.skills.catalog.shared.field.searchSkillsPlaceholder":`Search skills…`,"settings.skills.catalog.shared.toast.repositoryRequired":`Repository source is required`,"settings.skills.catalog.shared.toast.privateRepoNotSupportedVsCode":`Private repositories are not supported in VS Code yet`,"settings.skills.catalog.shared.toast.foundSkills":`Found {count} skill(s)`,"settings.skills.catalog.shared.noDescription":`No description provided`,"settings.skills.catalog.shared.actions.scan":`Scan`,"settings.skills.catalog.shared.actions.scanning":`Scanning...`,"settings.skills.catalog.shared.actions.install":`Install`,"settings.skills.catalog.shared.actions.installing":`Installing...`,"settings.skills.catalog.shared.auth.title":`Authentication required`,"settings.skills.catalog.shared.auth.description":`Select a Git identity (SSH key)`,"settings.skills.catalog.shared.auth.chooseIdentity":`Choose identity`,"settings.skills.catalog.shared.auth.footerHint":`Configure identities in Settings - Git Identities.`,"settings.skills.catalog.shared.auth.footerHintArrow":`Configure identities in Settings → Git Identities.`,"settings.skills.catalog.conflicts.title":`Skills already exist`,"settings.skills.catalog.conflicts.description":`Some selected skills are already installed in this scope. Choose whether to skip or overwrite them.`,"settings.skills.catalog.conflicts.count":`{count} conflict(s)`,"settings.skills.catalog.conflicts.installedIn":`Installed in {scope} / {source}`,"settings.skills.catalog.conflicts.scope.user":`user`,"settings.skills.catalog.conflicts.scope.project":`project`,"settings.skills.catalog.conflicts.source.opencode":`opencode`,"settings.skills.catalog.conflicts.source.agents":`agents`,"settings.skills.catalog.conflicts.decision.skip":`Skip`,"settings.skills.catalog.conflicts.decision.overwrite":`Overwrite`,"settings.skills.catalog.conflicts.actions.skipAll":`Skip all`,"settings.skills.catalog.conflicts.actions.overwriteAll":`Overwrite all`,"settings.skills.catalog.conflicts.actions.continue":`Continue`,"settings.skills.catalog.installSkill.title":`Install skill`,"settings.skills.catalog.installSkill.descriptionPrefix":`Install`,"settings.skills.catalog.installSkill.descriptionSuffix":`into one of four target locations.`,"settings.skills.catalog.installSkill.field.destination":`Destination`,"settings.skills.catalog.installSkill.field.project":`Project`,"settings.skills.catalog.installSkill.field.noProjects":`No projects available`,"settings.skills.catalog.installSkill.field.chooseProjectPlaceholder":`Choose project`,"settings.skills.catalog.installSkill.actions.install":`Install`,"settings.skills.catalog.installSkill.actions.installing":`Installing...`,"settings.skills.catalog.installSkill.toast.installed":`Skill installed successfully`,"settings.skills.catalog.installSkill.toast.authRequired":`Authentication required`,"settings.skills.catalog.installSkill.toast.installFailed":`Failed to install skill`,"settings.skills.catalog.add.title":`Add skills catalog`,"settings.skills.catalog.add.descriptionPrefix":`Add a Git repository as a new catalog source. OpenChamber will scan it for folders containing`,"settings.skills.catalog.add.descriptionSuffix":`.`,"settings.skills.catalog.add.field.catalogName":`Catalog name`,"settings.skills.catalog.add.field.catalogNamePlaceholder":`e.g. Team Skills`,"settings.skills.catalog.add.field.repository":`Repository`,"settings.skills.catalog.add.field.optionalSubpath":`Optional subpath`,"settings.skills.catalog.add.field.repositoryHint":`Public repos work everywhere. Private repos require SSH identity (Desktop/Web only).`,"settings.skills.catalog.add.scanResult":`Scan result: {count} skill(s) found`,"settings.skills.catalog.add.duplicateMessage":`This catalog is already added.`,"settings.skills.catalog.add.actions.addCatalog":`Add catalog`,"settings.skills.catalog.add.toast.repositoryRequired":`Repository source is required`,"settings.skills.catalog.add.toast.authenticationRequiredScan":`Authentication required. Select a Git identity and scan again.`,"settings.skills.catalog.add.toast.scanFailed":`Failed to scan repository`,"settings.skills.catalog.add.toast.noSkillsFound":`No skills found in this repository`,"settings.skills.catalog.add.toast.catalogNameRequired":`Catalog name is required`,"settings.skills.catalog.add.toast.scanBeforeAdd":`Scan the repository before adding this catalog`,"settings.skills.catalog.add.toast.catalogAlreadyExists":`This catalog already exists`,"settings.skills.catalog.add.toast.catalogAdded":`Catalog added`,"settings.skills.catalog.add.toast.saveFailed":`Failed to save catalog`,"settings.skills.catalog.installFromRepo.title":`Install from Git repository`,"settings.skills.catalog.installFromRepo.descriptionPrefix":`Scan a repository for folders containing`,"settings.skills.catalog.installFromRepo.descriptionSuffix":`, then install selected skills.`,"settings.skills.catalog.installFromRepo.repositoryHintPrefix":`For GitHub shorthand, you can add a subpath like`,"settings.skills.catalog.installFromRepo.authDescription":`Select a Git identity (SSH key) that can access this repository.`,"settings.skills.catalog.installFromRepo.empty.noScanResultsTitle":`No scan results yet`,"settings.skills.catalog.installFromRepo.empty.noScanResultsDescription":`Scan a repository to discover skills`,"settings.skills.catalog.installFromRepo.actions.selectAll":`Select all`,"settings.skills.catalog.installFromRepo.actions.selectNone":`Select none`,"settings.skills.catalog.installFromRepo.actions.installSelected":`Install selected`,"settings.skills.catalog.installFromRepo.badge.installed":`Installed ({scope}/{source})`,"settings.skills.catalog.installFromRepo.selectedCount":`Selected: {selected} / {total}`,"settings.skills.catalog.installFromRepo.toast.authenticationRequiredScan":`Authentication required. Select a Git identity and try scanning again.`,"settings.skills.catalog.installFromRepo.toast.authenticationRequiredInstall":`Authentication required. Select a Git identity and try installing again.`,"settings.skills.catalog.installFromRepo.toast.scanFailed":`Failed to scan repository`,"settings.skills.catalog.installFromRepo.toast.selectAtLeastOne":`Select at least one skill to install`,"settings.skills.catalog.installFromRepo.toast.installedCount":`Installed {count} skill(s)`,"settings.skills.catalog.installFromRepo.toast.installCompleted":`Installation completed`,"settings.skills.catalog.installFromRepo.toast.installFailed":`Failed to install skills`,"settings.skills.catalog.page.mode.manual":`Manual`,"settings.skills.catalog.page.mode.external":`External`,"settings.skills.catalog.page.title":`Skills Catalog`,"settings.skills.catalog.page.section.sourceRepository":`Source Repository`,"settings.skills.catalog.page.field.selectSourcePlaceholder":`Select source`,"settings.skills.catalog.page.actions.refreshTitle":`Refresh`,"settings.skills.catalog.page.actions.removeCatalogTitle":`Remove Catalog`,"settings.skills.catalog.page.actions.addCatalog":`Add Catalog`,"settings.skills.catalog.page.actions.removeCatalog":`Remove Catalog`,"settings.skills.catalog.page.actions.loadMoreSkills":`Load More Skills`,"settings.skills.catalog.page.loading.catalog":`Loading...`,"settings.skills.catalog.page.loading.skills":`Loading skills...`,"settings.skills.catalog.page.loading.more":`Loading...`,"settings.skills.catalog.page.foundCount":`{count} skill(s) found`,"settings.skills.catalog.page.error.catalogTitle":`Catalog error`,"settings.skills.catalog.page.empty.noSkillsTitle":`No skills found`,"settings.skills.catalog.page.empty.noSkillsDescription":`Try a different search or refresh the catalog`,"settings.skills.catalog.page.badge.installed":`Installed ({scope})`,"settings.skills.catalog.page.badge.notInstallable":`Not installable`,"settings.skills.catalog.page.badge.unknown":`Unknown`,"settings.skills.catalog.page.byOwnerPrefix":`by`,"settings.skills.catalog.page.removeDialog.title":`Remove Catalog`,"settings.skills.catalog.page.removeDialog.description":`Are you sure you want to remove this catalog?`,"settings.openchamber.passkeys.title":`Passkeys`,"settings.openchamber.passkeys.field.currentDevice":`Current device`,"settings.openchamber.passkeys.actions.add":`Add passkey`,"settings.openchamber.passkeys.actions.cancelSetup":`Cancel passkey setup`,"settings.openchamber.passkeys.actions.signOutEverywhere":`Sign out everywhere`,"settings.openchamber.passkeys.actions.signingOut":`Signing out…`,"settings.openchamber.passkeys.actions.removing":`Removing…`,"settings.openchamber.passkeys.state.uiPasswordRequired":`Passkeys are available only when the UI password lock is enabled.`,"settings.openchamber.passkeys.state.loading":`Loading passkeys…`,"settings.openchamber.passkeys.state.noneSaved":`No passkeys saved for this host yet.`,"settings.openchamber.passkeys.item.lastUsed":`Last used {time}`,"settings.openchamber.passkeys.item.added":`Added {time}`,"settings.openchamber.passkeys.time.neverUsed":`Never used`,"settings.openchamber.passkeys.toast.loadFailed":`Could not load passkeys.`,"settings.openchamber.passkeys.toast.enableUiPasswordFirst":`Enable the UI password lock before adding passkeys.`,"settings.openchamber.passkeys.toast.added":`Passkey added`,"settings.openchamber.passkeys.toast.setupCanceled":`Passkey setup canceled`,"settings.openchamber.passkeys.toast.addFailed":`Could not add passkey.`,"settings.openchamber.passkeys.toast.removed":`Passkey removed`,"settings.openchamber.passkeys.toast.removeFailed":`Could not remove passkey.`,"settings.openchamber.passkeys.toast.clearAuthFailed":`Could not clear saved authentication.`,"settings.openchamber.sessionRetention.title":`Session Retention`,"settings.openchamber.sessionRetention.tooltip":`Automatically archive or delete inactive sessions based on last activity. Keeps the 5 most recent sessions.`,"settings.openchamber.sessionRetention.field.enableAutoCleanupAria":`Enable auto-cleanup`,"settings.openchamber.sessionRetention.field.enableAutoCleanup":`Enable Auto-Cleanup`,"settings.openchamber.sessionRetention.field.retentionPeriod":`Retention Period`,"settings.openchamber.sessionRetention.field.retentionPeriodAria":`Retention period in days`,"settings.openchamber.sessionRetention.field.days":`days`,"settings.openchamber.sessionRetention.field.whenSessionsExpire":`When sessions expire`,"settings.openchamber.sessionRetention.actions.resetRetentionAria":`Reset retention period`,"settings.openchamber.sessionRetention.actions.runCleanupNow":`Run cleanup now`,"settings.openchamber.sessionRetention.actions.cleaningUp":`Cleaning up...`,"settings.openchamber.sessionRetention.action.archive":`Archive`,"settings.openchamber.sessionRetention.action.delete":`Delete`,"settings.openchamber.sessionRetention.manualCleanup.title":`Manual Cleanup`,"settings.openchamber.sessionRetention.manualCleanup.eligibleArchiveNow":`Eligible for archiving right now: {count}`,"settings.openchamber.sessionRetention.manualCleanup.eligibleDeleteNow":`Eligible for deletion right now: {count}`,"settings.openchamber.sessionRetention.toast.noneEligibleArchive":`No sessions eligible for archiving`,"settings.openchamber.sessionRetention.toast.noneEligibleDelete":`No sessions eligible for deletion`,"settings.openchamber.sessionRetention.toast.archivedCount":`Archived {count} session(s)`,"settings.openchamber.sessionRetention.toast.deletedCount":`Deleted {count} session(s)`,"settings.openchamber.sessionRetention.toast.failedArchiveCount":`Failed to archive {count} session(s)`,"settings.openchamber.sessionRetention.toast.failedDeleteCount":`Failed to delete {count} session(s)`,"settings.openchamber.archivedSessions.title":`Archived sessions`,"settings.openchamber.archivedSessions.description":`Browse archived sessions by project, restore them, or open a preview.`,"settings.openchamber.archivedSessions.summarySingle":`{count} archived session`,"settings.openchamber.archivedSessions.summaryPlural":`{count} archived sessions`,"settings.openchamber.archivedSessions.actions.manage":`Manage archived sessions`,"settings.openchamber.archivedSessions.actions.view":`View archived`,"settings.openchamber.archivedSessions.actions.preview":`Preview`,"settings.openchamber.archivedSessions.actions.restore":`Restore`,"settings.openchamber.archivedSessions.otherProjects":`Other`,"settings.openchamber.archivedSessions.dialog.title":`Archived sessions`,"settings.openchamber.archivedSessions.dialog.description":`Select a project to view its archived sessions.`,"settings.openchamber.archivedSessions.dialog.loading":`Loading archived sessions…`,"settings.openchamber.archivedSessions.dialog.empty":`No archived sessions yet.`,"settings.openchamber.archivedSessions.dialog.emptyProject":`No archived sessions in this project.`,"settings.openchamber.archivedSessions.dialog.backToProjects":`Back to projects`,"settings.openchamber.archivedSessions.dialog.sessionCountSingle":`{count} session`,"settings.openchamber.archivedSessions.dialog.sessionCountPlural":`{count} sessions`,"settings.openchamber.archivedSessions.toast.loadFailed":`Could not load archived sessions.`,"settings.openchamber.archivedSessions.toast.restored":`Session restored`,"settings.openchamber.archivedSessions.toast.restoreFailed":`Failed to restore session`,"settings.openchamber.desktopNetwork.title":`Desktop Network Access`,"settings.openchamber.desktopNetwork.field.windowControlsPosition":`Window controls position`,"settings.openchamber.desktopNetwork.field.windowControlsPositionDescription":`Choose where minimize, maximize, and close buttons appear. Auto follows your operating system.`,"settings.openchamber.desktopNetwork.field.windowControlsPositionAria":`Window controls position`,"settings.openchamber.desktopNetwork.option.windowControlsAuto":`Auto`,"settings.openchamber.desktopNetwork.option.windowControlsLeft":`Left`,"settings.openchamber.desktopNetwork.option.windowControlsRight":`Right`,"settings.openchamber.desktopNetwork.field.launchAtLoginAria":`Start OpenChamber at login`,"settings.openchamber.desktopNetwork.field.launchAtLogin":`Start OpenChamber when you log in`,"settings.openchamber.desktopNetwork.field.launchAtLoginDescription":`Starts the app in the background without opening a window. Use the desktop status icon to open it.`,"settings.openchamber.desktopNetwork.field.minimizeToTrayAria":`Minimize and close OpenChamber to the system tray`,"settings.openchamber.desktopNetwork.field.minimizeToTray":`Minimize and close to the system tray`,"settings.openchamber.desktopNetwork.field.minimizeToTrayDescription":`Keeps OpenChamber running in the Windows system tray when the main window is minimized or closed.`,"settings.openchamber.desktopNetwork.field.keepAwakeAria":`Keep computer awake while OpenChamber is running`,"settings.openchamber.desktopNetwork.field.keepAwake":`Keep computer awake while OpenChamber is running`,"settings.openchamber.desktopNetwork.field.keepAwakeDescription":`Prevents system sleep so phones can keep reaching this app. The screen can still turn off.`,"settings.openchamber.desktopNetwork.field.allowLanAccessAria":`Allow LAN access to desktop sidecar`,"settings.openchamber.desktopNetwork.field.allowLanAccess":`Let other devices on your local network open this app`,"settings.openchamber.desktopNetwork.field.allowLanAccessDescription":`Restarts the app so phones, tablets, and other computers on your Wi-Fi can open it.`,"settings.openchamber.desktopNetwork.field.warning":`Warning: while enabled, the app is reachable by anyone on the same local network.`,"settings.openchamber.desktopNetwork.field.passwordRequiredWarning":`LAN access requires a Desktop UI Password. Until one is set, the desktop app starts local-only.`,"settings.openchamber.desktopPassword.field.password":`Desktop UI Password`,"settings.openchamber.desktopPassword.field.passwordPlaceholder":`No password required`,"settings.openchamber.desktopPassword.field.passwordDescription":`OpenChamber asks after restart, then when the login session expires: after 12 hours, or 7 days with Trust this device. Leave empty to disable login.`,"settings.openchamber.desktopNetwork.hint.openAfterRestart":`After restart, open from another device: `,"settings.openchamber.desktopNetwork.hint.openNow":`Open from another device: `,"settings.openchamber.desktopNetwork.actions.saveAndRestart":`Save + Restart`,"settings.openchamber.desktopNetwork.error.loadFailed":`Failed to load desktop settings`,"settings.openchamber.desktopNetwork.error.saveFailed":`Failed to save desktop settings`,"settings.openchamber.desktopNetwork.error.savedRestartFailed":`Saved, but failed to restart app`,"settings.openchamber.desktopNetwork.error.launchAtLoginUnsupported":`Launch at login is not supported on this system`,"settings.openchamber.desktopNetwork.error.launchAtLoginSaveFailed":`Failed to update launch at login setting`,"settings.openchamber.desktopNetwork.error.minimizeToTrayUnsupported":`System tray background mode is not supported on this system`,"settings.openchamber.desktopNetwork.error.minimizeToTraySaveFailed":`Failed to update system tray setting`,"settings.openchamber.desktopNetwork.error.keepAwakeUnsupported":`Preventing sleep is not supported on this system`,"settings.openchamber.desktopNetwork.error.keepAwakeSaveFailed":`Failed to update keep awake setting`,"settings.openchamber.opencodeCli.title":`OpenCode CLI`,"settings.openchamber.opencodeCli.tooltipPrefix":`Optional absolute path to the`,"settings.openchamber.opencodeCli.tooltipSuffix":`binary.`,"settings.openchamber.opencodeCli.field.binaryPath":`OpenCode Binary Path`,"settings.openchamber.opencodeCli.field.binaryPathPlaceholder":`/Users/you/.bun/bin/opencode`,"settings.openchamber.opencodeCli.field.showUpdateNotifications":`Show OpenCode update notifications`,"settings.openchamber.opencodeCli.field.showUpdateNotificationsAria":`Show OpenCode update notifications`,"settings.openchamber.opencodeCli.actions.browseAria":`Browse for OpenCode binary path`,"settings.openchamber.opencodeCli.actions.browse":`Browse`,"settings.openchamber.opencodeCli.actions.saveAndReload":`Save + Reload`,"settings.openchamber.opencodeCli.actions.restartingOpenCode":`Restarting OpenCode…`,"settings.openchamber.opencodeCli.dialog.selectBinaryTitle":`Select opencode binary`,"settings.openchamber.opencodeCli.tipPrefix":`Tip: you can also use`,"settings.openchamber.opencodeCli.tipMiddle":`env var, but this setting persists in`,"settings.mcp.sidebar.title":`MCP Servers`,"settings.mcp.sidebar.total":`Total {count}`,"settings.mcp.sidebar.actions.refreshStatusAria":`Refresh MCP status`,"settings.mcp.sidebar.actions.refreshStatusTitle":`Refresh MCP status`,"settings.mcp.sidebar.actions.addServerTitle":`Add MCP server`,"settings.mcp.sidebar.actions.deleting":`Deleting…`,"settings.mcp.sidebar.empty.title":`No MCP servers configured`,"settings.mcp.sidebar.empty.description":`Use the + button above to add one`,"settings.mcp.sidebar.group.projectServers":`Project Servers`,"settings.mcp.sidebar.group.userServers":`User Servers`,"settings.mcp.sidebar.serverType.localTitle":`Local server`,"settings.mcp.sidebar.serverType.remoteTitle":`Remote server`,"settings.mcp.sidebar.deleteDialog.title":`Delete MCP Server`,"settings.mcp.sidebar.deleteDialog.descriptionPrefix":`Are you sure you want to delete "{name}"? This will remove it from`,"settings.mcp.sidebar.toast.deleteFailed":`Failed to delete MCP server`,"settings.mcp.sidebar.toast.serverDeleted":`MCP server "{name}" deleted`,"settings.mcp.sidebar.toast.refreshListIfStale":`Refresh the MCP list if the UI looks stale.`,"settings.plugins.sidebar.title":`Plugins`,"settings.plugins.sidebar.total":`Total {count}`,"settings.plugins.sidebar.actions.addTitle":`Add plugin`,"settings.plugins.sidebar.actions.deleting":`Deleting…`,"settings.plugins.sidebar.empty.title":`No plugins configured`,"settings.plugins.sidebar.empty.description":`Use the + button above to add one`,"settings.plugins.sidebar.group.userEntries":`User config`,"settings.plugins.sidebar.group.userFiles":`User plugin file`,"settings.plugins.sidebar.group.projectEntries":`Project config`,"settings.plugins.sidebar.group.projectFiles":`Project plugin file`,"settings.plugins.sidebar.kind.npm":`npm package`,"settings.plugins.sidebar.kind.path":`Local path`,"settings.plugins.sidebar.kind.file":`Plugin file`,"settings.plugins.sidebar.deleteDialog.title":`Delete plugin`,"settings.plugins.sidebar.deleteDialog.description":`Are you sure you want to delete "{name}"?`,"settings.plugins.sidebar.toast.deleted":`Plugin "{name}" deleted`,"settings.plugins.sidebar.toast.deleteFailed":`Failed to delete plugin`,"settings.plugins.page.empty.select":`Select a plugin to view or edit`,"settings.plugins.page.empty.add":`Or click + to add a new plugin`,"settings.plugins.page.header.entry":`Installed plugin`,"settings.plugins.page.header.file":`Plugin file`,"settings.plugins.page.field.spec":`Spec`,"settings.plugins.page.field.spec.placeholder":`npm-package@version or /absolute/path`,"settings.plugins.page.field.options":`Options (JSON)`,"settings.plugins.page.field.options.invalidJson":`Invalid JSON`,"settings.plugins.page.field.fileName":`Filename`,"settings.plugins.page.field.content":`Content`,"settings.plugins.page.field.scope":`Scope`,"settings.plugins.scope.user":`User`,"settings.plugins.scope.project":`Project`,"settings.plugins.page.action.save":`Save`,"settings.plugins.page.action.discard":`Discard`,"settings.plugins.dialog.add.title":`Add plugin`,"settings.plugins.dialog.add.tab.npm":`From npm`,"settings.plugins.dialog.add.tab.path":`From local path`,"settings.plugins.dialog.add.tab.file":`New file`,"settings.plugins.dialog.add.action.submit":`Add`,"settings.plugins.dialog.add.action.cancel":`Cancel`,"settings.plugins.toast.created":`Plugin added`,"settings.plugins.toast.updated":`Plugin updated`,"settings.plugins.toast.reloadFailed":`OpenCode reload failed — restart required`,"settings.plugins.validation.fileName":`Filename must be lowercase, end in .js / .ts / .mjs / .cjs`,"settings.plugins.validation.specRequired":`Spec is required`,"settings.plugins.registry.badge.update.label":`↑ {version}`,"settings.plugins.registry.badge.update.tooltip":`Update available: {current} → {latest}`,"settings.plugins.registry.badge.malformed.tooltip":`Spec is malformed`,"settings.plugins.registry.badge.missingPackage.tooltip":`Package {name} not found on npm`,"settings.plugins.registry.badge.missingVersion.tooltip":`Version {version} of {name} not published`,"settings.plugins.registry.badge.pathMissing.tooltip":`File not found: {path}`,"settings.plugins.registry.badge.pathUnreadable.tooltip":`File not readable: {path}`,"settings.plugins.registry.badge.network.tooltip":`Could not reach npm registry`,"settings.plugins.registry.banner.updateAvailable.title":`Update available`,"settings.plugins.registry.banner.updateAvailable.description":`{current} → {latest}`,"settings.plugins.registry.banner.updateAvailable.action":`Update to {latest}`,"settings.plugins.registry.banner.invalid.title":`Invalid plugin`,"settings.plugins.registry.banner.invalid.malformed":`Spec syntax is malformed`,"settings.plugins.registry.banner.invalid.missingPackage":`Package not found on npm`,"settings.plugins.registry.banner.invalid.missingVersion":`Version not published`,"settings.plugins.registry.banner.invalid.pathMissing":`File does not exist`,"settings.plugins.registry.banner.invalid.pathUnreadable":`File is not readable`,"settings.plugins.sidebar.actions.updateToLatest":`Update to latest`,"settings.plugins.sidebar.actions.refresh":`Check for updates`,"settings.plugins.sidebar.group.updatesAvailable_one":`{count} update available`,"settings.plugins.sidebar.group.updatesAvailable_other":`{count} updates available`,"settings.plugins.toast.updatedToLatest":`Plugin updated to {version}`,"settings.plugins.toast.refreshing":`Checking npm for updates…`,"settings.plugins.toast.refreshFailed":`Could not check npm registry`,"settings.openchamber.keyboardShortcuts.title":`Keyboard Shortcuts`,"settings.openchamber.keyboardShortcuts.actions.resetAll":`Reset All`,"settings.openchamber.keyboardShortcuts.actions.overwrite":`Overwrite`,"settings.openchamber.keyboardShortcuts.tooltip":`Capture a new key combo, save it, and bindings will update immediately.`,"settings.openchamber.keyboardShortcuts.overwritePrompt":`This combo is already used by another shortcut. Overwrite and clear that other mapping?`,"settings.openchamber.keyboardShortcuts.field.pressKeys":`Press keys...`,"settings.openchamber.keyboardShortcuts.error.captureFirst":`Capture a shortcut first.`,"settings.openchamber.keyboardShortcuts.warning.riskyBrowserShortcut":`This shortcut can conflict with browser defaults. It is still saved.`,"settings.openchamber.keyboardShortcuts.action.open_go_to_line.label":`Go to line (files editor)`,"settings.openchamber.keyboardShortcuts.action.open_command_palette.label":`Open command palette`,"settings.openchamber.keyboardShortcuts.action.focus_input.label":`Focus input`,"settings.openchamber.keyboardShortcuts.action.open_settings.label":`Open settings`,"settings.openchamber.keyboardShortcuts.action.toggle_terminal.label":`Toggle terminal`,"settings.openchamber.keyboardShortcuts.action.toggle_bottom_panel.label":`Toggle bottom panel`,"settings.openchamber.keyboardShortcuts.action.toggle_terminal_expanded.label":`Toggle terminal expanded`,"settings.openchamber.keyboardShortcuts.action.new_terminal_tab.label":`New terminal tab`,"settings.openchamber.keyboardShortcuts.action.open_new_terminal.label":`Open new terminal`,"settings.openchamber.keyboardShortcuts.action.previous_terminal_tab.label":`Previous terminal tab`,"settings.openchamber.keyboardShortcuts.action.next_terminal_tab.label":`Next terminal tab`,"settings.openchamber.keyboardShortcuts.action.toggle_sidebar.label":`Toggle sidebar`,"settings.openchamber.keyboardShortcuts.action.toggle_right_sidebar.label":`Toggle review panel`,"settings.openchamber.keyboardShortcuts.action.open_right_sidebar_git.label":`Open right sidebar Git tab`,"settings.openchamber.keyboardShortcuts.action.open_right_sidebar_files.label":`Open right sidebar Files tab`,"settings.openchamber.keyboardShortcuts.action.cycle_right_sidebar_tab.label":`Cycle right sidebar tab`,"settings.openchamber.keyboardShortcuts.action.close_context_panel_tab.label":`Close context panel tab`,"settings.openchamber.keyboardShortcuts.action.previous_session.label":`Previous session`,"settings.openchamber.keyboardShortcuts.action.next_session.label":`Next session`,"settings.openchamber.keyboardShortcuts.action.new_chat.label":`New session`,"settings.openchamber.keyboardShortcuts.action.new_chat_worktree.label":`New worktree draft`,"settings.openchamber.keyboardShortcuts.action.new_mini_chat.label":`New Mini Chat window`,"settings.openchamber.keyboardShortcuts.action.open_help.label":`Open keyboard shortcuts`,"settings.openchamber.keyboardShortcuts.action.toggle_context_plan.label":`Toggle plan context panel`,"settings.openchamber.keyboardShortcuts.action.toggle_services_menu.label":`Toggle services menu`,"settings.openchamber.keyboardShortcuts.action.open_usage.label":`Open usage`,"settings.openchamber.keyboardShortcuts.action.cycle_services_tab.label":`Cycle services tab`,"settings.openchamber.keyboardShortcuts.action.cycle_theme.label":`Cycle theme`,"settings.openchamber.keyboardShortcuts.action.zoom_in.label":`Zoom in`,"settings.openchamber.keyboardShortcuts.action.zoom_out.label":`Zoom out`,"settings.openchamber.keyboardShortcuts.action.zoom_reset.label":`Reset zoom`,"settings.openchamber.keyboardShortcuts.action.cycle_agent.label":`Cycle agent`,"settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_forward.label":`Cycle favorite model forward`,"settings.openchamber.keyboardShortcuts.action.cycle_favorite_model_backward.label":`Cycle favorite model backward`,"settings.openchamber.keyboardShortcuts.action.open_model_selector.label":`Open model selector`,"settings.openchamber.keyboardShortcuts.action.expand_input.label":`Expand input`,"settings.openchamber.keyboardShortcuts.action.clear_all_messages.label":`Clear all messages`,"settings.openchamber.keyboardShortcuts.action.open_timeline_dialog.label":`Open conversation timeline`,"settings.openchamber.keyboardShortcuts.action.toggle_prompt_navigator.label":`Toggle prompt navigator`,"settings.projects.sidebar.total":`Total {count}`,"settings.projects.sidebar.actions.addProject":`Add project`,"settings.projects.page.empty.noProjects":`No projects available.`,"settings.projects.page.title.default":`Project Settings`,"settings.projects.page.section.worktree":`Worktree`,"settings.projects.page.field.projectName":`Project Name`,"settings.projects.page.field.projectNamePlaceholder":`Project name`,"settings.projects.page.field.defaultModel":`Default model for new chats`,"settings.projects.page.field.defaultModelDescription":`Used when starting a new chat in this project. Falls back to global defaults when unset.`,"settings.projects.page.field.accentColor":`Accent Color`,"settings.projects.page.field.projectIcon":`Project Icon`,"settings.projects.page.field.projectIconBackgroundAria":`Project icon background color`,"settings.projects.page.field.clearIconBackgroundAria":`Clear icon background`,"settings.projects.page.field.clearBackground":`Clear background`,"settings.projects.page.field.none":`None`,"settings.projects.page.field.preview":`Preview`,"settings.projects.page.actions.uploadIcon":`Upload Icon`,"settings.projects.page.actions.uploading":`Uploading...`,"settings.projects.page.actions.discoverFavicon":`Discover Favicon`,"settings.projects.page.actions.discovering":`Discovering...`,"settings.projects.page.actions.removeProjectIcon":`Remove Project Icon`,"settings.projects.page.actions.removing":`Removing...`,"settings.projects.page.actions.undoRemove":`Undo Remove`,"settings.projects.page.toast.uploadIconFailed":`Failed to upload project icon`,"settings.projects.page.toast.iconUpdated":`Project icon updated`,"settings.projects.page.toast.removeIconFailed":`Failed to remove project icon`,"settings.projects.page.toast.iconRemoved":`Project icon removed`,"settings.projects.page.toast.discoverIconFailed":`Failed to discover project icon`,"settings.projects.page.toast.customIconAlreadySet":`Custom icon already set for this project`,"settings.projects.page.toast.iconDiscovered":`Project icon discovered`,"settings.projects.page.toast.saveFailed":`Failed to save project settings`,"settings.usage.sidebar.title":`Usage`,"settings.usage.sidebar.total":`Total {count}`,"settings.usage.sidebar.actions.toggleAutoRefreshAria":`Toggle auto refresh`,"settings.usage.sidebar.field.autoRefresh":`Auto-refresh`,"settings.usage.sidebar.field.refreshInterval":`Refresh interval`,"settings.usage.sidebar.actions.refreshAria":`Refresh usage`,"settings.usage.sidebar.actions.refreshTitle":`Refresh usage`,"settings.usage.sidebar.tooltip.autoRefresh":`Auto-refresh usage data at set interval`,"settings.usage.sidebar.field.intervalPlaceholder":`Interval`,"settings.usage.sidebar.field.display":`Display`,"settings.usage.sidebar.field.displayModePlaceholder":`Display mode`,"settings.usage.sidebar.field.displayModeUsage":`Usage`,"settings.usage.sidebar.field.displayModeRemaining":`Quota remaining`,"settings.usage.sidebar.field.showPredictions":`Show predictions`,"settings.usage.sidebar.status.notSet":`Not set`,"settings.usage.page.empty.selectProvider":`Select a provider to view usage details.`,"settings.usage.page.header.providerUsage":`{provider} Usage`,"settings.usage.page.header.refreshing":`Refreshing usage...`,"settings.usage.page.header.lastUpdated":`Last updated: {time}`,"settings.usage.page.options.showInHeaderAria":`Show in header menu`,"settings.usage.page.options.showInHeader":`Show in Header Menu`,"settings.usage.page.options.showInHeaderTooltip":`When enabled, this provider's usage will be visible in the quick access dropdown menu in the app header.`,"settings.usage.page.state.noData":`No usage data available yet.`,"settings.usage.page.state.refreshFailedTitle":`Failed to refresh usage data`,"settings.usage.page.state.providerNotConfiguredTitle":`Provider not configured`,"settings.usage.page.state.providerNotConfiguredDescription":`Add credentials in the Providers tab to enable usage tracking.`,"settings.usage.page.section.modelQuotas":`Model Quotas`,"settings.usage.page.section.otherModels":`Other Models`,"settings.usage.page.state.noQuotaWindowsTitle":`No quota windows reported`,"settings.usage.page.state.noQuotaWindowsDescription":`This provider does not currently report any rate limits or usage quotas.`,"settings.usage.pace.status.onTrack":`On track`,"settings.usage.pace.status.slightlyFast":`Slightly fast`,"settings.usage.pace.status.tooFast":`Too fast`,"settings.usage.pace.status.usedUp":`Used up`,"settings.usage.pace.predictionTooltip":`Predicted usage at window end based on current pace: {prediction}`,"settings.usage.pace.wait":`Wait {duration}`,"settings.usage.pace.prediction":`Pred: {prediction}`,"settings.usage.pace.rate":`Pace: {rate}`,"settings.usage.pace.waitSeparator":` · Wait `,"settings.usage.pace.predictionLabel":`Pred: `,"settings.remoteInstances.page.title":`Remote Instance`,"settings.remoteInstances.page.description":`Connect to another machine over SSH and open OpenChamber there.`,"settings.remoteInstances.page.empty.selectInstance":`Select an instance to view and edit its settings.`,"settings.remoteInstances.page.empty.noExtraForwards":`No extra port forwards configured.`,"settings.remoteInstances.page.section.actions":`Actions`,"settings.remoteInstances.page.section.actionsDescription":`Connect, reconnect, view logs, or remove this connection.`,"settings.remoteInstances.page.section.remoteServer":`OpenChamber on the remote machine`,"settings.remoteInstances.page.section.remoteServerDescription":`Choose how OpenChamber should run after SSH connects.`,"settings.remoteInstances.page.section.mainTunnel":`Local access`,"settings.remoteInstances.page.section.mainTunnelDescription":`Choose the local address used to open this remote OpenChamber server.`,"settings.remoteInstances.page.section.authentication":`Authentication`,"settings.remoteInstances.page.section.authenticationDescription":`Optional credentials for SSH and the remote OpenChamber UI.`,"settings.remoteInstances.page.section.portForwards":`Port Forwards`,"settings.remoteInstances.page.section.portForwardsDescription":`Optional extra ports to make available through this SSH connection.`,"settings.remoteInstances.page.field.sshCommand":`SSH command`,"settings.remoteInstances.page.field.sshCommandPlaceholder":`ssh user@host or ssh user@host:22`,"settings.remoteInstances.page.field.nickname":`Nickname`,"settings.remoteInstances.page.field.nicknamePlaceholder":`Work laptop`,"settings.remoteInstances.page.field.connectionTimeoutSeconds":`Connection timeout (seconds)`,"settings.remoteInstances.page.field.installMethod":`Install method`,"settings.remoteInstances.page.field.installMethodHint":`How OpenChamber should be placed on the remote machine when this app starts it for you.`,"settings.remoteInstances.page.field.selectInstallMethodPlaceholder":`Select install method`,"settings.remoteInstances.page.field.installMethodDownloadRelease":`Download release`,"settings.remoteInstances.page.field.installMethodUploadBundle":`Upload bundle`,"settings.remoteInstances.page.field.selectBindHostPlaceholder":`Select bind host`,"settings.remoteInstances.page.field.sshPasswordOptional":`SSH password (optional)`,"settings.remoteInstances.page.field.sshPasswordPlaceholder":`Enter SSH password`,"settings.remoteInstances.page.field.uiPasswordOptional":`UI password (optional)`,"settings.remoteInstances.page.field.uiPasswordPlaceholder":`Enter UI password`,"settings.remoteInstances.page.field.forwardTypeHint":`Choose what kind of port access this SSH connection should provide.`,"settings.remoteInstances.page.field.typePlaceholder":`Type`,"settings.remoteInstances.page.forwardType.local":`Local (-L)`,"settings.remoteInstances.page.forwardType.remote":`Remote (-R)`,"settings.remoteInstances.page.forwardType.dynamic":`Dynamic (-D)`,"settings.remoteInstances.page.forwardTypeDescription.local":`Open a local port that connects to something on the remote machine.`,"settings.remoteInstances.page.forwardTypeDescription.remote":`Open a port on the remote machine that connects back to your computer.`,"settings.remoteInstances.page.forwardTypeDescription.dynamic":`Open a local SOCKS proxy through the SSH connection.`,"settings.remoteInstances.page.actions.create":`Create`,"settings.remoteInstances.page.actions.cancel":`Cancel`,"settings.remoteInstances.page.actions.connecting":`Connecting...`,"settings.remoteInstances.page.actions.reconnecting":`Reconnecting...`,"settings.remoteInstances.page.actions.reconnectNow":`Reconnect now`,"settings.remoteInstances.page.actions.logs":`SSH Logs`,"settings.remoteInstances.page.actions.pickRandomPort":`Pick random port`,"settings.remoteInstances.page.actions.enableForwardAria":`Enable forward`,"settings.remoteInstances.page.actions.openLocal":`Open local`,"settings.remoteInstances.page.actions.addForward":`Add forward`,"settings.remoteInstances.page.import.sectionTitle":`Saved SSH hosts`,"settings.remoteInstances.page.import.loading":`Loading SSH hosts...`,"settings.remoteInstances.page.import.noneFound":`No SSH hosts found.`,"settings.remoteInstances.page.import.noneAvailable":`No SSH hosts available to import.`,"settings.remoteInstances.page.import.patternSuffix":`(pattern)`,"settings.remoteInstances.page.status.currentLocalUrl":`Current local URL:`,"settings.remoteInstances.page.status.reconnectStale":`Reconnection looks stuck. You can retry now.`,"settings.remoteInstances.page.logsDialog.title":`SSH Logs`,"settings.remoteInstances.page.logsDialog.loading":`Loading logs...`,"settings.remoteInstances.page.logsDialog.empty":`No SSH logs yet.`,"settings.remoteInstances.page.patternDialog.title":`Choose an SSH destination`,"settings.remoteInstances.page.patternDialog.destinationPlaceholder":`user@host`,"settings.remoteInstances.page.phase.resolvingConfiguration":`Resolving configuration`,"settings.remoteInstances.page.phase.checkingAuth":`Checking authentication`,"settings.remoteInstances.page.phase.establishingSsh":`Establishing SSH connection`,"settings.remoteInstances.page.phase.probingRemote":`Checking remote machine`,"settings.remoteInstances.page.phase.installingOpenChamber":`Installing OpenChamber`,"settings.remoteInstances.page.phase.updatingOpenChamber":`Updating OpenChamber`,"settings.remoteInstances.page.phase.detectingServer":`Detecting server`,"settings.remoteInstances.page.phase.startingServer":`Starting server`,"settings.remoteInstances.page.phase.forwardingPorts":`Forwarding ports`,"settings.remoteInstances.page.phase.reconnecting":`Reconnecting`,"settings.remoteInstances.page.confirm.storeSshPasswordPlaintext":`Store SSH password in plaintext on disk?`,"settings.remoteInstances.page.confirm.storeUiPasswordPlaintext":`Store UI password in plaintext on disk?`,"settings.remoteInstances.page.confirm.removeInstance":`Remove this remote instance?`,"settings.remoteInstances.page.sync.title":`Sync agent config to this remote`,"settings.remoteInstances.page.sync.description":`Mirror your local OpenCode config (~/.config/opencode), agent skills (~/.agents), and provider credentials (auth.json) to this remote so both sides match and logins work. Symlinked folders are copied as real files.`,"settings.remoteInstances.page.sync.step.scanLocal":`Scanning local config`,"settings.remoteInstances.page.sync.step.compareRemote":`Comparing with the remote`,"settings.remoteInstances.page.sync.step.confirm":`Review changes`,"settings.remoteInstances.page.sync.section.files":`Files`,"settings.remoteInstances.page.sync.section.directories":`Directories`,"settings.remoteInstances.page.sync.section.authFile":`Provider credentials (auth.json)`,"settings.remoteInstances.page.sync.section.agentsRoot":`Agent skills (~/.agents)`,"settings.remoteInstances.page.sync.section.agentsRootCount":`{count} files`,"settings.remoteInstances.page.sync.status.overwrite":`Will be overwritten`,"settings.remoteInstances.page.sync.status.add":`Will be added`,"settings.remoteInstances.page.sync.note.deletes":`{count} remote counterpart(s) will be removed so both sides match.`,"settings.remoteInstances.page.sync.note.backup":`Replaced remote files are backed up to ~/.config/opencode/.openchamber.sync-backup; agents to ~/.openchamber.sync-backup-agents; auth.json to ~/.openchamber.sync-backup-auth on the remote.`,"settings.remoteInstances.page.sync.note.excluded":`Not synced: session data, caches, node_modules, lock files.`,"settings.remoteInstances.page.sync.state.empty":`Nothing to sync — no supported config found on this machine.`,"settings.remoteInstances.page.sync.state.error":`Failed to inspect the remote: {message}`,"settings.remoteInstances.page.sync.state.unavailable":`Config sync is unavailable in this window. Reopen this page from the OpenChamber desktop app (restart the dev app if running) and try again.`,"settings.remoteInstances.page.sync.applying":`Syncing...`,"settings.remoteInstances.page.sync.actions.syncNow":`Sync now`,"settings.remoteInstances.page.sync.actions.cancel":`Not now`,"settings.remoteInstances.page.sync.toast.success":`Agent config synced to remote`,"settings.remoteInstances.page.sync.toast.failed":`Failed to sync OpenCode config`,"settings.remoteInstances.page.toast.sshCommandRequired":`SSH command is required`,"settings.remoteInstances.page.toast.saveFailed":`Failed to save instance`,"settings.remoteInstances.page.toast.instanceSaved":`Instance saved`,"settings.remoteInstances.page.toast.instanceCreated":`Instance created`,"settings.remoteInstances.page.toast.destinationRequired":`Destination is required`,"settings.remoteInstances.page.toast.noLogsToCopy":`No logs to copy`,"settings.remoteInstances.page.toast.logsCopied":`Logs copied`,"settings.remoteInstances.page.toast.logsCleared":`Logs cleared`,"settings.remoteInstances.page.toast.clearLogsFailed":`Failed to clear logs`,"settings.remoteInstances.page.toast.instanceUrlUnavailable":`Instance URL is unavailable`,"settings.remoteInstances.page.toast.connectFailed":`Failed to connect instance`,"settings.remoteInstances.page.toast.cancelConnectionFailed":`Failed to cancel connection`,"settings.remoteInstances.page.toast.disconnectFailed":`Failed to disconnect instance`,"settings.remoteInstances.page.toast.retryFailed":`Failed to retry connection`,"settings.remoteInstances.page.toast.instanceRemoved":`Instance removed`,"settings.remoteInstances.page.toast.removeInstanceFailed":`Failed to remove instance`,"settings.openchamber.worktrees.state.selectProject":`Select a project to manage worktrees.`,"settings.openchamber.worktrees.state.gitOnly":`Worktree settings are only available for Git repositories.`,"settings.openchamber.worktrees.setup.title":`Setup commands`,"settings.openchamber.worktrees.setup.tooltipPrefix":`Run automatically inside the new worktree directory when a worktree is created. Use`,"settings.openchamber.worktrees.setup.tooltipSuffix":`for the project root.`,"settings.openchamber.worktrees.setup.loading":`Loading...`,"settings.openchamber.worktrees.setup.commandPlaceholder":`e.g., bun install`,"settings.openchamber.worktrees.setup.removeCommandAria":`Remove command`,"settings.openchamber.worktrees.setup.addCommand":`Add command`,"settings.openchamber.worktrees.setup.waitForCommands":`Wait for setup commands before creating or sending a session`,"settings.openchamber.worktrees.setup.waitForCommandsAria":`Wait for Worktree setup commands before creating or sending a session`,"settings.openchamber.worktrees.setup.toast.saveFailed":`Failed to save worktree setup commands`,"settings.openchamber.worktrees.list.title":`Existing worktrees`,"settings.openchamber.worktrees.list.tooltip":`Worktrees live outside the repo (OpenCode-managed). Deleting a worktree also removes linked sessions.`,"settings.openchamber.worktrees.list.loading":`Loading worktrees...`,"settings.openchamber.worktrees.list.empty":`No worktrees found for this project`,"settings.openchamber.worktrees.list.detachedHead":`Detached HEAD`,"settings.openchamber.worktrees.list.deleteWorktreeAria":`Delete worktree {name}`,"settings.agents.modelSelector.title":`Select model`,"settings.agents.modelSelector.searchPlaceholder":`Search models`,"settings.agents.modelSelector.selectPlaceholder":`Select model...`,"settings.agents.modelSelector.notSelected":`Not selected`,"settings.agents.modelSelector.noModelOptional":`No model (optional)`,"settings.agents.modelSelector.section.favorites":`Favorites`,"settings.agents.modelSelector.section.recents":`Recents`,"settings.agents.modelSelector.section.recent":`Recent`,"settings.agents.modelSelector.badge.current":`Current`,"settings.agents.modelSelector.actions.favorite":`Favorite`,"settings.agents.modelSelector.actions.unfavorite":`Unfavorite`,"settings.agents.modelSelector.actions.addToFavorites":`Add to favorites`,"settings.agents.modelSelector.actions.removeFromFavorites":`Remove from favorites`,"settings.agents.modelSelector.state.noModelsFound":`No models found`,"settings.agents.modelSelector.keyboardHints":`↑↓ navigate • Enter select • Esc close`,"settings.providers.sidebar.title":`Providers`,"settings.providers.sidebar.total":`Total {count}`,"settings.providers.sidebar.actions.connectProviderAria":`Connect provider`,"settings.providers.sidebar.actions.connectProviderTitle":`Connect provider`,"settings.providers.sidebar.empty.title":`No providers found`,"settings.providers.sidebar.empty.description":`Check your OpenCode configuration`,"settings.providers.sidebar.section.userProviders":`User Providers`,"settings.providers.sidebar.section.projectProviders":`Project Providers`,"settings.providers.page.state.loading":`Loading...`,"settings.providers.page.state.unableToLoadProviderList":`Unable to load provider list`,"settings.providers.page.empty.noProvidersDetected":`No providers detected`,"settings.providers.page.empty.checkOpenCodeConfiguration":`Check your OpenCode configuration`,"settings.providers.page.empty.selectProviderFromSidebar":`Select a provider from the sidebar`,"settings.providers.page.empty.reviewDetailsAndConfigureAuth":`Review details and configure auth`,"settings.providers.page.connect.title":`Connect Provider`,"settings.providers.page.connect.selectProviderTitle":`Select Provider`,"settings.providers.page.connect.providerField":`Provider`,"settings.providers.page.connect.selectProviderPlaceholder":`Select provider`,"settings.providers.page.connect.searchProvidersPlaceholder":`Search...`,"settings.providers.page.connect.noProvidersFound":`No providers found`,"settings.providers.page.connect.allProvidersConnected":`All providers connected.`,"settings.providers.page.auth.title":`Authentication`,"settings.providers.page.auth.loadingMethods":`Loading authentication methods...`,"settings.providers.page.auth.apiKeyLabel":`API Key`,"settings.providers.page.auth.apiKeyTooltip":`Keys are sent directly to OpenCode and never stored by OpenChamber.`,"settings.providers.page.auth.apiKeyPlaceholder":`sk-...`,"settings.providers.page.auth.oauthMethodFallback":`OAuth method {index}`,"settings.providers.page.auth.pasteAuthorizationCodePlaceholder":`Paste authorization code`,"settings.providers.page.auth.connected":`Connected`,"settings.providers.page.auth.useReconnectHint":`· Use Reconnect to update credentials`,"settings.providers.page.connectionDetails.title":`Connection Details`,"settings.providers.page.connectionDetails.configuredIn":`Configured in:`,"settings.providers.page.connectionDetails.noActiveSource":`No active configuration source`,"settings.providers.page.connectionDetails.source.authCredentials":`auth credentials`,"settings.providers.page.connectionDetails.source.userConfig":`user config`,"settings.providers.page.connectionDetails.source.projectConfig":`project config`,"settings.providers.page.connectionDetails.source.customConfig":`custom config`,"settings.providers.page.models.title":`Available Models`,"settings.providers.page.models.filterPlaceholder":`Filter models...`,"settings.providers.page.models.noModelsMatchFilter":`No models match this filter.`,"settings.providers.page.models.capability.toolCalling":`Tool calling`,"settings.providers.page.models.capability.reasoning":`Reasoning`,"settings.providers.page.models.capability.imageInput":`Image input`,"settings.providers.page.models.tokenBadge.context":`ctx`,"settings.providers.page.models.tokenBadge.output":`out`,"settings.providers.page.models.actions.hideModelFromSelectors":`Hide model from selectors`,"settings.providers.page.models.actions.showModelInSelectors":`Show model in selectors`,"settings.providers.page.models.actions.hideModel":`Hide model`,"settings.providers.page.models.actions.showModel":`Show model`,"settings.providers.page.actions.saving":`Saving...`,"settings.providers.page.actions.saveKey":`Save Key`,"settings.providers.page.actions.connect":`Connect`,"settings.providers.page.actions.copyCode":`Copy Code`,"settings.providers.page.actions.open":`Open`,"settings.providers.page.actions.copy":`Copy`,"settings.providers.page.actions.complete":`Complete`,"settings.providers.page.actions.hide":`Hide`,"settings.providers.page.actions.reconnect":`Reconnect`,"settings.providers.page.actions.disconnecting":`Disconnecting...`,"settings.providers.page.actions.disconnect":`Disconnect`,"settings.providers.page.actions.hideAll":`Hide all`,"settings.providers.page.actions.showAll":`Show all`,"settings.providers.page.toast.authMethodsLoadFailed":`Failed to load provider authentication methods`,"settings.providers.page.toast.providerSourcesLoadFailed":`Failed to load provider sources`,"settings.providers.page.toast.apiKeyRequired":`API key is required`,"settings.providers.page.toast.apiKeySaveFailed":`Failed to save API key`,"settings.providers.page.toast.apiKeySaved":`API key saved`,"settings.providers.page.toast.oauthStartFailed":`Failed to start OAuth flow`,"settings.providers.page.toast.oauthDetailsMissing":`No OAuth details returned`,"settings.providers.page.toast.completeOAuthInBrowser":`Complete the OAuth flow in your browser`,"settings.providers.page.toast.oauthCompleteFailed":`Failed to complete OAuth flow`,"settings.providers.page.toast.oauthCompleted":`OAuth connection completed`,"settings.providers.page.toast.oauthLinkCopied":`OAuth link copied`,"settings.providers.page.toast.oauthLinkCopyFailed":`Failed to copy OAuth link`,"settings.providers.page.toast.deviceCodeCopied":`Device code copied`,"settings.providers.page.toast.deviceCodeCopyFailed":`Failed to copy device code`,"settings.providers.page.toast.providerDisconnected":`Provider disconnected`,"settings.providers.page.toast.providerDisconnectFailed":`Failed to disconnect provider`,"settings.mcp.page.empty.selectServer":`Select an MCP server from the sidebar`,"settings.mcp.page.empty.addNewOne":`Or add a new one`,"settings.mcp.page.header.newServer":`New MCP Server`,"settings.mcp.page.header.configureNewServer":`Configure a new MCP server`,"settings.mcp.page.header.transport":`{type} transport`,"settings.mcp.page.transport.local":`Local · stdio`,"settings.mcp.page.transport.remote":`Remote · SSE`,"settings.mcp.page.status.label.connected":`Connected`,"settings.mcp.page.status.label.failed":`Failed`,"settings.mcp.page.status.label.needsAuth":`Needs auth`,"settings.mcp.page.status.label.needsRegistration":`Needs registration`,"settings.mcp.page.status.description.connected":`Connected and ready for OpenCode to discover tools and resources.`,"settings.mcp.page.status.description.failedDefault":`OpenCode could not reach this MCP server.`,"settings.mcp.page.status.description.needsAuth":`This remote MCP server requires authorization before it can connect.`,"settings.mcp.page.status.description.needsClientRegistrationDefault":`This remote MCP server requires client registration before authorization can complete.`,"settings.mcp.page.status.description.disabled":`This MCP server is disabled in configuration.`,"settings.mcp.page.status.description.default":`Refresh or test the connection to load live runtime status.`,"settings.mcp.page.status.runtimeStatus":`Runtime Status`,"settings.mcp.page.status.projectScopedTo":`Project-scoped to {directory}`,"settings.mcp.page.status.userScoped":`User-scoped configuration`,"settings.mcp.page.status.activeProject":`the active project`,"settings.mcp.page.actions.connect":`Connect`,"settings.mcp.page.actions.disconnect":`Disconnect`,"settings.mcp.page.actions.authorize":`Authorize`,"settings.mcp.page.actions.reauthorize":`Reauthorize`,"settings.mcp.page.actions.clearAuth":`Clear Auth`,"settings.mcp.page.actions.test":`Test`,"settings.mcp.page.actions.testConnection":`Test Connection`,"settings.mcp.page.actions.working":`Working...`,"settings.mcp.page.actions.starting":`Starting...`,"settings.mcp.page.actions.clearing":`Clearing...`,"settings.mcp.page.actions.testing":`Testing...`,"settings.mcp.page.actions.completing":`Completing...`,"settings.mcp.page.actions.completeAuthorization":`Complete Authorization`,"settings.mcp.page.actions.openInBrowser":`Open in Browser`,"settings.mcp.page.actions.copyLink":`Copy Link`,"settings.mcp.page.actions.deleting":`Deleting…`,"settings.mcp.page.auth.authorizationUrl":`Authorization URL`,"settings.mcp.page.auth.manualFallbackTitle":`Manual Authorization Fallback`,"settings.mcp.page.auth.manualFallbackDescription":`If the browser returns to a different machine or shows a callback URL with a code, paste that full URL or the raw code here.`,"settings.mcp.page.auth.callbackInputPlaceholder":`Paste the callback URL or authorization code`,"settings.mcp.page.auth.waitingForOpenCode":`Waiting for OpenCode to observe the completed browser authorization flow...`,"settings.mcp.page.server.title":`Server`,"settings.mcp.page.server.name":`Server Name`,"settings.mcp.page.server.namePlaceholder":`my-mcp-server`,"settings.mcp.page.server.importJson":`Import from JSON Snippet`,"settings.mcp.page.server.importJsonTitle":`Import a full MCP server configuration from a JSON snippet`,"settings.mcp.page.server.enable":`Enable Server`,"settings.mcp.page.server.enableAria":`Enable server`,"settings.mcp.page.server.transportMode":`Transport Mode`,"settings.mcp.page.connection.command":`Command`,"settings.mcp.page.connection.serverUrl":`Server URL`,"settings.mcp.page.connection.serverUrlPlaceholder":`https://mcp.example.com/mcp`,"settings.mcp.page.connection.pasteCommand":`Paste Command`,"settings.mcp.page.connection.pasteCommandTitle":`Paste a local command from clipboard and auto-split`,"settings.mcp.page.connection.previewArgs":`Preview ({count} args)`,"settings.mcp.page.advanced.title":`Advanced Remote Options`,"settings.mcp.page.advanced.configure":`Configure advanced options`,"settings.mcp.page.advanced.autoDetect":`Auto-detect`,"settings.mcp.page.advanced.custom":`Custom`,"settings.mcp.page.advanced.headers":`headers`,"settings.mcp.page.advanced.timeoutMs":`Timeout (ms)`,"settings.mcp.page.advanced.timeoutHint":`Leave blank to use OpenCode's default MCP timeout.`,"settings.mcp.page.advanced.requestHeaders":`Request Headers`,"settings.mcp.page.advanced.headerNamePlaceholder":`Header-Name`,"settings.mcp.page.advanced.pasteHeaders":`Paste headers`,"settings.mcp.page.advanced.pasteHeadersTitle":`Paste KEY=VALUE header lines from clipboard`,"settings.mcp.page.advanced.oauthAutoDetection":`Enable OAuth auto-detection`,"settings.mcp.page.advanced.oauthAutoDetectionAria":`Enable OAuth auto-detection`,"settings.mcp.page.advanced.oauthClientIdPlaceholder":`OAuth client ID`,"settings.mcp.page.advanced.oauthClientSecretPlaceholder":`OAuth client secret`,"settings.mcp.page.advanced.oauthScopesPlaceholder":`Scopes (space-delimited)`,"settings.mcp.page.advanced.oauthRedirectUriPlaceholder":`Redirect URI`,"settings.mcp.page.advanced.oauthHint":`Leave these fields blank to let OpenCode infer OAuth settings from the MCP server.`,"settings.mcp.page.advanced.oauthCallbackHint":`Browser-based MCP authorization uses this callback URL when the redirect URI is blank:`,"settings.mcp.page.env.title":`Environment Variables`,"settings.mcp.page.env.key":`Key`,"settings.mcp.page.env.value":`Value`,"settings.mcp.page.env.valuePlaceholder":`value`,"settings.mcp.page.env.hide":`Hide`,"settings.mcp.page.env.show":`Show`,"settings.mcp.page.env.addVariable":`Add variable`,"settings.mcp.page.env.addEnvironmentVariable":`Add environment variable`,"settings.mcp.page.env.keyPlaceholder":`API_KEY`,"settings.mcp.page.env.pasteEnv":`Paste .env`,"settings.mcp.page.env.pasteEnvTitle":`Paste KEY=VALUE lines from clipboard`,"settings.mcp.page.env.plainTextWarning":`⚠ Values are stored as plain text in opencode.json`,"settings.mcp.page.env.removeVariableAria":`Remove variable`,"settings.mcp.page.importDialog.title":`Import JSON Snippet`,"settings.mcp.page.importDialog.description":`Paste a full MCP JSON snippet from docs or another config file. The parsed values will populate this form for review before saving.`,"settings.mcp.page.importDialog.pasteFromClipboard":`Paste JSON from Clipboard`,"settings.mcp.page.deleteDialog.title":`Delete "{name}"?`,"settings.mcp.page.deleteDialog.descriptionPrefix":`This removes the server from`,"settings.mcp.page.deleteDialog.descriptionSuffix":`OpenCode will need to reload.`,"settings.mcp.page.toast.clipboardReadFailed":`Cannot read clipboard`,"settings.mcp.page.toast.configImported":`MCP configuration imported`,"settings.mcp.page.toast.nameRequired":`Name is required`,"settings.mcp.page.toast.serverNameExists":`A server with this name already exists`,"settings.mcp.page.toast.localCommandRequired":`Command cannot be empty for a local server`,"settings.mcp.page.toast.remoteUrlRequired":`URL cannot be empty for a remote server`,"settings.mcp.page.toast.serverCreatedReloadFailed":`MCP server created, but OpenCode reload failed.`,"settings.mcp.page.toast.savedReloadFailed":`Saved, but OpenCode reload failed.`,"settings.mcp.page.toast.retryRefreshHint":`Retry refresh or reopen Settings before authorizing this server.`,"settings.mcp.page.toast.serverCreatedReloading":`MCP server created. OpenCode reloading…`,"settings.mcp.page.toast.savedReloading":`Saved. OpenCode reloading…`,"settings.mcp.page.toast.saveFailed":`Failed to save`,"settings.mcp.page.toast.unexpectedError":`An error occurred`,"settings.mcp.page.toast.serverDeletedReloadFailed":`"{name}" deleted, but OpenCode reload failed`,"settings.mcp.page.toast.refreshListIfStale":`Refresh the MCP list if the UI looks stale.`,"settings.mcp.page.toast.serverDeleted":`"{name}" deleted`,"settings.mcp.page.toast.deleteFailed":`Failed to delete`,"settings.mcp.page.toast.disconnected":`Disconnected`,"settings.mcp.page.toast.connected":`Connected`,"settings.mcp.page.toast.connectionNeedsAuthorization":`Connection requires authorization`,"settings.mcp.page.toast.connectionNeedsClientRegistration":`Connection requires client registration`,"settings.mcp.page.toast.connectionFailed":`Connection failed`,"settings.mcp.page.toast.connectionAttemptFinished":`Connection attempt finished. Refresh status for details.`,"settings.mcp.page.toast.createServerBeforeLiveActions":`Create the server before running live actions`,"settings.mcp.page.toast.saveBeforeLiveActions":`Save changes before running live actions`,"settings.mcp.page.toast.refreshStatusFailed":`Failed to refresh MCP status`,"settings.mcp.page.toast.oauthRedirectUrlBuildFailed":`Unable to build MCP OAuth redirect URL`,"settings.mcp.page.toast.oauthBrowserCallbackSaveFailed":`Failed to save the browser callback URL for MCP authorization`,"settings.mcp.page.toast.openCodeReloadFailedAfterCallbackSave":`OpenCode reload failed after saving the browser callback URL`,"settings.mcp.page.toast.completeAuthorizationInBrowserWithPaste":`Complete the MCP authorization flow in your browser, then paste the returned code or callback URL here`,"settings.mcp.page.toast.completeAuthorizationInBrowser":`Complete the MCP authorization flow in your browser`,"settings.mcp.page.toast.openAuthorizationUrlFailed":`Could not open the authorization URL automatically`,"settings.mcp.page.toast.authorizationStartFailed":`Failed to start authorization`,"settings.mcp.page.toast.authSessionExpired":`Authorization session expired or was cleared during reload. Click Authorize again.`,"settings.mcp.page.toast.savedAuthorizationRemoved":`Saved MCP authorization was removed`,"settings.mcp.page.toast.clearAuthorizationFailed":`Failed to clear authorization`,"settings.mcp.page.toast.authorizationUrlCopied":`Authorization URL copied`,"settings.mcp.page.toast.authorizationUrlCopyFailed":`Failed to copy authorization URL`,"settings.mcp.page.toast.pasteCallbackOrCodeFirst":`Paste the callback URL or authorization code first`,"settings.mcp.page.toast.missingServerDetails":`Missing MCP server details. Select the server again or paste the full callback URL.`,"settings.mcp.page.toast.authorizationCompleted":`MCP authorization completed`,"settings.mcp.page.toast.authorizationCompletedFor":`MCP authorization completed for {name}`,"settings.mcp.page.toast.authorizationCompleteFailed":`Failed to complete MCP authorization`,"settings.mcp.page.toast.enableServerBeforeTest":`Enable this server before testing the connection`,"settings.mcp.page.toast.connectionTestSucceeded":`Connection test succeeded`,"settings.mcp.page.toast.connectionTestFailed":`Connection test failed`,"settings.mcp.page.toast.connectionTestFinished":`Connection test finished. Refresh status for details.`,"settings.mcp.page.toast.authorizationFailed":`Authorization failed`,"settings.mcp.page.toast.authorizationStillInProgress":`Authorization is still in progress in your browser. Paste the callback URL or code if needed.`,"settings.mcp.page.toast.noKeyValuePairsFound":`No KEY=VALUE pairs found in clipboard`,"settings.mcp.page.toast.importedVariablesCount":`Imported variables: {count}`,"settings.mcp.page.toast.pastedArgumentsCount":`Pasted arguments: {count}`,"settings.shared.projectSelector.fallbackProject":`Project`,"settings.shared.projectSelector.switchProjectAria":`Switch project`,"settings.shared.projectSelector.switchProjectTitle":`Switch project`,"settings.openchamber.defaults.title":`Session Defaults`,"settings.openchamber.defaults.summaryPrefix":`New sessions will start with:`,"settings.openchamber.defaults.summaryOpenCodeDefault":`OpenCode agent default`,"settings.openchamber.defaults.field.defaultModel":`Default Model`,"settings.openchamber.defaults.field.defaultThinking":`Default Thinking`,"settings.openchamber.defaults.field.thinkingPlaceholder":`Thinking`,"settings.openchamber.defaults.field.defaultAgent":`Default Agent`,"settings.openchamber.defaults.field.showDeletionDialogAria":`Show deletion dialog`,"settings.openchamber.defaults.field.showDeletionDialog":`Show Deletion Dialog`,"settings.openchamber.defaults.smallModel.title":`Small Model`,"settings.openchamber.defaults.smallModel.description":`A cheap model for quick utility tasks like short recaps and summaries.`,"settings.openchamber.defaults.smallModel.useDefault":`Use default small model`,"settings.openchamber.defaults.smallModel.useDefaultAria":`Use default small model`,"settings.openchamber.defaults.smallModel.overrideModel":`Override model`,"settings.openchamber.defaults.summary.title":`Summary AI`,"settings.openchamber.defaults.summary.description":`Controls commit-message generation and automatic session title refreshes.`,"settings.openchamber.defaults.summary.modelSourceAria":`Summary model source`,"settings.openchamber.defaults.summary.modelSourceTitle":`Model Source`,"settings.openchamber.defaults.summary.provider":`OpenCode provider`,"settings.openchamber.defaults.summary.providerDescription":`Uses an authenticated OpenCode provider and only shows models the summary service can call.`,"settings.openchamber.defaults.summary.custom":`Custom OpenAI-compatible API`,"settings.openchamber.defaults.summary.customDescription":`Calls your Base URL directly with the model ID and API token below.`,"settings.openchamber.defaults.summary.providerUnavailable":`Connect a supported provider before selecting a provider model.`,"settings.openchamber.defaults.summary.providerModel":`Provider model`,"settings.openchamber.defaults.summary.baseUrl":`Base URL`,"settings.openchamber.defaults.summary.baseUrlPlaceholder":`https://api.example.com/v1`,"settings.openchamber.defaults.summary.modelId":`Model ID`,"settings.openchamber.defaults.summary.modelIdPlaceholder":`gpt-4.1-mini`,"settings.openchamber.defaults.summary.apiToken":`API token`,"settings.openchamber.defaults.summary.apiTokenStored":`Token saved. Enter a value to replace it.`,"settings.openchamber.defaults.summary.apiTokenPlaceholder":`Enter API token`,"settings.openchamber.defaults.summary.clearToken":`Clear token`,"settings.openchamber.defaults.summary.promptTitle":`Feature Prompts`,"settings.openchamber.defaults.summary.promptDescription":`These instructions affect generated commit messages and automatic session title refreshes.`,"settings.openchamber.defaults.summary.commitPrompt":`Commit prompt`,"settings.openchamber.defaults.summary.commitPromptDescription":`Controls Commit Message generation from the selected staged files.`,"settings.openchamber.defaults.summary.commitPromptPlaceholder":`Leave empty to use the built-in commit prompt.`,"settings.openchamber.defaults.summary.sessionTitlePrompt":`Session title prompt`,"settings.openchamber.defaults.summary.sessionTitlePromptDescription":`Controls titles generated when a new session first becomes idle and after later idle periods of about 15 seconds.`,"settings.openchamber.defaults.summary.sessionTitlePromptPlaceholder":`Leave empty to use the built-in session title prompt.`,"settings.openchamber.defaults.summary.save":`Save summary settings`,"settings.openchamber.defaults.field.openFilesPreviewAria":`Open previewable files in preview mode`,"settings.openchamber.defaults.field.openFilesPreview":`Open previewable files in preview mode`,"settings.openchamber.defaults.option.default":`Default`,"settings.openchamber.defaults.option.defaultLowercase":`default`,"settings.openchamber.git.title":`Git Preferences`,"settings.openchamber.git.changesViewTitle":`Changes View`,"settings.openchamber.git.changesViewAria":`Git changes view mode`,"settings.openchamber.git.option.flatList":`Flat List`,"settings.openchamber.git.option.treeView":`Tree View`,"settings.openchamber.git.optionAria":`Git changes view mode: {option}`,"settings.openchamber.git.enableGitmojiAria":`Enable Gitmoji picker`,"settings.openchamber.git.enableGitmoji":`Enable Gitmoji Picker`,"settings.openchamber.git.showGitignoredAria":`Display gitignored files`,"settings.openchamber.git.showGitignored":`Display Gitignored Files`,"settings.github.page.tooltip.connectAccount":`Connect a GitHub account for in-app PR and issue workflows.`,"settings.github.page.avatarAlt.withLogin":`{login} avatar`,"settings.github.page.avatarAlt.fallback":`GitHub avatar`,"settings.github.page.label.unknownUser":`unknown`,"settings.github.page.label.scopes":`Scopes: {value}`,"settings.github.page.label.otherAccounts":`Other Accounts`,"settings.github.page.accountSource.oauth":`OAuth`,"settings.github.page.accountSource.cli":`CLI`,"settings.github.page.actions.disconnect":`Disconnect`,"settings.github.page.actions.connect":`Connect GitHub`,"settings.github.page.actions.switchTo":`Switch to`,"settings.github.page.actions.addAccount":`Add Account`,"settings.github.page.actions.openGithub":`Open GitHub`,"settings.github.page.status.notConnected":`Not Connected`,"settings.github.page.status.active":`Active`,"settings.github.page.flow.title":`Authorize OpenChamber`,"settings.github.page.flow.description":`In GitHub, enter the following code to authorize this device:`,"settings.github.page.flow.waiting":`Waiting for approval… (auto-refresh)`,"settings.github.page.toast.startConnectFailed":`Failed to start GitHub connect`,"settings.github.page.toast.connected":`GitHub connected`,"settings.github.page.toast.authorizationFailed":`GitHub authorization failed`,"settings.github.page.toast.disconnected":`GitHub disconnected`,"settings.github.page.toast.disconnectFailed":`Failed to disconnect GitHub`,"settings.github.page.toast.accountSwitched":`GitHub account switched`,"settings.github.page.toast.accountSwitchFailed":`Failed to switch GitHub account`,"settings.github.page.oauth.title":`GitHub OAuth Token`,"settings.github.page.ghCli.title":`GitHub CLI Token`,"settings.github.page.ghCli.activeDescription":`Authenticated via the gh CLI`,"settings.github.page.ghCli.fallbackDescription":`Available as fallback if OpenChamber auth is removed`,"settings.github.page.ghCli.disabledDescription":`Installed but not used as a fallback`,"settings.github.page.ghCli.actions.disable":`Disable`,"settings.github.page.ghCli.actions.enable":`Enable`,"settings.github.page.toast.ghCliEnabled":`gh CLI fallback enabled`,"settings.github.page.toast.ghCliDisabled":`gh CLI fallback disabled`,"settings.github.page.toast.ghCliUpdateFailed":`Failed to update gh CLI setting`,"settings.notifications.page.delivery.title":`Notification Delivery`,"settings.notifications.page.delivery.enableAria":`Enable notifications`,"settings.notifications.page.delivery.enableLabel":`Enable Notifications`,"settings.notifications.page.delivery.focusedAria":`Notify while app is focused`,"settings.notifications.page.delivery.focusedLabel":`Notify While App is Focused`,"settings.notifications.page.delivery.testAction":`Send test notification`,"settings.notifications.page.delivery.browserPermissionHint":`Your browser may ask for permission the first time.`,"settings.notifications.page.delivery.permissionDenied":`Notification permission denied. Enable it in your browser settings.`,"settings.notifications.page.delivery.permissionGrantedButDisabled":`Permission granted, but notifications are disabled.`,"settings.notifications.page.delivery.vscodeHint":`When enabled, notifications are delivered through VS Code native notifications.`,"settings.notifications.page.events.title":`Notification Events`,"settings.notifications.page.events.completionAria":`Agent completion`,"settings.notifications.page.events.completionLabel":`Agent Completion`,"settings.notifications.page.events.subtaskAria":`Subagent completion`,"settings.notifications.page.events.subtaskLabel":`Subagent Completion`,"settings.notifications.page.events.errorAria":`Agent errors`,"settings.notifications.page.events.errorLabel":`Agent Errors`,"settings.notifications.page.events.questionAria":`Agent questions`,"settings.notifications.page.events.questionLabel":`Agent Questions`,"settings.notifications.page.template.title":`Notification Templates`,"settings.notifications.page.template.variablesLabel":`Variables:`,"settings.notifications.page.template.event.completion":`Completion`,"settings.notifications.page.template.event.subtask":`Subagent Completion`,"settings.notifications.page.template.event.error":`Error`,"settings.notifications.page.template.event.question":`Question`,"settings.notifications.page.template.field.title":`Title`,"settings.notifications.page.template.field.message":`Message`,"settings.notifications.page.template.defaults.completion.title":`{agent_name} is ready`,"settings.notifications.page.template.defaults.completion.message":`{model_name} completed the task`,"settings.notifications.page.template.defaults.error.title":`Tool error`,"settings.notifications.page.template.defaults.error.message":`{last_message}`,"settings.notifications.page.template.defaults.question.title":`Input needed`,"settings.notifications.page.template.defaults.question.message":`{last_message}`,"settings.notifications.page.template.defaults.subtask.title":`{agent_name} is ready`,"settings.notifications.page.template.defaults.subtask.message":`{model_name} completed the task`,"settings.notifications.page.summary.title":`AI Summarization`,"settings.notifications.page.summary.toggleAria":`Summarize last message`,"settings.notifications.page.summary.toggleLabel":`Summarize Last Message`,"settings.notifications.page.summary.requiresTemplateVariable":`Requires`,"settings.notifications.page.summary.modelLabel":`Summarization Model`,"settings.notifications.page.summary.modelTooltip":`Used for notification and voice summaries.`,"settings.notifications.page.summary.notSelected":`Not selected`,"settings.notifications.page.summary.thresholdLabel":`Threshold`,"settings.notifications.page.summary.thresholdHint":`Messages longer than this will be summarized`,"settings.notifications.page.summary.resetThresholdAria":`Reset threshold`,"settings.notifications.page.summary.lengthLabel":`Length`,"settings.notifications.page.summary.lengthHint":`Target character length of the summary`,"settings.notifications.page.summary.resetLengthAria":`Reset summary length`,"settings.notifications.page.summary.maxLengthLabel":`Max Length`,"settings.notifications.page.summary.maxLengthHint":`Truncate {last_message} to this length`,"settings.notifications.page.summary.resetMaxLengthAria":`Reset max message length`,"settings.notifications.page.push.title":`Background Push Notifications`,"settings.notifications.page.push.enableAria":`Enable push notifications`,"settings.notifications.page.push.enableLabel":`Enable push notifications`,"settings.notifications.page.push.unsupportedHint":`Push not supported. Desktop Chrome/Edge and Android support push. iOS requires an installed PWA.`,"settings.notifications.page.push.supportedHint":`Receive alerts via your operating system background service`,"settings.notifications.page.push.loadingAria":`Loading`,"settings.notifications.page.toast.permissionDenied.title":`Notification permission denied`,"settings.notifications.page.toast.permissionDenied.description":`Please enable notifications in your browser settings.`,"settings.notifications.page.toast.permissionDenied.enableInBrowser":`Enable notifications in your browser settings.`,"settings.notifications.page.toast.requestPermissionFailed":`Failed to request notification permission`,"settings.notifications.page.toast.notificationsApiUnavailable":`Notifications API not available`,"settings.notifications.page.toast.testNotificationSent":`Test notification sent successfully`,"settings.notifications.page.toast.testNotificationFailed":`Failed to send test notification`,"settings.notifications.page.toast.pushUnsupported":`Push notifications not supported`,"settings.notifications.page.toast.pushApiUnavailable":`Push API not available`,"settings.notifications.page.toast.pushKeyLoadFailed":`Failed to load push key`,"settings.notifications.page.toast.enableBackgroundFailed":`Failed to enable background notifications`,"settings.notifications.page.toast.backgroundEnabled":`Background notifications enabled`,"settings.notifications.page.toast.backgroundDisabled":`Background notifications disabled`,"settings.notifications.page.testNotification.title":`Test Notification`,"settings.notifications.page.testNotification.body":`This is a test notification from OpenChamber.`,"settings.voice.page.section.speechRecognition":`Speech Recognition`,"settings.voice.page.field.enableVoiceInput":`Enable voice input`,"settings.voice.page.field.enableVoiceInputAria":`Enable voice input (dictation)`,"settings.voice.page.section.playbackAndSummary":`Playback`,"settings.voice.page.field.provider":`Provider`,"settings.voice.page.provider.browser":`Browser`,"settings.voice.page.provider.custom":`Custom`,"settings.voice.page.provider.say":`Say`,"settings.voice.page.provider.server":`Server`,"settings.voice.page.provider.local":`Local`,"settings.voice.page.tooltip.sttLocal":`On-device transcription on the OpenChamber server. Models download automatically; no API key needed.`,"settings.voice.page.tooltip.localTts":`On-device synthesis on the OpenChamber server (Kokoro, English). The model downloads automatically; no API key needed.`,"settings.voice.page.stt.model.parakeetV2":`Parakeet v2 (English)`,"settings.voice.page.stt.model.parakeetV3":`Parakeet v3 (25 European languages)`,"settings.voice.page.stt.model.whisperBase":`Whisper base (multilingual)`,"settings.voice.page.stt.model.whisperTiny":`Whisper tiny (multilingual)`,"settings.voice.page.stt.badge.bestForEnglish":`Best for English`,"settings.voice.page.stt.badge.bestForMultilingual":`Best for multilingual`,"settings.voice.page.stt.meta.accuracy":`Accuracy`,"settings.voice.page.stt.meta.speed":`Speed`,"settings.voice.page.stt.modelInstalled":`Model installed`,"settings.voice.page.stt.modelDownloading":`Downloading model...`,"settings.voice.page.stt.modelDownloadingProgress":`Downloading model... {percent}%`,"settings.voice.page.stt.modelNotInstalled":`Model not downloaded`,"settings.voice.page.stt.modelDownload":`Download`,"settings.voice.page.stt.modelDelete":`Delete model`,"settings.voice.page.stt.modelRetry":`Retry`,"settings.voice.page.provider.wasm":`Local`,"settings.voice.page.stt.wasmModel":`Whisper Model`,"settings.voice.page.stt.wasmLoaded":`Model loaded, ready`,"settings.voice.page.stt.wasmDownloading":`Downloading model...`,"settings.voice.page.stt.wasmLoading":`Loading model...`,"settings.voice.page.stt.wasmNotLoaded":`Model will load on first voice use`,"settings.voice.page.stt.wasmDownload":`Load`,"settings.voice.page.stt.wasmRetry":`Retry`,"settings.voice.page.tooltip.browser":`Free, offline, limited mobile support.`,"settings.voice.page.tooltip.openai":`High quality, mobile ready, needs API key.`,"settings.voice.page.tooltip.custom":`OpenAI-compatible server (for example Kokoro).`,"settings.voice.page.tooltip.say":`macOS native. Fast, free, offline.`,"settings.voice.page.tooltip.sttBrowser":`Web Speech API (Chrome/Edge). Free, no setup.`,"settings.voice.page.tooltip.sttServer":`OpenAI-compatible Whisper server. Better accuracy, any language.`,"settings.voice.page.field.apiKey":`API Key`,"settings.voice.page.field.apiKeyHintUsingConfig":`Using key from configuration`,"settings.voice.page.field.apiKeyHintRequired":`OpenAI TTS requires an API key`,"settings.voice.page.field.apiKeyHintProvide":`Provide your OpenAI key`,"settings.voice.page.field.serverUrl":`Server URL`,"settings.voice.page.field.serverUrlHint":`Base URL of the OpenAI-compatible TTS server`,"settings.voice.page.field.model":`Model`,"settings.voice.page.field.voice":`Voice`,"settings.voice.page.field.voiceIdentifierHint":`Voice identifier supported by the server`,"settings.voice.page.field.configuredAbove":`Configured above`,"settings.voice.page.actions.preview":`Preview`,"settings.voice.page.field.selectVoicePlaceholder":`Select voice`,"settings.voice.page.field.auto":`Auto`,"settings.voice.page.field.speechRate":`Speech Rate`,"settings.voice.page.field.speechPitch":`Speech Pitch`,"settings.voice.page.field.speechVolume":`Speech Volume`,"settings.voice.page.field.language":`Language`,"settings.voice.page.field.selectLanguagePlaceholder":`Select language`,"settings.voice.page.field.sttBrowserSupportError":`MediaRecorder or AudioContext is not available in this browser. Server STT may not work.`,"settings.voice.page.field.sttServerUrlHint":`Base URL of the Whisper-compatible server`,"settings.voice.page.field.sttLanguageHint":`BCP-47 code (for example en, fr). Leave blank for auto-detect.`,"settings.voice.page.field.silenceThreshold":`Silence Threshold`,"settings.voice.page.field.silenceHold":`Silence Hold`,"settings.voice.page.field.transcribeOnStopAria":`Transcribe when stopping recording`,"settings.voice.page.field.transcribeOnStop":`Transcribe on Stop`,"settings.voice.page.field.millisecondsUnit":`ms`,"settings.voice.page.field.messageReadAloudButtonAria":`Message read aloud button`,"settings.voice.page.field.messageReadAloudButton":`Read message aloud button`,"settings.voice.page.field.summarizeBeforePlaybackAria":`Summarize before playback`,"settings.voice.page.field.summarizeBeforePlayback":`Summarize Before Playback`,"settings.voice.page.field.summarizeVoiceModeResponsesAria":`Summarize voice mode responses`,"settings.voice.page.field.summarizeVoiceModeResponses":`Summarize Voice Mode Responses`,"settings.voice.page.field.summarizationThreshold":`Summarization Threshold`,"settings.voice.page.field.summaryMaxLength":`Summary Max Length`,"settings.voice.page.hint.shiftClickPrefix":`Press`,"settings.voice.page.hint.shiftClickSuffix":`on the mic button to toggle continuous mode`,"settings.voice.page.preview.browserVoiceFallback":`your browser voice`,"settings.voice.page.preview.voiceLine":`Hello! I'm {voiceName}. This is how I sound.`,"settings.voice.page.preview.customServerLine":`Hello! This is a preview of the custom TTS server.`,"settings.voice.page.field.ttsInputMode":`TTS Input Mode`,"settings.voice.page.field.ttsInputModeSanitized":`Sanitized`,"settings.voice.page.field.ttsInputModeRaw":`Raw Markdown`,"settings.voice.page.field.ttsInputModeSummarized":`Summarized`,"settings.openchamber.visual.section.colorMode":`Theme`,"settings.openchamber.visual.field.themeMode":`Switch theme`,"settings.openchamber.visual.field.display":`Display`,"settings.openchamber.visual.section.localization":`Localization`,"settings.openchamber.visual.section.spacingAndLayout":`Spacing & Layout`,"settings.openchamber.visual.section.navigation":`Navigation`,"settings.openchamber.visual.section.chatRenderMode":`Chat Render Mode`,"settings.openchamber.visual.section.chatRenderModeAria":`Chat render mode`,"settings.openchamber.visual.section.messageStreamTransport":`Message Stream Transport`,"settings.openchamber.visual.section.activityDefault":`Activity Default`,"settings.openchamber.visual.section.activityDefaultAria":`Activity default mode`,"settings.openchamber.visual.section.showToolsOpenedByDefault":`Show tools opened by default:`,"settings.openchamber.visual.section.sessionAssistance":`Session Assistance`,"settings.openchamber.visual.section.reasoning":`Reasoning`,"settings.openchamber.visual.section.messageAppearance":`Message Appearance`,"settings.openchamber.visual.section.toolsAndFiles":`Tools & Files`,"settings.openchamber.visual.section.composer":`Composer`,"settings.openchamber.visual.section.userMessageRendering":`User Message Rendering`,"settings.openchamber.visual.section.userMessageRenderingAria":`User message rendering mode`,"settings.openchamber.visual.section.mermaidRendering":`Mermaid Rendering`,"settings.openchamber.visual.section.mermaidRenderingAria":`Mermaid rendering mode`,"settings.openchamber.visual.section.diffLayout":`Diff Layout`,"settings.openchamber.visual.section.diffLayoutAria":`Diff layout`,"settings.openchamber.visual.section.privacy":`Privacy`,"settings.openchamber.visual.field.lightTheme":`Light Theme`,"settings.openchamber.visual.field.darkTheme":`Dark Theme`,"settings.openchamber.visual.field.selectLightThemeAria":`Select light theme`,"settings.openchamber.visual.field.selectDarkThemeAria":`Select dark theme`,"settings.openchamber.visual.field.selectThemePlaceholder":`Select theme`,"settings.openchamber.visual.field.timeFormat":`Time Format`,"settings.openchamber.visual.field.weekStartsOn":`Week Starts On`,"settings.openchamber.visual.field.selectTimeFormatAria":`Select time format`,"settings.openchamber.visual.field.selectWeekStartAria":`Select week start`,"settings.openchamber.visual.actions.reloadThemes":`Reload themes`,"settings.openchamber.visual.actions.reloadingThemes":`Reloading themes...`,"settings.openchamber.visual.field.macVibrancy":`Window transparency`,"settings.openchamber.visual.field.macVibrancyHint":`Use the native macOS blur (vibrancy) behind the sidebar. Turn off for fully solid, opaque surfaces.`,"settings.openchamber.visual.field.dockBadge":`Dock badge`,"settings.openchamber.visual.field.dockBadgeHint":`Show a count of chats with unseen activity on the macOS dock icon.`,"settings.openchamber.visual.actions.saveAndRestart":`Save & restart`,"settings.openchamber.visual.actions.restarting":`Restarting…`,"settings.openchamber.visual.field.themeImportInfoAria":`Theme import info`,"settings.openchamber.visual.field.themeImportInfoTooltip":`Import custom themes from ~/.config/openchamber/themes/`,"settings.openchamber.visual.field.installAppName":`Install App Name`,"settings.openchamber.visual.field.sidebarBrand":`Sidebar Brand`,"settings.openchamber.visual.field.sidebarBrandHint":`Enter the full sidebar logo text. The final space-separated word uses the accent color. Leave empty to hide the logo.`,"settings.openchamber.visual.field.sidebarBrandAria":`Sidebar brand`,"settings.openchamber.visual.field.installAppNameHint":`Used by PWA installation process.`,"settings.openchamber.visual.field.pwaInstallAppNameAria":`PWA install app name`,"settings.openchamber.visual.actions.resetInstallAppNameAria":`Reset install app name`,"settings.openchamber.visual.field.installOrientation":`Install Orientation`,"settings.openchamber.visual.field.installOrientationHint":`Used by the installed web app. Reinstall the PWA after changing this.`,"settings.openchamber.visual.field.pwaInstallOrientationAria":`PWA install orientation`,"settings.openchamber.visual.field.selectOrientationPlaceholder":`Select orientation`,"settings.openchamber.visual.actions.resetInstallOrientationAria":`Reset install orientation`,"settings.openchamber.visual.field.mobileKeyboardMode":`Mobile Keyboard Behavior`,"settings.openchamber.visual.field.mobileKeyboardModeHint":`Default browser behavior is safest. Resize content asks supported browsers to shrink the app when the on-screen keyboard opens.`,"settings.openchamber.visual.field.mobileKeyboardModeAria":`Mobile keyboard behavior`,"settings.openchamber.visual.field.selectMobileKeyboardModePlaceholder":`Select keyboard behavior`,"settings.openchamber.visual.actions.resetMobileKeyboardModeAria":`Reset mobile keyboard behavior`,"settings.openchamber.visual.field.interfaceFontSize":`Interface Font Size`,"settings.openchamber.visual.field.interfaceFont":`Interface Font`,"settings.openchamber.visual.field.selectInterfaceFontAria":`Select interface font`,"settings.openchamber.visual.actions.resetInterfaceFontAria":`Reset interface font`,"settings.openchamber.visual.field.fontSizePercentageAria":`Font size percentage`,"settings.openchamber.visual.actions.resetFontSizeAria":`Reset font size`,"settings.openchamber.visual.field.terminalFontSize":`Terminal Font Size`,"settings.openchamber.visual.field.editorFontSize":`Editor Font Size`,"settings.openchamber.visual.field.codeFont":`Code Font`,"settings.openchamber.visual.field.codeFontSize":`Code Font Size`,"settings.openchamber.visual.field.codeFontSizePercentageAria":`Code font size percentage`,"settings.openchamber.visual.field.selectCodeFontAria":`Select code font`,"settings.openchamber.visual.actions.resetCodeFontAria":`Reset code font`,"settings.openchamber.visual.actions.resetCodeFontSizeAria":`Reset code font size`,"settings.openchamber.visual.actions.resetTerminalFontSizeAria":`Reset terminal font size`,"settings.openchamber.visual.actions.resetEditorFontSizeAria":`Reset editor font size`,"settings.openchamber.visual.field.spacingDensity":`Spacing Density`,"settings.openchamber.visual.actions.resetSpacingAria":`Reset spacing`,"settings.openchamber.visual.field.inputBarOffset":`Input Bar Offset`,"settings.openchamber.visual.field.inputBarOffsetTooltip":`Raise input bar to avoid OS-level screen obstructions like home bars.`,"settings.openchamber.visual.actions.resetInputBarOffsetAria":`Reset input bar offset`,"settings.openchamber.visual.field.terminalQuickKeysAria":`Terminal quick keys`,"settings.openchamber.visual.field.terminalQuickKeys":`Terminal Quick Keys`,"settings.openchamber.visual.field.terminalQuickKeysTooltip":`Show Esc, Ctrl, Arrows in terminal view`,"settings.openchamber.visual.field.fileEditorKeymap":`File editor keymap`,"settings.openchamber.visual.option.fileEditorKeymap.default":`Default`,"settings.openchamber.visual.option.fileEditorKeymap.vim":`Vim`,"settings.openchamber.visual.field.activityDefaultModeAria":`Activity default mode: {option}`,"settings.openchamber.visual.field.showExpandedBashToolsAria":`Show expanded bash tools`,"settings.openchamber.visual.field.bash":`Bash`,"settings.openchamber.visual.field.userMessageRenderingAria":`User message rendering: {option}`,"settings.openchamber.visual.field.mermaidRenderingAria":`Mermaid rendering: {option}`,"settings.openchamber.visual.field.diffLayoutAria":`Diff layout: {option}`,"settings.openchamber.visual.field.sessionRecap":`Generate Session Recap`,"settings.openchamber.visual.field.sessionRecapAria":`Generate a recap after the agent finishes`,"settings.openchamber.visual.field.sessionTitleRefresh":`Refresh Session Title From Latest Chat`,"settings.openchamber.visual.field.sessionTitleRefreshAria":`Every 5 minutes after idle, refresh the session title from the latest conversation topic`,"settings.openchamber.visual.field.sessionGoal":`Enable Session Goals`,"settings.openchamber.visual.field.sessionGoalAria":`Keep the session working toward a goal automatically`,"settings.openchamber.visual.goal.sectionTitle":`Goal`,"settings.openchamber.visual.goal.budgetLabel":`Default token budget`,"settings.openchamber.visual.goal.budgetAria":`Apply a default token budget to new goals`,"settings.openchamber.visual.goal.description":`Arm the target button in the composer and the next message becomes a goal: the agent keeps working toward it automatically, audited by the small model, even while you are away.`,"settings.openchamber.visual.field.showReasoningTracesAria":`Show reasoning traces`,"settings.openchamber.visual.field.showReasoningTraces":`Show Reasoning Traces`,"settings.openchamber.visual.field.collapsibleThinkingBlocksAria":`Enable collapsible reasoning blocks`,"settings.openchamber.visual.field.collapsibleThinkingBlocks":`Enable Collapsible Reasoning Blocks`,"settings.openchamber.visual.field.collapsibleUserMessagesAria":`Collapse long user messages`,"settings.openchamber.visual.field.collapsibleUserMessages":`Collapse Long User Messages`,"settings.openchamber.visual.field.stickyUserHeaderAria":`Sticky user header`,"settings.openchamber.visual.field.stickyUserHeader":`Sticky User Header`,"settings.openchamber.visual.field.promptNavigatorEnabledAria":`Prompt navigator`,"settings.openchamber.visual.field.promptNavigatorEnabled":`Prompt Navigator`,"settings.openchamber.visual.field.expandedEditorToolbarAria":`Always show editor toolbar`,"settings.openchamber.visual.field.expandedEditorToolbar":`Always show editor toolbar (docked under the file tabs)`,"settings.openchamber.visual.field.wideChatLayoutAria":`Wide chat layout`,"settings.openchamber.visual.field.wideChatLayout":`Wide Chat Layout`,"settings.openchamber.visual.field.codeBlockLineWrapAria":`Wrap code block lines`,"settings.openchamber.visual.field.codeBlockLineWrap":`Wrap Code Block Lines`,"settings.openchamber.visual.field.showSplitAssistantMessageActionsAria":`Inline assistant actions`,"settings.openchamber.visual.field.showSplitAssistantMessageActions":`Inline Assistant Actions`,"settings.openchamber.visual.field.showSplitAssistantMessageActionsTooltip":`Show Copy Answer, Save as image, and Read aloud on assistant text blocks that appear before later tool calls in the same response.`,"settings.openchamber.visual.field.showAssistantTpsAria":`Show TPS generation rate`,"settings.openchamber.visual.field.showAssistantTps":`Show TPS Generation Rate`,"settings.openchamber.visual.field.showAssistantTpsTooltip":`Show generation speed (tokens per second) on completed assistant messages and in the context panel. Tool call time is excluded.`,"settings.openchamber.visual.field.allowPromptingSubagentSessionsAria":`Allow prompting subagent sessions`,"settings.openchamber.visual.field.allowPromptingSubagentSessions":`Allow Prompting Subagent Sessions`,"settings.openchamber.visual.field.showToolFileIconsAria":`Show tool file icons`,"settings.openchamber.visual.field.showToolFileIcons":`Show Tool File Icons`,"settings.openchamber.visual.field.showSubagentTaskDetailsAria":`Show sub-agent work details`,"settings.openchamber.visual.field.showSubagentTaskDetails":`Show Sub-agent Work Details`,"settings.openchamber.visual.field.showSubagentTaskDetailsHint":`When off, sub-agent tasks stay compact. Click the row to open the sub-agent session.`,"settings.openchamber.visual.field.showTurnChangedFilesAria":`Show changed files for completed turns`,"settings.openchamber.visual.field.showTurnChangedFiles":`Show Changed Files for Completed Turns`,"settings.openchamber.visual.field.showDotfilesAria":`Show dotfiles`,"settings.openchamber.visual.field.showDotfiles":`Show Dotfiles`,"settings.openchamber.visual.field.queueMessagesByDefaultAria":`Queue messages by default`,"settings.openchamber.visual.field.queueMessagesByDefault":`Queue Messages by Default`,"settings.openchamber.visual.field.queueMessagesByDefaultTooltip":`When enabled, Enter queues messages. Use {modifier}+Enter to send.`,"settings.openchamber.visual.field.persistDraftMessagesAria":`Persist draft messages`,"settings.openchamber.visual.field.persistDraftMessages":`Persist Draft Messages`,"settings.openchamber.visual.field.enableSpellcheckInTextInputsAria":`Enable spellcheck in text inputs`,"settings.openchamber.visual.field.enableSpellcheckInTextInputs":`Enable Spellcheck in Text Inputs`,"settings.openchamber.visual.field.sendAnonymousUsageReportsAria":`Send anonymous usage reports`,"settings.openchamber.visual.field.sendAnonymousUsageReports":`Send anonymous usage reports`,"settings.openchamber.visual.field.sendAnonymousUsageReportsHint":`Helps us understand which app versions are actively used so we can prioritize improvements. Only app version, platform, and runtime are collected - no personal data or code.`,"settings.openchamber.visual.transcriptCache.label":`Clear local session cache`,"settings.openchamber.visual.transcriptCache.description":`Removes cached conversation content from this runtime. Server history stays available.`,"settings.openchamber.visual.transcriptCache.action":`Clear cache`,"settings.openchamber.visual.transcriptCache.dialog.title":`Clear local session cache?`,"settings.openchamber.visual.transcriptCache.dialog.description":`Cached conversation content on this device will be removed. Server history stays available.`,"settings.openchamber.visual.transcriptCache.dialog.clearing":`Clearing…`,"settings.openchamber.visual.transcriptCache.toast.cleared":`Local session cache cleared`,"settings.openchamber.visual.transcriptCache.toast.failed":`Could not clear local session cache`,"settings.openchamber.visual.option.themeMode.system":`System`,"settings.openchamber.visual.option.themeMode.light":`Light`,"settings.openchamber.visual.option.themeMode.dark":`Dark`,"settings.openchamber.visual.option.diffLayout.dynamic.label":`Dynamic`,"settings.openchamber.visual.option.diffLayout.dynamic.description":`New inline, modified side-by-side.`,"settings.openchamber.visual.option.diffLayout.inline.label":`Always inline`,"settings.openchamber.visual.option.diffLayout.inline.description":`Show as a single unified view.`,"settings.openchamber.visual.option.diffLayout.sideBySide.label":`Always side-by-side`,"settings.openchamber.visual.option.diffLayout.sideBySide.description":`Compare original and modified files.`,"settings.openchamber.visual.option.mermaidRendering.svg.label":`SVG`,"settings.openchamber.visual.option.mermaidRendering.svg.description":`Render diagrams as scalable graphics.`,"settings.openchamber.visual.option.mermaidRendering.ascii.label":`ASCII`,"settings.openchamber.visual.option.mermaidRendering.ascii.description":`Render diagrams as text blocks.`,"settings.openchamber.visual.option.pwaOrientation.system.label":`Follow system`,"settings.openchamber.visual.option.pwaOrientation.system.description":`Respect the device rotation setting.`,"settings.openchamber.visual.option.pwaOrientation.portrait.label":`Portrait lock`,"settings.openchamber.visual.option.pwaOrientation.portrait.description":`Install the app locked to portrait.`,"settings.openchamber.visual.option.pwaOrientation.landscape.label":`Landscape lock`,"settings.openchamber.visual.option.pwaOrientation.landscape.description":`Install the app locked to landscape.`,"settings.openchamber.visual.option.mobileKeyboardMode.native.label":`Follow browser`,"settings.openchamber.visual.option.mobileKeyboardMode.native.description":`Use the browser default for panning and viewport changes when the keyboard opens.`,"settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.label":`Resize content`,"settings.openchamber.visual.option.mobileKeyboardMode.resizeContent.description":`Ask supported browsers to shrink the app layout instead of relying only on panning.`,"settings.openchamber.visual.option.userMessageRendering.markdown.label":`Markdown`,"settings.openchamber.visual.option.userMessageRendering.markdown.description":`Render user text with markdown formatting.`,"settings.openchamber.visual.option.userMessageRendering.plain.label":`Plain text`,"settings.openchamber.visual.option.userMessageRendering.plain.description":`Render user text with preserved whitespace and links.`,"chat.message.userText.collapseAria":`Collapse user message`,"settings.openchamber.visual.option.chatRenderMode.sorted.label":`Sorted`,"settings.openchamber.visual.option.chatRenderMode.sorted.description":`Park intermediate work in Activity; stream only the final conclusion.`,"settings.openchamber.visual.option.chatRenderMode.live.label":`Live`,"settings.openchamber.visual.option.chatRenderMode.live.description":`Stream assistant text and tools as they arrive.`,"settings.openchamber.visual.option.messageTransport.auto.label":`Auto`,"settings.openchamber.visual.option.messageTransport.auto.description":`Prefer WebSocket and fall back to SSE if needed.`,"settings.openchamber.visual.option.messageTransport.ws.label":`WebSocket`,"settings.openchamber.visual.option.messageTransport.ws.description":`Use WebSocket for message streaming.`,"settings.openchamber.visual.option.messageTransport.sse.label":`SSE`,"settings.openchamber.visual.option.messageTransport.sse.description":`Use Server-Sent Events for message streaming.`,"settings.openchamber.visual.option.activityRenderMode.collapsed.label":`Collapsed`,"settings.openchamber.visual.option.activityRenderMode.collapsed.description":`Keep Activity collapsed by default.`,"settings.openchamber.visual.option.activityRenderMode.summary.label":`Expanded`,"settings.openchamber.visual.option.activityRenderMode.summary.description":`Expand Activity by default.`,"settings.openchamber.visual.option.timeFormat.auto.label":`Auto`,"settings.openchamber.visual.option.timeFormat.auto.description":`Use system locale preference.`,"settings.openchamber.visual.option.timeFormat.24h.label":`24-hour`,"settings.openchamber.visual.option.timeFormat.24h.description":`Show time as 14:15.`,"settings.openchamber.visual.option.timeFormat.12h.label":`12-hour`,"settings.openchamber.visual.option.timeFormat.12h.description":`Show time as 02:15 PM.`,"settings.openchamber.visual.option.weekStart.auto.label":`Auto`,"settings.openchamber.visual.option.weekStart.auto.description":`Use locale week start.`,"settings.openchamber.visual.option.weekStart.monday.label":`Monday`,"settings.openchamber.visual.option.weekStart.sunday.label":`Sunday`,"settings.magicPrompts.page.loading.aria":`Loading`,"settings.magicPrompts.page.loading.text":`Loading Magic Prompts...`,"settings.magicPrompts.page.block.visiblePrompt":`Visible Prompt`,"settings.magicPrompts.page.block.instructions":`Instructions`,"settings.magicPrompts.page.group.gitCommitGenerate.title":`Commit Generation`,"settings.magicPrompts.page.group.gitCommitGenerate.description":`Prompts used for commit message generation: visible user message + hidden instructions.`,"settings.magicPrompts.page.group.gitPrGenerate.title":`PR Generation`,"settings.magicPrompts.page.group.gitPrGenerate.description":`Prompts used for PR title/body generation: visible user message + hidden instructions.`,"settings.magicPrompts.page.group.githubPrReview.title":`PR Review`,"settings.magicPrompts.page.group.githubPrReview.description":`Prompts used for PR review flow: visible user message + hidden instruction payload.`,"settings.magicPrompts.page.group.githubIssueReview.title":`Issue Review`,"settings.magicPrompts.page.group.githubIssueReview.description":`Prompts used for issue review flow: visible user message + hidden instruction payload.`,"settings.magicPrompts.page.group.githubPrFailedChecksReview.title":`PR Failed Checks Review`,"settings.magicPrompts.page.group.githubPrFailedChecksReview.description":`Prompts used for PR failed checks analysis.`,"settings.magicPrompts.page.group.githubPrCommentsReview.title":`PR Comments Review`,"settings.magicPrompts.page.group.githubPrCommentsReview.description":`Prompts used for PR comments analysis.`,"settings.magicPrompts.page.group.githubSinglePrCommentReview.title":`Single PR Comment Review`,"settings.magicPrompts.page.group.githubSinglePrCommentReview.description":`Prompts used for single PR comment analysis.`,"settings.magicPrompts.page.group.gitConflictResolve.title":`Merge/Rebase Conflict Resolution`,"settings.magicPrompts.page.group.gitConflictResolve.description":`Prompts used when resolving merge/rebase conflicts with AI.`,"settings.magicPrompts.page.group.gitCherrypickConflictResolve.title":`Cherry-pick Conflict Resolution`,"settings.magicPrompts.page.group.gitCherrypickConflictResolve.description":`Prompts used when resolving cherry-pick conflicts in integrate flow.`,"settings.magicPrompts.page.group.planImprove.title":`Improve Plan`,"settings.magicPrompts.page.group.planImprove.description":`Hidden prompt used when sending a saved plan into an improve flow.`,"settings.magicPrompts.page.group.planTodo.title":`Todo Planning`,"settings.magicPrompts.page.group.planTodo.description":`Hidden prompt used when sending a todo into a new planning session.`,"settings.magicPrompts.page.group.planImplement.title":`Implement Plan`,"settings.magicPrompts.page.group.planImplement.description":`Hidden prompt used when sending a saved plan into an implement flow.`,"settings.magicPrompts.page.group.sessionSummary.title":`Session Summary`,"settings.magicPrompts.page.group.sessionSummary.description":`Prompts used by the /summary slash command: visible user message + hidden instructions. Non-destructive - does not compact session history.`,"settings.magicPrompts.page.group.sessionWorkspaceReview.title":`Workspace Review`,"settings.magicPrompts.page.group.sessionExplore.title":`Codebase Tour`,"settings.magicPrompts.page.group.sessionExplore.description":`Prompts used by the /explore slash command: visible user message + hidden instructions. Investigates the repository and gives a structured orientation — the big picture, main modules, how they connect, and where to start — rather than a file-by-file dump.`,"settings.magicPrompts.page.group.sessionWorkspaceReview.description":`Prompts used by the /workspace-review slash command: visible user message + hidden instructions. Reviews the workspace diff for whether it achieves its intent and is correct and adequate, classifying findings by severity.`,"settings.magicPrompts.page.group.sessionFeaturePlan.title":`Feature Planning`,"settings.magicPrompts.page.group.sessionFeaturePlan.description":`Prompts used by the /plan-feature slash command: visible user message + hidden instructions. Runs a guided dialogue that researches the code and asks clarifying questions in small batches before producing an implementation plan.`,"settings.magicPrompts.page.group.sessionCatchUp.title":`Catch Up`,"settings.magicPrompts.page.group.sessionCatchUp.description":`Prompts used by the /catch-up slash command: visible user message + hidden instructions. Builds branch-aware context — the branch's commits, its PR, and uncommitted work together — to understand what you were doing, then gives a digestible summary and a product-focused next step.`,"settings.magicPrompts.page.group.sessionDebug.title":`Debugging`,"settings.magicPrompts.page.group.sessionDebug.description":`Prompts used by the /debug slash command: visible user message + hidden instructions. Runs a guided root-cause investigation — captures the symptom, forms hypotheses, checks them against the code, and confirms the cause before proposing a fix.`,"settings.magicPrompts.page.group.sessionWeigh.title":`Weigh Options`,"settings.magicPrompts.page.group.sessionWeigh.description":`Prompts used by the /weigh slash command: visible user message + hidden instructions. Investigates the code, then lays out 2-3 distinct approaches with trade-offs and a recommendation — without writing a plan or code.`,"settings.magicPrompts.page.group.sessionFusion.title":`Fusion`,"settings.magicPrompts.page.group.sessionFusion.description":`Prompts used when combining multi-run outputs into one final answer: visible user message + hidden instructions before source results.`,"settings.magicPrompts.page.actions.resetting":`Resetting...`,"settings.magicPrompts.page.actions.resetAllOverrides":`Reset All Overrides`,"settings.magicPrompts.page.actions.resetToDefault":`Reset to Default`,"settings.magicPrompts.page.actions.save":`Save`,"settings.magicPrompts.page.placeholdersLabel":`Placeholders:`,"settings.magicPrompts.page.validation.visiblePromptRequired":`Visible prompt cannot be empty.`,"settings.magicPrompts.page.status.unsavedChanges":`Unsaved changes`,"settings.magicPrompts.page.status.usingSavedOverride":`Using saved override`,"settings.magicPrompts.page.status.usingBuiltinDefault":`Using built-in default`,"settings.magicPrompts.page.toast.loadFailed":`Failed to load Magic Prompts`,"settings.magicPrompts.page.toast.visiblePromptRequired":`Visible prompt cannot be empty`,"settings.magicPrompts.page.toast.saved":`Magic prompt saved`,"settings.magicPrompts.page.toast.saveFailed":`Failed to save magic prompt`,"settings.magicPrompts.page.toast.resetSuccess":`Prompt reset to default`,"settings.magicPrompts.page.toast.resetFailed":`Failed to reset prompt`,"settings.magicPrompts.page.toast.resetAllSuccess":`All prompt overrides reset`,"settings.magicPrompts.page.toast.resetAllFailed":`Failed to reset all prompts`,"settings.openchamber.visual.section.followUpBehavior":`Follow-up behavior`,"settings.openchamber.visual.section.followUpBehaviorAria":`Follow-up behavior`,"settings.openchamber.visual.field.followUpBehaviorAria":`Follow-up behavior: {option}`,"settings.openchamber.visual.field.followUpBehaviorDescription":`Choose what happens when you press Enter on a follow-up message while the agent is still responding.`,"settings.openchamber.visual.option.followUpBehavior.steer.label":`Steer`,"settings.openchamber.visual.option.followUpBehavior.queue.label":`Queue`,"settings.page.assistants.title":`Assistants`,"assistants.title":`Assistants`,"assistants.subtitle":`Your persistent helpers`,"assistants.listAria":`Assistant list`,"assistants.menu.edit":`Edit`,"assistants.selectorAria":`Switch assistant. Current: {name}`,"assistants.state.unsupportedTitle":`Assistants are unsupported`,"assistants.state.unsupportedDescription":`This OpenChamber instance does not provide the Assistant capability.`,"assistants.state.instanceDisabledDescription":`Enable Assistants in Settings to use this feature.`,"assistants.onboarding.title":`Create your first assistant`,"assistants.onboarding.description":`Set up a persistent helper, then keep one long conversation with it here.`,"assistants.onboarding.action":`Create assistant`,"assistants.actions.retry":`Try again`,"assistants.actions.backToChat":`Back to chat`,"assistants.mode.continuous":`Continuous`,"assistants.mode.stateless":`Stateless`,"assistants.state.unavailable":`Assistants are unavailable on this instance.`,"assistants.state.staleSnapshot":`Showing the last available snapshot. Refresh failed.`,"assistants.state.sending":`Sending`,"assistants.state.reconciling":`Confirming delivery…`,"assistants.state.sendFailed":`Delivery failed. You can retry safely.`,"assistants.state.instanceDisabled":`Assistants are disabled for this instance.`,"assistants.state.assistantDisabled":`This assistant is disabled.`,"assistants.state.invalidConfiguration":`This assistant’s model configuration is unavailable.`,"assistants.state.messagesFailed":`The conversation could not be loaded.`,"assistants.conversation.continuousHint":`One continuous conversation`,"assistants.conversation.statelessHint":`Each turn runs in a fresh session without prior chat context`,"assistants.conversation.newSessionDivider":`New conversation`,"assistants.conversation.emptyTitle":`Start a conversation with {name}`,"assistants.conversation.emptyDescription":`Send a message to begin this long-running conversation.`,"assistants.composer.attachment":`Image attachment`,"assistants.composer.removeAttachment":`Remove attachment`,"assistants.composer.addImage":`Add image`,"assistants.composer.send":`Send message`,"assistants.composer.placeholder":`Message your assistant…`,"assistants.composer.disabledPlaceholder":`Assistant unavailable`,"assistants.composer.selectionConflict":`The selection changed elsewhere. The latest settings were reloaded.`,"assistants.composer.selectionSaveFailed":`Could not save the model and agent selection.`,"assistants.composer.commandUnavailable":`Available commands are /new and /compact.`,"assistants.settings.description":`Configure assistants to help with your work. `,"assistants.settings.descriptionLearnMore":`Learn more`,"assistants.settings.instanceEnabled":`On`,"assistants.settings.listTitle":`Assistants`,"assistants.settings.create":`New assistant`,"assistants.settings.delete":`Delete`,"assistants.settings.deleteConfirm":`Delete {name}? Its conversation history will be archived.`,"assistants.settings.name":`Name`,"assistants.settings.enabled":`Assistant enabled`,"assistants.settings.defaultShare":`Default assistant for sharing from this client`,"assistants.settings.defaultPrompt":`Default prompt`,"assistants.settings.defaultPromptPlaceholder":`Set the assistant’s role and working style…`,"assistants.settings.runtime":`Runtime`,"assistants.settings.model":`Provider and model`,"assistants.settings.agent":`OpenCode agent`,"assistants.settings.mode":`Conversation mode`,"assistants.settings.workspace":`Workspace`,"assistants.settings.workspacePlaceholder":`Managed workspace`,"assistants.settings.workspaceCurrentPath":`Current path`,"assistants.settings.workspaceChangeHint":`Changing workspace starts a new assistant session.`,"assistants.settings.save":`Save assistant`,"assistants.settings.empty":`Create your first assistant.`,"assistants.settings.validation.required":`Name and model are required.`,"assistants.settings.toast.saved":`Assistant saved.`,"assistants.settings.toast.saveFailed":`Assistant could not be saved.`,"assistants.settings.toast.deleted":`Assistant deleted.`,"assistants.settings.toast.deleteFailed":`Assistant could not be deleted.`,"assistants.settings.toast.toggleFailed":`Assistant availability could not be changed.`,"assistants.shareWelcome.title":`Share content with your assistant`,"assistants.shareWelcome.description":`From any app, tap Share and choose an OpenChamber assistant. Links, text, and images land in its Inbox Topic.`,"assistants.shareWelcome.examplesAria":`Examples of shareable content`,"assistants.shareWelcome.example.chat.title":`iOS Share Sheet`,"assistants.shareWelcome.example.chat.description":`Open Share and choose your assistant.`,"assistants.shareWelcome.example.article.title":`Android Direct Share`,"assistants.shareWelcome.example.article.description":`Your assistant appears among quick contacts.`,"assistants.shareWelcome.example.note.title":`Choose an assistant`,"assistants.shareWelcome.example.note.description":`The shared item is delivered to its Inbox Topic.`,"assistants.shareWelcome.action":`Got it`,"common.loading":`Loading...`,"sessions.startupSync.title":`Syncing sessions`,"sessions.startupSync.progress":`Loaded {completed} of {total} projects`,"common.unavailable":`Unavailable`,"common.language.english":`English`,"common.language.french":`French`,"common.language.simplifiedChinese":`Chinese (Simplified)`,"common.language.traditionalChinese":`Chinese (Traditional)`,"common.language.ukrainian":`Ukrainian`,"common.language.spanish":`Spanish`,"common.language.brazilianPortuguese":`Brazilian Portuguese`,"common.language.korean":`Korean`,"common.language.polish":`Polish`,"common.language.japanese":`Japanese`,"common.revealPath.finder":`Reveal in Finder`,"common.revealPath.fileExplorer":`Open in File Explorer`,"common.revealPath.fileManager":`Open in File Manager`,"pwa.installPrompt.description":`Install OpenChamber for quicker access`,"pwa.installPrompt.action":`Install`,"pwa.installPrompt.dismiss":`Dismiss`,"pwa.installPrompt.started":`Install started`,"pwa.installPrompt.installed":`OpenChamber installed`,"shareOpinion.actions.shareOpinion":`Share opinion`,"shareOpinion.actions.bookCall":`Book a call`,"shareOpinion.actions.shortSurvey":`Short survey`,"shareOpinion.dialog.title":`Share your opinion`,"shareOpinion.toast.title":`Help shape OpenChamber`,"shareOpinion.toast.description":`Share what is useful, confusing, or missing to help shape what comes next.`,"sessions.sidebar.footer.actions.shareOpinion":`Share opinion`,"layout.mainTab.chat":`Chat`,"layout.mainTab.plan":`Plan`,"layout.mainTab.diff":`Diff`,"layout.mainTab.diagram":`Diagram`,"layout.mainTab.files":`Files`,"layout.mainTab.terminal":`Terminal`,"layout.mainTab.context":`Context`,"mobile.nav.aria":`Mobile navigation`,"mobile.nav.secondaryPageAria":`Detail page`,"mobile.connect.welcome.title":`Connect to OpenChamber`,"mobile.connect.welcome.description":`Add a server URL or scan a pairing QR code to start using the mobile app.`,"mobile.connect.url.label":`Server URL`,"mobile.connect.url.placeholder":`http://192.168.1.74:2606`,"mobile.connect.link.divider":`Or use a pairing link`,"mobile.connect.address.divider":`Or enter a server address`,"mobile.connect.link.label":`Pairing link`,"mobile.connect.link.placeholder":`Paste openchamber://connect link`,"mobile.connect.link.invalid":`That pairing link is not valid or has expired.`,"mobile.connect.token.label":`Client token`,"mobile.connect.token.placeholder":`Paste access token`,"mobile.connect.token.hint":`Only needed if your server requires a token instead of a password.`,"mobile.connect.password.label":`Password`,"mobile.connect.password.placeholder":`OpenChamber password`,"mobile.connect.connectButton":`Connect`,"mobile.connect.unlockButton":`Unlock and connect`,"mobile.connect.cancelPassword":`Use another server`,"mobile.connect.connecting":`Connecting...`,"mobile.connect.scanQr":`Scan QR code`,"mobile.connect.welcome.scanHint":`On your computer, open «Add a device» to show a QR code, then scan it here.`,"mobile.connect.advanced":`Advanced`,"mobile.connect.manual.toggle":`Manual connection`,"mobile.connect.scan.permissionDenied":`Camera access is off. Enable it in Settings to scan a QR code.`,"mobile.connect.scan.failed":`Could not scan that QR code. Try again or enter the URL manually.`,"mobile.connect.scan.invalid":`That QR code is not an OpenChamber connection code.`,"mobile.connect.scan.unsupported":`QR scanning is only available in the installed mobile app.`,"mobile.connect.saved.title":`Saved connections`,"mobile.connect.saved.empty":`No saved connections yet.`,"mobile.connect.relay.badge":`Via OpenChamber Relay`,"mobile.connect.error.urlRequired":`Enter a server URL.`,"mobile.connect.splash.connectingTo":`Connecting to device:`,"mobile.connect.error.invalidUrl":`That server URL is not valid.`,"mobile.connect.error.unreachable":`Could not reach that OpenChamber server.`,"mobile.connect.error.authRequired":`This server needs a password or client token.`,"mobile.connect.error.passwordFailed":`Could not unlock that server. Check the password.`,"mobile.instances.addTitle":`Add instance`,"mobile.instances.addManual":`Add by address`,"mobile.instances.editTitle":`Edit instance`,"mobile.instances.edit":`Edit`,"mobile.instances.delete":`Delete`,"mobile.instances.deleteAria":`Delete {label}`,"mobile.instances.confirmDeleteAria":`Confirm deleting {label}`,"mobile.instances.cancelDeleteAria":`Keep {label}`,"mobile.instances.cancelEdit":`Cancel`,"mobile.instances.label.label":`Name`,"mobile.instances.label.placeholder":`Optional display name`,"mobile.instances.saveNew":`Save instance`,"mobile.instances.status.connectedDirect":`Connected · Local network`,"mobile.instances.status.connectedRelay":`Connected · Relay`,"mobile.instances.status.connectedSshRelay":`Connected · SSH via relay`,"mobile.instances.sshBadge":`SSH`,"mobile.instances.sshViaDesktop":`Routed via desktop to {host} · desktop must stay online`,"mobile.connect.error.sshNotConnected":`That SSH instance is not connected right now.`,"mobile.connect.ssh.fallbackDesktop":`SSH instance unavailable — connected to the desktop instead.`,"mobile.instances.saveEdit":`Save changes`,"mobile.nav.changes":`Changes`,"mobile.nav.settings":`Settings`,"mobile.tabs.projects":`Projects`,"mobile.tabs.assistant":`Agent`,"mobile.tabs.scheduled":`Schedule`,"mobile.tabs.settings":`Settings`,"mobile.surface.closeAria":`Close`,"mobile.header.openMenuAria":`Open menu`,"mobile.header.openMetadataAria":`Open session metadata`,"mobile.header.metadata.context":`Context`,"mobile.header.metadata.branch":`Branch`,"mobile.header.metadata.usage":`Usage`,"mobile.menu.titleAria":`Workspace tools`,"mobile.menu.newSession":`New Session`,"mobile.chat.syncingMessages":`Syncing messages...`,"mobile.menu.files":`Files`,"mobile.menu.changes":`Changes`,"mobile.menu.mcp":`MCP`,"mobile.menu.instances":`Instances`,"mobile.settings.switchInstance":`Switch instance`,"mobile.menu.update":`Update`,"mobile.menu.settings":`Settings`,"mobile.sessions.newChatCta":`New Session in {project}`,"mobile.sessions.dateGroup.today":`Today`,"mobile.sessions.dateGroup.yesterday":`Yesterday`,"mobile.sessions.dateGroup.thisWeek":`Earlier this week`,"mobile.sessions.dateGroup.older":`Older`,"mobile.sessions.section.worktrees":`Worktrees`,"mobile.sessions.mainWorkspace":`Main workspace`,"mobile.sessions.section.pinned":`Pinned`,"mobile.sessions.searchAria":`Search sessions`,"mobile.sessions.section.otherProjects":`Switch project`,"mobile.sessions.section.projects":`Projects`,"mobile.sessions.empty.noProjectsTitle":`No projects yet`,"mobile.sessions.empty.noProjectsDescription":`Add a project to start chatting with your code.`,"mobile.sessions.empty.noSessionsTitle":`No sessions yet`,"mobile.sessions.empty.noSessionsDescription":`Start your first chat to see it here.`,"mobile.sessions.empty.searchTitle":`No matches`,"mobile.sessions.empty.searchDescription":`Try a different search term.`,"mobile.sessions.showArchived":`Show archived ({count})`,"mobile.sessions.hideArchived":`Hide archived`,"mobile.sessions.activeWorktreeAria":`Active worktree`,"mobile.sessions.activeProjectAria":`Active project`,"mobile.sessions.startNewChat":`New Session`,"mobile.sessions.newChat":`New Session`,"mobile.sessions.editOrder":`Reorder projects`,"mobile.sessions.doneEditing":`Done`,"mobile.sessions.editOrderHint":`Drag the handle to reorder projects. Tap the check to finish.`,"mobile.sessions.editProjectAria":`Edit {label}`,"mobile.sessions.dragHandleAria":`Drag {label} to reorder`,"mobile.sessions.moveUpAria":`Move {label} up`,"mobile.sessions.moveDownAria":`Move {label} down`,"mobile.sessions.removeProjectAria":`Remove {label}`,"mobile.sessions.cancelRemoveProjectAria":`Cancel removing {label}`,"mobile.sessions.confirmRemoveProject":`Close`,"mobile.sessions.confirmRemoveProjectAria":`Confirm removing {label}`,"mobile.projects.closeConfirmMessage":`Close “{title}”? It will leave your project list. Sessions stay on disk.`,"mobile.sessions.toast.projectRemoved":`Removed {label}`,"mobile.sessions.archiveSessionAria":`Archive {title}`,"mobile.sessions.cancelArchiveAria":`Cancel archiving {title}`,"mobile.sessions.stopSessionAria":`Stop {title}`,"mobile.sessions.stopGroupAria":`Stop all running in {label}`,"mobile.sessions.stopSubsessionsAria":`Stop running subsessions of {title}`,"mobile.projectEdit.worktreesTitle":`Worktrees`,"mobile.projectEdit.worktreesEmpty":`No worktrees in this project yet.`,"mobile.projectEdit.reorderHint":`Drag to reorder worktrees.`,"mobile.projectEdit.dragWorktreeAria":`Drag {label} to reorder`,"mobile.projectEdit.deleteWorktreeAria":`Remove worktree {label}`,"mobile.projectEdit.deleteWorktreeTitle":`Remove worktree`,"mobile.projectEdit.deleteWorktreeConfirmButton":`Remove`,"mobile.projectEdit.deleteWorktreeConfirm":`Remove the worktree “{name}”? This can’t be undone.`,"mobile.projectEdit.deleteWorktreeDirty":`This worktree has uncommitted changes that will be lost.`,"mobile.projectEdit.deleteWorktreeArchiveNote":`{count} attached session(s) will be archived.`,"mobile.projectEdit.deleteLocalBranch":`Also delete local branch`,"mobile.projectEdit.deleteRemoteBranch":`Also delete remote branch`,"mobile.sessions.showMore":`Show {count} more`,"mobile.sessions.search.section.sessions":`Sessions`,"mobile.sessions.search.section.archived":`Archived`,"mobile.sessions.search.section.projects":`Projects`,"mobile.sessions.clearSearchAria":`Clear search`,"mobile.header.noProject":`Select a project`,"mobile.header.activeSession":`Active session`,"mobile.header.noSession":`No active session`,"mobile.sessions.openSheetAria":`Open sessions and projects`,"mobile.sessions.closeSheetAria":`Close sessions and projects`,"mobile.sessions.sheet.title":`Recent conversations`,"mobile.sessions.sheet.resizeAria":`Resize sessions panel`,"mobile.changes.sheet.resizeAria":`Resize changes panel`,"mobile.sessions.sheet.description":`Switch projects, open sessions, or start a new chat.`,"mobile.sessions.search.placeholder":`Search sessions`,"mobile.sessions.empty":`No sessions found.`,"mobile.sessions.unassignedProject":`Other sessions`,"mobile.sessions.newSessionAria":`Start a new chat in this project`,"mobile.sessions.untitled":`Untitled session`,"mobile.sessions.project.sessionsSingle":`1 session`,"mobile.sessions.project.sessionsPlural":`{count} sessions`,"mobile.files.refreshAria":`Refresh files`,"mobile.files.backToParentAria":`Back to {name}`,"mobile.files.rootDirectory":`Project files`,"mobile.files.search.placeholder":`Search files`,"mobile.files.search.empty":`No files found.`,"mobile.files.parentDirectory":`Parent directory`,"mobile.files.empty.noDirectory":`Select a project to browse files.`,"mobile.files.empty.directory":`This directory is empty.`,"mobile.files.error.listFailed":`Failed to load files`,"mobile.files.error.readUnavailable":`File preview is unavailable in this runtime.`,"mobile.files.file.truncated":`File preview truncated for mobile.`,"mobile.files.copyPathAria":`Copy file path`,"mobile.files.copyContent":`Copy content`,"mobile.files.copyContentAria":`Copy file content`,"mobile.files.toast.pathCopied":`Path copied`,"mobile.files.toast.contentCopied":`Content copied`,"mobile.files.toast.copyFailed":`Copy failed`,"mobile.changes.placeholder.title":`Changes`,"mobile.changes.placeholder.description":`Working-tree review, sync, and commit actions will live here.`,"mobile.changes.branchLabel":`Branch: {branch}`,"mobile.changes.noRemote":`No remote available`,"mobile.changes.cleanDescription":`There are no changed files in this workspace.`,"mobile.changes.diffDetail.subtitle":`Read-only diff`,"mobile.changes.diffDetail.loadFailed":`Failed to load diff`,"mobile.changes.diffDetail.missingTitle":`File is no longer changed`,"mobile.changes.diffDetail.missingDescription":`Go back to Changes and refresh the list.`,"mobile.changes.diffDetail.imageUnavailable":`Image diffs are not available in mobile Changes yet.`,"mobile.settings.placeholder.title":`Settings`,"mobile.settings.placeholder.description":`Focused mobile connection and app settings will live here.`,"layout.rightSidebar.git":`Git`,"layout.rightSidebar.files":`Files`,"layout.rightSidebar.context":`Context`,"layout.services.instance":`Instance`,"layout.services.usage":`Usage`,"sessions.sidebar.header.actions.closeSessions":`Close sessions`,"sessions.sidebar.header.actions.addProject":`Add project`,"sessions.sidebar.header.actions.newSession":`New chat`,"sessions.sidebar.header.actions.newMultiRun":`New multi-run`,"sessions.sidebar.header.actions.scheduledTasks":`Schedule`,"sessions.scheduledTasks.dialog.title":`Schedule`,"sessions.scheduledTasks.dialog.description":`Server-side schedules create a new session and send a configured prompt.`,"sessions.scheduledTasks.dialog.project.label":`Project`,"sessions.scheduledTasks.dialog.project.placeholder":`Select project`,"sessions.scheduledTasks.dialog.project.empty":`No projects`,"sessions.scheduledTasks.dialog.actions.newTask":`New schedule`,"sessions.scheduledTasks.dialog.actions.create":`Create`,"sessions.scheduledTasks.dialog.actions.moreAria":`More actions for {taskName}`,"sessions.scheduledTasks.dialog.actions.delete":`Delete`,"sessions.scheduledTasks.dialog.actions.pause":`Pause`,"sessions.scheduledTasks.dialog.actions.resume":`Resume`,"sessions.scheduledTasks.workspace.filters.all":`All`,"sessions.scheduledTasks.workspace.filters.active":`Active`,"sessions.scheduledTasks.workspace.filters.paused":`Paused`,"sessions.scheduledTasks.workspace.views.aria":`Schedule views`,"sessions.scheduledTasks.workspace.views.tasks":`Tasks`,"sessions.scheduledTasks.workspace.views.history":`History`,"sessions.scheduledTasks.history.loading":`Loading run history…`,"sessions.scheduledTasks.history.error.title":`Run history could not load`,"sessions.scheduledTasks.history.error.description":`OpenChamber could not load the recorded runs.`,"sessions.scheduledTasks.history.error.more":`More runs could not load. Your loaded history is still available.`,"sessions.scheduledTasks.history.retry":`Retry`,"sessions.scheduledTasks.history.empty.title":`No runs yet`,"sessions.scheduledTasks.history.empty.description":`Scheduled and manual runs will appear here.`,"sessions.scheduledTasks.history.trigger.scheduled":`Scheduled`,"sessions.scheduledTasks.history.trigger.manual":`Manual`,"sessions.scheduledTasks.history.meta.trigger":`Trigger`,"sessions.scheduledTasks.history.meta.started":`Started`,"sessions.scheduledTasks.history.meta.ended":`Ended`,"sessions.scheduledTasks.history.meta.duration":`Duration`,"sessions.scheduledTasks.history.ended.unavailable":`—`,"sessions.scheduledTasks.history.duration.pending":`In progress`,"sessions.scheduledTasks.history.duration.lessThanOneSecond":`<1 sec`,"sessions.scheduledTasks.history.duration.milliseconds":`{count} ms`,"sessions.scheduledTasks.history.duration.seconds":`{count} sec`,"sessions.scheduledTasks.history.duration.minutesSeconds":`{minutes} min {seconds} sec`,"sessions.scheduledTasks.history.duration.minutes":`{count} min`,"sessions.scheduledTasks.history.duration.hoursMinutes":`{hours} h {minutes} min`,"sessions.scheduledTasks.history.duration.hours":`{count} h`,"sessions.scheduledTasks.history.openSession":`Open session`,"sessions.toast.openFailed":`Unable to load conversation {sessionId}`,"sessions.toast.openFailedMissingDirectory":`Unable to load conversation {sessionId}. Workspace path is missing.`,"sessions.toast.openFailedMissingSessionId":`Unable to open conversation. Session id is missing.`,"sessions.scheduledTasks.history.loadingMore":`Loading more…`,"sessions.scheduledTasks.history.loadMore":`Load more`,"sessions.scheduledTasks.workspace.search.placeholder":`Search schedules…`,"sessions.scheduledTasks.workspace.search.noResults":`No schedules match your search.`,"sessions.scheduledTasks.workspace.partialLoadWarning":`Some projects could not load schedules. Loaded schedules remain available.`,"sessions.scheduledTasks.workspace.editor.emptyTitle":`Select a schedule`,"sessions.scheduledTasks.workspace.editor.emptyDescription":`Choose a schedule from the list or create a new one.`,"sessions.scheduledTasks.workspace.confirm.discardChanges":`Unsaved changes will be discarded. Continue?`,"sessions.scheduledTasks.editor.panel.details":`Details`,"sessions.scheduledTasks.editor.panel.frequency":`Frequency`,"sessions.scheduledTasks.dialog.actions.runNow":`Run now`,"sessions.scheduledTasks.dialog.actions.edit":`Edit`,"sessions.scheduledTasks.dialog.actions.editAria":`Edit {taskName}`,"sessions.scheduledTasks.dialog.actions.deleteAria":`Delete {taskName}`,"sessions.scheduledTasks.dialog.loading":`Loading schedules...`,"sessions.scheduledTasks.dialog.empty.noTasks":`No schedules yet.`,"sessions.scheduledTasks.dialog.empty.selectProject":`Select a project to manage schedules.`,"sessions.scheduledTasks.dialog.error.chooseProjectFirst":`Choose a project first`,"sessions.scheduledTasks.dialog.toast.loadFailed":`Failed to load schedules`,"sessions.scheduledTasks.dialog.toast.saved":`Schedule saved`,"sessions.scheduledTasks.dialog.toast.updateFailed":`Failed to update schedule`,"sessions.scheduledTasks.dialog.toast.deleted":`Schedule deleted`,"sessions.scheduledTasks.dialog.toast.deleteFailed":`Failed to delete schedule`,"sessions.scheduledTasks.dialog.toast.started":`Schedule started`,"sessions.scheduledTasks.dialog.toast.runFailed":`Failed to run schedule`,"sessions.scheduledTasks.dialog.confirm.deleteTask":`Delete schedule "{taskName}"?`,"sessions.scheduledTasks.dialog.schedule.daily":`Daily {time}`,"sessions.scheduledTasks.dialog.schedule.dailyWithTimezone":`Daily {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.weekly":`Weekly {days} {time}`,"sessions.scheduledTasks.dialog.schedule.weeklyWithTimezone":`Weekly {days} {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.once":`One-time {date} {time}`,"sessions.scheduledTasks.dialog.schedule.onceWithTimezone":`One-time {date} {time} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.cron":`Cron: {cron}`,"sessions.scheduledTasks.dialog.schedule.cronWithTimezone":`Cron: {cron} ({timezone})`,"sessions.scheduledTasks.dialog.schedule.unknownDate":`Unknown date`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.sun":`Sun`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.mon":`Mon`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.tue":`Tue`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.wed":`Wed`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.thu":`Thu`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.fri":`Fri`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.sat":`Sat`,"sessions.scheduledTasks.dialog.schedule.weekdayShort.unknown":`?`,"sessions.scheduledTasks.dialog.relativeTime.inLessThanOneMinute":`in <1m`,"sessions.scheduledTasks.dialog.relativeTime.justNow":`just now`,"sessions.scheduledTasks.dialog.relativeTime.inMinutes":`in {count}m`,"sessions.scheduledTasks.dialog.relativeTime.minutesAgo":`{count}m ago`,"sessions.scheduledTasks.dialog.relativeTime.inDuration":`in {duration}`,"sessions.scheduledTasks.dialog.relativeTime.durationAgo":`{duration} ago`,"sessions.scheduledTasks.dialog.status.success":`Success`,"sessions.scheduledTasks.dialog.status.error":`Error`,"sessions.scheduledTasks.dialog.status.running":`Running`,"sessions.scheduledTasks.dialog.status.idle":`Idle`,"sessions.scheduledTasks.dialog.nextRun.label":`Next`,"sessions.scheduledTasks.dialog.lastRun.label":`Last run`,"sessions.scheduledTasks.dialog.lastRun.runningNow":`running now`,"sessions.scheduledTasks.dialog.lastRun.never":`never`,"sessions.scheduledTasks.dialog.taskToggle.enableAria":`Enable {taskName}`,"sessions.scheduledTasks.dialog.taskToggle.pauseAria":`Pause {taskName}`,"sessions.scheduledTasks.dialog.taskToggle.enabled":`Enabled`,"sessions.scheduledTasks.dialog.taskToggle.paused":`Paused`,"sessions.scheduledTasks.editor.title.edit":`Edit schedule`,"sessions.scheduledTasks.editor.title.new":`New schedule`,"sessions.scheduledTasks.editor.description":`Configure a server-side schedule that creates a new session and sends a prompt.`,"sessions.scheduledTasks.editor.taskName.label":`Schedule name`,"sessions.scheduledTasks.editor.taskName.placeholder":`Daily sync`,"sessions.scheduledTasks.editor.scheduleType.label":`Schedule type`,"sessions.scheduledTasks.editor.scheduleType.daily":`Daily`,"sessions.scheduledTasks.editor.scheduleType.weekly":`Weekly`,"sessions.scheduledTasks.editor.scheduleType.once":`One-time`,"sessions.scheduledTasks.editor.scheduleType.cron":`Cron`,"sessions.scheduledTasks.editor.date.label":`Date`,"sessions.scheduledTasks.editor.date.placeholder":`Select date`,"sessions.scheduledTasks.editor.date.previousMonth":`Previous month`,"sessions.scheduledTasks.editor.date.nextMonth":`Next month`,"sessions.scheduledTasks.editor.date.jumpToToday":`Jump to today`,"sessions.scheduledTasks.editor.date.today":`Today`,"sessions.scheduledTasks.editor.time.label":`Time`,"sessions.scheduledTasks.editor.time.hourAria":`Hours`,"sessions.scheduledTasks.editor.time.minuteAria":`Minutes`,"sessions.scheduledTasks.editor.time.periodAria":`Period`,"sessions.scheduledTasks.editor.time.period.am":`AM`,"sessions.scheduledTasks.editor.time.period.pm":`PM`,"sessions.scheduledTasks.editor.times.label":`Times`,"sessions.scheduledTasks.editor.times.add":`Add time`,"sessions.scheduledTasks.editor.times.removeAria":`Remove time`,"sessions.scheduledTasks.editor.timezone.label":`Timezone`,"sessions.scheduledTasks.editor.weekdays.label":`Weekdays`,"sessions.scheduledTasks.editor.model.label":`Model`,"sessions.scheduledTasks.editor.thinkingLevel.label":`Thinking level`,"sessions.scheduledTasks.editor.thinkingLevel.default":`Default`,"sessions.scheduledTasks.editor.agent.label":`Agent`,"sessions.scheduledTasks.editor.prompt.label":`Prompt`,"sessions.scheduledTasks.editor.prompt.placeholder":`Summarize open tasks and propose next actions`,"sessions.scheduledTasks.editor.enabled.aria":`Enable schedule`,"sessions.scheduledTasks.editor.enabled.label":`Enabled`,"sessions.scheduledTasks.editor.goal.label":`Run as goal`,"sessions.scheduledTasks.editor.goal.aria":`Run this schedule as a goal the agent pursues to completion`,"sessions.scheduledTasks.editor.goal.budgetLabel":`Token budget`,"sessions.scheduledTasks.editor.goal.budgetAria":`Limit the goal to a token budget`,"sessions.scheduledTasks.editor.actions.closeAria":`Close`,"sessions.scheduledTasks.editor.actions.cancel":`Cancel`,"sessions.scheduledTasks.editor.actions.save":`Save`,"sessions.scheduledTasks.editor.actions.saving":`Saving...`,"sessions.scheduledTasks.editor.toast.saveFailed":`Failed to save schedule`,"sessions.scheduledTasks.editor.validation.taskNameRequired":`Schedule name is required`,"sessions.scheduledTasks.editor.validation.promptRequired":`Prompt is required`,"sessions.scheduledTasks.editor.validation.modelRequired":`Model is required`,"sessions.scheduledTasks.editor.validation.dateFormat":`Date must use YYYY-MM-DD`,"sessions.scheduledTasks.editor.validation.timeFormat":`Time must use HH:mm`,"sessions.scheduledTasks.editor.validation.atLeastOneTime":`Add at least one valid time`,"sessions.scheduledTasks.editor.validation.atLeastOneWeekday":`Select at least one weekday`,"sessions.scheduledTasks.editor.validation.timezoneRequired":`Timezone is required`,"sessions.scheduledTasks.editor.validation.cronRequired":`Cron expression is required`,"sessions.scheduledTasks.editor.validation.cronInvalid":`Invalid cron expression`,"sessions.scheduledTasks.editor.cronExpression.label":`Cron expression`,"sessions.scheduledTasks.editor.cronExpression.placeholder":`*/5 * * * *`,"sessions.scheduledTasks.editor.cronExpression.nextRuns":`Next runs`,"sessions.scheduledTasks.editor.cronExpression.examples":`Examples`,"sessions.scheduledTasks.editor.cronExpression.examples.every5min":`Every 5 minutes`,"sessions.scheduledTasks.editor.cronExpression.examples.everyHour":`Every hour`,"sessions.scheduledTasks.editor.cronExpression.examples.monday9am":`Every Monday at 9am`,"sessions.scheduledTasks.editor.cronExpression.examples.9am5pm":`9am and 5pm daily`,"sessions.scheduledTasks.editor.cronExpression.examples.firstOfMonth":`First of every month`,"multirun.launcher.title":`New Multi-Run`,"multirun.launcher.actions.closeEsc":`Close (Esc)`,"multirun.launcher.actions.cancel":`Cancel`,"multirun.launcher.actions.creating":`Creating...`,"multirun.launcher.actions.startWithModelCount":`Start ({count} models)`,"multirun.launcher.project.label":`Project`,"multirun.launcher.project.placeholder":`Select project`,"multirun.launcher.project.empty":`Add a project first.`,"multirun.launcher.project.gitRequired":`No worktree isolation: runs use the same directory.`,"multirun.launcher.groupName.label":`Group name`,"multirun.launcher.groupName.info":`Used for worktree directory and branch names`,"multirun.launcher.groupName.placeholder":`feature-auth, bugfix-login`,"multirun.launcher.baseBranch.label":`Base branch`,"multirun.launcher.baseBranch.info":`New branch created from this base per model`,"multirun.launcher.isolateRuns.label":`Isolate runs`,"multirun.launcher.agent.label":`Agent`,"multirun.launcher.agent.info":`Agent used for all runs. Defaults to your configured agent.`,"multirun.launcher.setupCommands.label":`Setup commands`,"multirun.launcher.setupCommands.loading":`Loading...`,"multirun.launcher.setupCommands.commandPlaceholder":`bun install`,"multirun.launcher.setupCommands.removeCommandAria":`Remove command`,"multirun.launcher.setupCommands.addCommand":`Add command`,"multirun.launcher.prompt.label":`Prompt`,"multirun.launcher.prompt.placeholder":`Enter the prompt to send to all models...`,"multirun.launcher.attachments.attach":`Attach`,"multirun.launcher.attachments.tooltip":`Same files sent to all runs`,"multirun.launcher.models.label":`Models`,"multirun.launcher.models.info":`Select 2-{max} models. Same model can be added multiple times.`,"multirun.launcher.toast.fileTooLarge":`File "{fileName}" is too large (max 10MB)`,"multirun.launcher.toast.attachFailed":`Failed to attach "{fileName}"`,"multirun.launcher.toast.attachedSingle":`Attached {count} file`,"multirun.launcher.toast.attachedPlural":`Attached {count} files`,"multirun.modelMultiSelect.actions.addModel":`Add model`,"multirun.modelMultiSelect.search.placeholder":`Search models`,"multirun.modelMultiSelect.search.noResults":`No models found`,"multirun.modelMultiSelect.sections.favorites":`Favorites`,"multirun.modelMultiSelect.sections.recent":`Recent`,"multirun.modelMultiSelect.variant.placeholder":`Thinking`,"multirun.modelMultiSelect.variant.default":`Default`,"multirun.modelMultiSelect.keyboard.hint":`↑↓ navigate • Enter select • Esc close`,"multirun.modelMultiSelect.validation.minOnly":`Select at least {min} models.`,"multirun.modelMultiSelect.validation.minToMax":`Select from {min} to {max} models.`,"multirun.agentSelector.placeholder":`Select an agent`,"multirun.fusion.title":`Run fusion`,"multirun.fusion.description":`Combine the selected multi-run outputs into one stronger answer.`,"multirun.fusion.provider.placeholder":`Provider`,"multirun.fusion.model.placeholder":`Model`,"multirun.fusion.sources.label":`Sources ({count})`,"multirun.fusion.actions.cancel":`Cancel`,"multirun.fusion.actions.start":`Start fusion`,"multirun.fusion.actions.starting":`Starting...`,"multirun.fusion.toast.noOutputs":`No assistant outputs found to fuse.`,"multirun.fusion.toast.failed":`Failed to start fusion.`,"multirun.launcher.attachments.label":`Files`,"multirun.launcher.actions.startWithRunCount":`Start ({count} runs)`,"multirun.launcher.groups.addGroup":`Add run group`,"multirun.launcher.groups.removeGroup":`Remove group`,"multirun.launcher.groups.groupLabel":`Run group {index}`,"multirun.launcher.groups.template.label":`Template`,"multirun.launcher.groups.template.placeholder":`Select a template...`,"multirun.launcher.groups.template.custom":`Custom prompt`,"multirun.launcher.groups.prompt.label":`Prompt`,"multirun.launcher.groups.prompt.placeholder":`Enter the prompt for this group...`,"sessions.sidebar.header.actions.searchSessions":`Search sessions`,"sessions.sidebar.header.actions.exitSelection":`Exit selection`,"sessions.sidebar.header.actions.selectSessions":`Select sessions`,"sessions.sidebar.header.actions.sortProjects":`Sort projects`,"sessions.sidebar.header.actions.sessionDisplayMode":`Project expand/collapse actions`,"sessions.sidebar.header.displayMode.label":`Expand/collapse projects`,"sessions.sidebar.header.displayMode.default":`Default`,"sessions.sidebar.header.displayMode.minimal":`Minimal`,"sessions.sidebar.header.displayMode.showRecent":`Show recent section`,"sessions.sidebar.header.displayMode.showArchived":`Show archived sessions`,"sessions.sidebar.header.displayMode.collapseAll":`Collapse all`,"sessions.sidebar.header.displayMode.expandAll":`Expand all`,"sessions.sidebar.header.projectSort.manual":`Manual`,"sessions.sidebar.header.projectSort.aToZ":`A → Z`,"sessions.sidebar.header.projectSort.zToA":`Z → A`,"sessions.sidebar.header.projectSort.dateAdded":`Newest`,"sessions.sidebar.header.projectSort.recent":`Recent`,"sessions.sidebar.header.search.matchCountSingle":`{count} match`,"sessions.sidebar.header.search.matchCountPlural":`{count} matches`,"sessions.sidebar.header.search.escapeHint":`Esc to clear`,"sessions.sidebar.header.search.placeholder":`Search sessions...`,"sessions.sidebar.header.search.clear":`Clear search`,"sessions.sidebar.footer.actions.settings":`Settings`,"sessions.sidebar.footer.actions.shortcuts":`Shortcuts`,"sessions.sidebar.footer.actions.aboutOpenChamber":`About OpenChamber`,"sessions.sidebar.footer.actions.update":`Update`,"sessions.sidebar.empty.noSessions.title":`No sessions yet`,"sessions.sidebar.empty.noSessions.description":`Create your first session to start coding.`,"sessions.sidebar.empty.noMatches.title":`No matching sessions`,"sessions.sidebar.empty.noMatches.description":`Try a different title, branch, folder, or path.`,"sessions.sidebar.activity.recentTitle":`Recent`,"sessions.sidebar.projectsTitle":`Projects`,"sessions.sidebar.projectsSyncing":`Syncing sessions…`,"sessions.sidebar.project.loadingSessions":`Loading sessions…`,"sessions.switcher.openAria":`Open session switcher`,"sessions.switcher.empty":`No recent sessions`,"sessions.switcher.draftTitle":`New session`,"sessions.sidebar.updateCheck.errorTitle":`Failed to check for updates`,"sessions.sidebar.updateCheck.latestVersion":`You are on the latest version`,"sessions.sidebar.directory.errorAddProjectTitle":`Failed to add project`,"sessions.sidebar.directory.errorAddProjectDescription":`Please select a valid directory.`,"sessions.sidebar.directory.errorSelectDirectoryTitle":`Failed to select directory`,"sessions.sidebar.folder.newFolderName":`New folder`,"sessions.sidebar.bulkActions.delete":`Delete`,"sessions.sidebar.bulkActions.archive":`Archive`,"sessions.sidebar.bulkActions.selectedCount":`{count} selected`,"sessions.sidebar.bulkActions.moveToFolder":`Move to folder`,"sessions.sidebar.bulkActions.deletedSingle":`Deleted {count} session`,"sessions.sidebar.bulkActions.deletedPlural":`Deleted {count} sessions`,"sessions.sidebar.bulkActions.failedDeleteSingle":`Failed to delete {count} session`,"sessions.sidebar.bulkActions.failedDeletePlural":`Failed to delete {count} sessions`,"sessions.sidebar.bulkActions.archivedSingle":`Archived {count} session`,"sessions.sidebar.bulkActions.archivedPlural":`Archived {count} sessions`,"sessions.sidebar.bulkActions.failedArchiveSingle":`Failed to archive {count} session`,"sessions.sidebar.bulkActions.failedArchivePlural":`Failed to archive {count} sessions`,"sessions.sidebar.bulkActions.archiveUndoFailed":`Failed to restore {count} sessions`,"sessions.sidebar.undo":`Undo`,"sessions.sidebar.openSettings":`Settings`,"sessions.sidebar.folders.none":`No folders yet`,"sessions.sidebar.folders.newFolderEllipsis":`New folder...`,"sessions.sidebar.folders.removeFromFolder":`Remove from folder`,"sessions.sidebar.folders.moveToFolder":`Move to folder`,"sessions.sidebar.project.actions.newWorktree":`New worktree`,"sessions.sidebar.project.actions.newWorktreeEllipsis":`New worktree...`,"sessions.sidebar.project.actions.projectMenu":`Project menu`,"sessions.sidebar.project.actions.syncSessions":`Sync sessions`,"sessions.sidebar.project.actions.newSession":`New Session`,"sessions.sidebar.project.actions.edit":`Edit`,"sessions.sidebar.project.actions.closeProject":`Close project`,"sessions.sidebar.project.actions.newDraftSession":`New draft session`,"sessions.sidebar.session.menu.rename":`Rename`,"sessions.sidebar.session.rename.save":`Save session name`,"sessions.sidebar.session.rename.cancel":`Cancel renaming session`,"sessions.sidebar.session.rename.smartTitle":`Generate titles automatically`,"sessions.sidebar.session.menu.unpin":`Unpin`,"sessions.sidebar.session.menu.pin":`Pin`,"sessions.sidebar.session.menu.share":`Share`,"sessions.sidebar.session.menu.copied":`Copied`,"sessions.sidebar.session.menu.copyLink":`Copy link`,"sessions.sidebar.session.menu.unshare":`Unshare`,"sessions.sidebar.session.menu.exportMarkdown":`Export Markdown`,"sessions.sidebar.session.menu.refreshTranscript":`Sync messages`,"sessions.sidebar.session.menu.refreshTranscriptSuccess":`Messages synced`,"sessions.sidebar.session.menu.refreshTranscriptFailed":`Failed to sync messages`,"sessions.sidebar.session.menu.runFusion":`Run fusion`,"sessions.sidebar.session.menu.openInSidePanel":`Open in Side Panel`,"sessions.sidebar.session.actions.openInEditor":`Open in Editor`,"sessions.sidebar.session.menu.betaBadge":`beta`,"sessions.sidebar.session.menu.label":`Session menu`,"sessions.sidebar.session.untitled":`Untitled Session`,"sessions.sidebar.session.export.nothingToExport":`Nothing to export`,"sessions.sidebar.session.export.success":`Session exported`,"sessions.sidebar.session.export.failedRevealPath":`Failed to reveal path`,"sessions.sidebar.session.export.untitledSubagent":`Untitled Sub-agent`,"sessions.sidebar.session.export.skippedSubtaskSingle":`Exported session, but skipped {count} sub-agent task that could not be loaded.`,"sessions.sidebar.session.export.skippedSubtaskMany":`Exported session, but skipped {count} sub-agent tasks that could not be loaded.`,"sessions.sidebar.session.export.dialog.title":`Export Markdown`,"sessions.sidebar.session.export.dialog.descriptionSingle":`This session has {count} sub-agent task. Include it in the export?`,"sessions.sidebar.session.export.dialog.descriptionMany":`This session has {count} sub-agent tasks. Include them in the export?`,"sessions.sidebar.session.export.dialog.includeSubtasks":`Include sub-agent tasks`,"sessions.sidebar.session.export.dialog.confirm":`Export`,"sessions.sidebar.session.status.active":`Session active`,"sessions.sidebar.session.status.unread":`Unread updates`,"sessions.sidebar.session.status.pinned":`Pinned session`,"sessions.sidebar.session.actions.pinned":`Pinned`,"sessions.sidebar.session.status.permissionRequired":`Permission required`,"sessions.sidebar.session.status.questionRequired":`Question required`,"sessions.sidebar.session.subsessions.collapse":`Collapse subsessions`,"sessions.sidebar.session.subsessions.expand":`Expand subsessions`,"sessions.sidebar.dialogs.deleteSession.title":`Delete session?`,"sessions.sidebar.dialogs.archiveSession.title":`Archive session?`,"sessions.sidebar.dialogs.deleteSession.withOneSubtask":`"{sessionTitle}" and its {count} sub-task will be permanently deleted.`,"sessions.sidebar.dialogs.deleteSession.withManySubtasks":`"{sessionTitle}" and its {count} sub-tasks will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSession.withOneSubtask":`"{sessionTitle}" and its {count} sub-task will be archived.`,"sessions.sidebar.dialogs.archiveSession.withManySubtasks":`"{sessionTitle}" and its {count} sub-tasks will be archived.`,"sessions.sidebar.dialogs.deleteSession.single":`"{sessionTitle}" will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSession.single":`"{sessionTitle}" will be archived.`,"sessions.sidebar.dialogs.neverAsk":`Never ask`,"sessions.sidebar.dialogs.cancel":`Cancel`,"sessions.sidebar.dialogs.deleteSession.titleAction":`Delete session`,"sessions.sidebar.dialogs.deleteSessions.titleAction":`Delete sessions`,"sessions.sidebar.dialogs.deleteSessions.title":`Delete sessions?`,"sessions.sidebar.dialogs.archiveSessions.title":`Archive sessions?`,"sessions.sidebar.dialogs.deleteSessions.singleDescription":`{count} session will be permanently deleted.`,"sessions.sidebar.dialogs.deleteSessions.pluralDescription":`{count} sessions will be permanently deleted.`,"sessions.sidebar.dialogs.archiveSessions.singleDescription":`{count} session will be archived.`,"sessions.sidebar.dialogs.archiveSessions.pluralDescription":`{count} sessions will be archived.`,"sessions.sidebar.dialogs.deleteFolder.title":`Delete folder?`,"sessions.sidebar.dialogs.deleteFolder.withOneSubfolder":`"{folderName}" will be deleted along with {count} sub-folder. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.withManySubfolders":`"{folderName}" will be deleted along with {count} sub-folders. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.withContentsNoSubfolders":`"{folderName}" will be deleted. Sessions inside will not be deleted.`,"sessions.sidebar.dialogs.deleteFolder.single":`"{folderName}" will be permanently deleted.`,"sessions.sidebar.dialogs.deleteResult.singleFailedToDelete":`{count} session could not be deleted.`,"sessions.sidebar.dialogs.deleteResult.manyFailedToDelete":`{count} sessions could not be deleted.`,"sessions.sidebar.dialogs.deleteResult.singleFailedToArchive":`{count} session could not be archived.`,"sessions.sidebar.dialogs.deleteResult.manyFailedToArchive":`{count} sessions could not be archived.`,"sessions.sidebar.dialogs.deleteResult.removedFromDate":`Removed all sessions from {dateLabel}.`,"sessions.sidebar.dialogs.deleteResult.tryAgain":`Please try again in a moment.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionNoLinked":`This removes the selected worktree.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionOneLinked":`This removes the selected worktree and archives {count} linked session.`,"sessions.sidebar.dialogs.worktreeDelete.descriptionManyLinked":`This removes the selected worktree and archives {count} linked sessions.`,"sessions.sidebar.dialogs.sessionDelete.descriptionOne":`This action permanently removes 1 session.`,"sessions.sidebar.dialogs.sessionDelete.descriptionOneWithDate":`This action permanently removes 1 session from {dateLabel}.`,"sessions.sidebar.dialogs.sessionDelete.descriptionMany":`This action permanently removes {count} sessions.`,"sessions.sidebar.dialogs.sessionDelete.descriptionManyWithDate":`This action permanently removes {count} sessions from {dateLabel}.`,"sessions.sidebar.dialogs.sessionList.more":`+{count} more`,"sessions.sidebar.session.share.successTitle":`Session shared`,"sessions.sidebar.session.share.successDescription":`You can copy the link from the menu.`,"sessions.sidebar.session.share.error":`Unable to share session`,"sessions.sidebar.session.share.copyUrlError":`Failed to copy URL`,"sessions.sidebar.session.unshare.success":`Session unshared`,"sessions.sidebar.session.unshare.error":`Unable to unshare session`,"sessions.sidebar.session.delete.success":`Session deleted`,"sessions.sidebar.session.delete.error":`Failed to delete session`,"sessions.sidebar.session.archive.success":`Session archived`,"sessions.sidebar.session.archive.error":`Failed to archive session`,"sessions.sidebar.session.archive.undoFailed":`Failed to undo archive`,"sessions.sidebar.group.pr.checksPassed":`{success}/{total} checks passed`,"sessions.sidebar.group.pr.failingCount":`{count} failing`,"sessions.sidebar.group.pr.pendingCount":`{count} pending`,"sessions.sidebar.group.pr.conflictsOrBlocked":`Conflicts or blocked`,"sessions.sidebar.group.pr.mergeable":`Mergeable`,"sessions.sidebar.group.pr.mergeState":`Merge state: {state}`,"sessions.sidebar.group.pr.status.merged":`Merged`,"sessions.sidebar.group.pr.status.readyToMerge":`Ready to merge`,"sessions.sidebar.group.pr.status.open":`PR open`,"sessions.sidebar.group.pr.status.mergeConflicts":`Merge conflicts`,"sessions.sidebar.group.pr.status.mergeBlocked":`Merge blocked`,"sessions.sidebar.group.pr.status.draft":`Draft PR`,"sessions.sidebar.group.pr.status.closed":`Closed`,"sessions.sidebar.group.empty.noArchivedSessions":`No archived sessions yet.`,"sessions.sidebar.group.empty.noSessionsInWorkspace":`No sessions in this workspace yet.`,"sessions.sidebar.group.showMore":`More`,"sessions.sidebar.group.showMoreSingle":`Show {count} more session`,"sessions.sidebar.group.showMorePlural":`Show {count} more sessions`,"sessions.sidebar.group.showFewer":`Fewer`,"sessions.sidebar.group.expandAria":`Expand {label}`,"sessions.sidebar.group.collapseAria":`Collapse {label}`,"sessions.sidebar.group.actions.deleteArchivedInGroupAria":`Delete archived sessions in {label}`,"sessions.sidebar.group.actions.deleteArchivedSessions":`Delete archived sessions`,"sessions.sidebar.group.actions.deleteGroupAria":`Delete {label}`,"sessions.sidebar.group.actions.deleteWorktree":`Delete worktree`,"sessions.sidebar.group.actions.newDraftInGroupAria":`New draft session in {label}`,"sessions.sidebar.grouping.projectRoot":`Project root`,"sessions.sidebar.grouping.projectRootWithBranch":`Project root: {branch}`,"sessions.sidebar.grouping.archived":`Archived`,"sessions.sidebar.grouping.archivedDescription":`Archived and unassigned sessions`,"sessions.sidebar.folderItem.expandAria":`Expand folder {folderName}`,"sessions.sidebar.folderItem.collapseAria":`Collapse folder {folderName}`,"sessions.sidebar.folderItem.namePlaceholder":`Folder name`,"sessions.sidebar.folderItem.newSessionAria":`New session in {folderName}`,"sessions.sidebar.folderItem.newSubfolderAria":`New sub-folder in {folderName}`,"sessions.sidebar.folderItem.newSubfolder":`New sub-folder`,"sessions.sidebar.folderItem.renameAria":`Rename folder {folderName}`,"sessions.sidebar.folderItem.deleteArchivedInFolderAria":`Delete archived sessions in folder {folderName}`,"sessions.sidebar.folderItem.deleteFolderAria":`Delete folder {folderName}`,"sessions.sidebar.folderItem.emptyFolder":`Empty folder`,"sessions.sidebar.sessionDialogs.ok":`OK`,"sessions.sidebar.sessionDialogs.linkedSessionSingle":`Linked session`,"sessions.sidebar.sessionDialogs.linkedSessionPlural":`Linked sessions`,"sessions.sidebar.sessionDialogs.delete.note":`Worktree directories stay intact. Subsessions linked to the selected sessions will also be removed.`,"sessions.sidebar.sessionDialogs.directory.errorSelectTitle":`Failed to select directory`,"sessions.sidebar.sessionDialogs.directory.errorOpenTitle":`Failed to open directory`,"sessions.sidebar.sessionDialogs.directory.errorOpenDescription":`Desktop could not grant file access.`,"sessions.sidebar.sessionDialogs.directory.errorAddProjectTitle":`Failed to add project`,"sessions.sidebar.sessionDialogs.directory.errorAddProjectDescription":`Please select a valid directory path.`,"sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle":`Failed to remove worktree`,"sessions.sidebar.sessionDialogs.worktree.removedTitle":`Worktree removed`,"sessions.sidebar.sessionDialogs.worktree.removed":`Worktree removed.`,"sessions.sidebar.sessionDialogs.worktree.removedWithRemote":`Worktree and remote branch removed.`,"sessions.sidebar.sessionDialogs.worktree.attachedArchived":`Attached worktree archived.`,"sessions.sidebar.sessionDialogs.worktree.attachedArchivedPlural":`Attached worktrees archived.`,"sessions.sidebar.sessionDialogs.worktree.archivedAndRemoteRemoved":`Archived worktrees and removed remote branches.`,"sessions.sidebar.sessionDialogs.worktree.label":`Worktree`,"sessions.sidebar.sessionDialogs.worktree.pathUnavailable":`Worktree path unavailable.`,"sessions.sidebar.sessionDialogs.worktree.uncommittedWarning":`Uncommitted changes will be discarded.`,"sessions.sidebar.sessionDialogs.actions.deleteRemoteBranch":`Delete remote branch`,"sessions.sidebar.sessionDialogs.actions.remoteBranchInfoUnavailable":`Remote branch info unavailable`,"sessions.sidebar.sessionDialogs.actions.deleteLocalBranch":`Delete local branch`,"sessions.sidebar.sessionDialogs.actions.deleting":`Deleting…`,"sessions.sidebar.sessionDialogs.actions.deleteWorktree":`Delete worktree`,"gitView.branch.branchToMergeInto":`Branch to merge into {branch}`,"gitView.branch.branchToRebaseOnto":`Branch to rebase onto`,"gitView.branch.create":`Create new branch...`,"gitView.branch.currentBadge":`Current`,"gitView.branch.currentBranchFallback":`Current branch`,"gitView.branch.currentBranchTooltip":`Current branch`,"gitView.branch.detachedHead":`Detached HEAD`,"gitView.branch.dialogDescriptionPrefix":`Choose how to bring another branch into`,"gitView.branch.empty":`No branches found.`,"gitView.branch.localBranches":`Local branches`,"gitView.branch.mergeDescription":`Create a merge commit and preserve branch history.`,"gitView.branch.mergeRebase":`Merge/Rebase`,"gitView.branch.mergeRebaseTooltip":`Update this branch from another branch.`,"gitView.branch.mergingInProgress":`Merging In Progress`,"gitView.branch.namePlaceholder":`Branch name`,"gitView.branch.newBranchPlaceholder":`New branch name`,"gitView.branch.noLocalBranches":`No local branches`,"gitView.branch.noRemoteBranches":`No remote branches`,"gitView.branch.operation":`Operation`,"gitView.branch.operationCompleted":`Operation Completed`,"gitView.branch.operationFailed":`Operation Failed`,"gitView.branch.pushToPrefix":`Push To Prefix`,"gitView.branch.pushToSuffix":`Push To Suffix`,"gitView.branch.rebaseDescription":`Replay your commits on top of the selected branch.`,"gitView.branch.rebasingInProgress":`Rebasing In Progress`,"gitView.branch.remoteBranches":`Remote branches`,"gitView.branch.renameTitle":`Rename branch`,"gitView.branch.renameSave":`Save branch name`,"gitView.branch.renameSaving":`Saving branch name`,"gitView.branch.renameCancel":`Cancel branch rename`,"gitView.branch.searchPlaceholder":`Search branches...`,"gitView.branch.selectBranch":`Select Branch`,"gitView.branch.summaryMergeInfix":`into`,"gitView.branch.summaryMergePrefix":`This will merge`,"gitView.branch.summaryRebaseInfix":`onto`,"gitView.branch.summaryRebasePrefix":`This will rebase`,"gitView.branch.updateDescriptionPrefix":`Bring the latest changes into`,"gitView.branch.updateTitle":`Update branch`,"gitView.changes.changedFilesAria":`Changed files`,"gitView.changes.clearSelectionAria":`Clear file selection`,"gitView.changes.collapseDirectoryAria":`Collapse directory {path}`,"gitView.changes.expandDirectoryAria":`Expand directory {path}`,"gitView.changes.revertAll":`Revert all`,"gitView.changes.revertAllDescriptionPlural":`Revert {count} changed files? This cannot be undone.`,"gitView.changes.revertAllDescriptionSingle":`Revert {count} changed file? This cannot be undone.`,"gitView.changes.revertAllDialogTitle":`Revert all changes?`,"gitView.changes.revertDirectoryAria":`Revert changes in {path}`,"gitView.changes.revertDirectory":`Revert folder`,"gitView.changes.revertDirectoryDescriptionPlural":`This will discard local changes in {count} files under {path}.`,"gitView.changes.revertDirectoryDescriptionSingle":`This will discard local changes in {count} file under {path}.`,"gitView.changes.revertDirectoryDialogTitle":`Revert folder changes?`,"gitView.changes.revertDirectoryTooltip":`Revert folder changes`,"gitView.changes.revertFileAria":`Revert changes in {path}`,"gitView.changes.revertFileTooltip":`Revert changes`,"gitView.changes.reverting":`Reverting...`,"gitView.changes.selectAllAria":`Select all files`,"gitView.changes.selectFileAria":`Select {path}`,"gitView.changes.stagedTitle":`Staged`,"gitView.changes.resizeSplitAria":`Resize staged and unstaged changes`,"gitView.changes.stageAllAria":`Stage all changes`,"gitView.changes.stageDirectoryAria":`Stage all changes in {path}`,"gitView.changes.stageFileAria":`Stage {path}`,"gitView.changes.title":`Changes`,"gitView.changes.toggleDirectorySelectionAria":`Toggle selection for {path}`,"gitView.changes.unstageAllAria":`Unstage all changes`,"gitView.changes.unstageDirectoryAria":`Unstage all changes in {path}`,"gitView.changes.unstageFileAria":`Unstage {path}`,"gitView.commit.addGitmoji":`Add gitmoji`,"gitView.commit.aiHighlights.insertAria":`Insert aria label`,"gitView.commit.aiHighlights.insertTooltip":`Insert tooltip`,"gitView.commit.aiHighlights.title":`Highlights`,"gitView.commit.commit":`Commit`,"gitView.commit.commitAria":`Commit aria label`,"gitView.commit.committing":`Committing...`,"gitView.commit.generate":`Generate`,"gitView.commit.generateAria":`Generate commit message`,"gitView.commit.messagePlaceholder":`Commit message`,"gitView.commit.push":`Commit & sync`,"gitView.commit.pushAria":`Commit and sync`,"gitView.commit.pushing":`Syncing...`,"gitView.commit.selectFilesHint":`Select files in Changes to enable commit.`,"gitView.commit.stageFilesHint":`Stage files to enable commit.`,"gitView.commit.title":`Commit`,"gitView.common.cancel":`Cancel`,"gitView.common.close":`Close`,"gitView.common.done":`Done`,"gitView.common.processing":`Processing...`,"gitView.common.reset":`Reset`,"gitView.conflict.abortOperation":`Abort {operation}`,"gitView.conflict.conflictedFiles":`Conflicted files:`,"gitView.conflict.continueLater":`Continue later`,"gitView.conflict.detectedDescription":`Resolve the {operation} conflicts to continue.`,"gitView.conflict.detectedTitle":`{operation} conflicts detected`,"gitView.conflict.errorLoadingDetails":`Failed to load conflict details: {message}`,"gitView.conflict.headInfo":`HEAD information:`,"gitView.conflict.loadFailed":`Failed to load conflict details`,"gitView.conflict.loading":`Loading conflict details...`,"gitView.conflict.noActiveSession":`No active session`,"gitView.conflict.noActiveSessionDescription":`Open or create a session to resolve conflicts.`,"gitView.conflict.resolveCurrentSession":`Resolve in current session`,"gitView.conflict.resolveNewSession":`Resolve in new session`,"gitView.empty.cleanDescription":`All changes have been committed`,"gitView.empty.cleanTitle":`Working tree clean`,"gitView.empty.pullBehindPlural":`Pull {count} commits`,"gitView.empty.pullBehindSingle":`Pull {count} commit`,"gitView.header.identityTooltip":`Git identity`,"gitView.header.noIdentity":`No identity`,"gitView.header.noProfiles":`No profiles available to apply.`,"gitView.header.repositoryViews":`Repository views`,"gitView.header.removeRemoteAria":`Remove remote {name}`,"gitView.header.removeRemoteTitle":`Remove remote {name}`,"gitView.header.upstreamSynced":`synced`,"gitView.header.upstreamTooltip":`Compared with {target}.`,"gitView.header.upstreamTooltipTracking":`Compared with {target}. Primary sync badges still reflect {tracking}.`,"gitView.history.actions.cancelButton":`Cancel`,"gitView.history.actions.checkout":`Checkout`,"gitView.history.actions.checkoutConfirm":`Check out this commit as detached HEAD?`,"gitView.history.actions.cherryPick":`Cherry-pick`,"gitView.history.actions.cherryPickConfirm":`Cherry-pick this commit onto the current branch?`,"gitView.history.actions.conflictToastDescription":`Conflicts in: {files}. Resolve manually and commit, or abort with git cherry-pick/revert --abort.`,"gitView.history.actions.conflictToastTitle":`Conflict`,"gitView.history.actions.confirmButton":`Confirm`,"gitView.history.actions.createBranch":`Create branch here`,"gitView.history.actions.createBranchConfirm":`Create`,"gitView.history.actions.createBranchPlaceholder":`Branch name`,"gitView.history.actions.detachedHead":`Checked out (detached HEAD)`,"gitView.history.actions.merge":`Merge into current`,"gitView.history.actions.mergeConfirm":`Merge this commit into the current branch?`,"gitView.history.actions.rebase":`Rebase onto this`,"gitView.history.actions.rebaseConfirm":`Rebase current branch onto this commit?`,"gitView.history.actions.reset":`Reset...`,"gitView.history.actions.resetHard":`Hard — discard all changes`,"gitView.history.actions.resetHardConfirm":`Hard reset — HEAD moves, all uncommitted changes permanently discarded.`,"gitView.history.actions.resetHardConfirmButton":`Discard changes`,"gitView.history.actions.resetMixed":`Mixed — unstage changes`,"gitView.history.actions.resetMixedConfirm":`Mixed reset — HEAD moves, changes unstaged.`,"gitView.history.actions.resetSoft":`Soft — keep staged`,"gitView.history.actions.resetSoftConfirm":`Soft reset — HEAD moves, staged changes preserved.`,"gitView.history.actions.revert":`Revert`,"gitView.history.actions.revertConfirm":`Stage a revert of this commit?`,"gitView.history.binary":`Binary`,"gitView.history.binaryNoDiff":`Binary file — no diff available`,"gitView.history.commitsPlaceholder":`Commits`,"gitView.history.copySha":`Copy SHA`,"gitView.history.diffError":`Failed to load diff. Click to retry.`,"gitView.history.largeDiffDescription":`Rendering may be slow. You can still view the diff by clicking below.`,"gitView.history.largeDiffTitle":`Large diff ({count} changed lines)`,"gitView.history.loadingDiff":`Loading diff...`,"gitView.history.loadingFiles":`Loading files...`,"gitView.history.loadMore":`Load more`,"gitView.history.loadingMore":`Loading...`,"gitView.history.logSize100":`100 commits`,"gitView.history.logSize25":`25 commits`,"gitView.history.logSize50":`50 commits`,"gitView.history.noCommits":`No commits found`,"gitView.history.noFiles":`No files`,"gitView.history.renamedNoDiff":`Renamed file — diff not supported`,"gitView.history.renderDiffAnyway":`Render anyway`,"gitView.history.title":`History`,"gitView.graph.title":`Graph`,"gitView.integrate.checking":`Checking…`,"gitView.integrate.cherryPickAbortedToast":`Cherry-pick aborted`,"gitView.integrate.cherryPickConflictDescription":`Resolve the cherry-pick conflicts to continue.`,"gitView.integrate.cherryPickConflictToast":`Cherry-pick conflicts detected`,"gitView.integrate.cherryPickContinueFailedToast":`Failed to continue cherry-pick`,"gitView.integrate.cherryPickFinishedToast":`Cherry-pick finished`,"gitView.integrate.commitsMovedDescriptionPlural":`Moved {count} commits to {branch}.`,"gitView.integrate.commitsMovedDescriptionSingle":`Moved {count} commit to {branch}.`,"gitView.integrate.commitsMovedToast":`Commits moved`,"gitView.integrate.commitsToMove":`Commits to move`,"gitView.integrate.conflictsInFiles":`Conflicts in files`,"gitView.integrate.currentCommit":`Current commit`,"gitView.integrate.currentSession":`Current session`,"gitView.integrate.failedToMoveToast":`Failed to move commits`,"gitView.integrate.moreFiles":`More files`,"gitView.integrate.move":`Move`,"gitView.integrate.moveCommits":`Move commits`,"gitView.integrate.moving":`Moving…`,"gitView.integrate.newSession":`New session`,"gitView.integrate.noActiveSession":`No active session`,"gitView.integrate.noActiveSessionDescription":`Open or create a session to continue.`,"gitView.integrate.noCommitsToMove":`No commits to move.`,"gitView.integrate.noCommitsToMoveToast":`No commits to move`,"gitView.integrate.previewUnavailable":`Preview unavailable`,"gitView.integrate.showAll":`Show all`,"gitView.integrate.showLess":`Show less`,"gitView.integrate.showingFirstCommits":`Showing first commits`,"gitView.integrate.target":`Target`,"gitView.integrate.title":`Re-integrate commits`,"gitView.integrate.toMoveCount":`To move`,"gitView.operation.abort":`Abort`,"gitView.operation.continue":`Continue`,"gitView.operation.inProgressTitle":`{operation} in progress`,"gitView.operation.merge":`Merge`,"gitView.operation.mergeInProgressWithHead":`Merging {head}`,"gitView.operation.mergingMessage":`Merging: {message}`,"gitView.operation.rebase":`Rebase`,"gitView.operation.rebaseInProgress":`Rebase in progress`,"gitView.operation.rebasingOnto":`Rebasing {headName} onto {onto}`,"gitView.operation.resolveConflictsHint":`Resolve conflicts, then continue the operation.`,"gitView.operation.resolveWithAi":`Resolve with AI`,"gitView.stash.confirmButton":`{operation}`,"gitView.stash.description":`Stash your local changes before starting the {operation}.`,"gitView.stash.mergeWith":`with`,"gitView.stash.rebaseOnto":`onto`,"gitView.stash.restoreAfterOperation":`Restore stashed changes after {operation}`,"gitView.stash.restoreAria":`Restore stashed changes after operation`,"gitView.stash.stepRestore":`Restore your stashed changes`,"gitView.stash.stepStash":`Stash your uncommitted changes`,"gitView.stash.thisWill":`This will:`,"gitView.stash.title":`Uncommitted Changes`,"gitView.stashes.actions.apply":`Apply`,"gitView.stashes.actions.drop":`Drop`,"gitView.stashes.actions.pop":`Pop`,"gitView.stashes.actions.stashCurrent":`Stash current changes`,"gitView.stashes.actions.stashCurrentWithCount":`Stash {count} files`,"gitView.stashes.confirm.drop":`Drop {ref}?`,"gitView.stashes.description":`Save, restore, and clean up Git stashes for this repository.`,"gitView.stashes.empty.list":`No stashes yet.`,"gitView.stashes.empty.search":`No matching stashes.`,"gitView.stashes.includeUntrackedHint":`Untracked files are included automatically.`,"gitView.stashes.fileCount":`{count} files`,"gitView.stashes.fileCountLoading":`counting files...`,"gitView.stashes.itemNumber":`#{number}`,"gitView.stashes.latestLabel":`Latest`,"gitView.stashes.messagePlaceholder":`Stash name`,"gitView.stashes.searchPlaceholder":`Search stashes`,"gitView.stashes.title":`Stashes`,"gitView.stashes.toast.applyFailed":`Failed to apply stash`,"gitView.stashes.toast.applySuccess":`Stash applied`,"gitView.stashes.toast.createFailed":`Failed to stash changes`,"gitView.stashes.toast.created":`Changes stashed`,"gitView.stashes.toast.dropFailed":`Failed to drop stash`,"gitView.stashes.toast.dropSuccess":`Stash dropped`,"gitView.stashes.toast.loadFailed":`Failed to load stashes`,"gitView.stashes.toast.noChanges":`No local changes to stash`,"gitView.stashes.toast.popFailed":`Failed to pop stash`,"gitView.stashes.toast.popSuccess":`Stash popped`,"gitView.stashes.untitled":`Untitled stash`,"gitView.sync.fetch":`Fetch`,"gitView.sync.fetchFromRemote":`Fetch from {name}`,"gitView.sync.fetchTooltip":`Fetch from remote`,"gitView.sync.commitOrStashTooltip":`Commit or stash your changes before syncing`,"gitView.sync.moreActionsAria":`More sync actions`,"gitView.sync.noRemoteTooltip":`No remotes configured`,"gitView.sync.pull":`Pull`,"gitView.sync.pullTooltip":`Pull changes`,"gitView.sync.pullTooltipBehind":`Pull changes ({count} behind)`,"gitView.sync.push":`Push`,"gitView.sync.pushTooltip":`Push changes`,"gitView.sync.pushTooltipAhead":`Push changes ({count} ahead)`,"gitView.sync.sync":`sync`,"gitView.sync.syncChanges":`Sync Changes`,"gitView.sync.syncChangesTooltip":`Sync Changes ({behind} down, {ahead} up)`,"gitView.sync.syncChangesWithCounts":`Sync Changes {behind}↓ {ahead}↑`,"gitView.sync.syncCounts":`{behind}↓ {ahead}↑`,"gitView.branch.actionsUnavailable":`Branch actions unavailable in this repository state`,"gitView.conflict.noDetailsAvailable":`No conflict details available`,"gitView.empty.notGitRepository":`This directory is not a Git repository`,"gitView.empty.notGitRepositoryDescription":`Initialize Git in this directory or open a repository.`,"gitView.empty.selectSessionOrDirectory":`Select a session or directory to view Git status`,"gitView.empty.worktreeFeaturesUnavailable":`Worktree features are unavailable in this workspace mode.`,"gitView.empty.worktreeSetupDescription":`Finishing worktree setup and preparing repository state.`,"gitView.empty.worktreeSetupInProgress":`Worktree setup in progress`,"worktree.bootstrap.toast.failed":`Worktree setup failed`,"worktree.bootstrap.toast.failedDescription":`The worktree was created, but background setup did not finish.`,"worktree.bootstrap.toast.timeoutDescription":`The worktree was created, but background setup timed out.`,"gitView.gitmoji.empty":`No gitmoji found`,"gitView.gitmoji.searchPlaceholder":`Search gitmoji...`,"gitView.gitmoji.title":`Insert gitmoji`,"gitView.history.dialogDescription":`Browse recent commits and inspect changed files.`,"gitView.loading.checkingRepository":`Checking repository...`,"gitView.loading.loading":`Loading...`,"gitView.pr.actions.add":`Add`,"gitView.pr.actions.cancelEditing":`Cancel editing`,"gitView.pr.actions.cancelEditingAria":`Cancel PR editing`,"gitView.pr.actions.createPr":`Create PR`,"gitView.pr.actions.edit":`Edit`,"gitView.pr.actions.editPr":`Edit PR`,"gitView.pr.actions.editPrAria":`Edit pull request`,"gitView.pr.actions.hide":`Hide`,"gitView.pr.actions.markReady":`Mark ready`,"gitView.pr.actions.markReadyAria":`Mark pull request ready for review`,"gitView.pr.actions.mergePr":`Merge PR`,"gitView.pr.actions.mergePrAria":`Merge pull request`,"gitView.pr.actions.openChecks":`Open checks`,"gitView.pr.actions.openChecksAria":`Open failed checks`,"gitView.pr.actions.openComments":`Open comments`,"gitView.pr.actions.openCommentsAria":`Open pull request comments`,"gitView.pr.actions.openOnGitHub":`Open on GitHub`,"gitView.pr.actions.openOnGitHubAria":`Open pull request on GitHub`,"gitView.pr.actions.openSettings":`Open settings`,"gitView.pr.actions.repo":`Repository`,"gitView.pr.actions.resolveFailedChecks":`Resolve failed checks`,"gitView.pr.actions.resolveFailedChecksAria":`Send failed checks to agent`,"gitView.pr.actions.savePr":`Save PR`,"gitView.pr.actions.savePrAria":`Save pull request changes`,"gitView.pr.actions.sendCommentToAgent":`Send comment to agent`,"gitView.pr.actions.sendCommentToAgentAria":`Send this comment to agent`,"gitView.pr.actions.sendToAgent":`Send to agent`,"gitView.pr.actions.shareComments":`Share comments`,"gitView.pr.actions.shareCommentsAria":`Send pull request comments to agent`,"gitView.pr.actions.toggleDraftAria":`Toggle draft state`,"gitView.pr.actions.refresh":`Refresh PR status`,"gitView.pr.actions.refreshAria":`Refresh pull request status`,"gitView.pr.additionalContext.added":`Added`,"gitView.pr.additionalContext.hint":`Add extra context for better review quality.`,"gitView.pr.additionalContext.optional":`Optional`,"gitView.pr.additionalContext.title":`Additional context`,"gitView.pr.checkDetails.empty":`No check details available`,"gitView.pr.checkDetails.title":`Failed check details`,"gitView.pr.checkingStatus":`Checking pull request status...`,"gitView.pr.checks.label":`checks`,"gitView.pr.checks.completedLabel":`Completed`,"gitView.pr.checks.conclusionLabel":`Conclusion`,"gitView.pr.checks.startedLabel":`Started`,"gitView.pr.checks.statusLabel":`Status`,"gitView.pr.checks.stepLabel":`Step`,"gitView.pr.checks.steps":`Steps`,"gitView.pr.comments.empty":`No comments found`,"gitView.pr.comments.generalContext":`General comment`,"gitView.pr.comments.reviewContext":`Review comment`,"gitView.pr.comments.title":`Comments`,"gitView.pr.comments.unknownAuthor":`Unknown author`,"gitView.pr.createTitle":`Create pull request`,"gitView.pr.draftMustBeReady":`Draft PR must be marked ready before merge.`,"gitView.pr.field.baseBranch":`Base branch`,"gitView.pr.field.description":`Description`,"gitView.pr.field.draft":`Draft`,"gitView.pr.field.title":`Title`,"gitView.pr.githubNotConnected":`GitHub is not connected`,"gitView.pr.loadingDescription":`Loading description...`,"gitView.pr.mergeMethod.merge":`Create a merge commit`,"gitView.pr.mergeMethod.rebase":`Rebase and merge`,"gitView.pr.mergeMethod.squash":`Squash and merge`,"gitView.pr.noDescription":`No description`,"gitView.pr.noMergePermission":`You do not have permission to merge this pull request.`,"gitView.pr.notMergeable":`Not mergeable`,"gitView.pr.numberLabel":`PR #{number}`,"gitView.pr.placeholder.additionalContext":`Any constraints, rollout notes, or reviewer context...`,"gitView.pr.placeholder.description":`Describe the change...`,"gitView.pr.placeholder.main":`Summarize your pull request`,"gitView.pr.placeholder.selectBaseBranch":`Select base branch`,"gitView.pr.placeholder.title":`Pull request title`,"gitView.pr.placeholder.whatChanged":`What changed and why?`,"gitView.pr.statusUnavailable":`Pull request status unavailable`,"gitView.pr.toast.baseBranchRequired":`Select a base branch`,"gitView.pr.toast.baseMustDifferFromHead":`Base branch must differ from current branch`,"gitView.pr.toast.createPrFailed":`Failed to create pull request`,"gitView.pr.toast.generateDescriptionFailed":`Failed to generate pull request description`,"gitView.pr.toast.githubApiUnavailable":`GitHub API is unavailable`,"gitView.pr.toast.loadCheckDetailsFailed":`Failed to load check details`,"gitView.pr.toast.loadChecksFailed":`Failed to load pull request checks`,"gitView.pr.toast.loadCommentsFailed":`Failed to load comments`,"gitView.pr.toast.loadPrCommentsFailed":`Failed to load pull request comments`,"gitView.pr.toast.markReadyFailed":`Failed to mark pull request ready`,"gitView.pr.toast.markedReady":`Pull request marked ready for review`,"gitView.pr.toast.mergeFailed":`Failed to merge pull request`,"gitView.pr.toast.noActiveSession":`No active chat session`,"gitView.pr.toast.noActiveSessionDescription":`Open or create a chat session to send context to an agent.`,"gitView.pr.toast.noFailedChecks":`No failed checks found`,"gitView.pr.toast.noModelSelected":`Select a model first`,"gitView.pr.toast.noPrComments":`No pull request comments found`,"gitView.pr.toast.prCreated":`Pull request created`,"gitView.pr.toast.prMerged":`Pull request merged`,"gitView.pr.toast.prNotMerged":`Pull request was not merged`,"gitView.pr.toast.prUpdated":`Pull request updated`,"gitView.pr.toast.sendMessageFailed":`Failed to send message to agent`,"gitView.pr.toast.titleRequired":`Title is required`,"gitView.pr.toast.updatePrFailed":`Failed to update pull request`,"gitView.pullRequest.createHint":`Create and manage pull requests from this branch.`,"gitView.pullRequest.availableOnFeatureBranches":`Available when the current branch can open a pull request.`,"gitView.pullRequest.title":`Pull request`,"gitView.tabs.commit":`Commit`,"gitView.tabs.pr":`PR`,"gitView.tabs.update":`Update`,"gitView.tabs.worktree":`Worktree`,"gitView.toast.abortOperationFailed":`Failed to abort operation`,"gitView.toast.appliedIdentity":`Applied identity: {name}`,"gitView.toast.applyIdentityFailed":`Failed to apply identity`,"gitView.toast.branchCreatedLocally":`Branch created locally, but failed to set upstream.`,"gitView.toast.cannotCheckout":`Cannot checkout branch: {reason}`,"gitView.toast.cannotCreateBranch":`Cannot create branch: {reason}`,"gitView.toast.cannotRemoveOriginRemote":`Cannot remove the origin remote`,"gitView.toast.cannotRenameBranch":`Cannot rename branch: {reason}`,"gitView.toast.checkedOut":`Checked out {name}`,"gitView.toast.checkoutFailed":`Failed to checkout {name}`,"gitView.toast.commitCreated":`Commit created`,"gitView.toast.commitHashCopied":`Commit hash copied`,"gitView.toast.continueOperationFailed":`Failed to continue operation`,"gitView.toast.copyFailed":`Failed to copy`,"gitView.toast.createBranchFailed":`Failed to create branch`,"gitView.toast.createCommitFailed":`Failed to create commit`,"gitView.toast.createdBranch":`Created branch {name}`,"gitView.toast.enterCommitMessage":`Enter a commit message`,"gitView.toast.fetchedFromRemote":`Fetched from {name}`,"gitView.toast.generateCommitMessageFailed":`Failed to generate commit message`,"gitView.toast.mergeAborted":`Merge aborted`,"gitView.toast.mergeCompleted":`Merge completed`,"gitView.toast.mergeConflictsDetected":`Merge conflicts detected`,"gitView.toast.mergedIntoBranch":`Merged {branch} into {currentBranch}`,"gitView.toast.pulledFilesPlural":`Pulled {count} files from {name}`,"gitView.toast.pulledFilesSingle":`Pulled {count} file from {name}`,"gitView.toast.pushedToUpstream":`Pushed to {name}`,"gitView.toast.commitOrStashBeforeSync":`Commit or stash your changes before syncing`,"gitView.toast.alreadyUpToDate":`Already up to date`,"gitView.toast.syncedPulledPluralAndPushed":`Pulled {count} files from {name} and pushed to upstream`,"gitView.toast.syncedPulledSingleAndPushed":`Pulled {count} file from {name} and pushed to upstream`,"gitView.toast.syncedChanges":`Synced changes`,"gitView.toast.rebaseAborted":`Rebase aborted`,"gitView.toast.rebaseConflictsDetected":`Rebase conflicts detected`,"gitView.toast.rebaseStepCompleted":`Rebase step completed`,"gitView.toast.rebasedOntoBranch":`Rebased {currentBranch} onto {branch}`,"gitView.toast.refreshRepositoryFailed":`Failed to refresh repository`,"gitView.toast.remoteNameRequired":`Remote name is required`,"gitView.toast.removedRemote":`Removed remote {name}`,"gitView.toast.renameBranchFailed":`Failed to rename {oldName} to {newName}`,"gitView.toast.renamedBranch":`Renamed {oldName} to {newName}`,"gitView.toast.restoreStashFailed":`Failed to restore stash`,"gitView.toast.restoreStashManually":`Stash restored manually required`,"gitView.toast.revertFailed":`Failed to revert changes`,"gitView.toast.revertedFile":`Reverted {path}`,"gitView.toast.revertedFilesPlural":`Reverted {count} files`,"gitView.toast.revertedFilesSingle":`Reverted {count} file`,"gitView.toast.revertedSomePlural":`Reverted {success} files, {failed} failed`,"gitView.toast.revertedSomeSingle":`Reverted {success} file, {failed} failed`,"gitView.toast.stageFileFailed":`Failed to stage changes`,"gitView.toast.stageFileToCommit":`Stage at least one file to commit`,"gitView.toast.stageFileToDescribe":`Stage at least one file to describe`,"gitView.toast.selectFileToCommit":`Select at least one file to commit`,"gitView.toast.selectFileToDescribe":`Select at least one file to describe`,"gitView.toast.stashedRestored":`Stashed changes restored`,"gitView.toast.syncActionFailed":`{action} failed`,"gitView.toast.unstageFileFailed":`Failed to unstage changes`,"gitView.toast.upstreamSet":`Set upstream for {branch} to {remote}`,"gitView.worktree.availableInWorktreeMode":`Available only in worktree mode`,"contextPanel.mode.chat":`Chat`,"contextPanel.mode.files":`Files`,"contextPanel.mode.diff":`Changes`,"contextPanel.mode.stagedDiff":`Staged Diff`,"contextPanel.mode.workingDiff":`Working Diff`,"contextPanel.mode.plan":`Plan`,"contextPanel.mode.context":`Context`,"contextPanel.mode.preview":`Preview`,"contextPanel.mode.browser":`Browser`,"contextPanel.browser.open":`Open browser panel`,"contextPanel.browser.addressAria":`Browser address`,"contextPanel.browser.empty":`Web browser`,"contextPanel.browser.emptyHint":`Enter an address above to start browsing the web`,"contextPanel.browser.inspectUnavailable":`This page cannot be inspected from the browser panel.`,"contextPanel.browser.trustNotice":`Pages opened here run with full access to OpenChamber — needed for inspect and screenshots. Only open sites you trust: a malicious page could read your data or act on your behalf.`,"contextPanel.file.notice.turnDiffOutsideWorkspace":`Turn diff is unavailable outside the project. Showing the current file instead.`,"contextPanel.tab.closeTabAria":`Close {label} tab`,"contextPanel.actions.collapsePanel":`Collapse panel`,"contextPanel.actions.expandPanel":`Expand panel`,"contextPanel.actions.closePanel":`Close panel`,"contextPanel.actions.resizePanelAria":`Resize context panel`,"contextPanel.iframe.sessionChatTitle":`Session chat {sessionID}`,"contextPanel.preview.actions.reload":`Reload preview`,"contextPanel.preview.actions.openExternal":`Open in browser`,"contextPanel.preview.actions.retry":`Retry`,"contextPanel.preview.iframeTitle":`Preview`,"contextPanel.preview.invalidUrl":`Preview needs a valid http(s) URL.`,"contextPanel.preview.empty":`No preview URL`,"contextPanel.preview.loading":`Connecting preview proxy...`,"contextPanel.preview.proxyError":`Could not start preview proxy.`,"contextPanel.preview.upstreamUnreachable":`Dev server is not responding.`,"contextPanel.preview.upstreamUnreachableHint":`Make sure your dev server is still running, then retry.`,"contextPanel.preview.startingServer":`Starting dev server...`,"contextPanel.preview.startingServerHint":`Waiting for the server to accept connections.`,"contextPanel.preview.title":`Preview`,"contextPanel.preview.description":`Use Project Actions or a terminal Preview button to open a preview.`,"contextPanel.preview.startPreview":`Start Preview`,"contextPanel.preview.starting":`Starting...`,"contextPanel.preview.noDevServer":`No dev server command found. Configure a project action or add a "dev" script to package.json.`,"contextPanel.preview.startFailed":`Failed to start preview server.`,"contextPanel.preview.serverExited":`Dev server exited unexpectedly.`,"contextPanel.preview.noUrlDetected":`Dev server started, but no URL was detected in its output. Open the Preview terminal tab to check logs.`,"contextPanel.preview.serverExitedWithLog":`Dev server exited unexpectedly. Last output:
8
8
 
9
9
  {log}`,"contextPanel.preview.noUrlDetectedWithLog":`Dev server did not become reachable. Last output:
10
10
 
11
- {log}`,"contextPanel.preview.console.open":`Open preview console`,"contextPanel.preview.console.waiting":`Waiting for preview console`,"contextPanel.preview.console.title":`Preview console`,"contextPanel.preview.console.attach":`Attach`,"contextPanel.preview.console.copy":`Copy`,"contextPanel.preview.console.clear":`Clear`,"contextPanel.preview.console.empty":`No preview console events yet.`,"contextPanel.preview.console.noFilteredEvents":`No events match this filter.`,"contextPanel.preview.console.runtimeError":`Runtime error`,"contextPanel.preview.console.copied":`Preview console copied`,"contextPanel.preview.console.copyFailed":`Failed to copy preview console`,"contextPanel.preview.console.attached":`Preview console attached to chat`,"contextPanel.preview.console.attachNoSession":`Open a chat session before attaching preview logs`,"contextPanel.preview.console.attachAnnotation":`These are browser console logs from the dev server running for this project.`,"contextPanel.preview.inspect.toggle":`Inspect preview element`,"contextPanel.preview.inspect.attached":`Preview annotation attached to chat`,"contextPanel.preview.inspect.attachNoSession":`Open a chat session before attaching preview annotations`,"contextPanel.preview.inspect.attachAnnotation":`This is a selected DOM element from the in-app preview.`,"contextPanel.preview.inspect.attachAnnotationWithScreenshot":`This is a selected DOM element from the in-app preview. A screenshot of the visible preview area with the selected element highlighted is attached.`,"contextPanel.preview.console.filter.all":`All`,"contextPanel.preview.console.filter.errors":`Errors`,"contextPanel.preview.console.filter.warnings":`Warnings`,"contextPanel.preview.console.filter.logs":`Logs`,"terminalView.preview.open":`Preview`,"terminalView.preview.openTitle":`Open preview pane`,"sidebarFilesTree.menu.rename":`Rename`,"sidebarFilesTree.menu.copyPath":`Copy Path`,"sidebarFilesTree.menu.save":`Save`,"sidebarFilesTree.menu.newFile":`New File`,"sidebarFilesTree.menu.newFolder":`New Folder`,"sidebarFilesTree.menu.delete":`Delete`,"sidebarFilesTree.toast.pathCopied":`Path copied`,"sidebarFilesTree.toast.copyFailed":`Copy failed`,"sidebarFilesTree.toast.revealFailed":`Failed to reveal path`,"sidebarFilesTree.toast.filenameRequired":`Filename is required`,"sidebarFilesTree.toast.writeNotSupported":`Write not supported`,"sidebarFilesTree.toast.fileCreated":`File created`,"sidebarFilesTree.toast.operationFailed":`Operation failed`,"sidebarFilesTree.toast.folderNameRequired":`Folder name is required`,"sidebarFilesTree.toast.folderCreated":`Folder created`,"sidebarFilesTree.toast.nameRequired":`Name is required`,"sidebarFilesTree.toast.renameNotSupported":`Rename not supported`,"sidebarFilesTree.toast.renamedSuccessfully":`Renamed successfully`,"sidebarFilesTree.toast.deleteNotSupported":`Delete not supported`,"sidebarFilesTree.toast.deletedSuccessfully":`Deleted successfully`,"sidebarFilesTree.search.placeholder":`Search files...`,"sidebarFilesTree.search.clearAria":`Clear search`,"sidebarFilesTree.actions.newFileTitle":`New File`,"sidebarFilesTree.actions.newFolderTitle":`New Folder`,"sidebarFilesTree.actions.refreshTitle":`Refresh`,"sidebarFilesTree.actions.collapseAllTitle":`Collapse all`,"sidebarFilesTree.actions.expandAllTitle":`Expand all`,"sidebarFilesTree.actions.fileMenuTitle":`File menu`,"sidebarFilesTree.state.searching":`Searching...`,"sidebarFilesTree.state.loading":`Loading...`,"sidebarFilesTree.dialog.createFile.title":`Create File`,"sidebarFilesTree.dialog.createFolder.title":`Create Folder`,"sidebarFilesTree.dialog.rename.title":`Rename`,"sidebarFilesTree.dialog.delete.title":`Delete`,"sidebarFilesTree.dialog.createFile.description":`Create a new file in {path}`,"sidebarFilesTree.dialog.createFolder.description":`Create a new folder in {path}`,"sidebarFilesTree.dialog.rename.description":`Rename {name}`,"sidebarFilesTree.dialog.delete.description":`Are you sure you want to delete {name}? This action cannot be undone.`,"sidebarFilesTree.dialog.rootFallback":`root`,"sidebarFilesTree.dialog.rename.placeholder":`New name`,"sidebarFilesTree.dialog.namePlaceholder":`Name`,"sidebarFilesTree.dialog.cancel":`Cancel`,"sidebarFilesTree.dialog.confirm":`Confirm`,"sidebarFilesTree.dialog.delete.confirm":`Delete`,"filesView.dialog.createFile.title":`Create File`,"filesView.dialog.createFolder.title":`Create Folder`,"filesView.dialog.rename.title":`Rename`,"filesView.dialog.delete.title":`Delete`,"filesView.dialog.createFile.description":`Create a new file in {path}`,"filesView.dialog.createFolder.description":`Create a new folder in {path}`,"filesView.dialog.rename.description":`Rename {name}`,"filesView.dialog.delete.description":`Are you sure you want to delete {name}? This action cannot be undone.`,"filesView.dialog.rootFallback":`root`,"filesView.dialog.rename.placeholder":`New name`,"filesView.dialog.namePlaceholder":`Name`,"filesView.dialog.cancel":`Cancel`,"filesView.dialog.confirm":`Confirm`,"filesView.dialog.delete.confirm":`Delete`,"filesView.editor.saving":`Saving...`,"filesView.editor.saved":`Saved`,"filesView.editor.autoSaveOn":`Auto-save on`,"filesView.editor.manualSave":`Manual save`,"filesView.editor.saveNowTitle":`Save now ({shortcut}) - auto-saves after 1.5s`,"filesView.editor.saveNowManualTitle":`Save now ({shortcut})`,"filesView.editor.saveAria":`Save ({shortcut})`,"filesView.editor.openInDesktopApp":`Open in desktop app`,"filesView.editor.refreshApps":`Refresh Apps`,"filesView.editor.disableLineWrap":`Disable line wrap`,"filesView.editor.enableLineWrap":`Enable line wrap`,"filesView.editor.findInFile":`Find in file`,"filesView.editor.goToLine":`Go to line`,"filesView.editor.switchToEditMode":`Switch to edit mode`,"filesView.editor.switchToPreviewMode":`Switch to preview mode`,"filesView.editor.switchToTextView":`Switch to Text View`,"filesView.editor.switchToTreeView":`Switch to Tree View`,"filesView.toast.copyFailed":`Copy failed`,"filesView.toast.openInAppFailed":`Failed to open in {app}`,"filesView.toast.savingNotSupported":`Saving not supported`,"filesView.toast.writeFileFailed":`Failed to write file`,"filesView.toast.saveFailed":`Save failed`,"filesView.editor.copyFileContents":`Copy file contents`,"filesView.editor.copyFilePathTitle":`Copy file path ({path})`,"filesView.editor.saveFile":`Save file`,"filesView.editor.exitFullscreen":`Exit fullscreen`,"filesView.editor.fullscreen":`Fullscreen`,"filesView.unsaved.title":`Unsaved changes`,"filesView.unsaved.description":`Save your edits before continuing?`,"filesView.unsaved.saveChanges":`Save changes`,"filesView.unsaved.discard":`Discard`,"filesView.editor.back":`Back`,"filesView.editor.openFilesAria":`Open files`,"filesView.editor.closeFileAria":`Close {name}`,"filesView.editor.selectFile":`Select a file`,"filesView.editor.showControlsAria":`Show editor controls`,"filesView.editor.controlsTitle":`Editor controls`,"filesView.editor.pickFileFromTree":`Pick a file from the tree.`,"filesView.state.loading":`Loading...`,"filesView.state.openingFileAtChange":`Opening file at change...`,"filesView.tree.search.placeholder":`Search files...`,"filesView.tree.search.clearAria":`Clear search`,"filesView.tree.search.searching":`Searching...`,"filesView.tree.actions.newFileTitle":`New File`,"filesView.tree.actions.newFolderTitle":`New Folder`,"filesView.tree.actions.refreshTitle":`Refresh`,"filesView.editor.imageAltFallback":`Image`,"filesView.error.jsonViewerUnavailable":`JSON viewer unavailable`,"filesView.error.switchToTextMode":`Switch to text mode to view raw content.`,"filesView.warning.largeFilePreviewLimited":`This file is large ({sizeKb}KB). Preview may be limited.`,"filesView.error.previewUnavailable":`Preview unavailable`,"filesView.error.switchToEditMode":`Switch to edit mode to fix the issue.`,"filesView.error.readFileFailed":`Failed to read file`,"filesView.editor.htmlPreviewTitle":`HTML Preview`,"filesView.diagram.closeDiagramView":`Close diagram view`,"filesView.diagram.saveDiagram":`Save diagram`,"contextUsage.aria.label":`Context usage`,"contextUsage.mobile.title":`Context Usage`,"contextUsage.mobile.usedTokens":`Used tokens`,"contextUsage.mobile.contextLimit":`Context limit`,"contextUsage.mobile.outputLimit":`Output limit`,"contextUsage.mobile.usage":`Usage`,"contextUsage.tooltip.usage":`Usage: {percent}`,"contextUsage.tooltip.usedOfLimit":`{used} / {limit}`,"contextUsage.tooltip.usedTokens":`Used tokens: {tokens}`,"contextUsage.tooltip.contextLimit":`Context limit: {tokens}`,"contextUsage.tooltip.outputLimit":`Output limit: {tokens}`,"contextSidebar.session.untitled":`Untitled Session`,"contextSidebar.empty.openSession":`Open a session to inspect context.`,"contextSidebar.section.context":`Context`,"contextSidebar.section.lastAssistantMessage":`Last Assistant Message`,"contextSidebar.section.rawMessages":`Raw Messages`,"contextSidebar.context.percentUsed":`{percent}% used`,"contextSidebar.breakdown.user":`User`,"contextSidebar.breakdown.assistant":`Assistant`,"contextSidebar.breakdown.toolCalls":`Tool Calls`,"contextSidebar.breakdown.other":`Other`,"contextSidebar.stats.messages":`Messages`,"contextSidebar.stats.user":`User`,"contextSidebar.stats.assistant":`Assistant`,"contextSidebar.stats.cost":`Cost`,"contextSidebar.stats.sessionTps":`Session TPS`,"contextSidebar.tokens.input":`Input`,"contextSidebar.tokens.output":`Output`,"contextSidebar.tokens.reasoning":`Reasoning`,"contextSidebar.tokens.cacheRead":`Cache Read`,"contextSidebar.tokens.cacheWrite":`Cache Write`,"contextSidebar.tokens.cacheHit":`Cache Hit`,"contextSidebar.tokens.tps":`TPS`,"contextSidebar.actions.copyJson":`Copy JSON`,"contextSidebar.actions.copy":`Copy`,"contextSidebar.actions.copied":`Copied`,"planView.file.defaultName":`plan`,"planView.title.default":`Plan`,"planView.error.saveFailed":`Save failed`,"planView.error.previewUnavailable":`Preview unavailable`,"planView.error.switchToEditMode":`Switch to edit mode to fix the issue.`,"planView.error.writeFailed":`Write failed`,"planView.error.writePlanFileFailed":`Failed to write plan file ({status})`,"planView.actions.improvePlanAria":`Improve plan`,"planView.actions.improve":`Improve`,"planView.actions.implementPlanAria":`Implement plan`,"planView.actions.implement":`Implement`,"planView.actions.sendToNewSession":`Send to new session`,"planView.actions.sendToNewWorktreeSession":`Send to new worktree session`,"planView.actions.copyPlanContents":`Copy plan contents`,"planView.state.loading":`Loading...`,"diffView.binary.unavailable":`Content of this file cannot be viewed.`,"diffView.change.untracked":`Untracked file`,"diffView.change.new":`New file`,"diffView.change.deleted":`Deleted file`,"diffView.change.renamed":`Renamed file`,"diffView.change.copied":`Copied file`,"diffView.change.modified":`Modified file`,"diffView.selector.selectFile":`Select file`,"diffView.image.original":`Original`,"diffView.image.modified":`Modified`,"diffView.image.new":`New`,"diffView.image.originalAlt":`Original: {path}`,"diffView.image.modifiedAlt":`Modified: {path}`,"diffView.section.files":`Files`,"diffView.state.selectSessionDirectory":`Select a session directory to view diffs`,"diffView.state.loadingRepositoryStatus":`Loading repository status...`,"diffView.state.notGitRepository":`Not a git repository. Use the Git tab to initialize or change directories.`,"diffView.state.cleanWorkingTree":`Working tree clean, no changes to display`,"diffView.state.noLastTurnChanges":`No last turn changes to display`,"diffView.state.failedToLoadDiff":`Failed to load diff`,"diffView.state.loadingDiff":`Loading diff...`,"diffView.state.loadingChanges":`Loading changes...`,"diffView.state.largeDiff":`Large diff ({count} changed lines)`,"diffView.state.largeDiffDescription":`Rendering may be slow. You can still view the diff by clicking below.`,"diffView.summary.changedFilesSingle":`{count} file changed`,"diffView.summary.changedFilesPlural":`{count} files changed`,"diffView.scope.changed":`Changed`,"diffView.scope.staged":`Staged`,"diffView.scope.lastTurn":`Last turn`,"diffView.scope.selectorAria":`Select change mode`,"diffView.actions.retry":`Retry`,"diffView.actions.renderAnyway":`Render anyway`,"diffView.actions.expandAll":`Expand all`,"diffView.actions.collapseAll":`Collapse all`,"diffView.actions.loadFullFiles":`Load full files`,"diffView.actions.disableFullFiles":`Unload full files`,"diffView.actions.disableLineWrap":`Disable line wrap`,"diffView.actions.enableLineWrap":`Enable line wrap`,"diffView.actions.openFileInEditorAtChange":`Open this file in editor at change`,"diffView.actions.openFileAtFirstChangedLine":`Open this file at first changed line`,"diffView.actions.review":`Review`,"diffView.actions.reviewAria":`Review changes`,"diffView.reviewDialog.title":`Review changes`,"diffView.reviewDialog.description":`Start a separate review session for the current changes.`,"diffView.reviewDialog.generateHandoff":`Generate handoff`,"diffView.reviewDialog.autoReview":`Run automatic review loop`,"diffView.reviewDialog.info":`This flow works best when started from the session where the changes were implemented.`,"diffView.reviewDialog.actions.cancel":`Cancel`,"diffView.reviewDialog.actions.start":`Review`,"diffView.reviewDialog.actions.starting":`Starting...`,"diffView.reviewDialog.toast.noSessionDirectory":`Session directory is unavailable`,"diffView.reviewDialog.toast.startFailed":`Failed to start review flow`,"chat.history.loadOlder":`Load older messages`,"chat.history.loadingMore":`Loading more…`,"chat.history.loadOlderFailed":`Could not load older messages. Try again.`,"chat.history.loadOlderTimeout":`Loading older messages timed out. Try again.`,"chat.history.loadFailedTitle":`Unable to load this conversation`,"chat.history.loadFailedDescription":`The conversation is still available. Try loading it again.`,"chat.history.retry":`Try again`,"chat.autoReview.title":`Code review loop is running`,"chat.autoReview.status.waitingForReviewer":`Waiting for reviewer`,"chat.autoReview.status.waitingForImplementer":`Waiting for implementer`,"chat.autoReview.reviewSessionLabel":`Review session`,"chat.autoReview.actions.open":`Open`,"chat.autoReview.actions.stop":`Stop`,"diffView.hunk.label":`Hunks`,"diffView.hunk.stage":`Stage`,"diffView.hunk.unstage":`Unstage`,"diffView.hunk.discard":`Discard`,"diffView.hunk.stageTitle":`Stage hunk {index}`,"diffView.hunk.unstageTitle":`Unstage hunk {index}`,"diffView.hunk.discardTitle":`Discard hunk {index}`,"diffView.hunk.unavailable":`This hunk is no longer available. Refresh the diff and try again.`,"diffView.hunk.unsupported":`Staging individual hunks is not supported in this runtime.`,"rightSidebar.contextNotesTodo.plan.defaultTitle":`Plan`,"rightSidebar.contextNotesTodo.empty.selectProject":`Select a project to add notes and todos.`,"rightSidebar.contextNotesTodo.notes.title":`Quick notes - {project}`,"rightSidebar.contextNotesTodo.notes.placeholder":`Capture context, reminders, or links`,"rightSidebar.contextNotesTodo.todo.title":`Todo`,"rightSidebar.contextNotesTodo.todo.itemsSingle":`{count} item`,"rightSidebar.contextNotesTodo.todo.itemsPlural":`{count} items`,"rightSidebar.contextNotesTodo.todo.clearCompleted":`Clear completed`,"rightSidebar.contextNotesTodo.todo.inputPlaceholder":`Add a todo`,"rightSidebar.contextNotesTodo.todo.addAria":`Add todo`,"rightSidebar.contextNotesTodo.todo.empty":`No todos yet. Add a small checklist for this project.`,"rightSidebar.contextNotesTodo.todo.actions.markComplete":`Mark "{text}" complete`,"rightSidebar.contextNotesTodo.todo.actions.collapse":`Collapse todo "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.expand":`Expand todo "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.delete":`Delete "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.send":`Send "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.reorder":`Reorder "{text}"`,"rightSidebar.contextNotesTodo.todo.resizeAria":`Resize todo list`,"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession":`Send to current session`,"rightSidebar.contextNotesTodo.todo.sendMenu.newSession":`Send to new session`,"rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession":`Send to new worktree session`,"rightSidebar.contextNotesTodo.plans.title":`Plans`,"rightSidebar.contextNotesTodo.plans.filesSingle":`{count} file`,"rightSidebar.contextNotesTodo.plans.filesPlural":`{count} files`,"rightSidebar.contextNotesTodo.plans.importFromFile":`Import plan from file`,"rightSidebar.contextNotesTodo.plans.empty":`No saved plans yet.`,"rightSidebar.contextNotesTodo.plans.deletePlan":`Delete plan`,"rightSidebar.contextNotesTodo.plans.deletePlanWithTitle":`Delete plan "{title}"`,"rightSidebar.contextNotesTodo.sendDialog.title.newSession":`Send to new session`,"rightSidebar.contextNotesTodo.sendDialog.title.newWorktree":`Send to new worktree`,"rightSidebar.contextNotesTodo.sendDialog.variant.default":`Default`,"rightSidebar.contextNotesTodo.sendDialog.actions.cancel":`Cancel`,"rightSidebar.contextNotesTodo.sendDialog.actions.send":`Send`,"rightSidebar.contextNotesTodo.sendDialog.actions.sending":`Sending`,"rightSidebar.contextNotesTodo.toast.saveNotesFailed":`Failed to save project notes`,"rightSidebar.contextNotesTodo.toast.loadNotesFailed":`Failed to load project notes`,"rightSidebar.contextNotesTodo.toast.noActiveSession":`No active session selected`,"rightSidebar.contextNotesTodo.toast.sentToCurrentSession":`Todo sent to current session`,"rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo":`Worktree actions are only available for Git repositories`,"rightSidebar.contextNotesTodo.toast.createSessionFailed":`Failed to create session`,"rightSidebar.contextNotesTodo.toast.sentToNewSession":`Todo sent to new session`,"rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession":`Todo sent to new worktree session`,"rightSidebar.contextNotesTodo.toast.sendTodoFailed":`Failed to send todo`,"rightSidebar.contextNotesTodo.toast.deletePlanFailed":`Failed to delete plan`,"rightSidebar.contextNotesTodo.toast.planFileEmpty":`Plan file is empty`,"rightSidebar.contextNotesTodo.toast.importPlanFailed":`Failed to import plan`,"rightSidebar.contextNotesTodo.toast.planImported":`Plan imported`,"rightSidebar.contextNotesTodo.toast.readPlanFileFailed":`Failed to read plan file`,"inlineComment.range.lines":`Lines {start}-{end}`,"inlineComment.input.placeholder":`Add a comment... (Cmd+Enter to save)`,"inlineComment.input.placeholderShort":`Add a comment...`,"inlineComment.actions.cancel":`Cancel`,"inlineComment.actions.save":`Save`,"inlineComment.actions.comment":`Comment`,"inlineComment.actions.showLess":`Show less`,"inlineComment.actions.showMore":`Show more`,"inlineComment.actions.editComment":`Edit comment`,"inlineComment.actions.deleteComment":`Delete comment`,"inlineComment.toast.selectSessionToSave":`Select a session to save comment`,"header.github.connectedWithLogin":`GitHub: {login}`,"header.github.connected":`GitHub connected`,"header.github.avatarWithLogin":`{login} avatar`,"header.github.avatar":`GitHub avatar`,"header.github.accountsTitle":`GitHub Accounts`,"header.github.accountSource.oauth":`OAuth`,"header.github.accountSource.cli":`CLI`,"header.services.openWithCurrent":`Switch instance (current: {current})`,"header.services.open":`Switch instance`,"header.services.tooltip.currentInstanceWithShortcuts":`Switch instance: {current} ({toggle}; next tab {nextTab})`,"header.services.tooltip.servicesWithShortcuts":`Switch instance ({toggle}; next tab {nextTab})`,"header.services.title":`Switch instance`,"header.services.viewAria":`Switch instance`,"header.services.closeAria":`Close instance switcher`,"header.services.rateLimits":`Rate limits`,"header.services.refreshRateLimitsAria":`Refresh rate limits`,"header.services.noRateLimits":`No rate limits available.`,"header.services.noRateLimitsReported":`No rate limits reported.`,"header.services.remoteUpdate.title":`Remote instance update`,"header.services.remoteUpdate.checking":`Looking for updates...`,"header.services.remoteUpdate.upToDate":`This instance is up to date.`,"header.services.remoteUpdate.available":`Version {version} is available for this instance.`,"header.services.remoteUpdate.error":`Failed to check remote instance updates`,"header.services.remoteUpdate.actions.open":`Update`,"header.services.used":`Used`,"header.services.remaining":`Remaining`,"header.services.modelFamily.other":`Other`,"header.services.shutdownDev":`Stop OpenChamber`,"header.actions.openPlanAria":`Open plan`,"header.actions.toggleChangesPanel":`Changes panel`,"header.actions.toggleChangesPanelAria":`Toggle changes panel`,"header.actions.sessionMenu":`Session actions`,"header.actions.sessionMenuAria":`Open session actions menu`,"header.actions.sessionMenu.servicesWithInstance":`Switch instance ({current})`,"header.actions.sessionMenu.viewUsage":`View usage`,"header.actions.planWithShortcut":`Plan ({shortcut})`,"header.actions.terminalPanelWithShortcut":`Terminal panel ({shortcut})`,"chat.recap.aria":`Session recap`,"chat.recap.label":`Recap:`,"chat.goal.dialog.titleCreate":`Set Session Goal`,"chat.goal.dialog.titleManage":`Session Goal`,"chat.goal.dialog.objectiveLabel":`Objective`,"chat.goal.dialog.objectivePlaceholder":`Describe the end state the agent should reach and verify…`,"chat.goal.dialog.budgetLabel":`Token budget`,"chat.goal.status.active":`Active`,"chat.goal.status.evaluating":`Evaluating…`,"chat.goal.status.paused":`Paused`,"chat.goal.status.blocked":`Blocked`,"chat.goal.status.budgetLimited":`Budget reached`,"chat.goal.status.complete":`Complete`,"chat.goal.usage.tokens":`{used}`,"chat.goal.usage.tokensWithBudget":`{used}/{budget}`,"chat.goal.usage.turns":`{turns} continuations`,"chat.goal.action.pause":`Pause`,"chat.goal.action.resume":`Resume`,"chat.goal.action.markComplete":`Mark complete`,"chat.goal.action.clear":`Remove goal`,"chat.goal.chip.label":`Goal`,"chat.goal.action.cancel":`Cancel`,"chat.goal.action.save":`Save goal`,"chat.goal.action.start":`Start goal`,"chat.goal.toast.actionFailed":`Goal update failed`,"chat.goal.toast.distillFallback":`Objective exceeded the limit and couldn't be distilled — a trimmed version is used for the auditor`,"chat.goal.row.aria":`Session goal — open details`,"chat.goal.button.createAria":`Set a session goal`,"chat.goal.button.manageAria":`Manage session goal`,"chat.goal.button.armAria":`Start a goal with the next message`,"chat.goal.counter.aria":`Goal objective length limit`,"chat.goal.button.disarmAria":`Goal armed — tap to disarm`,"chat.goal.button.cancelAria":`Goal running — tap to cancel it`,"chat.goal.cancelDialog.title":`Cancel this goal?`,"chat.goal.cancelDialog.description":`The agent will stop working toward this goal automatically.`,"chat.goal.cancelDialog.keep":`Keep goal`,"chat.goal.cancelDialog.confirm":`Cancel goal`,"header.actions.toggleTerminalPanel":`Terminal panel`,"header.actions.toggleTerminalPanelAria":`Toggle terminal panel`,"terminalView.stream.processExitedMessage":`\r
11
+ {log}`,"contextPanel.preview.console.open":`Open preview console`,"contextPanel.preview.console.waiting":`Waiting for preview console`,"contextPanel.preview.console.title":`Preview console`,"contextPanel.preview.console.attach":`Attach`,"contextPanel.preview.console.copy":`Copy`,"contextPanel.preview.console.clear":`Clear`,"contextPanel.preview.console.empty":`No preview console events yet.`,"contextPanel.preview.console.noFilteredEvents":`No events match this filter.`,"contextPanel.preview.console.runtimeError":`Runtime error`,"contextPanel.preview.console.copied":`Preview console copied`,"contextPanel.preview.console.copyFailed":`Failed to copy preview console`,"contextPanel.preview.console.attached":`Preview console attached to chat`,"contextPanel.preview.console.attachNoSession":`Open a chat session before attaching preview logs`,"contextPanel.preview.console.attachAnnotation":`These are browser console logs from the dev server running for this project.`,"contextPanel.preview.inspect.toggle":`Inspect preview element`,"contextPanel.preview.inspect.attached":`Preview annotation attached to chat`,"contextPanel.preview.inspect.attachNoSession":`Open a chat session before attaching preview annotations`,"contextPanel.preview.inspect.attachAnnotation":`This is a selected DOM element from the in-app preview.`,"contextPanel.preview.inspect.attachAnnotationWithScreenshot":`This is a selected DOM element from the in-app preview. A screenshot of the visible preview area with the selected element highlighted is attached.`,"contextPanel.preview.console.filter.all":`All`,"contextPanel.preview.console.filter.errors":`Errors`,"contextPanel.preview.console.filter.warnings":`Warnings`,"contextPanel.preview.console.filter.logs":`Logs`,"terminalView.preview.open":`Preview`,"terminalView.preview.openTitle":`Open preview pane`,"sidebarFilesTree.menu.rename":`Rename`,"sidebarFilesTree.menu.copyPath":`Copy Path`,"sidebarFilesTree.menu.save":`Save`,"sidebarFilesTree.menu.newFile":`New File`,"sidebarFilesTree.menu.newFolder":`New Folder`,"sidebarFilesTree.menu.delete":`Delete`,"sidebarFilesTree.toast.pathCopied":`Path copied`,"sidebarFilesTree.toast.copyFailed":`Copy failed`,"sidebarFilesTree.toast.revealFailed":`Failed to reveal path`,"sidebarFilesTree.toast.filenameRequired":`Filename is required`,"sidebarFilesTree.toast.writeNotSupported":`Write not supported`,"sidebarFilesTree.toast.fileCreated":`File created`,"sidebarFilesTree.toast.operationFailed":`Operation failed`,"sidebarFilesTree.toast.folderNameRequired":`Folder name is required`,"sidebarFilesTree.toast.folderCreated":`Folder created`,"sidebarFilesTree.toast.nameRequired":`Name is required`,"sidebarFilesTree.toast.renameNotSupported":`Rename not supported`,"sidebarFilesTree.toast.renamedSuccessfully":`Renamed successfully`,"sidebarFilesTree.toast.deleteNotSupported":`Delete not supported`,"sidebarFilesTree.toast.deletedSuccessfully":`Deleted successfully`,"sidebarFilesTree.search.placeholder":`Search files...`,"sidebarFilesTree.search.clearAria":`Clear search`,"sidebarFilesTree.actions.newFileTitle":`New File`,"sidebarFilesTree.actions.newFolderTitle":`New Folder`,"sidebarFilesTree.actions.refreshTitle":`Refresh`,"sidebarFilesTree.actions.collapseAllTitle":`Collapse all`,"sidebarFilesTree.actions.expandAllTitle":`Expand all`,"sidebarFilesTree.actions.fileMenuTitle":`File menu`,"sidebarFilesTree.state.searching":`Searching...`,"sidebarFilesTree.state.loading":`Loading...`,"sidebarFilesTree.dialog.createFile.title":`Create File`,"sidebarFilesTree.dialog.createFolder.title":`Create Folder`,"sidebarFilesTree.dialog.rename.title":`Rename`,"sidebarFilesTree.dialog.delete.title":`Delete`,"sidebarFilesTree.dialog.createFile.description":`Create a new file in {path}`,"sidebarFilesTree.dialog.createFolder.description":`Create a new folder in {path}`,"sidebarFilesTree.dialog.rename.description":`Rename {name}`,"sidebarFilesTree.dialog.delete.description":`Are you sure you want to delete {name}? This action cannot be undone.`,"sidebarFilesTree.dialog.rootFallback":`root`,"sidebarFilesTree.dialog.rename.placeholder":`New name`,"sidebarFilesTree.dialog.namePlaceholder":`Name`,"sidebarFilesTree.dialog.cancel":`Cancel`,"sidebarFilesTree.dialog.confirm":`Confirm`,"sidebarFilesTree.dialog.delete.confirm":`Delete`,"filesView.dialog.createFile.title":`Create File`,"filesView.dialog.createFolder.title":`Create Folder`,"filesView.dialog.rename.title":`Rename`,"filesView.dialog.delete.title":`Delete`,"filesView.dialog.createFile.description":`Create a new file in {path}`,"filesView.dialog.createFolder.description":`Create a new folder in {path}`,"filesView.dialog.rename.description":`Rename {name}`,"filesView.dialog.delete.description":`Are you sure you want to delete {name}? This action cannot be undone.`,"filesView.dialog.rootFallback":`root`,"filesView.dialog.rename.placeholder":`New name`,"filesView.dialog.namePlaceholder":`Name`,"filesView.dialog.cancel":`Cancel`,"filesView.dialog.confirm":`Confirm`,"filesView.dialog.delete.confirm":`Delete`,"filesView.editor.saving":`Saving...`,"filesView.editor.saved":`Saved`,"filesView.editor.autoSaveOn":`Auto-save on`,"filesView.editor.manualSave":`Manual save`,"filesView.editor.saveNowTitle":`Save now ({shortcut}) - auto-saves after 1.5s`,"filesView.editor.saveNowManualTitle":`Save now ({shortcut})`,"filesView.editor.saveAria":`Save ({shortcut})`,"filesView.editor.openInDesktopApp":`Open in desktop app`,"filesView.editor.refreshApps":`Refresh Apps`,"filesView.editor.disableLineWrap":`Disable line wrap`,"filesView.editor.enableLineWrap":`Enable line wrap`,"filesView.editor.findInFile":`Find in file`,"filesView.editor.goToLine":`Go to line`,"filesView.editor.switchToEditMode":`Switch to edit mode`,"filesView.editor.switchToPreviewMode":`Switch to preview mode`,"filesView.editor.switchToTextView":`Switch to Text View`,"filesView.editor.switchToTreeView":`Switch to Tree View`,"filesView.toast.copyFailed":`Copy failed`,"filesView.toast.openInAppFailed":`Failed to open in {app}`,"filesView.toast.savingNotSupported":`Saving not supported`,"filesView.toast.writeFileFailed":`Failed to write file`,"filesView.toast.saveFailed":`Save failed`,"filesView.editor.copyFileContents":`Copy file contents`,"filesView.editor.copyFilePathTitle":`Copy file path ({path})`,"filesView.editor.saveFile":`Save file`,"filesView.editor.exitFullscreen":`Exit fullscreen`,"filesView.editor.fullscreen":`Fullscreen`,"filesView.unsaved.title":`Unsaved changes`,"filesView.unsaved.description":`Save your edits before continuing?`,"filesView.unsaved.saveChanges":`Save changes`,"filesView.unsaved.discard":`Discard`,"filesView.editor.back":`Back`,"filesView.editor.openFilesAria":`Open files`,"filesView.editor.closeFileAria":`Close {name}`,"filesView.editor.selectFile":`Select a file`,"filesView.editor.showControlsAria":`Show editor controls`,"filesView.editor.controlsTitle":`Editor controls`,"filesView.editor.pickFileFromTree":`Pick a file from the tree.`,"filesView.state.loading":`Loading...`,"filesView.state.openingFileAtChange":`Opening file at change...`,"filesView.tree.search.placeholder":`Search files...`,"filesView.tree.search.clearAria":`Clear search`,"filesView.tree.search.searching":`Searching...`,"filesView.tree.actions.newFileTitle":`New File`,"filesView.tree.actions.newFolderTitle":`New Folder`,"filesView.tree.actions.refreshTitle":`Refresh`,"filesView.editor.imageAltFallback":`Image`,"filesView.error.jsonViewerUnavailable":`JSON viewer unavailable`,"filesView.error.switchToTextMode":`Switch to text mode to view raw content.`,"filesView.warning.largeFilePreviewLimited":`This file is large ({sizeKb}KB). Preview may be limited.`,"filesView.error.previewUnavailable":`Preview unavailable`,"filesView.error.switchToEditMode":`Switch to edit mode to fix the issue.`,"filesView.error.readFileFailed":`Failed to read file`,"filesView.editor.htmlPreviewTitle":`HTML Preview`,"filesView.diagram.closeDiagramView":`Close diagram view`,"filesView.diagram.saveDiagram":`Save diagram`,"contextUsage.aria.label":`Context usage`,"contextUsage.mobile.title":`Context Usage`,"contextUsage.mobile.usedTokens":`Used tokens`,"contextUsage.mobile.contextLimit":`Context limit`,"contextUsage.mobile.outputLimit":`Output limit`,"contextUsage.mobile.usage":`Usage`,"contextUsage.tooltip.usage":`Usage: {percent}`,"contextUsage.tooltip.usedOfLimit":`{used} / {limit}`,"contextUsage.tooltip.usedTokens":`Used tokens: {tokens}`,"contextUsage.tooltip.contextLimit":`Context limit: {tokens}`,"contextUsage.tooltip.outputLimit":`Output limit: {tokens}`,"contextSidebar.session.untitled":`Untitled Session`,"contextSidebar.empty.openSession":`Open a session to inspect context.`,"contextSidebar.section.context":`Context`,"contextSidebar.section.lastAssistantMessage":`Last Assistant Message`,"contextSidebar.section.rawMessages":`Raw Messages`,"contextSidebar.context.percentUsed":`{percent}% used`,"contextSidebar.breakdown.user":`User`,"contextSidebar.breakdown.assistant":`Assistant`,"contextSidebar.breakdown.toolCalls":`Tool Calls`,"contextSidebar.breakdown.other":`Other`,"contextSidebar.stats.messages":`Messages`,"contextSidebar.stats.user":`User`,"contextSidebar.stats.assistant":`Assistant`,"contextSidebar.stats.cost":`Cost`,"contextSidebar.stats.sessionTps":`Session TPS`,"contextSidebar.tokens.input":`Input`,"contextSidebar.tokens.output":`Output`,"contextSidebar.tokens.reasoning":`Reasoning`,"contextSidebar.tokens.cacheRead":`Cache Read`,"contextSidebar.tokens.cacheWrite":`Cache Write`,"contextSidebar.tokens.cacheHit":`Cache Hit`,"contextSidebar.tokens.tps":`TPS`,"contextSidebar.actions.copyJson":`Copy JSON`,"contextSidebar.actions.copy":`Copy`,"contextSidebar.actions.copied":`Copied`,"planView.file.defaultName":`plan`,"planView.title.default":`Plan`,"planView.error.saveFailed":`Save failed`,"planView.error.previewUnavailable":`Preview unavailable`,"planView.error.switchToEditMode":`Switch to edit mode to fix the issue.`,"planView.error.writeFailed":`Write failed`,"planView.error.writePlanFileFailed":`Failed to write plan file ({status})`,"planView.actions.improvePlanAria":`Improve plan`,"planView.actions.improve":`Improve`,"planView.actions.implementPlanAria":`Implement plan`,"planView.actions.implement":`Implement`,"planView.actions.sendToNewSession":`Send to new session`,"planView.actions.sendToNewWorktreeSession":`Send to new worktree session`,"planView.actions.copyPlanContents":`Copy plan contents`,"planView.state.loading":`Loading...`,"diffView.binary.unavailable":`Content of this file cannot be viewed.`,"diffView.change.untracked":`Untracked file`,"diffView.change.new":`New file`,"diffView.change.deleted":`Deleted file`,"diffView.change.renamed":`Renamed file`,"diffView.change.copied":`Copied file`,"diffView.change.modified":`Modified file`,"diffView.selector.selectFile":`Select file`,"diffView.image.original":`Original`,"diffView.image.modified":`Modified`,"diffView.image.new":`New`,"diffView.image.originalAlt":`Original: {path}`,"diffView.image.modifiedAlt":`Modified: {path}`,"diffView.section.files":`Files`,"diffView.state.selectSessionDirectory":`Select a session directory to view diffs`,"diffView.state.loadingRepositoryStatus":`Loading repository status...`,"diffView.state.notGitRepository":`Not a git repository. Use the Git tab to initialize or change directories.`,"diffView.state.cleanWorkingTree":`Working tree clean, no changes to display`,"diffView.state.noLastTurnChanges":`No last turn changes to display`,"diffView.state.failedToLoadDiff":`Failed to load diff`,"diffView.state.loadingDiff":`Loading diff...`,"diffView.state.loadingChanges":`Loading changes...`,"diffView.state.largeDiff":`Large diff ({count} changed lines)`,"diffView.state.largeDiffDescription":`Rendering may be slow. You can still view the diff by clicking below.`,"diffView.summary.changedFilesSingle":`{count} file changed`,"diffView.summary.changedFilesPlural":`{count} files changed`,"diffView.scope.changed":`Changed`,"diffView.scope.staged":`Staged`,"diffView.scope.lastTurn":`Last turn`,"diffView.scope.selectorAria":`Select change mode`,"diffView.actions.retry":`Retry`,"diffView.actions.renderAnyway":`Render anyway`,"diffView.actions.expandAll":`Expand all`,"diffView.actions.collapseAll":`Collapse all`,"diffView.actions.loadFullFiles":`Load full files`,"diffView.actions.disableFullFiles":`Unload full files`,"diffView.actions.disableLineWrap":`Disable line wrap`,"diffView.actions.enableLineWrap":`Enable line wrap`,"diffView.actions.openFileInEditorAtChange":`Open this file in editor at change`,"diffView.actions.openFileAtFirstChangedLine":`Open this file at first changed line`,"diffView.actions.openFilePreview":`Open this file`,"diffView.actions.review":`Review`,"diffView.actions.reviewAria":`Review changes`,"diffView.reviewDialog.title":`Review changes`,"diffView.reviewDialog.description":`Start a separate review session for the current changes.`,"diffView.reviewDialog.generateHandoff":`Generate handoff`,"diffView.reviewDialog.autoReview":`Run automatic review loop`,"diffView.reviewDialog.info":`This flow works best when started from the session where the changes were implemented.`,"diffView.reviewDialog.actions.cancel":`Cancel`,"diffView.reviewDialog.actions.start":`Review`,"diffView.reviewDialog.actions.starting":`Starting...`,"diffView.reviewDialog.toast.noSessionDirectory":`Session directory is unavailable`,"diffView.reviewDialog.toast.startFailed":`Failed to start review flow`,"chat.history.loadOlder":`Load older messages`,"chat.history.loadingMore":`Loading more…`,"chat.history.loadOlderFailed":`Could not load older messages. Try again.`,"chat.history.loadOlderTimeout":`Loading older messages timed out. Try again.`,"chat.history.loadFailedTitle":`Unable to load this conversation`,"chat.history.loadFailedDescription":`The conversation is still available. Try loading it again.`,"chat.history.retry":`Try again`,"chat.autoReview.title":`Code review loop is running`,"chat.autoReview.status.waitingForReviewer":`Waiting for reviewer`,"chat.autoReview.status.waitingForImplementer":`Waiting for implementer`,"chat.autoReview.reviewSessionLabel":`Review session`,"chat.autoReview.actions.open":`Open`,"chat.autoReview.actions.stop":`Stop`,"diffView.hunk.label":`Hunks`,"diffView.hunk.stage":`Stage`,"diffView.hunk.unstage":`Unstage`,"diffView.hunk.discard":`Discard`,"diffView.hunk.stageTitle":`Stage hunk {index}`,"diffView.hunk.unstageTitle":`Unstage hunk {index}`,"diffView.hunk.discardTitle":`Discard hunk {index}`,"diffView.hunk.unavailable":`This hunk is no longer available. Refresh the diff and try again.`,"diffView.hunk.unsupported":`Staging individual hunks is not supported in this runtime.`,"rightSidebar.contextNotesTodo.plan.defaultTitle":`Plan`,"rightSidebar.contextNotesTodo.empty.selectProject":`Select a project to add notes and todos.`,"rightSidebar.contextNotesTodo.notes.title":`Quick notes - {project}`,"rightSidebar.contextNotesTodo.notes.placeholder":`Capture context, reminders, or links`,"rightSidebar.contextNotesTodo.todo.title":`Todo`,"rightSidebar.contextNotesTodo.todo.itemsSingle":`{count} item`,"rightSidebar.contextNotesTodo.todo.itemsPlural":`{count} items`,"rightSidebar.contextNotesTodo.todo.clearCompleted":`Clear completed`,"rightSidebar.contextNotesTodo.todo.inputPlaceholder":`Add a todo`,"rightSidebar.contextNotesTodo.todo.addAria":`Add todo`,"rightSidebar.contextNotesTodo.todo.empty":`No todos yet. Add a small checklist for this project.`,"rightSidebar.contextNotesTodo.todo.actions.markComplete":`Mark "{text}" complete`,"rightSidebar.contextNotesTodo.todo.actions.collapse":`Collapse todo "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.expand":`Expand todo "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.delete":`Delete "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.send":`Send "{text}"`,"rightSidebar.contextNotesTodo.todo.actions.reorder":`Reorder "{text}"`,"rightSidebar.contextNotesTodo.todo.resizeAria":`Resize todo list`,"rightSidebar.contextNotesTodo.todo.sendMenu.currentSession":`Send to current session`,"rightSidebar.contextNotesTodo.todo.sendMenu.newSession":`Send to new session`,"rightSidebar.contextNotesTodo.todo.sendMenu.newWorktreeSession":`Send to new worktree session`,"rightSidebar.contextNotesTodo.plans.title":`Plans`,"rightSidebar.contextNotesTodo.plans.filesSingle":`{count} file`,"rightSidebar.contextNotesTodo.plans.filesPlural":`{count} files`,"rightSidebar.contextNotesTodo.plans.importFromFile":`Import plan from file`,"rightSidebar.contextNotesTodo.plans.empty":`No saved plans yet.`,"rightSidebar.contextNotesTodo.plans.deletePlan":`Delete plan`,"rightSidebar.contextNotesTodo.plans.deletePlanWithTitle":`Delete plan "{title}"`,"rightSidebar.contextNotesTodo.sendDialog.title.newSession":`Send to new session`,"rightSidebar.contextNotesTodo.sendDialog.title.newWorktree":`Send to new worktree`,"rightSidebar.contextNotesTodo.sendDialog.variant.default":`Default`,"rightSidebar.contextNotesTodo.sendDialog.actions.cancel":`Cancel`,"rightSidebar.contextNotesTodo.sendDialog.actions.send":`Send`,"rightSidebar.contextNotesTodo.sendDialog.actions.sending":`Sending`,"rightSidebar.contextNotesTodo.toast.saveNotesFailed":`Failed to save project notes`,"rightSidebar.contextNotesTodo.toast.loadNotesFailed":`Failed to load project notes`,"rightSidebar.contextNotesTodo.toast.noActiveSession":`No active session selected`,"rightSidebar.contextNotesTodo.toast.sentToCurrentSession":`Todo sent to current session`,"rightSidebar.contextNotesTodo.toast.worktreeRequiresGitRepo":`Worktree actions are only available for Git repositories`,"rightSidebar.contextNotesTodo.toast.createSessionFailed":`Failed to create session`,"rightSidebar.contextNotesTodo.toast.sentToNewSession":`Todo sent to new session`,"rightSidebar.contextNotesTodo.toast.sentToNewWorktreeSession":`Todo sent to new worktree session`,"rightSidebar.contextNotesTodo.toast.sendTodoFailed":`Failed to send todo`,"rightSidebar.contextNotesTodo.toast.deletePlanFailed":`Failed to delete plan`,"rightSidebar.contextNotesTodo.toast.planFileEmpty":`Plan file is empty`,"rightSidebar.contextNotesTodo.toast.importPlanFailed":`Failed to import plan`,"rightSidebar.contextNotesTodo.toast.planImported":`Plan imported`,"rightSidebar.contextNotesTodo.toast.readPlanFileFailed":`Failed to read plan file`,"inlineComment.range.lines":`Lines {start}-{end}`,"inlineComment.input.placeholder":`Add a comment... (Cmd+Enter to save)`,"inlineComment.input.placeholderShort":`Add a comment...`,"inlineComment.actions.cancel":`Cancel`,"inlineComment.actions.save":`Save`,"inlineComment.actions.comment":`Comment`,"inlineComment.actions.showLess":`Show less`,"inlineComment.actions.showMore":`Show more`,"inlineComment.actions.editComment":`Edit comment`,"inlineComment.actions.deleteComment":`Delete comment`,"inlineComment.toast.selectSessionToSave":`Select a session to save comment`,"header.github.connectedWithLogin":`GitHub: {login}`,"header.github.connected":`GitHub connected`,"header.github.avatarWithLogin":`{login} avatar`,"header.github.avatar":`GitHub avatar`,"header.github.accountsTitle":`GitHub Accounts`,"header.github.accountSource.oauth":`OAuth`,"header.github.accountSource.cli":`CLI`,"header.services.openWithCurrent":`Switch instance (current: {current})`,"header.services.open":`Switch instance`,"header.services.tooltip.currentInstanceWithShortcuts":`Switch instance: {current} ({toggle}; next tab {nextTab})`,"header.services.tooltip.servicesWithShortcuts":`Switch instance ({toggle}; next tab {nextTab})`,"header.services.title":`Switch instance`,"header.services.viewAria":`Switch instance`,"header.services.closeAria":`Close instance switcher`,"header.services.rateLimits":`Rate limits`,"header.services.refreshRateLimitsAria":`Refresh rate limits`,"header.services.noRateLimits":`No rate limits available.`,"header.services.noRateLimitsReported":`No rate limits reported.`,"header.services.remoteUpdate.title":`Remote instance update`,"header.services.remoteUpdate.checking":`Looking for updates...`,"header.services.remoteUpdate.upToDate":`This instance is up to date.`,"header.services.remoteUpdate.available":`Version {version} is available for this instance.`,"header.services.remoteUpdate.error":`Failed to check remote instance updates`,"header.services.remoteUpdate.actions.open":`Update`,"header.services.used":`Used`,"header.services.remaining":`Remaining`,"header.services.modelFamily.other":`Other`,"header.services.shutdownDev":`Stop OpenChamber`,"header.actions.openPlanAria":`Open plan`,"header.actions.toggleChangesPanel":`Changes panel`,"header.actions.toggleChangesPanelAria":`Toggle changes panel`,"header.actions.sessionMenu":`Session actions`,"header.actions.sessionMenuAria":`Open session actions menu`,"header.actions.sessionMenu.servicesWithInstance":`Switch instance ({current})`,"header.actions.sessionMenu.viewUsage":`View usage`,"header.actions.planWithShortcut":`Plan ({shortcut})`,"header.actions.terminalPanelWithShortcut":`Terminal panel ({shortcut})`,"chat.recap.aria":`Session recap`,"chat.recap.label":`Recap:`,"chat.goal.dialog.titleCreate":`Set Session Goal`,"chat.goal.dialog.titleManage":`Session Goal`,"chat.goal.dialog.objectiveLabel":`Objective`,"chat.goal.dialog.objectivePlaceholder":`Describe the end state the agent should reach and verify…`,"chat.goal.dialog.budgetLabel":`Token budget`,"chat.goal.status.active":`Active`,"chat.goal.status.evaluating":`Evaluating…`,"chat.goal.status.paused":`Paused`,"chat.goal.status.blocked":`Blocked`,"chat.goal.status.budgetLimited":`Budget reached`,"chat.goal.status.complete":`Complete`,"chat.goal.usage.tokens":`{used}`,"chat.goal.usage.tokensWithBudget":`{used}/{budget}`,"chat.goal.usage.turns":`{turns} continuations`,"chat.goal.action.pause":`Pause`,"chat.goal.action.resume":`Resume`,"chat.goal.action.markComplete":`Mark complete`,"chat.goal.action.clear":`Remove goal`,"chat.goal.chip.label":`Goal`,"chat.goal.action.cancel":`Cancel`,"chat.goal.action.save":`Save goal`,"chat.goal.action.start":`Start goal`,"chat.goal.toast.actionFailed":`Goal update failed`,"chat.goal.toast.distillFallback":`Objective exceeded the limit and couldn't be distilled — a trimmed version is used for the auditor`,"chat.goal.row.aria":`Session goal — open details`,"chat.goal.button.createAria":`Set a session goal`,"chat.goal.button.manageAria":`Manage session goal`,"chat.goal.button.armAria":`Start a goal with the next message`,"chat.goal.counter.aria":`Goal objective length limit`,"chat.goal.button.disarmAria":`Goal armed — tap to disarm`,"chat.goal.button.cancelAria":`Goal running — tap to cancel it`,"chat.goal.cancelDialog.title":`Cancel this goal?`,"chat.goal.cancelDialog.description":`The agent will stop working toward this goal automatically.`,"chat.goal.cancelDialog.keep":`Keep goal`,"chat.goal.cancelDialog.confirm":`Cancel goal`,"header.actions.toggleTerminalPanel":`Terminal panel`,"header.actions.toggleTerminalPanelAria":`Toggle terminal panel`,"terminalView.stream.processExitedMessage":`\r
12
12
  [Process exited{exitCodeSegment}{signalSegment}]\r
13
13
  `,"terminalView.stream.processExitedWithCode":` with code {exitCode}`,"terminalView.stream.processExitedWithSignal":` (signal {signal})`,"terminalView.error.sessionEnded":`Terminal session ended`,"terminalView.error.connectionFailed":`Connection failed: {message}`,"terminalView.error.startSessionFailed":`Failed to start terminal session`,"terminalView.error.restartFailed":`Failed to restart terminal`,"terminalView.error.sendInputFailed":`Failed to send input`,"terminalView.empty.noWorkingDirectory":`No working directory available for terminal.`,"terminalView.empty.selectSession":`Select a session to open the terminal.`,"terminalView.empty.noWorkingDirectoryForSession":`No working directory available for this session.`,"terminalView.actions.retry":`Retry`,"terminalView.actions.hardRestart":`Hard Restart`,"terminalView.actions.hardRestartTitle":`Force kill and create fresh session`,"terminalView.quickKeys.escape":`Esc`,"terminalView.quickKeys.tabAria":`Tab`,"terminalView.quickKeys.controlLabel":`Ctrl`,"terminalView.quickKeys.controlModifierAria":`Control modifier`,"terminalView.quickKeys.commandModifierAria":`Command modifier`,"terminalView.quickKeys.arrowUpAria":`Arrow up`,"terminalView.quickKeys.arrowLeftAria":`Arrow left`,"terminalView.quickKeys.arrowDownAria":`Arrow down`,"terminalView.quickKeys.arrowRightAria":`Arrow right`,"terminalView.quickKeys.enterAria":`Enter`,"terminalView.tabs.closeTabTitle":`Close tab`,"terminalView.tabs.newTabTitle":`New tab`,"terminalView.bottomDock.resizeAria":`Resize terminal panel`,"terminalView.bottomDock.restoreTitle":`Restore terminal panel height`,"terminalView.bottomDock.restoreAria":`Restore terminal panel height`,"terminalView.bottomDock.expandTitle":`Expand terminal panel`,"terminalView.bottomDock.expandAria":`Expand terminal panel`,"terminalView.bottomDock.closeTitle":`Close terminal panel`,"terminalView.bottomDock.closeAria":`Close terminal panel`,"terminalView.viewport.inputAria":`Terminal input`,"directoryExplorerDialog.title":`Add project directory`,"directoryExplorerDialog.description":`Choose a folder to add as a project.`,"directoryExplorerDialog.toggle.showHidden":`Show hidden`,"directoryExplorerDialog.pathInput.placeholder":`Enter path or select from tree...`,"directoryExplorerDialog.actions.openingFinder":`Opening...`,"directoryExplorerDialog.actions.openInFinder":`Open in Finder`,"directoryExplorerDialog.actions.adding":`Adding...`,"directoryExplorerDialog.actions.addProject":`Add project`,"directoryExplorerDialog.actions.addLocalProject":`Add local project`,"directoryExplorerDialog.actions.cloneRepository":`Clone repository`,"directoryExplorerDialog.actions.cloneAndAdd":`Clone & add`,"directoryExplorerDialog.actions.cloning":`Cloning...`,"directoryExplorerDialog.actions.createAndAdd":`Create & add`,"directoryExplorerDialog.actions.alreadyAdded":`Already added`,"directoryExplorerDialog.clone.remoteUrlPlaceholder":`Repository URL (HTTPS or SSH)`,"directoryExplorerDialog.browse.directories":`Directories`,"directoryExplorerDialog.browse.loading":`Loading directories...`,"directoryExplorerDialog.browse.empty":`No matching directories.`,"directoryExplorerDialog.browse.parentDirectory":`Parent directory`,"directoryExplorerDialog.browse.addedBadge":`Added`,"directoryExplorerDialog.browse.quickAdd":`Add`,"directoryExplorerDialog.footer.navigate":`Navigate`,"directoryExplorerDialog.footer.select":`Select`,"directoryExplorerDialog.footer.add":`Add`,"directoryExplorerDialog.shortcut.enter":`Enter`,"directoryExplorerDialog.toast.unableToAccessDirectory":`Unable to access directory`,"directoryExplorerDialog.toast.desktopDeniedAccess":`Desktop denied directory access.`,"directoryExplorerDialog.toast.failedToOpenDirectory":`Failed to open directory`,"directoryExplorerDialog.toast.desktopCouldNotGrantAccess":`Desktop could not grant file access.`,"directoryExplorerDialog.toast.failedToAddProject":`Failed to add project`,"directoryExplorerDialog.toast.cloneUrlRequired":`Enter a repository URL before cloning.`,"directoryExplorerDialog.toast.selectValidDirectoryPath":`Please select a valid directory path.`,"directoryExplorerDialog.toast.failedToSelectDirectory":`Failed to select directory`,"directoryExplorerDialog.toast.unknownError":`Unknown error occurred.`,"directoryTree.actions.createNewDirectory":`Create new directory`,"directoryTree.actions.pinDirectory":`Pin directory`,"directoryTree.actions.unpinDirectory":`Unpin directory`,"directoryTree.actions.createDirectory":`Create directory`,"directoryTree.actions.cancel":`Cancel`,"directoryTree.actions.selectWorkingDirectoryAria":`Select working directory`,"directoryTree.state.locatingHomeDirectory":`Locating home directory...`,"directoryTree.state.loading":`Loading...`,"directoryTree.state.noDirectoriesFound":`No directories found`,"directoryTree.section.pinned":`Pinned`,"directoryTree.section.browse":`Browse`,"aboutDialog.versionLabel":`Version {version}`,"aboutDialog.openChamberVersionLabel":`OpenChamber version {version}`,"aboutDialog.openCodeVersionLabel":`OpenCode version {version}`,"aboutDialog.actions.copyDiagnostics":`Copy diagnostics`,"aboutDialog.actions.preparingDiagnostics":`Preparing diagnostics...`,"aboutDialog.actions.diagnosticsCopied":`Diagnostics copied`,"aboutDialog.diagnosticsDescription":`Includes OpenChamber state, OpenCode health, directories, and projects.`,"aboutDialog.footerNote":`Made with love for the community`,"aboutDialog.toast.copyFailed":`Copy failed`,"aboutDialog.toast.diagnosticsNotReady":`Diagnostics not ready yet. Wait a second and retry.`,"aboutDialog.toast.diagnosticsCopied":`Diagnostics copied`,"helpDialog.title":`Keyboard Shortcuts`,"helpDialog.description":`Use these keyboard shortcuts to navigate OpenChamber efficiently`,"helpDialog.section.navigationCommands":`Navigation & Commands`,"helpDialog.section.sessionManagement":`Session Management`,"helpDialog.section.panels":`Panels`,"helpDialog.section.interface":`Interface`,"helpDialog.section.leaderChords":`Leader key (Ctrl+X)`,"helpDialog.item.openCommandPalette":`Open Command Palette`,"helpDialog.item.showKeyboardShortcuts":`Show Keyboard Shortcuts (this dialog)`,"helpDialog.item.toggleSessionSidebar":`Toggle Session Sidebar`,"helpDialog.item.cycleAgent":`Cycle Agent (chat input)`,"helpDialog.item.openModelSelector":`Open Model Selector`,"helpDialog.item.navigateModels":`Navigate Models (in picker)`,"helpDialog.item.adjustThinkingMode":`Adjust Thinking Mode (in picker, when supported)`,"helpDialog.item.cycleThinkingVariant":`Cycle Thinking Variant (global shortcut)`,"helpDialog.item.newWindow":`New Window (desktop only)`,"helpDialog.item.createNewSession":`Create New Session`,"helpDialog.item.createNewWorktreeDraft":`Create New Worktree Draft`,"helpDialog.item.previousSession":`Previous Session`,"helpDialog.item.nextSession":`Next Session`,"helpDialog.item.focusChatInput":`Focus Chat Input`,"helpDialog.item.togglePromptNavigator":`Toggle Prompt Navigator`,"helpDialog.item.abortActiveRun":`Abort active run (double press)`,"helpDialog.item.toggleRightSidebar":`Toggle Review Panel`,"helpDialog.item.openRightSidebarGitTab":`Open Right Sidebar Git Tab`,"helpDialog.item.openRightSidebarFilesTab":`Open Right Sidebar Files Tab`,"helpDialog.item.cycleRightSidebarTab":`Cycle Right Sidebar Tab`,"helpDialog.item.closeContextPanelTab":`Close Context Panel Tab`,"helpDialog.item.toggleTerminal":`Toggle Terminal`,"helpDialog.item.newTerminalTab":`New Terminal Tab (when terminal is focused)`,"helpDialog.item.openNewTerminal":`Open New Terminal`,"helpDialog.item.previousTerminalTab":`Previous Terminal Tab (when terminal is focused)`,"helpDialog.item.nextTerminalTab":`Next Terminal Tab (when terminal is focused)`,"helpDialog.item.toggleBottomPanel":`Toggle Bottom Panel`,"helpDialog.item.toggleTerminalExpanded":`Toggle Terminal Expanded`,"helpDialog.item.togglePlanContextPanel":`Toggle Plan Context Panel`,"helpDialog.item.cycleTheme":`Cycle Theme (Light → Dark → System)`,"helpDialog.item.zoomIn":`Zoom In`,"helpDialog.item.zoomOut":`Zoom Out`,"helpDialog.item.zoomReset":`Reset Zoom`,"helpDialog.item.switchSession":`Switch Session`,"helpDialog.item.toggleServicesMenu":`Toggle Services Menu`,"helpDialog.item.openUsage":`Open Usage`,"helpDialog.item.cycleServicesTab":`Cycle Services Tab`,"helpDialog.item.openSettings":`Open Settings`,"helpDialog.item.leaderOpenModel":`Open model selector`,"helpDialog.item.leaderOpenAgent":`Open agent selector`,"helpDialog.item.leaderNewSession":`Create new session`,"helpDialog.item.leaderCompact":`Compact current session`,"chat.leaderKey.pendingAria":`Leader key active. Press a follow-up key.`,"chat.leaderKey.action.model":`Model`,"chat.leaderKey.action.agent":`Agent`,"chat.leaderKey.action.newSession":`New`,"chat.leaderKey.action.compact":`Compact`,"helpDialog.keyCombiner.or":`or`,"helpDialog.proTips.title":`Pro Tips:`,"helpDialog.proTips.commandPalette":`Use Command Palette ({shortcut}) to quickly access all actions`,"helpDialog.proTips.recentSessions":`The 5 most recent sessions appear in the Command Palette`,"helpDialog.proTips.themeCycling":`Theme cycling remembers your preference across sessions`,"header.actions.rightSidebarWithShortcut":`Right sidebar ({shortcut})`,"header.actions.toggleRightSidebarAria":`Toggle right sidebar`,"header.actions.openAppMenu":`OpenChamber menu`,"header.actions.openAppMenuAria":`Open OpenChamber menu`,"header.actions.openSessionsWithShortcut":`Open sessions ({shortcut})`,"header.actions.openSessionsAria":`Open sessions`,"header.actions.closeSessionsAria":`Close sessions`,"header.actions.newSessionAria":`New session`,"header.actions.newSessionWithShortcut":`New session ({shortcut})`,"header.actions.backAria":`Back`,"header.navigation.mainAria":`Main navigation`,"header.sessions.title":`Sessions`,"header.changes.availableAria":`Changes available`,"session.githubIssuePicker.error.noActiveProject":`No active project`,"session.githubIssuePicker.error.runtimeUnavailable":`GitHub runtime API unavailable`,"session.githubIssuePicker.error.notConnected":`GitHub not connected`,"session.githubIssuePicker.error.repoNotResolvable":`Repo not resolvable`,"session.githubIssuePicker.error.repoMustBeGithub":`Origin remote must be a GitHub URL`,"session.githubIssuePicker.error.issueNotFound":`Issue not found`,"session.githubIssuePicker.error.noModelSelected":`No model selected`,"session.githubIssuePicker.toast.loadMoreFailed":`Failed to load more issues`,"session.githubIssuePicker.toast.loadIssueDetailsFailed":`Failed to load issue details`,"session.githubIssuePicker.toast.sendContextFailed":`Failed to send issue context`,"session.githubIssuePicker.toast.sessionCreated":`Session created from issue`,"session.githubIssuePicker.toast.startSessionFailed":`Failed to start session`,"session.githubIssuePicker.title.select":`Link GitHub Issue`,"session.githubIssuePicker.title.createSession":`New Session From GitHub Issue`,"session.githubIssuePicker.description.select":`Select an issue to link to this session.`,"session.githubIssuePicker.description.createSession":`Seeds a new session with hidden issue context (title/body/labels/comments).`,"session.githubIssuePicker.searchPlaceholder":`Search using GitHub code search syntax`,"session.githubIssuePicker.empty.noActiveProject":`No active project selected.`,"session.githubIssuePicker.empty.runtimeUnavailable":`GitHub runtime API unavailable.`,"session.githubIssuePicker.empty.notConnected":`GitHub not connected. Connect your GitHub account in settings.`,"session.githubIssuePicker.empty.noIssuesFound":`No issues found`,"session.githubIssuePicker.empty.noOpenIssuesFound":`No open issues found`,"session.githubIssuePicker.loading.issues":`Loading issues...`,"session.githubIssuePicker.loading.more":`Loading...`,"session.githubIssuePicker.actions.openSettings":`Open settings`,"session.githubIssuePicker.actions.useIssue":`Use issue #{number}`,"session.githubIssuePicker.actions.openInGitHubAria":`Open in GitHub`,"session.githubIssuePicker.actions.loadMore":`Load more`,"session.githubIssuePicker.actions.sectionTitle":`Actions`,"session.githubIssuePicker.actions.toggleWorktreeAria":`Toggle worktree`,"session.githubIssuePicker.actions.createInWorktree":`Create in worktree`,"session.githubIssuePicker.actions.openRepo":`Open Repo`,"session.githubIssuePicker.actions.refresh":`Refresh`,"session.githubPrPicker.error.noActiveProject":`No active project`,"session.githubPrPicker.error.runtimeUnavailable":`GitHub runtime API unavailable`,"session.githubPrPicker.error.notConnected":`GitHub not connected`,"session.githubPrPicker.error.prNotFound":`Pull request not found`,"session.githubPrPicker.error.repoNotResolvable":`Repo not resolvable`,"session.githubPrPicker.error.repoMustBeGithub":`Origin remote must be a GitHub URL`,"session.githubPrPicker.toast.loadMoreFailed":`Failed to load more pull requests`,"session.githubPrPicker.toast.loadDetailsFailed":`Failed to load pull request details`,"session.githubPrPicker.title":`Link GitHub Pull Request`,"session.githubPrPicker.description":`Select a pull request to attach review context to this message.`,"session.githubPrPicker.searchPlaceholder":`Search using GitHub code search syntax`,"session.githubPrPicker.includeDiffAria":`Include PR diff in attached context`,"session.githubPrPicker.includeDiff":`Include PR diff`,"session.githubPrPicker.empty.noActiveProject":`No active project selected.`,"session.githubPrPicker.empty.runtimeUnavailable":`GitHub runtime API unavailable.`,"session.githubPrPicker.empty.notConnected":`GitHub not connected. Connect your GitHub account in settings.`,"session.githubPrPicker.empty.noPullRequestsFound":`No pull requests found`,"session.githubPrPicker.empty.noOpenPullRequestsFound":`No open pull requests found`,"session.githubPrPicker.loading.pullRequests":`Loading pull requests...`,"session.githubPrPicker.loading.more":`Loading...`,"session.githubPrPicker.actions.openSettings":`Open settings`,"session.githubPrPicker.actions.usePullRequest":`Use pull request #{number}`,"session.githubPrPicker.actions.openInGitHubAria":`Open in GitHub`,"session.githubPrPicker.actions.loadMore":`Load more`,"session.newWorktree.title":`New Worktree`,"session.newWorktree.mode.newBranch":`New Branch`,"session.newWorktree.mode.existingBranch":`Existing Branch`,"session.newWorktree.selectBranch":`Select Branch`,"session.newWorktree.chooseBranch":`Choose a branch...`,"session.newWorktree.fetchBranches":`Fetch branches`,"session.newWorktree.searchBranches":`Search branches...`,"session.newWorktree.loadingBranches":`Loading branches...`,"session.newWorktree.noBranchesFound":`No branches found`,"session.newWorktree.matchingBranches":`Matching branches`,"session.newWorktree.noMatchingBranches":`No matching branches`,"session.newWorktree.localBranches":`Local branches`,"session.newWorktree.remoteBranches":`Remote branches`,"session.newWorktree.otherLocalBranches":`Other local branches`,"session.newWorktree.otherRemoteBranches":`Other remote branches`,"session.newWorktree.branchName":`Branch Name`,"session.newWorktree.branchNamePlaceholder":`feature/my-awesome-feature`,"session.newWorktree.actions.change":`Change`,"session.newWorktree.actions.startFromGitHubIssuePr":`Start from GitHub Issue/PR`,"session.newWorktree.usingPrBranch":`Using PR branch: {branch}`,"session.newWorktree.fromIssue":`From issue #{number}: {title}`,"session.newWorktree.worktreeDirectory":`Worktree Directory`,"session.newWorktree.worktreeDirectoryPlaceholder":`my-worktree-directory`,"session.newWorktree.resetToMatchBranchName":`Reset to match branch name`,"session.newWorktree.sourceBranch":`Source Branch`,"session.newWorktree.selectSourceBranch":`Select Source Branch`,"session.newWorktree.selectSourceBranchPlaceholder":`Select source branch...`,"session.newWorktree.newBranchFromSource":`New branch will be created from {source}`,"session.newWorktree.issueNumber":`Issue #{number}`,"session.newWorktree.prNumber":`PR #{number}`,"session.newWorktree.includeDiffBadge":`+diff`,"session.newWorktree.newSessionTitle":`New session`,"session.newWorktree.fromSource":`from {source}`,"session.newWorktree.actions.cancel":`Cancel`,"session.newWorktree.actions.creating":`Creating...`,"session.newWorktree.actions.createWorktree":`Create Worktree`,"session.newWorktree.actions.reset":`Reset`,"session.newWorktree.error.noModelSelected":`No model selected`,"session.newWorktree.error.noActiveProject":`No active project`,"session.newWorktree.error.branchNameRequired":`Branch name is required`,"session.newWorktree.error.worktreeDirectoryRequired":`Worktree directory is required`,"session.newWorktree.error.sendGitHubContextFailed":`Failed to send GitHub context`,"session.newWorktree.error.createWorktreeFailed":`Failed to create worktree`,"session.newWorktree.toast.sessionFromIssue":`Session created from issue`,"session.newWorktree.toast.sessionFromPr":`Session created from PR`,"session.newWorktree.toast.worktreeCreated":`Worktree created`,"session.newWorktree.toast.worktreeCreatedDescription":`{target} - bootstrapping in background`,"session.githubIntegration.title":`Select from GitHub`,"session.githubIntegration.tabs.issues":`Issues`,"session.githubIntegration.tabs.pullRequests":`Pull Requests`,"session.githubIntegration.connect.title":`Connect to GitHub`,"session.githubIntegration.connect.description":`Link issues or pull requests to auto-fill worktree details`,"session.githubIntegration.connect.action":`Connect GitHub`,"session.githubIntegration.search.issuesPlaceholder":`Search using GitHub code search syntax`,"session.githubIntegration.search.prsPlaceholder":`Search using GitHub code search syntax`,"session.githubIntegration.empty.noIssuesFound":`No issues found`,"session.githubIntegration.empty.noPullRequestsFound":`No pull requests found`,"session.githubIntegration.actions.loadMore":`Load more`,"session.githubIntegration.actions.cancel":`Cancel`,"session.githubIntegration.actions.select":`Select`,"session.githubIntegration.selected.issueNumber":`Issue #{number}`,"session.githubIntegration.selected.prNumber":`PR #{number}`,"session.githubIntegration.includeDiffAria":`Include PR diff in session context`,"session.githubIntegration.includeDiff":`Include PR diff`,"session.githubIntegration.error.notConnected":`GitHub not connected`,"session.githubIntegration.error.loadDataFailed":`Failed to load data`,"session.githubIntegration.validation.branchAlreadyCheckedOut":`Branch is already checked out in a worktree`,"session.githubIntegration.validation.branchAlreadyExists":`Branch already exists locally`,"session.githubIntegration.validation.failed":`Validation failed`,"chat.fileAttachment.toast.attachFailed":`Failed to attach file`,"chat.fileAttachment.toast.someFilesSkipped":`Some files were skipped:
14
14
  {summary}`,"chat.fileAttachment.toast.vscodePickFailed":`Failed to pick files in VS Code`,"chat.fileAttachment.fileFallback":`file`,"chat.fileAttachment.skippedFallback":`skipped`,"chat.fileAttachment.actions.attachAria":`Attach files`,"chat.fileAttachment.actions.attach":`Attach files`,"chat.fileAttachment.actions.removeNamed":`Remove {name}`,"chat.fileAttachment.actions.removeImage":`Remove image`,"chat.fileAttachment.actions.expandImages":`Show more images`,"chat.fileAttachment.actions.collapseImages":`Show fewer images`,"chat.fileAttachment.activeEditor.addFile":`Add file:{name} to context`,"chat.fileAttachment.activeEditor.pinSelection":`Pin selection to context`,"chat.fileAttachment.activeEditor.remove":`Remove from context`,"chat.fileAttachment.openInDiagram":`Open in diagram view`,"chat.pendingChanges.fileCountSingle":`{count} file`,"chat.pendingChanges.fileCountPlural":`{count} files`,"chat.pendingChanges.changedInWorkspace":`Changed in workspace`,"chat.changedFiles.title":`Changed files`,"chat.changedFiles.actions.openFileTitle":`Open {path}`,"chat.activity.title":`Processing details`,"chat.activity.active":`Working`,"chat.activity.compacting":`Compacting`,"chat.activity.compactionCompleted":`Compaction complete`,"chat.activity.expandAria":`Expand processing details`,"chat.activity.collapseAria":`Collapse processing details`,"chat.activity.completed":`Processed in {duration}`,"chat.activity.completedStatus":`Processed`,"chat.activity.agentsWorking":`{count} agents working`,"chat.activity.agentsInvolved":`{count} agents involved`,"chat.activity.moreHidden":`+{count} more...`,"chat.emptyState.opencodeUnreachable":`OpenCode is not reachable`,"chat.emptyState.startNewChat":`Start a new chat`,"chat.emptyState.draftTitle":`What are we working on?`,"chat.emptyState.draftTitleWithProject":`What are we working on in {project}?`,"chat.emptyState.establishingConversation":`Establishing conversation`,"chat.draftPresets.explore.label":`Explore the codebase`,"chat.draftPresets.catchup.label":`Catch me up`,"chat.draftPresets.weigh.label":`Weigh my options`,"chat.draftPresets.plan.label":`Start feature planning`,"chat.draftPresets.craftGoal.label":`Craft a Goal`,"chat.draftPresets.debug.label":`Debug an issue`,"chat.draftPresets.review.label":`Review my changes`,"chat.draftStarters.add":`Add a starter`,"chat.draftStarters.searchPlaceholder":`Search commands and skills…`,"chat.draftStarters.empty":`Nothing to add`,"chat.draftStarters.sectionBuiltIn":`Built-in`,"chat.draftStarters.sectionCommands":`Commands`,"chat.draftStarters.sectionSkills":`Skills`,"chat.draftStarters.remove":`Remove`,"chat.draftStarters.expand":`Show more`,"chat.draftStarters.collapse":`Show less`,"chat.scrollToBottom.aria":`Scroll to bottom`,"chat.promptNavigator.aria":`Prompt navigation`,"chat.promptNavigator.currentPrompt":`Current prompt`,"chat.promptNavigator.loadMore":`Load more prompts`,"chat.timeline.relative.justNow":`just now`,"chat.timeline.relative.minutesAgo":`{count}m ago`,"chat.timeline.relative.hoursAgo":`{count}h ago`,"chat.timeline.relative.daysAgo":`{count}d ago`,"chat.timeline.title":`Conversation Timeline`,"chat.timeline.description":`Navigate to any point in the conversation or fork a new session`,"chat.timeline.searchPlaceholder":`Search messages...`,"chat.timeline.empty.search":`No messages found`,"chat.timeline.empty.session":`No messages in this session yet`,"chat.timeline.noTextContent":`[No text content]`,"chat.timeline.actions.title":`Actions`,"chat.timeline.actions.revertFromHere":`Revert from here`,"chat.timeline.actions.forkFromHere":`Fork from here`,"chat.timeline.actions.previousTurn":`Previous turn`,"chat.timeline.actions.latest":`Latest`,"chat.timeline.help.clickMessage":`Click on a message to scroll to it in the conversation`,"chat.timeline.help.undoToPoint":`Undo to this point (message text will populate input)`,"chat.timeline.help.createSessionFromHere":`Create a new session starting from here`,"chat.statusRow.todo.status.inProgress":`In progress`,"chat.statusRow.todo.status.pending":`Pending`,"chat.statusRow.todo.status.completed":`Completed`,"chat.statusRow.todo.status.cancelled":`Cancelled`,"chat.statusRow.todo.priority.high":`High priority`,"chat.statusRow.todo.priority.medium":`Medium priority`,"chat.statusRow.todo.priority.low":`Low priority`,"chat.statusRow.actions.stopGeneratingAria":`Stop generating`,"chat.statusRow.tasksTitle":`Tasks`,"chat.statusRow.summary.activeLeft":`{active} active · {left} left`,"chat.statusRow.aborted":`Aborted`,"chat.statusRow.abortPrompt":`Press Esc again to abort`,"chat.assistantStatus.readingFile":`Reading file`,"chat.assistantStatus.writingFile":`Writing file`,"chat.assistantStatus.editingFile":`Editing file`,"chat.assistantStatus.editingFiles":`Editing files`,"chat.assistantStatus.compacting":`Compacting`,"chat.assistantStatus.applyingPatch":`Applying patch`,"chat.assistantStatus.runningCommand":`Running command`,"chat.assistantStatus.searchingContent":`Searching content`,"chat.assistantStatus.findingFiles":`Finding files`,"chat.assistantStatus.listingDirectory":`Listing directory`,"chat.assistantStatus.delegatingTask":`Delegating task`,"chat.assistantStatus.taskWorking":`{name} working`,"chat.assistantStatus.fetchingUrl":`Fetching URL`,"chat.assistantStatus.searchingWeb":`Searching web`,"chat.assistantStatus.webCodeSearch":`Searching web code`,"chat.assistantStatus.updatingTodos":`Updating tasks`,"chat.assistantStatus.readingTodos":`Reading tasks`,"chat.assistantStatus.learningSkill":`Learning skill`,"chat.assistantStatus.askingQuestion":`Asking question`,"chat.assistantStatus.switchingToPlanning":`Switching to planning`,"chat.assistantStatus.switchingToBuilding":`Switching to building`,"chat.assistantStatus.usingTool":`Using {tool}`,"chat.assistantStatus.working":`Working`,"chat.assistantStatus.processing":`Processing`,"chat.assistantStatus.preparing":`Preparing`,"chat.assistantStatus.warmingUp":`Warming up`,"chat.assistantStatus.gearsTurning":`Gears turning`,"chat.assistantStatus.computing":`Computing`,"chat.assistantStatus.calculating":`Calculating`,"chat.assistantStatus.analyzing":`Analyzing`,"chat.assistantStatus.wheelsSpinning":`Wheels spinning`,"chat.assistantStatus.calibrating":`Calibrating`,"chat.assistantStatus.synthesizing":`Synthesizing`,"chat.assistantStatus.connectingDots":`Connecting dots`,"chat.assistantStatus.inspectingLogic":`Inspecting logic`,"chat.assistantStatus.weighingOptions":`Weighing options`,"chat.assistantStatus.thinking":`Thinking`,"chat.assistantStatus.composing":`Composing`,"chat.assistantStatus.sendingMessage":`Sending message`,"chat.assistantStatus.waitingForPermission":`Waiting for permission`,"chat.assistantStatus.retrying":`Retrying`,"chat.assistantStatus.retryingIn":`Retrying {duration}`,"chat.assistantStatus.retryingAttempt":`Retrying (attempt {attempt})`,"chat.assistantStatus.retryingInAttempt":`Retrying {duration} (attempt {attempt})`,"chat.revertIndicator.redo":`Redo`,"chat.revertIndicator.redoAria":`Redo — restore reverted messages`,"chat.revertPopover.title":`Reverted`,"chat.revertPopover.noTextContent":`No text content`,"chat.revertPopover.forkFromHere":`Fork from here`,"chat.revertPopover.forkFromMessage":`Fork from this message`,"chat.revertPopover.restoreAll":`Restore all`,"chat.revertPopover.restore":`Restore`,"chat.revertPopover.revert":`Revert`,"chat.revertPopover.fork":`Fork`,"chat.revert.toast.undo":`Reverted to {preview}`,"chat.revert.toast.redo":`Redone`,"chat.revert.toast.restored":`Restored all messages`,"chat.errorBoundary.title":`Chat Error`,"chat.errorBoundary.description":`The chat interface encountered an error. This might be due to a temporary network issue or corrupted message data.`,"chat.errorBoundary.sessionLabel":`Session`,"chat.errorBoundary.detailsSummary":`Error details`,"chat.errorBoundary.resetAction":`Reset Chat`,"chat.errorBoundary.persistentHint":`If the problem persists, try refreshing the page.`,"chat.autocomplete.tabs.commands":`Commands`,"chat.autocomplete.tabs.agents":`Agents`,"chat.autocomplete.tabs.files":`Files`,"chat.autocomplete.keyboardHint":`↑↓ navigate • Enter select • Esc close`,"chat.commandAutocomplete.command.initDescription":`Create/update AGENTS.md file`,"chat.commandAutocomplete.command.undoDescription":`Undo the last message`,"chat.commandAutocomplete.command.redoDescription":`Redo previously undone messages`,"chat.commandAutocomplete.command.forkDescription":`Fork the current conversation state into a new session`,"chat.commandAutocomplete.command.timelineDescription":`Open the conversation timeline`,"chat.commandAutocomplete.command.modelDescription":`Open the model selector`,"chat.commandAutocomplete.command.compactDescription":`Compress session history using AI to reduce context size`,"chat.commandAutocomplete.command.newDescription":`Start a new session in the current project.`,"chat.commandAutocomplete.command.summaryDescription":`Non-destructive session summary. Optional topic hint after the command.`,"chat.commandAutocomplete.command.workspaceReviewDescription":`Review the workspace diff for intent, correctness, and adequacy, graded by severity.`,"chat.commandAutocomplete.command.handoffReviewDescription":`Create or reuse a separate review session from a generated handoff.`,"chat.commandAutocomplete.command.featurePlanDescription":`Start a guided, back-and-forth planning session for a new feature.`,"chat.commandAutocomplete.command.craftGoalDescription":`Turn an idea or task into a clear, verifiable Goal.`,"chat.chatInput.toast.craftGoalFailed":`Failed to start Goal crafting`,"chat.commandAutocomplete.command.catchUpDescription":`Re-establish context: what you were doing and where to pick up.`,"chat.commandAutocomplete.command.debugDescription":`Guided root-cause investigation for a bug before proposing a fix.`,"chat.commandAutocomplete.command.weighDescription":`Weigh 2-3 approaches with trade-offs and a recommendation before you commit.`,"chat.commandAutocomplete.command.exploreDescription":`Get oriented in this codebase: a high-level tour of the architecture and main parts.`,"chat.commandAutocomplete.badge.skill":`skill`,"chat.commandAutocomplete.badge.command":`command`,"chat.commandAutocomplete.badge.system":`system`,"chat.commandAutocomplete.empty":`No commands found`,"chat.agentMentionAutocomplete.badge.system":`system`,"chat.agentMentionAutocomplete.empty":`No agents found`,"chat.fileMentionAutocomplete.searchMoreAgents":`Type to search more agents`,"chat.fileMentionAutocomplete.groups.agents":`Agents`,"chat.fileMentionAutocomplete.groups.sessions":`Loaded sessions`,"chat.fileMentionAutocomplete.groups.directories":`Directories`,"chat.fileMentionAutocomplete.groups.recentFiles":`Recent files`,"chat.fileMentionAutocomplete.groups.files":`Files`,"chat.fileMentionAutocomplete.sessionType":`OpenCode session`,"chat.fileMentionAutocomplete.untitledSession":`Untitled session`,"chat.fileMentionAutocomplete.empty":`No matches found`,"chat.queuedMessage.attachments":`+{count} file(s)`,"chat.queuedMessage.empty":`(empty)`,"chat.queuedMessage.title":`Queue`,"chat.queuedMessage.edit":`edit`,"chat.queuedMessage.send":`send`,"chat.queuedMessage.queuing":`Queuing…`,"chat.queuedMessage.queuingAria":`Queuing message`,"chat.queuedMessage.removeAria":`Remove from queue`,"chat.queuedMessage.reorderAria":`Drag to reorder`,"chat.container.returnToParent.aria":`Return to parent session`,"chat.container.returnToParent.titleNamed":`Return to: {title}`,"chat.container.returnToParent.title":`Return to parent session`,"chat.container.returnToParent.label":`Parent`,"chat.container.readOnlySubagentPromptBanner":`Subagent sessions cannot be prompted.`,"chat.unifiedControls.title":`Controls`,"chat.unifiedControls.model.title":`Model`,"chat.unifiedControls.model.noRecent":`No recent models`,"chat.unifiedControls.model.moreAria":`More models`,"chat.unifiedControls.effort.title":`Effort`,"chat.unifiedControls.effort.moreAria":`More effort options`,"chat.questionCard.summaryTab":`Summary`,"chat.questionCard.noAnswer":`(no answer)`,"chat.questionCard.inputNeeded":`Input needed`,"chat.questionCard.fromSubagent":`From subagent`,"chat.questionCard.questionFallback":`Question {index}`,"chat.questionCard.selectMultiple":`Select multiple`,"chat.questionCard.recommended":`recommended`,"chat.questionCard.other":`Other…`,"chat.questionCard.yourAnswer":`Your answer`,"chat.questionCard.submit":`Submit`,"chat.questionCard.next":`Next`,"chat.questionCard.dismiss":`Dismiss`,"chat.questionCard.copyMarkdown":`Copy as Markdown`,"chat.questionCard.copyJson":`Copy as JSON`,"chat.questionCard.copiedMarkdown":`Question copied as Markdown`,"chat.questionCard.copiedJson":`Question copied as JSON`,"chat.questionCard.copyFailed":`Failed to copy question`,"chat.questionCard.submitFailed":`Failed to send response`,"chat.questionCard.dismissFailed":`Failed to dismiss question`,"chat.questionCard.noLongerPending":`This question is no longer waiting for a response.`,"chat.questionCard.tryAgain":`Please try again in a moment.`,"chat.textSelection.toast.noProject":`No project found for this session`,"chat.textSelection.toast.addToNotesFailed":`Failed to add to notes`,"chat.textSelection.toast.addToNotesSuccess":`Added selected text to notes`,"chat.textSelection.toast.addToNotesSummaryFailed":`Could not summarize selection, added selected text to notes`,"chat.textSelection.actions.addToChat":`Add to chat`,"chat.textSelection.actions.newSession":`New session`,"chat.textSelection.actions.copy":`Copy`,"chat.textSelection.actions.addToNotes":`Add to notes`,"chat.textSelection.title.addToCurrentChat":`Add to current chat`,"chat.textSelection.title.newSessionWithSelection":`Create new session with selection`,"chat.textSelection.title.saveInsightToNotes":`Save selected text to notes`,"chat.messageBody.actions.editing":`Editing…`,"chat.messageBody.actions.editStaged":`Edit pending`,"chat.messageBody.actions.cancelEdit":`Cancel edit`,"chat.messageBody.actions.editAria":`Edit message and keep changes`,"chat.messageBody.actions.edit":`Edit and keep changes`,"chat.messageBody.actions.revertAria":`Revert to this message`,"chat.messageBody.actions.revert":`Revert from here`,"chat.messageBody.actions.forkAria":`Fork from this message`,"chat.messageBody.actions.fork":`Fork from here`,"chat.messageBody.actions.openSourceSessionAria":`Open original session`,"chat.messageBody.actions.openSourceSession":`Open original session`,"chat.messageBody.actions.copyMessageAria":`Copy message text`,"chat.messageBody.actions.copyMessage":`Copy message`,"chat.messageBody.actions.openPreviewAria":`Open preview`,"chat.messageBody.actions.openPreview":`Open preview`,"chat.messageBody.actions.copyAnswer":`Copy answer`,"chat.messageBody.actions.savingImage":`Saving image...`,"chat.messageBody.actions.saveAsImage":`Save as image`,"chat.messageBody.meta.tpsAria":`Generation rate: {rate}`,"chat.messageBody.meta.tpsTooltip":`Generation speed (tokens/sec), excluding tool call time`,"chat.messageBody.forkDialog.instructions.label":`Instructions`,"chat.messageBody.forkDialog.instructions.placeholder":`Add instructions for the new session…`,"chat.messageBody.forkDialog.createWorktree":`Create worktree`,"chat.forkTransition.preparing":`Preparing the fork`,"chat.forkTransition.copying":`Copying the conversation (long sessions may take a while)`,"chat.forkTransition.opening":`Opening the new session`,"chat.forkTransition.loading":`Loading recent messages`,"chat.forkTransition.progress":`{current} / {total}`,"chat.generatedResult.actions.copy":`Copy`,"chat.generatedResult.actions.copied":`Copied`,"chat.generatedResult.commit.title":`Generated commit message`,"chat.generatedResult.commit.highlights":`Highlights`,"chat.generatedResult.pullRequest.title":`Generated pull request`,"chat.generatedResult.pullRequest.titleLabel":`Title`,"chat.generatedResult.pullRequest.bodyLabel":`Body`,"chat.messageBody.tts.stopSpeaking":`Stop speaking`,"chat.messageBody.tts.readAloud":`Read aloud`,"chat.messageBody.tts.readAloudWithProvider":`Read aloud ({provider} voice)`,"planView.tts.readAloud":`Read plan aloud`,"planView.tts.stopSpeaking":`Stop speaking`,"filesView.tts.readAloud":`Read file aloud`,"filesView.tts.stopSpeaking":`Stop speaking`,"chat.messageBody.toast.imageSaved":`Image saved`,"chat.messageBody.toast.generateImageFailed":`Failed to generate image`,"chat.chatInput.actions.commands":`Commands`,"chat.chatInput.actions.attachFiles":`Attach files`,"chat.chatInput.actions.attachPhotos":`Attach photos`,"chat.chatInput.actions.addAttachment":`Add attachment`,"chat.chatInput.actions.linkGithubIssue":`Link GitHub Issue`,"chat.chatInput.actions.linkGithubPr":`Link GitHub PR`,"chat.chatInput.actions.modelAgentSettings":`Model and agent settings`,"chat.chatInput.actions.sendMessageAria":`Send message`,"chat.chatInput.actions.queueMessageAria":`Queue message`,"chat.chatInput.actions.queuingMessageAria":`Queuing…`,"chat.chatInput.actions.sendingMessageAria":`Sending…`,"chat.chatInput.actions.stopGeneratingAria":`Stop generating`,"chat.chatInput.focusMode.toggleAria":`Toggle focus mode`,"chat.chatInput.focusMode.label":`Focus mode`,"chat.chatInput.permissionAutoAccept.disable":`Disable permission auto-accept`,"chat.chatInput.permissionAutoAccept.enable":`Enable permission auto-accept`,"chat.chatInput.permissionAutoAccept.on":`Permission auto-accept: on`,"chat.chatInput.permissionAutoAccept.off":`Permission auto-accept: off`,"chat.chatInput.linked.byAuthor":`by {author}`,"chat.chatInput.linked.issue.openInBrowserAria":`Open issue in browser`,"chat.chatInput.linked.issue.removeAria":`Remove linked issue`,"chat.chatInput.linked.pr.number":`PR #{number}`,"chat.chatInput.linked.pr.openInBrowserAria":`Open pull request in browser`,"chat.chatInput.linked.pr.removeAria":`Remove linked pull request`,"chat.chatInput.placeholder.shell":`Enter shell command...`,"chat.chatInput.placeholder.chat":`@ for files/agents; / for commands and skills; ! for shell; # for snippets`,"chat.chatInput.placeholder.chatCompact":`Use @ / ! # for helpers`,"chat.chatInput.placeholder.selectSession":`Select or create a session to start chatting`,"chat.chatInput.pastedTextReference":`Pasted text #{index} · {count} characters`,"chat.dictation.start":`Start dictation`,"chat.dictation.overlayAria":`Dictation`,"chat.dictation.downloadingModel":`Downloading speech model...`,"chat.dictation.downloadingModelProgress":`Downloading speech model... {percent}%`,"chat.dictation.listening":`Listening...`,"chat.dictation.processing":`Transcribing...`,"chat.dictation.failed":`Transcription failed`,"chat.dictation.cancel":`Discard dictation`,"chat.dictation.insert":`Insert transcript`,"chat.dictation.insertAndSend":`Insert and send`,"chat.dictation.retry":`Retry transcription`,"chat.dictation.discard":`Discard recording`,"chat.snippetAutocomplete.action.addNew":`+ Add new snippet`,"chat.snippetAutocomplete.empty":`No snippets found`,"chat.snippetAutocomplete.footer":`↑↓ navigate • Enter select • Esc close`,"snippets.source.global":`global`,"snippets.source.project":`project`,"chat.chatInput.toast.compactFailed":`Failed to compact session`,"chat.chatInput.toast.summaryFailed":`Failed to generate summary`,"chat.messageBody.actions.sendReviewFeedback":`Send review feedback to implementing agent`,"chat.messageBody.actions.sendImplementationResponse":`Send implementation response to reviewing agent`,"chat.chatInput.toast.reviewFailed":`Failed to review changes`,"chat.chatInput.toast.planFeatureFailed":`Failed to start feature planning`,"chat.chatInput.toast.catchUpFailed":`Failed to catch up`,"chat.chatInput.toast.debugFailed":`Failed to start debugging`,"chat.chatInput.toast.weighFailed":`Failed to weigh options`,"chat.chatInput.toast.exploreFailed":`Failed to start the tour`,"chat.chatInput.toast.attachmentsTooLarge":`Attachments are too large to send. Please try reducing the number or size of images.`,"chat.chatInput.toast.sendAttachmentsFailed":`Failed to send attachments. Try fewer files or smaller images.`,"chat.chatInput.toast.messageSendFailed":`Message failed to send. Attachments restored.`,"chat.chatInput.toast.sendStatusUnknown":`Message status unknown. Please check and try again.`,"chat.chatInput.toast.queueOperationFailed":`Queue operation failed.`,"chat.chatInput.toast.queueOperationStatusUnknown":`Queue operation status is unknown. Server state will refresh automatically.`,"chat.chatInput.toast.clipboardAttachFailed":`Failed to attach image from clipboard`,"chat.chatInput.toast.attachFileFailed":`Failed to attach file`,"chat.chatInput.toast.attachNamedFailed":`Failed to attach {name}`,"chat.chatInput.toast.someFilesSkipped":`Some files were skipped:
15
- {summary}`,"chat.chatInput.toast.vscodePickFailed":`Failed to pick files in VS Code`,"chat.chatInput.toast.openSessionFirst":`Open a session first`,"chat.chatInput.toast.togglePermissionAutoAcceptFailed":`Failed to toggle permission auto-accept`,"chat.chatInput.toast.sessionReferenceLoadFailed":`Could not load the session reference.`,"chat.chatInput.reviewComments":`Review comments:`,"chat.chatInput.reviewCommentsRemove":`Remove review comments`,"chat.chatInput.devServerLogs":`Dev Server logs:`,"chat.chatInput.devServerLogsRemove":`Remove Dev Server logs`,"chat.chatInput.previewAnnotations":`Preview annotations:`,"chat.chatInput.previewContext":`Preview context:`,"chat.chatInput.previewContextRemove":`Remove preview context`,"chat.chatInput.projectRoot":`Project root`,"chat.chatInput.branch":`Branch`,"chat.chatInput.draftPicker.projectTitle":`Project`,"chat.chatInput.draftPicker.newProject":`New project`,"chat.chatInput.draftPicker.searchProjects":`Search projects...`,"chat.chatInput.draftPicker.searchBranches":`Search branches...`,"chat.chatInput.worktrees":`Worktrees`,"chat.chatInput.worktreeNew":`+ New`,"chat.chatInput.branchSwitch.title":`Switch to {branch}?`,"chat.chatInput.branchSwitch.description":`How should this branch be opened for the new conversation?`,"chat.chatInput.branchSwitch.createWorktree":`Create worktree`,"chat.chatInput.branchSwitch.createWorktreeDescription":`Keep the current directory as-is and work in an isolated worktree.`,"chat.chatInput.branchSwitch.checkoutHere":`Checkout here`,"chat.chatInput.branchSwitch.checkoutHereDescription":`Switch the current directory to this branch.`,"chat.chatInput.branchSwitch.cancel":`Cancel`,"chat.chatInput.drop.insertMention":`Drop to insert as mention`,"chat.chatInput.drop.attachFiles":`Drop files here to attach`,"chat.chatInput.fileFallback":`file`,"chat.mobileStatus.editProjects.title":`Edit Projects`,"chat.mobileStatus.editProjects.footer":`Drag items to reorder, or use arrows to move. Tap edit to change details.`,"chat.mobileStatus.editProjects.empty":`No projects to edit`,"chat.mobileStatus.projects.empty":`No projects`,"chat.mobileStatus.projects.addAria":`Add project`,"chat.mobileStatus.projects.removeTitle":`Remove Project`,"chat.mobileStatus.projects.removeDescriptionPrefix":`Are you sure you want to remove`,"chat.mobileStatus.projects.cancel":`Cancel`,"chat.mobileStatus.projects.remove":`Remove`,"chat.mobileStatus.new":`New`,"chat.mobileStatus.noSessionsInProject":`No sessions in this project`,"chat.mobileStatus.swipeHint":`← Swipe here to open sidebars →`,"chat.mobileStatus.toast.addProjectFailed":`Failed to add project`,"chat.mobileStatus.toast.selectValidDirectory":`Please select a valid directory.`,"chat.mobileStatus.toast.selectDirectoryFailed":`Failed to select directory`,"chat.toolOutputDialog.image.previousAria":`Previous image`,"chat.toolOutputDialog.image.nextAria":`Next image`,"chat.toolOutputDialog.image.zoomInAria":`Zoom in`,"chat.toolOutputDialog.image.zoomOutAria":`Zoom out`,"chat.toolOutputDialog.image.resetZoomAria":`Reset zoom`,"chat.image.actions.sheetTitle":`Image`,"chat.image.actions.saveImage":`Save image`,"chat.image.actions.saveToPhotos":`Save to Photos`,"chat.image.actions.saving":`Saving…`,"chat.image.actions.saveSuccess":`Image saved`,"chat.image.actions.saveFailed":`Could not save image`,"chat.toolOutputDialog.mermaid.missingSource":`Missing Mermaid source URL.`,"chat.toolOutputDialog.mermaid.loadFailed":`Unable to load Mermaid diagram.`,"chat.toolOutputDialog.mermaid.dataUrlMalformed":`The Mermaid data URL is malformed.`,"chat.toolOutputDialog.mermaid.invalidLocalPath":`The local Mermaid file path is invalid.`,"chat.toolOutputDialog.mermaid.readFileFailedWithStatus":`Unable to read Mermaid file. Status: {status}.`,"chat.toolOutputDialog.mermaid.unsupportedUrlProtocol":`The Mermaid URL protocol is unsupported.`,"chat.toolOutputDialog.mermaid.loadFailedWithStatus":`Unable to load Mermaid diagram. Status: {status}.`,"chat.toolOutputDialog.mermaid.closeAria":`Close diagram preview`,"chat.toolOutputDialog.mermaid.loading":`Loading diagram...`,"chat.toolOutputDialog.mermaid.renderFailed":`Unable to render Mermaid diagram.`,"chat.toolOutputDialog.mermaid.retry":`Retry`,"chat.toolOutputDialog.commandCompleted":`Command completed successfully`,"chat.toolOutputDialog.noOutputProduced":`No output was produced`,"chat.activity.outputLoading":`Loading full output…`,"chat.activity.outputLoadFailed":`Could not load full output.`,"chat.activity.outputRetry":`Retry`,"chat.fileAttachment.image.loading":`Loading image…`,"chat.fileAttachment.image.loadFailed":`Could not load image.`,"chat.fileAttachment.image.retry":`Retry loading image`,"chat.fileAttachment.image.loadManually":`Load image`,"chat.fileAttachment.image.loadManuallyCount":`Load {count} images`,"chat.toolPart.lspErrors":`LSP errors`,"chat.toolPart.moreErrors":`+{count} more errors`,"chat.toolPart.error":`Error:`,"chat.toolPart.awaitingResponse":`Awaiting response...`,"chat.toolPart.noOutputProduced":`No output produced`,"chat.toolPart.output":`Output`,"chat.toolPart.showRawJson":`Show raw JSON`,"chat.toolPart.showFormattedJson":`Show formatted JSON`,"chat.toolPart.showNavigableJson":`Show navigable JSON`,"chat.toolPart.openFileAtFirstChange":`Open file at first change`,"chat.toolPart.openFileDiff":`Open file diff`,"chat.toolPart.copyOutput":`Copy output`,"chat.toolPart.copiedOutput":`Copied output`,"chat.toolPart.copyOutputFailed":`Failed to copy output`,"chat.toolPart.openSubtask":`Open {type} subtask`,"chat.todo.total":`Total`,"chat.todo.inProgress":`In Progress`,"chat.todo.pending":`Pending`,"chat.todo.completed":`Completed`,"chat.todo.cancelled":`Cancelled`,"chat.permissionCard.workingDirectory":`Working Directory:`,"chat.permissionCard.timeout":`Timeout:`,"chat.permissionCard.request":`Request:`,"chat.permissionCard.headers":`Headers:`,"chat.permissionCard.body":`Body:`,"chat.permissionCard.action":`Action:`,"chat.permissionCard.details":`Details:`,"chat.permissionCard.patterns":`Patterns:`,"chat.permissionCard.replaceAll":`Replace all occurrences`,"chat.permissionCard.responseFormat":`Response format:`,"chat.permissionCard.allowOnce":`Allow once`,"chat.permissionCard.alwaysAgree":`Always agree`,"chat.permissionToast.sessionFallback":`Session`,"chat.permissionToast.permissionFallback":`Permission details unavailable`,"chat.permissionToast.labels.session":`Session:`,"chat.permissionToast.labels.permission":`Permission:`,"chat.permissionToast.actions.once":`Once`,"chat.permissionToast.actions.always":`Always`,"chat.permissionToast.actions.deny":`Deny`,"chat.permissionToast.actions.approveOnceAria":`Approve once`,"chat.permissionToast.actions.approveOnceAriaWithSession":`Approve once for {session}`,"chat.permissionToast.actions.approveAlwaysAria":`Approve always`,"chat.permissionToast.actions.approveAlwaysAriaWithSession":`Approve always for {session}`,"chat.permissionToast.actions.denyAria":`Deny permission`,"chat.permissionToast.actions.denyAriaWithSession":`Deny permission for {session}`,"chat.permissionRequest.required":`Permission required:`,"chat.permissionRequest.actions.once":`Once`,"chat.permissionRequest.actions.always":`Always`,"chat.permissionRequest.actions.reject":`Reject`,"chat.modelControls.provider":`Provider`,"chat.modelControls.capability.toolCalling":`Tool calling`,"chat.modelControls.capability.reasoning":`Reasoning`,"chat.modelControls.modality.text":`Text`,"chat.modelControls.modality.image":`Image`,"chat.modelControls.modality.video":`Video`,"chat.modelControls.modality.audio":`Audio`,"chat.modelControls.modality.pdf":`PDF`,"chat.modelControls.capabilities":`Capabilities`,"chat.modelControls.modalities":`Modalities`,"chat.modelControls.input":`Input`,"chat.modelControls.output":`Output`,"chat.modelControls.limits":`Limits`,"chat.modelControls.context":`Context`,"chat.modelControls.metadata":`Metadata`,"chat.modelControls.knowledge":`Knowledge`,"chat.modelControls.release":`Release`,"chat.modelControls.mode":`Mode`,"chat.modelControls.model":`Model`,"chat.modelControls.temperature":`Temperature`,"chat.modelControls.topP":`Top P`,"chat.modelControls.permissions":`Permissions`,"chat.modelControls.edit":`Edit`,"chat.modelControls.bash":`Bash`,"chat.modelControls.webFetch":`WebFetch`,"chat.modelControls.customPrompt":`Custom Prompt`,"chat.modelControls.selectModel":`Select model`,"chat.modelControls.searchProvidersOrModels":`Search providers or models`,"chat.modelControls.clearSearch":`Clear search`,"chat.modelControls.current":`Current`,"chat.modelControls.thinking":`Thinking`,"chat.modelControls.default":`Default`,"chat.modelControls.selectAgent":`Select agent`,"chat.modelControls.costPerMillion":`Cost`,"chat.modelControls.costInput":`In`,"chat.modelControls.costOutput":`Out`,"chat.modelControls.metadataUnavailable":`Model metadata unavailable.`,"chat.modelControls.addNewProvider":`Add new provider`,"chat.modelControls.noAgentSelected":`No agent selected.`,"chat.modelControls.resetToDefault":`Reset to default`,"chat.modelControls.searchModels":`Search models`,"chat.modelControls.searchAgents":`Search agents`,"chat.modelControls.noModelsFound":`No models found`,"chat.modelControls.favorites":`Favorites`,"chat.modelControls.recent":`Recent`,"chat.modelControls.addToFavorites":`Add to favorites`,"chat.modelControls.removeFromFavorites":`Remove from favorites`,"chat.modelControls.favoriteAria":`Favorite`,"chat.modelControls.unfavoriteAria":`Unfavorite`,"chat.modelControls.collapseProvider":`Collapse provider`,"chat.modelControls.expandProvider":`Expand provider`,"chat.modelControls.keyboardHint":`↑↓ navigate{thinking} • Enter select • Esc close`,"chat.modelControls.keyboardHintNavigate":`↑↓ navigate`,"chat.modelControls.keyboardHintSwitchAgent":`{shortcut} switch agent`,"chat.modelControls.keyboardHintSwitchAgentLabel":`Switch agent`,"chat.modelControls.keyboardHintThinking":`←→ thinking`,"chat.modelControls.showThinkingModes":`Show thinking modes`,"chat.modelControls.hideThinkingModes":`Hide thinking modes`,"chat.modelControls.moreThinkingModes":`More thinking modes`,"chat.modelControls.noProvidersOrModelsFound":`No providers or models match your search.`,"chat.modelControls.reorderFavoriteAria":`Reorder favorite`,"chat.modelControls.reorderFavoriteTitle":`Drag to reorder favorite`,"chat.modelControls.reorderProviderTitle":`Drag to reorder provider`,"chat.modelControls.permissionLabel.custom":`Custom`,"chat.modelControls.permissionLabel.allow":`Allow`,"chat.modelControls.permissionLabel.deny":`Deny`,"chat.modelControls.permissionLabel.ask":`Ask`,"chat.modelControls.modeValue.primary":`Primary`,"chat.modelControls.modeValue.subagent":`Subagent`,"chat.modelControls.modeValue.all":`All`,"chat.modelControls.modeValue.none":`—`,"chat.reasoningTrace.thinking":`Thinking`,"chat.reasoningTrace.justification":`Justification`,"chat.reasoningTrace.expandAria":`Expand reasoning trace`,"chat.reasoningTrace.collapseAria":`Collapse reasoning trace`,"chat.reasoningTrace.thought":`Thought`,"chat.contextGroup.exploring":`Exploring`,"chat.contextGroup.explored":`Explored`,"chat.contextGroup.expandAria":`Expand explored tools`,"chat.contextGroup.collapseAria":`Collapse explored tools`,"chat.contextGroup.readSingle":`{count} read`,"chat.contextGroup.readPlural":`{count} reads`,"chat.contextGroup.searchSingle":`{count} search`,"chat.contextGroup.searchPlural":`{count} searches`,"chat.contextGroup.listSingle":`{count} list`,"chat.contextGroup.listPlural":`{count} lists`,"chat.skillGroup.expandAria":`Expand loaded skills`,"chat.skillGroup.collapseAria":`Collapse loaded skills`,"chat.skillGroup.summaryOverflow":`{names} and {count} more`,"chat.tools.display.read":`Read File`,"chat.tools.display.write":`Write File`,"chat.tools.display.edit":`Edit File`,"chat.tools.display.multiedit":`Multi-Edit`,"chat.tools.display.apply_patch":`Apply Patch`,"chat.tools.display.bash":`Shell Command`,"chat.tools.display.grep":`Search Files`,"chat.tools.display.glob":`Find Files`,"chat.tools.display.list":`List Directory`,"chat.tools.display.task":`Agent Task`,"chat.tools.display.webfetch":`Fetch URL`,"chat.tools.display.websearch":`Web Search`,"chat.tools.display.codesearch":`Code Search`,"chat.tools.display.todowrite":`Update Todo List`,"chat.tools.display.todoread":`Read Todo List`,"chat.tools.display.skill":`Load Skill`,"chat.tools.display.question":`Question`,"chat.tools.display.lsp":`LSP`,"chat.tools.display.plan_enter":`Plan Mode`,"chat.tools.display.plan_exit":`Build Mode`,"chat.tools.display.structuredoutput":`Structured Output`,"chat.messageBody.subtask.title":`Delegated task`,"chat.messageBody.subtask.hidePrompt":`Hide prompt`,"chat.messageBody.subtask.showPrompt":`Show prompt`,"chat.messageBody.subtask.openSession":`Open subtask session`,"chat.messageBody.subagent.completed":`Completed`,"chat.messageBody.subagent.error":`Failed`,"chat.messageBody.subagent.cancelled":`Cancelled`,"chat.messageBody.subagent.completedDescription":`Background subagent completed`,"chat.messageBody.subagent.errorDescription":`Background subagent failed`,"chat.messageBody.subagent.cancelledDescription":`Background subagent cancelled`,"chat.messageBody.subagent.openSession":`Open subagent session: {label}`,"chat.messageBody.shellCommand.title":`Shell command`,"chat.messageBody.shellCommand.hideOutput":`Hide output`,"chat.messageBody.shellCommand.showOutput":`Show output`,"chat.messageBody.shellCommand.copied":`Copied`,"chat.messageBody.shellCommand.copyOutput":`Copy output`,"commandPalette.title":`Command Palette`,"commandPalette.description":`Search files, sessions, and commands.`,"commandPalette.input.placeholder":`Search files, sessions, commands...`,"commandPalette.empty.noResults":`No results found.`,"commandPalette.empty.searchingFiles":`Searching files...`,"commandPalette.item.newSession":`New Session`,"commandPalette.item.newMiniChat":`New Mini Chat Window`,"commandPalette.item.newWorktreeDraft":`New Worktree Draft`,"commandPalette.item.addProject":`Add Project`,"commandPalette.item.showSessionSwitcher":`Show Session Switcher`,"commandPalette.item.toggleSidebar":`Toggle Sidebar`,"commandPalette.item.toggleRightSidebar":`Toggle Right Sidebar`,"commandPalette.item.showContextUsage":`Show Context Usage`,"commandPalette.item.toggleTerminal":`Toggle Terminal`,"commandPalette.item.newTerminalTab":`New Terminal Tab`,"commandPalette.item.openSettings":`Open Settings...`,"commandPalette.session.untitled":`Untitled Session`,"openCodeStatusDialog.title":`OpenCode Status`,"openCodeStatusDialog.description":`Inspect current OpenCode status and diagnostics.`,"openCodeStatusDialog.actions.copy":`Copy`,"openCodeStatusDialog.empty.noData":`No data.`,"openCodeStatusDialog.toast.copiedTitle":`Copied`,"openCodeStatusDialog.toast.copiedDescription":`Status copied to clipboard`,"openCodeStatusDialog.toast.copyFailed":`Failed to copy status`,"branchPickerDialog.title":`Branch Picker`,"branchPickerDialog.description.localBranchesForProject":`Local branches for {project}`,"branchPickerDialog.description.selectProject":`Select a project to view branches`,"branchPickerDialog.search.placeholder":`Search branches...`,"branchPickerDialog.search.renameBranchPlaceholder":`Rename branch`,"branchPickerDialog.state.noProjectSelected":`No project selected`,"branchPickerDialog.state.loadingBranches":`Loading branches...`,"branchPickerDialog.state.noMatchingBranches":`No matching branches`,"branchPickerDialog.state.noBranchesFound":`No branches found`,"branchPickerDialog.badge.head":`HEAD`,"branchPickerDialog.badge.worktree":`worktree`,"branchPickerDialog.actions.createWorktreeAria":`Create worktree from branch`,"branchPickerDialog.actions.renameAria":`Rename branch`,"branchPickerDialog.actions.deleteAria":`Delete branch`,"branchPickerDialog.actions.deleteWorktreeAria":`Remove worktree`,"branchPickerDialog.actions.confirmRenameAria":`Confirm rename`,"branchPickerDialog.actions.cancelRenameAria":`Cancel rename`,"branchPickerDialog.actions.confirmDeleteAria":`Confirm delete branch`,"branchPickerDialog.actions.cancelDeleteAria":`Cancel delete branch`,"branchPickerDialog.actions.deletePrompt":`Delete`,"branchPickerDialog.actions.forceDeletePrompt":`Force Delete`,"branchPickerDialog.tooltip.createWorktree":`Create worktree`,"branchPickerDialog.tooltip.worktreeAlreadyExists":`Worktree already exists`,"branchPickerDialog.tooltip.rename":`Rename branch`,"branchPickerDialog.tooltip.renameDisabledForRoot":`Cannot rename root branch`,"branchPickerDialog.tooltip.delete":`Delete branch`,"branchPickerDialog.tooltip.deleteCurrentBranch":`Cannot delete current branch`,"branchPickerDialog.tooltip.deleteDisabledForRoot":`Cannot delete root branch`,"branchPickerDialog.tooltip.deleteWorktree":`Remove worktree`,"branchPickerDialog.tooltip.deleteWorktreeRootProtected":`Cannot remove root worktree`,"branchPickerDialog.toast.branchRenamed":`Branch renamed`,"branchPickerDialog.toast.failedToRenameBranch":`Failed to rename branch`,"branchPickerDialog.toast.branchDeleted":`Branch deleted`,"branchPickerDialog.toast.branchNotMerged":`Branch is not fully merged`,"branchPickerDialog.toast.confirmAgainToForceDelete":`Confirm again to force delete`,"branchPickerDialog.toast.failedToDeleteBranch":`Failed to delete branch`,"branchPickerDialog.toast.worktreeCreated":`Worktree created`,"branchPickerDialog.toast.failedToCreateWorktree":`Failed to create worktree`,"branchPickerDialog.error.failedToLoad":`Failed to load branches`,"branchPickerDialog.error.renameRejected":`Rename was rejected`,"branchPickerDialog.error.renameFailed":`Failed to rename branch`,"branchPickerDialog.error.deleteRejected":`Delete was rejected`,"branchPickerDialog.error.deleteFailed":`Failed to delete branch`,"branchPickerDialog.error.createWorktreeFailed":`Failed to create worktree`,"projectEditDialog.title":`Edit project`,"projectEditDialog.field.name":`Name`,"projectEditDialog.field.namePlaceholder":`Project name`,"projectEditDialog.field.color":`Color`,"projectEditDialog.field.icon":`Icon`,"projectEditDialog.field.preview":`Preview`,"projectEditDialog.field.iconBackground":`Icon Background`,"projectEditDialog.field.iconBackgroundAria":`Project icon background color`,"projectEditDialog.option.none":`None`,"projectEditDialog.actions.uploadIcon":`Upload Icon`,"projectEditDialog.actions.uploading":`Uploading...`,"projectEditDialog.actions.discoverFavicon":`Discover Favicon`,"projectEditDialog.actions.discovering":`Discovering...`,"projectEditDialog.actions.removeProjectIcon":`Remove Project Icon`,"projectEditDialog.actions.removing":`Removing...`,"projectEditDialog.actions.undoRemove":`Undo Remove`,"projectEditDialog.actions.clear":`Clear`,"projectEditDialog.actions.cancel":`Cancel`,"projectEditDialog.actions.save":`Save`,"projectEditDialog.toast.failedToUploadIcon":`Failed to upload project icon`,"projectEditDialog.toast.iconUpdated":`Project icon updated`,"projectEditDialog.toast.failedToRemoveIcon":`Failed to remove project icon`,"projectEditDialog.toast.iconRemoved":`Project icon removed`,"projectEditDialog.toast.failedToDiscoverIcon":`Failed to discover project icon`,"projectEditDialog.toast.customIconAlreadySet":`Custom icon already set for this project`,"projectEditDialog.toast.iconDiscovered":`Project icon discovered`,"agentManager.sidebar.search.placeholder":`Search Agent Groups...`,"agentManager.sidebar.actions.newAgentGroup":`New Agent Group`,"agentManager.sidebar.actions.more":`... More ({count})`,"agentManager.sidebar.actions.showLess":`Show less`,"agentManager.sidebar.section.agentGroups":`Agent Groups`,"agentManager.sidebar.state.loading":`Loading...`,"agentManager.sidebar.state.noGroupsFound":`No groups found`,"agentManager.sidebar.state.noGroupsYet":`No agent groups yet`,"agentManager.sidebar.state.createToGetStarted":`Create a new agent group to get started`,"agentManager.sidebar.item.modelCountSingle":`{count} model`,"agentManager.sidebar.item.modelCountPlural":`{count} models`,"agentManager.sidebar.item.groupMenuAria":`Group menu`,"agentManager.sidebar.item.delete":`Delete`,"agentManager.sidebar.relativeTime.now":`now`,"agentManager.sidebar.relativeTime.minutes":`{count}m`,"agentManager.sidebar.relativeTime.hours":`{count}h`,"agentManager.sidebar.relativeTime.days":`{count}d`,"agentManager.sidebar.dialog.deleteGroupTitle":`Delete agent group`,"agentManager.sidebar.dialog.deleteGroupDescription":`Delete "{group}"? This removes all worktrees and sessions in this group.`,"agentManager.sidebar.dialog.cancel":`Cancel`,"agentManager.sidebar.dialog.delete":`Delete`,"agentManager.sidebar.dialog.deleting":`Deleting...`,"agentManager.sidebar.toast.deletingGroup":`Deleting "{group}"...`,"agentManager.sidebar.toast.deletedGroup":`Deleted "{group}"`,"agentManager.sidebar.toast.failedToDeleteGroup":`Failed to fully delete "{group}"`,"agentManager.detail.header.modelCountSingle":`{count} model`,"agentManager.detail.header.modelCountPlural":`{count} models`,"agentManager.detail.header.noBranch":`No branch`,"agentManager.detail.actions.worktreeActionsAria":`Worktree actions`,"agentManager.detail.actions.removeThisWorktree":`Remove this worktree`,"agentManager.detail.actions.keepThisRemoveOthers":`Leave this one, remove others`,"agentManager.detail.actions.copyWorktreePath":`Copy Worktree Path`,"agentManager.detail.dialog.removeWorktreeTitle":`Remove worktree`,"agentManager.detail.dialog.removeOtherWorktreesTitle":`Remove other worktrees`,"agentManager.detail.dialog.removeWorktreeDescription":`Remove "{label}"? This deletes all sessions in that worktree and removes the worktree itself.`,"agentManager.detail.dialog.removeOtherWorktreesDescription":`Keep "{label}" and remove the other worktrees in "{group}".`,"agentManager.detail.dialog.cancel":`Cancel`,"agentManager.detail.dialog.remove":`Remove`,"agentManager.detail.dialog.removeOthers":`Remove others`,"agentManager.detail.dialog.working":`Working...`,"agentManager.detail.state.loadingSessionFor":`Loading session for {label}`,"agentManager.detail.state.sessionId":`Session ID: {id}`,"agentManager.detail.state.noSessionsInGroup":`No sessions in this group`,"agentManager.detail.toast.noWorktreePath":`No worktree path available`,"agentManager.detail.toast.worktreePathCopied":`Worktree path copied`,"agentManager.detail.toast.failedToCopyPath":`Failed to copy path`,"agentManager.detail.toast.removingWorktree":`Removing worktree...`,"agentManager.detail.toast.removingOtherWorktrees":`Removing other worktrees...`,"agentManager.detail.toast.failedToFullyRemoveWorktree":`Failed to fully remove worktree`,"agentManager.detail.toast.worktreeRemoved":`Worktree removed`,"agentManager.detail.toast.otherWorktreesRemoved":`Removed other worktrees`,"agentManager.empty.groupName.label":`Group Name`,"agentManager.empty.groupName.placeholder":`e.g. feature-auth, bugfix-login`,"agentManager.empty.groupName.description":`Used for worktree directory and branch naming`,"agentManager.empty.baseBranch.label":`Base Branch`,"agentManager.empty.baseBranch.description":`Creates new branches from {branch}`,"agentManager.empty.setupCommands.label":`Setup commands`,"agentManager.empty.setupCommands.configured":`{count} configured`,"agentManager.empty.setupCommands.description":`Commands run in each new worktree. Use $ROOT_PROJECT_PATH for project root.`,"agentManager.empty.setupCommands.loading":`Loading...`,"agentManager.empty.setupCommands.commandPlaceholder":`e.g., bun install`,"agentManager.empty.setupCommands.removeCommandAria":`Remove command`,"agentManager.empty.setupCommands.addCommand":`Add command`,"agentManager.empty.agent.label":`Agent`,"agentManager.empty.agent.description":`Defaults to your configured default agent`,"agentManager.empty.models.label":`Models`,"agentManager.empty.models.addModel":`Add model`,"agentManager.empty.models.selectedSingle":`{count} model selected`,"agentManager.empty.models.selectedPlural":`{count} models selected`,"agentManager.empty.prompt.label":`Prompt`,"agentManager.empty.prompt.placeholder":`Ask anything...`,"agentManager.empty.prompt.addAttachmentAria":`Add attachment`,"agentManager.empty.actions.startAgentGroupAria":`Start Agent Group`,"agentManager.empty.toast.fileTooLarge":`File "{fileName}" is too large (max 10MB)`,"agentManager.empty.toast.failedToAttach":`Failed to attach "{fileName}"`,"agentManager.empty.toast.attachedSingle":`Attached {count} file`,"agentManager.empty.toast.attachedPlural":`Attached {count} files`,"agentManager.empty.toast.failedToCreateGroup":`Failed to create agent group`,"openInApp.actions.open":`Open`,"openInApp.actions.openInAria":`Open in {app}`,"openInApp.actions.chooseAppAria":`Choose app to open`,"openInApp.actions.copyPath":`Copy Path`,"openInApp.actions.refreshApps":`Refresh Apps`,"openInApp.toast.pathCopied":`Path copied to clipboard`,"projectActions.actions.addActionAria":`Add action`,"projectActions.actions.addAction":`Add action`,"projectActions.actions.addNewAction":`Add new action`,"projectActions.actions.autoDiscover":`Auto-discover`,"projectActions.actions.chooseActionAria":`Choose project action`,"projectActions.actions.openPreview":`Open Preview`,"projectActions.actions.runNamedAria":`Run {name}`,"projectActions.actions.stopNamedAria":`Stop {name}`,"projectActions.label.fallbackAction":`Action`,"projectActions.toast.openedUrlFromOutput":`Opened URL from action output`,"projectActions.toast.openedForwardedUrl":`Opened forwarded URL`,"projectActions.toast.openedActionUrl":`Opened action URL`,"projectActions.error.noActiveDirectory":`No active directory`,"projectActions.error.noActiveDirectoryForAction":`No active directory for action`,"projectActions.error.failedToCreateTerminalSession":`Failed to create terminal session`,"projectActions.error.invalidCustomUrlFormat":`Invalid custom URL format`,"projectActions.error.selectedDesktopSshForwardUnavailable":`Selected desktop SSH forward is unavailable`,"projectActions.error.failedToRunAction":`Failed to run action`,"mcpDropdown.title":`MCP Servers`,"mcpDropdown.actions.refreshAria":`Refresh`,"mcpDropdown.actions.openAria":`MCP servers`,"mcpDropdown.statusAria":`MCP status`,"mcpDropdown.status.unknown":`Unknown`,"mcpDropdown.status.connected":`Connected`,"mcpDropdown.status.failed":`Failed: {error}`,"mcpDropdown.status.unknownError":`Unknown error`,"mcpDropdown.status.needsAuth":`Needs authentication`,"mcpDropdown.status.needsRegistration":`Needs registration: {error}`,"mcpDropdown.empty.configureInConfig":`Configure MCP servers in Settings.`,"sessionAuth.error.rateLimitTitle":`Too many attempts`,"sessionAuth.error.networkTitle":`Unable to reach server`,"sessionAuth.error.rateLimitDescriptionSingle":`Please wait {minutes} minute before trying again.`,"sessionAuth.error.rateLimitDescriptionPlural":`Please wait {minutes} minutes before trying again.`,"sessionAuth.error.networkDescription":`We could not verify the UI session. If you're opening OpenChamber from another device on your local network, make sure Desktop Network Access is enabled on the desktop app and use the LAN address shown in Settings.`,"sessionAuth.error.retry":`Retry`,"sessionAuth.error.passkeySetupFailed":`Passkey setup failed.`,"sessionAuth.error.incorrectPassword":`Incorrect password. Try again.`,"sessionAuth.error.unexpectedResponse":`Unexpected response from server.`,"sessionAuth.error.networkRetry":`Network error. Check connection and retry.`,"sessionAuth.error.passkeySignInCanceled":`Passkey sign-in was canceled.`,"sessionAuth.error.enterPasswordForPasskey":`Enter your password to add a passkey.`,"sessionAuth.locked.tunnelTitle":`Tunnel access required`,"sessionAuth.locked.unlockTitle":`Unlock OpenChamber`,"sessionAuth.locked.tunnelDescription":`Open this tunnel using the one-time connect link from the desktop app.`,"sessionAuth.locked.passwordDescription":`This session is password-protected.`,"sessionAuth.locked.hostSwitcherHint":`Use Local if remote is unreachable.`,"sessionAuth.actions.cancelPasskey":`Cancel passkey`,"sessionAuth.actions.usePasskey":`Use passkey`,"sessionAuth.actions.unlockingAria":`Unlocking`,"sessionAuth.actions.unlockAria":`Unlock`,"sessionAuth.actions.trustDevice":`Trust this device`,"sessionAuth.actions.trustDeviceAria":`Trust this device`,"sessionAuth.actions.cancelPasskeySetup":`Cancel passkey setup`,"sessionAuth.actions.addPasskey":`Add passkey`,"sessionAuth.password.placeholder":`Enter password`,"sessionAuth.toast.passkeyAdded":`Passkey added`,"sessionAuth.toast.passkeySetupCanceled":`Passkey setup canceled`,"desktopHostSwitcher.title":`Instance`,"desktopHostSwitcher.transition.title":`Switching instance…`,"desktopHostSwitcher.transition.description":`Loading data from the selected instance.`,"desktopHostSwitcher.description":`Switch between Local and remote OpenChamber servers`,"desktopHostSwitcher.header.current":`Current`,"desktopHostSwitcher.header.default":`Default`,"desktopHostSwitcher.header.currentColon":`Current:`,"desktopHostSwitcher.header.currentDefaultColon":`Current default:`,"desktopHostSwitcher.status.connected":`Connected`,"desktopHostSwitcher.status.authRequired":`Auth required`,"desktopHostSwitcher.status.checking":`Checking`,"desktopHostSwitcher.status.updateRecommended":`Update recommended`,"desktopHostSwitcher.status.incompatible":`Incompatible`,"desktopHostSwitcher.status.wrongService":`Wrong service`,"desktopHostSwitcher.status.unreachable":`Unreachable`,"desktopHostSwitcher.status.unknown":`Unknown`,"desktopHostSwitcher.status.ping":` · {ms}ms ping`,"desktopHostSwitcher.statusAria":`Instance status`,"desktopHostSwitcher.sshPhase.ready":`Ready`,"desktopHostSwitcher.sshPhase.error":`Error`,"desktopHostSwitcher.sshPhase.reconnecting":`Reconnecting`,"desktopHostSwitcher.sshPhase.resolvingConfig":`Resolving config`,"desktopHostSwitcher.sshPhase.checkingAuth":`Checking auth`,"desktopHostSwitcher.sshPhase.connectingSsh":`Connecting SSH`,"desktopHostSwitcher.sshPhase.probingRemote":`Probing remote`,"desktopHostSwitcher.sshPhase.installing":`Installing`,"desktopHostSwitcher.sshPhase.updating":`Updating`,"desktopHostSwitcher.sshPhase.detectingServer":`Detecting server`,"desktopHostSwitcher.sshPhase.startingServer":`Starting server`,"desktopHostSwitcher.sshPhase.forwardingPorts":`Forwarding ports`,"desktopHostSwitcher.sshPhase.idle":`Idle`,"desktopHostSwitcher.ssh.needInstancesHint":`Need SSH instances? Manage them in Settings.`,"desktopHostSwitcher.ssh.instanceFallback":`SSH instance`,"desktopHostSwitcher.ssh.connectingTo":`Connecting to {host}`,"desktopHostSwitcher.actions.refresh":`Refresh`,"desktopHostSwitcher.actions.refreshInstancesAria":`Refresh instances`,"desktopHostSwitcher.actions.remoteSsh":`Remote SSH`,"desktopHostSwitcher.actions.instanceActionsAria":`Instance actions`,"desktopHostSwitcher.actions.edit":`Edit`,"desktopHostSwitcher.actions.delete":`Delete`,"desktopHostSwitcher.actions.connect":`Connect`,"desktopHostSwitcher.actions.defaultInstanceAria":`Default instance`,"desktopHostSwitcher.actions.setAsDefaultAria":`Set as default`,"desktopHostSwitcher.actions.setAsDefault":`Set as default`,"desktopHostSwitcher.actions.openInNewWindowAria":`Open in new window`,"desktopHostSwitcher.actions.openInNewWindow":`Open in new window`,"desktopHostSwitcher.actions.addInstance":`Add instance`,"desktopHostSwitcher.actions.cancel":`Cancel`,"desktopHostSwitcher.actions.save":`Save`,"desktopHostSwitcher.actions.add":`Add`,"desktopHostSwitcher.actions.switchToLocal":`Switch to Local`,"desktopHostSwitcher.actions.retry":`Retry`,"desktopHostSwitcher.actions.switchInstanceAria":`Switch instance`,"desktopHostSwitcher.actions.switchInstance":`Switch instance`,"desktopHostSwitcher.actions.switchToAria":`Switch to {instance}`,"desktopHostSwitcher.field.labelPlaceholder":`Label`,"desktopHostSwitcher.field.labelOptionalPlaceholder":`Label (optional)`,"desktopHostSwitcher.field.urlPlaceholder":`https://host:port`,"desktopHostSwitcher.state.limitedOnPage":`Instance switcher is limited on this page. Use Local to recover.`,"desktopHostSwitcher.state.loading":`Loading...`,"desktopHostSwitcher.state.instanceUnreachable":`Instance unreachable`,"desktopHostSwitcher.edit.title":`Edit instance`,"desktopHostSwitcher.add.title":`Add instance`,"desktopHostSwitcher.error.failedToSave":`Failed to save`,"desktopHostSwitcher.error.failedToLoad":`Failed to load`,"desktopHostSwitcher.error.invalidUrl":`Invalid URL (must be http/https)`,"desktopHostSwitcher.error.failedToOpenNewWindow":`Failed to open new window`,"desktopHostSwitcher.instance.local":`Local`,"desktopHostSwitcher.instance.fallback":`Instance`,"desktopHostSwitcher.startup.title":`Default SSH instance unavailable`,"desktopHostSwitcher.startup.connectingTo":`Connecting to {host}...`,"desktopHostSwitcher.startup.failed":`Failed to connect the default SSH instance.`,"desktopHostSwitcher.toast.sshConnected":`SSH instance "{host}" connected`,"desktopHostSwitcher.toast.sshFailedToConnect":`SSH instance "{host}" failed to connect`,"desktopHostSwitcher.toast.instanceUnreachable":`Instance "{host}" is unreachable`,"miniChat.header.newSession":`New session`,"miniChat.header.session":`Session`,"miniChat.header.defaultAgent":`Default agent`,"miniChat.header.noModel":`No model`,"miniChat.status.busy":`Running`,"miniChat.status.retry":`Retrying`,"miniChat.status.idle":`Idle`,"miniChat.actions.pin":`Pin above other windows`,"miniChat.actions.unpin":`Unpin window`,"miniChat.actions.pinAria":`Pin Mini Chat window`,"miniChat.actions.unpinAria":`Unpin Mini Chat window`,"miniChat.actions.openMain":`Open in main window`,"miniChat.actions.openMainAria":`Open session in main window`,"miniChat.unavailable.title":`Session unavailable`,"miniChat.unavailable.description":`This session could not be loaded. It may have been deleted, archived, or opened from a different project context.`,"sessions.sidebar.session.menu.openMiniChatWindow":`Open in Mini Chat Window`,"header.actions.newMiniChat":`New Mini Chat Window`,"header.actions.newMiniChatAria":`Open a new Mini Chat window`,"header.actions.openSessionMiniChat":`Open Session in Mini Chat`,"header.actions.openSessionMiniChatAria":`Open current session in Mini Chat`,"header.windowControls.groupAria":`Window controls`,"header.windowControls.minimize":`Minimize window`,"header.windowControls.maximize":`Maximize window`,"header.windowControls.restore":`Restore window`,"header.windowControls.close":`Close window`,"errorBoundary.title":`Something went wrong`,"errorBoundary.description":`The application encountered an unexpected error. This has been logged for debugging.`,"errorBoundary.state.unknownError":`Unknown error`,"errorBoundary.state.componentStackLabel":`Component stack:`,"errorBoundary.actions.errorDetails":`Error details`,"errorBoundary.actions.tryAgain":`Try again`,"errorBoundary.actions.copy":`Copy`,"errorBoundary.actions.copied":`Copied`,"jsonTreeView.error.emptyJson":`Empty JSON content`,"jsonTreeView.error.invalidJson":`Invalid JSON`,"jsonTreeView.error.invalidJsonTitle":`Invalid JSON`,"jsonTreeView.actions.expandAll":`Expand All`,"jsonTreeView.actions.collapseAll":`Collapse All`,"numberInput.actions.decreaseAria":`Decrease value`,"numberInput.actions.increaseAria":`Increase value`,"goToLineDialog.field.linePlaceholderShort":`Line`,"goToLineDialog.field.linePlaceholder":`Line number`,"goToLineDialog.actions.go":`Go`,"goToLineDialog.helper.editorUnavailable":`Editor unavailable.`,"goToLineDialog.helper.currentLineRange":`Current Line: {current}. Type a line number between 1 and {max} to navigate to.`,"goToLineDialog.helper.goToLine":`Go to line {line}`,"dialog.common.actions.close":`Close`,"filesView.toast.relativePathCopied":`Relative path copied`,"filesView.tree.menu.copyRelativePath":`Copy Relative Path`,"multiRun.branchSelector.placeholder.selectSourceBranch":`Select source branch...`,"multiRun.branchSelector.status.loadingBranches":`Loading branches...`,"multiRun.branchSelector.status.noBranchesFound":`No branches found`,"multiRun.branchSelector.status.notInGitRepository":`Not in a git repository.`,"multiRun.branchSelector.groups.localBranches":`Local branches`,"multiRun.branchSelector.groups.remoteBranches":`Remote branches`,"multiRun.window.actions.closeAria":`Close multi-run`,"multiRun.window.description":`OpenChamber Multi-Run window.`,"voice.status.idle":`Voice Ready`,"voice.status.listening":`Listening...`,"voice.status.processing":`Processing...`,"voice.status.speaking":`Speaking...`,"voice.status.error":`Voice Error`,"voice.status.conversationModeActiveAria":`Conversation mode active`,"voice.action.finishAndTranscribe":`Finish and transcribe voice input`,"onboarding.common.actions.back":`Back`,"onboarding.common.copyToClipboard":`Copy to clipboard`,"onboarding.common.status.copiedToClipboard":`Copied to clipboard`,"onboarding.chooser.title":`Welcome to OpenChamber`,"onboarding.chooser.description":`Choose how you want to connect to get started.`,"onboarding.chooser.tabs.localInstall":`Local Install`,"onboarding.chooser.tabs.connectRemote":`Connect Remote`,"onboarding.localSetup.title":`Setting Up OpenCode`,"onboarding.localSetup.description":`Install OpenCode CLI to continue.`,"onboarding.localSetup.dialog.selectOpencodeBinary":`Select opencode binary`,"onboarding.localSetup.errors.cliNotReady":`OpenCode CLI is not ready yet. Please confirm installation is complete and try again.`,"onboarding.localSetup.errors.detectionFailed":`Detection failed`,"onboarding.localSetup.windows.title":`Windows setup`,"onboarding.localSetup.windows.stepInstallWsl":`Install OpenCode with the command below.`,"onboarding.localSetup.windows.stepInstallWslSuffix":``,"onboarding.localSetup.windows.stepRunInstallInWsl":`Run the install command below in a Windows terminal.`,"onboarding.localSetup.windows.stepSetBinaryPath":`If OpenChamber does not detect OpenCode automatically, set the binary path below.`,"onboarding.localSetup.intro":`OpenCode is the heart of OpenChamber — install it to get started.`,"onboarding.localSetup.docs.windows":`OpenCode docs`,"onboarding.localSetup.docs.default":`OpenCode docs`,"onboarding.localSetup.actions.checking":`Checking…`,"onboarding.localSetup.actions.checkAndContinue":`I've completed installation, check and continue`,"onboarding.localSetup.actions.checkNow":`Check now`,"onboarding.localSetup.helper.checkAndContinue":`Click to check if OpenCode CLI is available. If successful, you'll automatically enter the main screen.`,"onboarding.localSetup.status.watching":`Waiting for OpenCode`,"onboarding.localSetup.status.autoContinue":`We'll continue automatically once it's detected.`,"onboarding.localSetup.field.alreadyInstalled":`Already installed? Set the OpenCode CLI path:`,"onboarding.localSetup.advanced.title":`Set a custom binary path`,"onboarding.localSetup.troubleshoot.title":`Having trouble?`,"onboarding.localSetup.actions.browse":`Browse`,"onboarding.localSetup.actions.apply":`Apply`,"onboarding.localSetup.helper.saveAndReload":`Saves to OpenChamber settings and reloads OpenCode configuration.`,"onboarding.localSetup.remotePreference":`Prefer to use a remote server?`,"onboarding.localSetup.actions.connectRemoteServer":`Connect to Remote Server →`,"onboarding.localSetup.windows.hintInstallInWsl":`On Windows, install and run OpenCode natively.`,"onboarding.localSetup.windows.hintDetectionFailed":`If detection fails, set a native path such as opencode.cmd or opencode.exe.`,"onboarding.localSetup.hint.ensurePath":`Already installed? Make sure opencode is in your PATH.`,"onboarding.localSetup.hint.setEnv":`Or set OPENCODE_BINARY environment variable.`,"onboarding.localSetup.hint.missingRuntime":`If you see "env: node: No such file or directory" or "env: bun: No such file or directory", install that runtime or ensure it is on PATH.`,"onboarding.remoteConnection.title":`Connect to Remote Server`,"onboarding.remoteConnection.titleRecovery":`Connect to a Different Server`,"onboarding.remoteConnection.description":`Enter the address of an OpenChamber server to connect to.`,"onboarding.remoteConnection.field.serverAddress":`Server Address`,"onboarding.remoteConnection.field.serverAddressPlaceholder":`https://your-server.example.com:4096`,"onboarding.remoteConnection.field.nameOptional":`Name (optional)`,"onboarding.remoteConnection.field.namePlaceholder":`My Remote Server`,"onboarding.remoteConnection.errors.connectionTestFailed":`Connection test failed`,"onboarding.remoteConnection.errors.failedToSaveConnection":`Failed to save connection`,"onboarding.remoteConnection.status.connectedSuccessfully":`Connected successfully ({latencyMs}ms)`,"onboarding.remoteConnection.status.authWarning":`Server requires authentication. You can still connect.`,"onboarding.remoteConnection.status.connectionFailed":`Connection Failed`,"onboarding.remoteConnection.status.suggestionsUnreachable":`Suggestions: Check the server address, verify the server is running, or check your network connection.`,"onboarding.remoteConnection.status.suggestionsWrongService":`Suggestions: Verify the URL points to an OpenChamber server, or contact the server administrator.`,"onboarding.remoteConnection.actions.testing":`Testing…`,"onboarding.remoteConnection.actions.testConnection":`Test Connection`,"onboarding.remoteConnection.actions.connectAndRestart":`Connect & Restart`,"onboarding.remoteConnection.actions.whatToDo":`What would you like to do?`,"onboarding.remoteConnection.actions.chooseDifferentServer":`Choose Different Server`,"onboarding.remoteConnection.actions.useLocalInstead":`Use Local Instead`,"onboarding.remoteConnection.probe.authMessage":`Server requires authentication. You can still connect, but may need to provide credentials.`,"onboarding.remoteConnection.probe.updateRecommendedMessage":`This instance is running a different OpenChamber version. You can connect, but update both apps if something does not work.`,"onboarding.remoteConnection.probe.incompatibleMessage":`Server is running OpenChamber but is not compatible with this app version. Update OpenChamber on the server, then try again.`,"onboarding.remoteConnection.probe.wrongServiceMessage":`Server responded but is not running OpenChamber. Verify the address points to an OpenChamber server.`,"onboarding.remoteConnection.probe.unreachableMessage":`Server is unreachable. Check your network connection and verify the server address.`,"onboarding.desktopRecovery.localUnavailable.title":`Local OpenCode Unavailable`,"onboarding.desktopRecovery.localUnavailable.description":`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,"onboarding.desktopRecovery.localUnavailable.retry":`Retry Local`,"onboarding.desktopRecovery.localUnavailable.useLocal":`Set Up Local`,"onboarding.desktopRecovery.noDefaultConnection.title":`No Default Connection`,"onboarding.desktopRecovery.noDefaultConnection.description":`Your saved default connection could not be found. Choose how you want to connect.`,"onboarding.desktopRecovery.remoteUnreachable.title":`Remote Server Unreachable`,"onboarding.desktopRecovery.remoteUnreachable.description":`Could not connect to "{host}". Check your network connection and verify the server address.`,"onboarding.desktopRecovery.remoteUnreachable.retry":`Retry Connection`,"onboarding.desktopRecovery.incompatibleServer.title":`Incompatible Server`,"onboarding.desktopRecovery.incompatibleServer.description":`The server at "{host}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,"onboarding.desktopRecovery.remoteIncompatible.title":`Server Update Required`,"onboarding.desktopRecovery.remoteIncompatible.description":`The OpenChamber server at "{host}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,"onboarding.desktopRecovery.common.useLocal":`Use Local`,"onboarding.desktopRecovery.common.useRemote":`Use Remote`,"onboarding.desktopRecovery.actions.retrying":`Retrying…`,"onboarding.desktopRecovery.actions.retryConnection":`Retry Connection`,"startup.initRecovery.title":`Startup failed`,"startup.initRecovery.description":`OpenChamber could not finish initialization. Check that the server is running, then retry.`,"startup.initRecovery.retry":`Retry`,"startup.initRecovery.retrying":`Retrying…`,"onboarding.desktopRecovery.placeholders.remoteServer":`the remote server`,"onboarding.desktopRecovery.placeholders.unknownServer":`unknown`,"vscodeLayout.title.chat":`Chat`,"vscodeLayout.title.newSession":`New session`,"vscodeLayout.title.sessions":`Sessions`,"vscodeLayout.title.sessionFallback":`Session`,"vscodeLayout.actions.backToSessionsAria":`Back to sessions`,"vscodeLayout.actions.archiveAllAria":`Archive all sessions`,"vscodeLayout.actions.archiveAllConfirm":`Archive all`,"vscodeLayout.actions.archiveAllSuccess":`Archived {count} session(s)`,"vscodeLayout.actions.archiveAllError":`Failed to archive {count} session(s)`,"vscodeLayout.actions.cancel":`Cancel`,"vscodeLayout.actions.newSessionAria":`New session`,"vscodeLayout.actions.openAgentManagerAria":`Open Agent Manager`,"vscodeLayout.actions.resizeSessionsSidebarAria":`Resize sessions sidebar`,"vscodeLayout.actions.settingsAria":`Settings`,"vscodeLayout.quota.title":`Rate limits`,"vscodeLayout.quota.mode.used":`Used`,"vscodeLayout.quota.mode.remaining":`Remaining`,"vscodeLayout.quota.lastUpdated":`Last updated {time}`,"vscodeLayout.quota.noRateLimitsAvailable":`No rate limits available.`,"vscodeLayout.quota.noRateLimitsReported":`No rate limits reported.`,"vscodeLayout.quota.actions.rateLimitsAria":`Rate limits`,"vscodeLayout.quota.actions.showUsedAria":`Show used quota`,"vscodeLayout.quota.actions.showRemainingAria":`Show remaining quota`,"vscodeLayout.quota.actions.refreshAria":`Refresh rate limits`,"updateDialog.header.updateAvailable":`Update Available`,"updateDialog.header.updating":`Updating OpenChamber...`,"updateDialog.changelog.title":`What's new`,"updateDialog.status.installingUpdate":`Installing update...`,"updateDialog.status.serverRestarting":`Server restarting...`,"updateDialog.status.waitingForServer":`Waiting for server...`,"updateDialog.status.autoReloadHint":`The page will reload automatically when the update is complete.`,"updateDialog.fallback.updateViaTerminal":`Or update via terminal:`,"updateDialog.actions.copyCommand":`Copy command`,"updateDialog.actions.copied":`Copied!`,"updateDialog.status.downloadingPayload":`Downloading update payload...`,"updateDialog.actions.downloadUpdate":`Download Update`,"updateDialog.status.downloading":`Downloading...`,"updateDialog.actions.restartToUpdate":`Restart to Update`,"updateDialog.actions.updateNow":`Update Now`,"updateDialog.actions.openMobileUpdate":`Open update`,"updateDialog.status.updating":`Updating...`,"updateDialog.error.updateFailed":`Update failed`,"updateDialog.error.takingLonger":`Update is taking longer than expected. Wait a bit and refresh, or run: openchamber update`,"mobileUpdate.toast.available.title":`OpenChamber update available`,"mobileUpdate.toast.available.description":`Version {version} is ready for Android.`,"mobileUpdate.toast.actions.download":`Download`,"mobileUpdate.toast.actions.dismiss":`Dismiss`,"opencodeUpdate.toast.available.title":`OpenCode update`,"opencodeUpdate.toast.available.description":`Version {version} available.`,"opencodeUpdate.toast.actions.update":`Update`,"opencodeUpdate.toast.actions.dismiss":`Dismiss`,"opencodeUpdate.toast.actions.reload":`Reload OpenCode`,"opencodeUpdate.toast.upgrading.title":`Updating OpenCode...`,"opencodeUpdate.toast.upgrading.description":`Keep OpenChamber open.`,"opencodeUpdate.toast.updated.title":`OpenCode updated`,"opencodeUpdate.toast.updated.description":`Update installed.`,"opencodeUpdate.toast.updated.descriptionWithVersion":`Version {version} installed.`,"opencodeUpdate.toast.failed.title":`Could not update OpenCode`,"opencodeUpdate.toast.failed.description":`The OpenCode upgrade failed.`,"opencodeUpdate.toast.reload.message":`Restarting OpenCode...`,"memoryDebugPanel.title":`Debug Panel`,"memoryDebugPanel.tabs.memory":`Memory`,"memoryDebugPanel.tabs.streaming":`Streaming`,"memoryDebugPanel.section.sessionsInMemory":`Sessions in Memory`,"memoryDebugPanel.section.uiStreamingMetrics":`UI Streaming Metrics`,"memoryDebugPanel.section.vscodeBridgeMetrics":`VS Code Bridge Metrics`,"memoryDebugPanel.section.noUiSamples":`No UI streaming samples yet. Start a stream and keep this panel open.`,"memoryDebugPanel.section.noVscodeSamples":`No VS Code bridge samples yet.`,"memoryDebugPanel.metric.totalMessages":`Total Messages`,"memoryDebugPanel.metric.cachedSessions":`Cached Sessions`,"memoryDebugPanel.metric.userMessages":`User Messages`,"memoryDebugPanel.metric.assistantMessages":`Assistant Messages`,"memoryDebugPanel.metric.viewportWindow":`Viewport Window`,"memoryDebugPanel.metric.zombieTimeout":`Zombie Timeout`,"memoryDebugPanel.metric.githubTotalRequests":`GitHub Total Requests`,"memoryDebugPanel.metric.metrics":`Metrics`,"memoryDebugPanel.metric.samples":`Samples`,"memoryDebugPanel.metric.lastUpdate":`Last Update`,"memoryDebugPanel.metric.uiMetrics":`UI Metrics`,"memoryDebugPanel.metric.vscodeMetrics":`VS Code Metrics`,"memoryDebugPanel.metric.messageListRenders":`MsgList Renders`,"memoryDebugPanel.metric.messageListStreamRenders":`MsgList Stream Renders`,"memoryDebugPanel.metric.chatMessageRenders":`ChatMessage Renders`,"memoryDebugPanel.metric.chatMessageStreamRenders":`ChatMessage Stream Renders`,"memoryDebugPanel.metric.chatMessageStaticDuringStream":`ChatMessage Static During Stream`,"memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn":`ChatMessage Static Outside Active Turn`,"memoryDebugPanel.metric.messagesValue":`{count} messages`,"memoryDebugPanel.metric.minutesValue":`{count} minutes`,"memoryDebugPanel.metric.msgsValue":`{count} msgs`,"memoryDebugPanel.metric.roleMsgsValue":`U {user} / A {assistant}`,"memoryDebugPanel.metric.countValue":`Count {value}`,"memoryDebugPanel.metric.avgValue":`Avg {value}`,"memoryDebugPanel.metric.maxValue":`Max {value}`,"memoryDebugPanel.metric.totalValue":`Total {value}`,"memoryDebugPanel.actions.logState":`Log State`,"memoryDebugPanel.actions.copyJson":`Copy JSON`,"memoryDebugPanel.tooltip.logCurrentState":`Log current memory state to browser console`,"memoryDebugPanel.streaming.copy.copied":`Streaming debug JSON copied`,"memoryDebugPanel.streaming.copy.failed":`Failed to copy JSON`,"memoryDebugPanel.streaming.copy.hint":`Copy exports both UI and VS Code streaming metrics as JSON`,"memoryDebugPanel.common.idle":`idle`,"memoryDebugPanel.common.live":`live`,"memoryDebugPanel.common.notAvailable":`n/a`,"memoryDebugPanel.common.untitled":`Untitled`,"directoryTree.field.newDirectoryPlaceholder":`new_directory`,"textarea.resizeHandleAria":`Resize textarea`,"sidebar.resize.leftPanelAria":`Resize left panel`,"sidebar.resize.rightPanelAria":`Resize right panel`,"mainLayout.mobile.closeDrawerAria":`Close drawer`,"sortableTabsStrip.aria.tabs":`Tabs`,"openChamberLogo.aria.logo":`OpenChamber logo`,"markdownRenderer.code.actions.copyTitle":`Copy code`,"markdownRenderer.code.actions.copiedTitle":`Copied`,"markdownRenderer.table.actions.copyTitle":`Copy table`,"markdownRenderer.code.actions.enableWrapTitle":`Enable line wrap`,"markdownRenderer.code.actions.disableWrapTitle":`Disable line wrap`,"markdownRenderer.table.actions.downloadTitle":`Download table`,"markdownRenderer.table.toast.downloadedAsFormat":`Table downloaded as {format}`,"markdownRenderer.mermaid.actions.copyTitle":`Copy`,"markdownRenderer.mermaid.actions.copySourceTitle":`Copy source`,"markdownRenderer.mermaid.actions.downloadSvgTitle":`Download SVG`,"markdownRenderer.mermaid.actions.zoomInTitle":`Zoom in`,"markdownRenderer.mermaid.actions.zoomOutTitle":`Zoom out`,"markdownRenderer.mermaid.actions.resetViewTitle":`Reset view`,"markdownRenderer.mermaid.toast.downloadFailed":`Failed to download diagram`,"common.date.today":`Today`,"common.date.yesterday":`Yesterday`,"common.date.yesterdayWithTime":`Yesterday {time}`,"common.relative.justNow":`Just now`,"common.relative.minutesAgoShort":`{count}min ago`,"common.relative.hoursAgoShort":`{count}h ago`,"common.relative.daysAgoShort":`{count}d ago`,"common.relative.weeksAgoShort":`{count}w ago`,"common.relative.yearsAgoShort":`{count}y ago`,"common.relative.minutesAgoCompact":`{count}m`,"common.relative.hoursAgoCompact":`{count}h`,"common.relative.daysAgoCompact":`{count}d ago`,"common.relative.weeksAgoCompact":`{count}w ago`,"common.relative.monthsAgoCompact":`{count}mo`,"common.relative.yearsAgoCompact":`{count}y ago`,"contextFileOpen.failure.tooLarge":`File is too large to open (>{count} lines)`,"contextFileOpen.failure.missing":`File not found`,"contextFileOpen.failure.unreadable":`Failed to open file`,"quota.window.5h":`5-Hour`,"quota.window.7d":`7-Day Limit`,"quota.window.7dSonnet":`7-Day Sonnet Limit`,"quota.window.7dOpus":`7-Day Opus Limit`,"quota.window.weekly":`Weekly Limit`,"quota.window.daily":`Daily`,"quota.window.monthly":`Monthly Limit`,"quota.window.credits":`Credits`,"quota.window.creditsBalance":`Credits Balance`,"quota.window.billingCycle":`Billing Cycle`,"quota.window.auto":`Auto`,"quota.window.api":`API`,"quota.window.planLimit":`Plan Limit`,"quota.window.onDemand":`On-demand`,"quota.window.session":`Session`,"quota.window.premium":`Premium Interactions`,"quota.window.chat":`Chat Requests`,"quota.window.completions":`Completions`,"quota.window.premiumInteractions":`Premium interactions`},i=[`en`,`fr`,`zh-CN`,`zh-TW`,`uk`,`es`,`pt-BR`,`ko`,`pl`,`ja`],a={en:`common.language.english`,fr:`common.language.french`,"zh-CN":`common.language.simplifiedChinese`,"zh-TW":`common.language.traditionalChinese`,uk:`common.language.ukrainian`,es:`common.language.spanish`,"pt-BR":`common.language.brazilianPortuguese`,ko:`common.language.korean`,pl:`common.language.polish`,ja:`common.language.japanese`},o=`openchamber.i18n.v1`;function s(e){if(!e)return;let t=e.toLowerCase().replace(/_/g,`-`);if(t===`zh-tw`||t.startsWith(`zh-tw-`)||t===`zh-hk`||t.startsWith(`zh-hk-`)||t===`zh-mo`||t.startsWith(`zh-mo-`)||t===`zh-hant`||t.startsWith(`zh-hant-`))return`zh-TW`;if(t.startsWith(`zh`))return`zh-CN`;if(t.startsWith(`en`))return`en`;if(t===`fr`||t.startsWith(`fr-`))return`fr`;if(t===`uk`||t.startsWith(`uk-`)||t===`ua`||t.startsWith(`ua-`))return`uk`;if(t===`es`||t.startsWith(`es-`))return`es`;if(t===`pt`||t.startsWith(`pt-`))return`pt-BR`;if(t===`ko`||t.startsWith(`ko-`))return`ko`;if(t===`ja`||t.startsWith(`ja-`))return`ja`;if(t===`pl`||t.startsWith(`pl-`))return`pl`}function c(e){return s(e)??`en`}function l(){if(!(typeof window>`u`))try{let e=window.localStorage.getItem(o);if(!e)return;let t=JSON.parse(e);return typeof t.locale==`string`?c(t.locale):void 0}catch{return}}function u(e){if(!(typeof window>`u`))try{window.localStorage.setItem(o,JSON.stringify({locale:e}))}catch{return}}function d(){let e=l();if(e)return e;if(typeof navigator<`u`)try{let e=[...navigator.languages??[],navigator.language];for(let t of e){let e=s(t);if(e)return e}}catch{return`en`}return`en`}var f=e({formatMessage:()=>_,initializeLocale:()=>g,useI18nStore:()=>h}),p=new Map([[`en`,r]]);async function m(e){let t=p.get(e);if(t)return t;let i=e===`zh-CN`?await n(()=>import(`./zh-CN-9v-RC966.js`),[]):e===`fr`?await n(()=>import(`./fr-jWNPO91J.js`),[]):e===`zh-TW`?await n(()=>import(`./zh-TW-BZ_wZdC-.js`),[]):e===`es`?await n(()=>import(`./es-EXZUX1sB.js`),[]):e===`pt-BR`?await n(()=>import(`./pt-BR-D1RpVOvC.js`),[]):e===`uk`?await n(()=>import(`./uk-UvnVqWv-.js`),[]):e===`ko`?await n(()=>import(`./ko-CX71xNDX.js`),[]):e===`pl`?await n(()=>import(`./pl-mR_3Sqr8.js`),[]):e===`ja`?await n(()=>import(`./ja-Dcb0VtDE.js`),[]):{dict:r};return p.set(e,i.dict),i.dict}var h=t()((e,t)=>({locale:`en`,dictionary:r,loadingLocale:null,setLocale:(n,i=!0)=>{let a=t(),o=p.get(n);a.locale===n&&a.loadingLocale!==n&&o||(i&&u(n),e({locale:n,dictionary:o??a.dictionary,loadingLocale:o?null:n}),!o&&m(n).then(r=>{t().locale===n&&e({dictionary:r,loadingLocale:null})}).catch(i=>{console.error(`[i18n] failed to load locale ${n}`,i),t().locale===n&&e({locale:`en`,dictionary:r,loadingLocale:null})}))}}));function g(){h.getState().setLocale(d(),!1)}function _(e,t,n){let i=e[t]??r[t]??t;return n?i.replace(/\{([^{}]+)\}/g,(e,t)=>{let r=n[t.trim()];return r==null?e:String(r)}):i}export{i as a,h as i,g as n,a as o,f as r,_ as t};
15
+ {summary}`,"chat.chatInput.toast.vscodePickFailed":`Failed to pick files in VS Code`,"chat.chatInput.toast.openSessionFirst":`Open a session first`,"chat.chatInput.toast.togglePermissionAutoAcceptFailed":`Failed to toggle permission auto-accept`,"chat.chatInput.toast.sessionReferenceLoadFailed":`Could not load the session reference.`,"chat.chatInput.reviewComments":`Review comments:`,"chat.chatInput.reviewCommentsRemove":`Remove review comments`,"chat.chatInput.devServerLogs":`Dev Server logs:`,"chat.chatInput.devServerLogsRemove":`Remove Dev Server logs`,"chat.chatInput.previewAnnotations":`Preview annotations:`,"chat.chatInput.previewContext":`Preview context:`,"chat.chatInput.previewContextRemove":`Remove preview context`,"chat.chatInput.projectRoot":`Project root`,"chat.chatInput.branch":`Branch`,"chat.chatInput.draftPicker.projectTitle":`Project`,"chat.chatInput.draftPicker.newProject":`New project`,"chat.chatInput.draftPicker.searchProjects":`Search projects...`,"chat.chatInput.draftPicker.searchBranches":`Search branches...`,"chat.chatInput.worktrees":`Worktrees`,"chat.chatInput.worktreeNew":`+ New`,"chat.chatInput.branchSwitch.title":`Switch to {branch}?`,"chat.chatInput.branchSwitch.description":`How should this branch be opened for the new conversation?`,"chat.chatInput.branchSwitch.createWorktree":`Create worktree`,"chat.chatInput.branchSwitch.createWorktreeDescription":`Keep the current directory as-is and work in an isolated worktree.`,"chat.chatInput.branchSwitch.checkoutHere":`Checkout here`,"chat.chatInput.branchSwitch.checkoutHereDescription":`Switch the current directory to this branch.`,"chat.chatInput.branchSwitch.cancel":`Cancel`,"chat.chatInput.drop.insertMention":`Drop to insert as mention`,"chat.chatInput.drop.attachFiles":`Drop files here to attach`,"chat.chatInput.fileFallback":`file`,"chat.mobileStatus.editProjects.title":`Edit Projects`,"chat.mobileStatus.editProjects.footer":`Drag items to reorder, or use arrows to move. Tap edit to change details.`,"chat.mobileStatus.editProjects.empty":`No projects to edit`,"chat.mobileStatus.projects.empty":`No projects`,"chat.mobileStatus.projects.addAria":`Add project`,"chat.mobileStatus.projects.removeTitle":`Remove Project`,"chat.mobileStatus.projects.removeDescriptionPrefix":`Are you sure you want to remove`,"chat.mobileStatus.projects.cancel":`Cancel`,"chat.mobileStatus.projects.remove":`Remove`,"chat.mobileStatus.new":`New`,"chat.mobileStatus.noSessionsInProject":`No sessions in this project`,"chat.mobileStatus.swipeHint":`← Swipe here to open sidebars →`,"chat.mobileStatus.toast.addProjectFailed":`Failed to add project`,"chat.mobileStatus.toast.selectValidDirectory":`Please select a valid directory.`,"chat.mobileStatus.toast.selectDirectoryFailed":`Failed to select directory`,"chat.toolOutputDialog.image.previousAria":`Previous image`,"chat.toolOutputDialog.image.nextAria":`Next image`,"chat.toolOutputDialog.image.zoomInAria":`Zoom in`,"chat.toolOutputDialog.image.zoomOutAria":`Zoom out`,"chat.toolOutputDialog.image.resetZoomAria":`Reset zoom`,"chat.image.actions.sheetTitle":`Image`,"chat.image.actions.saveImage":`Save image`,"chat.image.actions.saveToPhotos":`Save to Photos`,"chat.image.actions.saving":`Saving…`,"chat.image.actions.saveSuccess":`Image saved`,"chat.image.actions.saveFailed":`Could not save image`,"chat.toolOutputDialog.mermaid.missingSource":`Missing Mermaid source URL.`,"chat.toolOutputDialog.mermaid.loadFailed":`Unable to load Mermaid diagram.`,"chat.toolOutputDialog.mermaid.dataUrlMalformed":`The Mermaid data URL is malformed.`,"chat.toolOutputDialog.mermaid.invalidLocalPath":`The local Mermaid file path is invalid.`,"chat.toolOutputDialog.mermaid.readFileFailedWithStatus":`Unable to read Mermaid file. Status: {status}.`,"chat.toolOutputDialog.mermaid.unsupportedUrlProtocol":`The Mermaid URL protocol is unsupported.`,"chat.toolOutputDialog.mermaid.loadFailedWithStatus":`Unable to load Mermaid diagram. Status: {status}.`,"chat.toolOutputDialog.mermaid.closeAria":`Close diagram preview`,"chat.toolOutputDialog.mermaid.loading":`Loading diagram...`,"chat.toolOutputDialog.mermaid.renderFailed":`Unable to render Mermaid diagram.`,"chat.toolOutputDialog.mermaid.retry":`Retry`,"chat.toolOutputDialog.commandCompleted":`Command completed successfully`,"chat.toolOutputDialog.noOutputProduced":`No output was produced`,"chat.activity.outputLoading":`Loading full output…`,"chat.activity.outputLoadFailed":`Could not load full output.`,"chat.activity.outputRetry":`Retry`,"chat.fileAttachment.image.loading":`Loading image…`,"chat.fileAttachment.image.loadFailed":`Could not load image.`,"chat.fileAttachment.image.retry":`Retry loading image`,"chat.fileAttachment.image.loadManually":`Load image`,"chat.fileAttachment.image.loadManuallyCount":`Load {count} images`,"chat.toolPart.lspErrors":`LSP errors`,"chat.toolPart.moreErrors":`+{count} more errors`,"chat.toolPart.error":`Error:`,"chat.toolPart.awaitingResponse":`Awaiting response...`,"chat.toolPart.noOutputProduced":`No output produced`,"chat.toolPart.output":`Output`,"chat.toolPart.showRawJson":`Show raw JSON`,"chat.toolPart.showFormattedJson":`Show formatted JSON`,"chat.toolPart.showNavigableJson":`Show navigable JSON`,"chat.toolPart.openFileAtFirstChange":`Open file at first change`,"chat.toolPart.openFileDiff":`Open file diff`,"chat.toolPart.copyOutput":`Copy output`,"chat.toolPart.copiedOutput":`Copied output`,"chat.toolPart.copyOutputFailed":`Failed to copy output`,"chat.toolPart.openSubtask":`Open {type} subtask`,"chat.todo.total":`Total`,"chat.todo.inProgress":`In Progress`,"chat.todo.pending":`Pending`,"chat.todo.completed":`Completed`,"chat.todo.cancelled":`Cancelled`,"chat.permissionCard.workingDirectory":`Working Directory:`,"chat.permissionCard.timeout":`Timeout:`,"chat.permissionCard.request":`Request:`,"chat.permissionCard.headers":`Headers:`,"chat.permissionCard.body":`Body:`,"chat.permissionCard.action":`Action:`,"chat.permissionCard.details":`Details:`,"chat.permissionCard.patterns":`Patterns:`,"chat.permissionCard.replaceAll":`Replace all occurrences`,"chat.permissionCard.responseFormat":`Response format:`,"chat.permissionCard.allowOnce":`Allow once`,"chat.permissionCard.alwaysAgree":`Always agree`,"chat.permissionToast.sessionFallback":`Session`,"chat.permissionToast.permissionFallback":`Permission details unavailable`,"chat.permissionToast.labels.session":`Session:`,"chat.permissionToast.labels.permission":`Permission:`,"chat.permissionToast.actions.once":`Once`,"chat.permissionToast.actions.always":`Always`,"chat.permissionToast.actions.deny":`Deny`,"chat.permissionToast.actions.approveOnceAria":`Approve once`,"chat.permissionToast.actions.approveOnceAriaWithSession":`Approve once for {session}`,"chat.permissionToast.actions.approveAlwaysAria":`Approve always`,"chat.permissionToast.actions.approveAlwaysAriaWithSession":`Approve always for {session}`,"chat.permissionToast.actions.denyAria":`Deny permission`,"chat.permissionToast.actions.denyAriaWithSession":`Deny permission for {session}`,"chat.permissionRequest.required":`Permission required:`,"chat.permissionRequest.actions.once":`Once`,"chat.permissionRequest.actions.always":`Always`,"chat.permissionRequest.actions.reject":`Reject`,"chat.modelControls.provider":`Provider`,"chat.modelControls.capability.toolCalling":`Tool calling`,"chat.modelControls.capability.reasoning":`Reasoning`,"chat.modelControls.modality.text":`Text`,"chat.modelControls.modality.image":`Image`,"chat.modelControls.modality.video":`Video`,"chat.modelControls.modality.audio":`Audio`,"chat.modelControls.modality.pdf":`PDF`,"chat.modelControls.capabilities":`Capabilities`,"chat.modelControls.modalities":`Modalities`,"chat.modelControls.input":`Input`,"chat.modelControls.output":`Output`,"chat.modelControls.limits":`Limits`,"chat.modelControls.context":`Context`,"chat.modelControls.metadata":`Metadata`,"chat.modelControls.knowledge":`Knowledge`,"chat.modelControls.release":`Release`,"chat.modelControls.mode":`Mode`,"chat.modelControls.model":`Model`,"chat.modelControls.temperature":`Temperature`,"chat.modelControls.topP":`Top P`,"chat.modelControls.permissions":`Permissions`,"chat.modelControls.edit":`Edit`,"chat.modelControls.bash":`Bash`,"chat.modelControls.webFetch":`WebFetch`,"chat.modelControls.customPrompt":`Custom Prompt`,"chat.modelControls.selectModel":`Select model`,"chat.modelControls.searchProvidersOrModels":`Search providers or models`,"chat.modelControls.clearSearch":`Clear search`,"chat.modelControls.current":`Current`,"chat.modelControls.thinking":`Thinking`,"chat.modelControls.default":`Default`,"chat.modelControls.selectAgent":`Select agent`,"chat.modelControls.costPerMillion":`Cost`,"chat.modelControls.costInput":`In`,"chat.modelControls.costOutput":`Out`,"chat.modelControls.metadataUnavailable":`Model metadata unavailable.`,"chat.modelControls.addNewProvider":`Add new provider`,"chat.modelControls.noAgentSelected":`No agent selected.`,"chat.modelControls.resetToDefault":`Reset to default`,"chat.modelControls.searchModels":`Search models`,"chat.modelControls.searchAgents":`Search agents`,"chat.modelControls.noModelsFound":`No models found`,"chat.modelControls.favorites":`Favorites`,"chat.modelControls.recent":`Recent`,"chat.modelControls.addToFavorites":`Add to favorites`,"chat.modelControls.removeFromFavorites":`Remove from favorites`,"chat.modelControls.favoriteAria":`Favorite`,"chat.modelControls.unfavoriteAria":`Unfavorite`,"chat.modelControls.collapseProvider":`Collapse provider`,"chat.modelControls.expandProvider":`Expand provider`,"chat.modelControls.keyboardHint":`↑↓ navigate{thinking} • Enter select • Esc close`,"chat.modelControls.keyboardHintNavigate":`↑↓ navigate`,"chat.modelControls.keyboardHintSwitchAgent":`{shortcut} switch agent`,"chat.modelControls.keyboardHintSwitchAgentLabel":`Switch agent`,"chat.modelControls.keyboardHintThinking":`←→ thinking`,"chat.modelControls.showThinkingModes":`Show thinking modes`,"chat.modelControls.hideThinkingModes":`Hide thinking modes`,"chat.modelControls.moreThinkingModes":`More thinking modes`,"chat.modelControls.noProvidersOrModelsFound":`No providers or models match your search.`,"chat.modelControls.reorderFavoriteAria":`Reorder favorite`,"chat.modelControls.reorderFavoriteTitle":`Drag to reorder favorite`,"chat.modelControls.reorderProviderTitle":`Drag to reorder provider`,"chat.modelControls.permissionLabel.custom":`Custom`,"chat.modelControls.permissionLabel.allow":`Allow`,"chat.modelControls.permissionLabel.deny":`Deny`,"chat.modelControls.permissionLabel.ask":`Ask`,"chat.modelControls.modeValue.primary":`Primary`,"chat.modelControls.modeValue.subagent":`Subagent`,"chat.modelControls.modeValue.all":`All`,"chat.modelControls.modeValue.none":`—`,"chat.reasoningTrace.thinking":`Thinking`,"chat.reasoningTrace.justification":`Justification`,"chat.reasoningTrace.expandAria":`Expand reasoning trace`,"chat.reasoningTrace.collapseAria":`Collapse reasoning trace`,"chat.reasoningTrace.thought":`Thought`,"chat.contextGroup.exploring":`Exploring`,"chat.contextGroup.explored":`Explored`,"chat.contextGroup.expandAria":`Expand explored tools`,"chat.contextGroup.collapseAria":`Collapse explored tools`,"chat.contextGroup.readSingle":`{count} read`,"chat.contextGroup.readPlural":`{count} reads`,"chat.contextGroup.searchSingle":`{count} search`,"chat.contextGroup.searchPlural":`{count} searches`,"chat.contextGroup.listSingle":`{count} list`,"chat.contextGroup.listPlural":`{count} lists`,"chat.skillGroup.expandAria":`Expand loaded skills`,"chat.skillGroup.collapseAria":`Collapse loaded skills`,"chat.skillGroup.summaryOverflow":`{names} and {count} more`,"chat.tools.display.read":`Read File`,"chat.tools.display.write":`Write File`,"chat.tools.display.edit":`Edit File`,"chat.tools.display.multiedit":`Multi-Edit`,"chat.tools.display.apply_patch":`Apply Patch`,"chat.tools.display.bash":`Shell Command`,"chat.tools.display.grep":`Search Files`,"chat.tools.display.glob":`Find Files`,"chat.tools.display.list":`List Directory`,"chat.tools.display.task":`Agent Task`,"chat.tools.display.webfetch":`Fetch URL`,"chat.tools.display.websearch":`Web Search`,"chat.tools.display.codesearch":`Code Search`,"chat.tools.display.todowrite":`Update Todo List`,"chat.tools.display.todoread":`Read Todo List`,"chat.tools.display.skill":`Load Skill`,"chat.tools.display.question":`Question`,"chat.tools.display.lsp":`LSP`,"chat.tools.display.plan_enter":`Plan Mode`,"chat.tools.display.plan_exit":`Build Mode`,"chat.tools.display.structuredoutput":`Structured Output`,"chat.messageBody.subtask.title":`Delegated task`,"chat.messageBody.subtask.hidePrompt":`Hide prompt`,"chat.messageBody.subtask.showPrompt":`Show prompt`,"chat.messageBody.subtask.openSession":`Open subtask session`,"chat.messageBody.subagent.completed":`Completed`,"chat.messageBody.subagent.error":`Failed`,"chat.messageBody.subagent.cancelled":`Cancelled`,"chat.messageBody.subagent.completedDescription":`Background subagent completed`,"chat.messageBody.subagent.errorDescription":`Background subagent failed`,"chat.messageBody.subagent.cancelledDescription":`Background subagent cancelled`,"chat.messageBody.subagent.openSession":`Open subagent session: {label}`,"chat.messageBody.shellCommand.title":`Shell command`,"chat.messageBody.shellCommand.hideOutput":`Hide output`,"chat.messageBody.shellCommand.showOutput":`Show output`,"chat.messageBody.shellCommand.copied":`Copied`,"chat.messageBody.shellCommand.copyOutput":`Copy output`,"commandPalette.title":`Command Palette`,"commandPalette.description":`Search files, sessions, and commands.`,"commandPalette.input.placeholder":`Search files, sessions, commands...`,"commandPalette.empty.noResults":`No results found.`,"commandPalette.empty.searchingFiles":`Searching files...`,"commandPalette.item.newSession":`New Session`,"commandPalette.item.newMiniChat":`New Mini Chat Window`,"commandPalette.item.newWorktreeDraft":`New Worktree Draft`,"commandPalette.item.addProject":`Add Project`,"commandPalette.item.showSessionSwitcher":`Show Session Switcher`,"commandPalette.item.toggleSidebar":`Toggle Sidebar`,"commandPalette.item.toggleRightSidebar":`Toggle Right Sidebar`,"commandPalette.item.showContextUsage":`Show Context Usage`,"commandPalette.item.toggleTerminal":`Toggle Terminal`,"commandPalette.item.newTerminalTab":`New Terminal Tab`,"commandPalette.item.openSettings":`Open Settings...`,"commandPalette.session.untitled":`Untitled Session`,"openCodeStatusDialog.title":`OpenCode Status`,"openCodeStatusDialog.description":`Inspect current OpenCode status and diagnostics.`,"openCodeStatusDialog.actions.copy":`Copy`,"openCodeStatusDialog.empty.noData":`No data.`,"openCodeStatusDialog.toast.copiedTitle":`Copied`,"openCodeStatusDialog.toast.copiedDescription":`Status copied to clipboard`,"openCodeStatusDialog.toast.copyFailed":`Failed to copy status`,"branchPickerDialog.title":`Branch Picker`,"branchPickerDialog.description.localBranchesForProject":`Local branches for {project}`,"branchPickerDialog.description.selectProject":`Select a project to view branches`,"branchPickerDialog.search.placeholder":`Search branches...`,"branchPickerDialog.search.renameBranchPlaceholder":`Rename branch`,"branchPickerDialog.state.noProjectSelected":`No project selected`,"branchPickerDialog.state.loadingBranches":`Loading branches...`,"branchPickerDialog.state.noMatchingBranches":`No matching branches`,"branchPickerDialog.state.noBranchesFound":`No branches found`,"branchPickerDialog.badge.head":`HEAD`,"branchPickerDialog.badge.worktree":`worktree`,"branchPickerDialog.actions.createWorktreeAria":`Create worktree from branch`,"branchPickerDialog.actions.renameAria":`Rename branch`,"branchPickerDialog.actions.deleteAria":`Delete branch`,"branchPickerDialog.actions.deleteWorktreeAria":`Remove worktree`,"branchPickerDialog.actions.confirmRenameAria":`Confirm rename`,"branchPickerDialog.actions.cancelRenameAria":`Cancel rename`,"branchPickerDialog.actions.confirmDeleteAria":`Confirm delete branch`,"branchPickerDialog.actions.cancelDeleteAria":`Cancel delete branch`,"branchPickerDialog.actions.deletePrompt":`Delete`,"branchPickerDialog.actions.forceDeletePrompt":`Force Delete`,"branchPickerDialog.tooltip.createWorktree":`Create worktree`,"branchPickerDialog.tooltip.worktreeAlreadyExists":`Worktree already exists`,"branchPickerDialog.tooltip.rename":`Rename branch`,"branchPickerDialog.tooltip.renameDisabledForRoot":`Cannot rename root branch`,"branchPickerDialog.tooltip.delete":`Delete branch`,"branchPickerDialog.tooltip.deleteCurrentBranch":`Cannot delete current branch`,"branchPickerDialog.tooltip.deleteDisabledForRoot":`Cannot delete root branch`,"branchPickerDialog.tooltip.deleteWorktree":`Remove worktree`,"branchPickerDialog.tooltip.deleteWorktreeRootProtected":`Cannot remove root worktree`,"branchPickerDialog.toast.branchRenamed":`Branch renamed`,"branchPickerDialog.toast.failedToRenameBranch":`Failed to rename branch`,"branchPickerDialog.toast.branchDeleted":`Branch deleted`,"branchPickerDialog.toast.branchNotMerged":`Branch is not fully merged`,"branchPickerDialog.toast.confirmAgainToForceDelete":`Confirm again to force delete`,"branchPickerDialog.toast.failedToDeleteBranch":`Failed to delete branch`,"branchPickerDialog.toast.worktreeCreated":`Worktree created`,"branchPickerDialog.toast.failedToCreateWorktree":`Failed to create worktree`,"branchPickerDialog.error.failedToLoad":`Failed to load branches`,"branchPickerDialog.error.renameRejected":`Rename was rejected`,"branchPickerDialog.error.renameFailed":`Failed to rename branch`,"branchPickerDialog.error.deleteRejected":`Delete was rejected`,"branchPickerDialog.error.deleteFailed":`Failed to delete branch`,"branchPickerDialog.error.createWorktreeFailed":`Failed to create worktree`,"projectEditDialog.title":`Edit project`,"projectEditDialog.field.name":`Name`,"projectEditDialog.field.namePlaceholder":`Project name`,"projectEditDialog.field.color":`Color`,"projectEditDialog.field.icon":`Icon`,"projectEditDialog.field.preview":`Preview`,"projectEditDialog.field.iconBackground":`Icon Background`,"projectEditDialog.field.iconBackgroundAria":`Project icon background color`,"projectEditDialog.option.none":`None`,"projectEditDialog.actions.uploadIcon":`Upload Icon`,"projectEditDialog.actions.uploading":`Uploading...`,"projectEditDialog.actions.discoverFavicon":`Discover Favicon`,"projectEditDialog.actions.discovering":`Discovering...`,"projectEditDialog.actions.removeProjectIcon":`Remove Project Icon`,"projectEditDialog.actions.removing":`Removing...`,"projectEditDialog.actions.undoRemove":`Undo Remove`,"projectEditDialog.actions.clear":`Clear`,"projectEditDialog.actions.cancel":`Cancel`,"projectEditDialog.actions.save":`Save`,"projectEditDialog.toast.failedToUploadIcon":`Failed to upload project icon`,"projectEditDialog.toast.iconUpdated":`Project icon updated`,"projectEditDialog.toast.failedToRemoveIcon":`Failed to remove project icon`,"projectEditDialog.toast.iconRemoved":`Project icon removed`,"projectEditDialog.toast.failedToDiscoverIcon":`Failed to discover project icon`,"projectEditDialog.toast.customIconAlreadySet":`Custom icon already set for this project`,"projectEditDialog.toast.iconDiscovered":`Project icon discovered`,"agentManager.sidebar.search.placeholder":`Search Agent Groups...`,"agentManager.sidebar.actions.newAgentGroup":`New Agent Group`,"agentManager.sidebar.actions.more":`... More ({count})`,"agentManager.sidebar.actions.showLess":`Show less`,"agentManager.sidebar.section.agentGroups":`Agent Groups`,"agentManager.sidebar.state.loading":`Loading...`,"agentManager.sidebar.state.noGroupsFound":`No groups found`,"agentManager.sidebar.state.noGroupsYet":`No agent groups yet`,"agentManager.sidebar.state.createToGetStarted":`Create a new agent group to get started`,"agentManager.sidebar.item.modelCountSingle":`{count} model`,"agentManager.sidebar.item.modelCountPlural":`{count} models`,"agentManager.sidebar.item.groupMenuAria":`Group menu`,"agentManager.sidebar.item.delete":`Delete`,"agentManager.sidebar.relativeTime.now":`now`,"agentManager.sidebar.relativeTime.minutes":`{count}m`,"agentManager.sidebar.relativeTime.hours":`{count}h`,"agentManager.sidebar.relativeTime.days":`{count}d`,"agentManager.sidebar.dialog.deleteGroupTitle":`Delete agent group`,"agentManager.sidebar.dialog.deleteGroupDescription":`Delete "{group}"? This removes all worktrees and sessions in this group.`,"agentManager.sidebar.dialog.cancel":`Cancel`,"agentManager.sidebar.dialog.delete":`Delete`,"agentManager.sidebar.dialog.deleting":`Deleting...`,"agentManager.sidebar.toast.deletingGroup":`Deleting "{group}"...`,"agentManager.sidebar.toast.deletedGroup":`Deleted "{group}"`,"agentManager.sidebar.toast.failedToDeleteGroup":`Failed to fully delete "{group}"`,"agentManager.detail.header.modelCountSingle":`{count} model`,"agentManager.detail.header.modelCountPlural":`{count} models`,"agentManager.detail.header.noBranch":`No branch`,"agentManager.detail.actions.worktreeActionsAria":`Worktree actions`,"agentManager.detail.actions.removeThisWorktree":`Remove this worktree`,"agentManager.detail.actions.keepThisRemoveOthers":`Leave this one, remove others`,"agentManager.detail.actions.copyWorktreePath":`Copy Worktree Path`,"agentManager.detail.dialog.removeWorktreeTitle":`Remove worktree`,"agentManager.detail.dialog.removeOtherWorktreesTitle":`Remove other worktrees`,"agentManager.detail.dialog.removeWorktreeDescription":`Remove "{label}"? This deletes all sessions in that worktree and removes the worktree itself.`,"agentManager.detail.dialog.removeOtherWorktreesDescription":`Keep "{label}" and remove the other worktrees in "{group}".`,"agentManager.detail.dialog.cancel":`Cancel`,"agentManager.detail.dialog.remove":`Remove`,"agentManager.detail.dialog.removeOthers":`Remove others`,"agentManager.detail.dialog.working":`Working...`,"agentManager.detail.state.loadingSessionFor":`Loading session for {label}`,"agentManager.detail.state.sessionId":`Session ID: {id}`,"agentManager.detail.state.noSessionsInGroup":`No sessions in this group`,"agentManager.detail.toast.noWorktreePath":`No worktree path available`,"agentManager.detail.toast.worktreePathCopied":`Worktree path copied`,"agentManager.detail.toast.failedToCopyPath":`Failed to copy path`,"agentManager.detail.toast.removingWorktree":`Removing worktree...`,"agentManager.detail.toast.removingOtherWorktrees":`Removing other worktrees...`,"agentManager.detail.toast.failedToFullyRemoveWorktree":`Failed to fully remove worktree`,"agentManager.detail.toast.worktreeRemoved":`Worktree removed`,"agentManager.detail.toast.otherWorktreesRemoved":`Removed other worktrees`,"agentManager.empty.groupName.label":`Group Name`,"agentManager.empty.groupName.placeholder":`e.g. feature-auth, bugfix-login`,"agentManager.empty.groupName.description":`Used for worktree directory and branch naming`,"agentManager.empty.baseBranch.label":`Base Branch`,"agentManager.empty.baseBranch.description":`Creates new branches from {branch}`,"agentManager.empty.setupCommands.label":`Setup commands`,"agentManager.empty.setupCommands.configured":`{count} configured`,"agentManager.empty.setupCommands.description":`Commands run in each new worktree. Use $ROOT_PROJECT_PATH for project root.`,"agentManager.empty.setupCommands.loading":`Loading...`,"agentManager.empty.setupCommands.commandPlaceholder":`e.g., bun install`,"agentManager.empty.setupCommands.removeCommandAria":`Remove command`,"agentManager.empty.setupCommands.addCommand":`Add command`,"agentManager.empty.agent.label":`Agent`,"agentManager.empty.agent.description":`Defaults to your configured default agent`,"agentManager.empty.models.label":`Models`,"agentManager.empty.models.addModel":`Add model`,"agentManager.empty.models.selectedSingle":`{count} model selected`,"agentManager.empty.models.selectedPlural":`{count} models selected`,"agentManager.empty.prompt.label":`Prompt`,"agentManager.empty.prompt.placeholder":`Ask anything...`,"agentManager.empty.prompt.addAttachmentAria":`Add attachment`,"agentManager.empty.actions.startAgentGroupAria":`Start Agent Group`,"agentManager.empty.toast.fileTooLarge":`File "{fileName}" is too large (max 10MB)`,"agentManager.empty.toast.failedToAttach":`Failed to attach "{fileName}"`,"agentManager.empty.toast.attachedSingle":`Attached {count} file`,"agentManager.empty.toast.attachedPlural":`Attached {count} files`,"agentManager.empty.toast.failedToCreateGroup":`Failed to create agent group`,"openInApp.actions.open":`Open`,"openInApp.actions.openInAria":`Open in {app}`,"openInApp.actions.chooseAppAria":`Choose app to open`,"openInApp.actions.copyPath":`Copy Path`,"openInApp.actions.refreshApps":`Refresh Apps`,"openInApp.toast.pathCopied":`Path copied to clipboard`,"projectActions.actions.addActionAria":`Add action`,"projectActions.actions.addAction":`Add action`,"projectActions.actions.addNewAction":`Add new action`,"projectActions.actions.autoDiscover":`Auto-discover`,"projectActions.actions.chooseActionAria":`Choose project action`,"projectActions.actions.openPreview":`Open Preview`,"projectActions.actions.runNamedAria":`Run {name}`,"projectActions.actions.stopNamedAria":`Stop {name}`,"projectActions.label.fallbackAction":`Action`,"projectActions.toast.openedUrlFromOutput":`Opened URL from action output`,"projectActions.toast.openedForwardedUrl":`Opened forwarded URL`,"projectActions.toast.openedActionUrl":`Opened action URL`,"projectActions.error.noActiveDirectory":`No active directory`,"projectActions.error.noActiveDirectoryForAction":`No active directory for action`,"projectActions.error.failedToCreateTerminalSession":`Failed to create terminal session`,"projectActions.error.invalidCustomUrlFormat":`Invalid custom URL format`,"projectActions.error.selectedDesktopSshForwardUnavailable":`Selected desktop SSH forward is unavailable`,"projectActions.error.failedToRunAction":`Failed to run action`,"mcpDropdown.title":`MCP Servers`,"mcpDropdown.actions.refreshAria":`Refresh`,"mcpDropdown.actions.openAria":`MCP servers`,"mcpDropdown.statusAria":`MCP status`,"mcpDropdown.status.unknown":`Unknown`,"mcpDropdown.status.connected":`Connected`,"mcpDropdown.status.failed":`Failed: {error}`,"mcpDropdown.status.unknownError":`Unknown error`,"mcpDropdown.status.needsAuth":`Needs authentication`,"mcpDropdown.status.needsRegistration":`Needs registration: {error}`,"mcpDropdown.empty.configureInConfig":`Configure MCP servers in Settings.`,"sessionAuth.error.rateLimitTitle":`Too many attempts`,"sessionAuth.error.networkTitle":`Unable to reach server`,"sessionAuth.error.rateLimitDescriptionSingle":`Please wait {minutes} minute before trying again.`,"sessionAuth.error.rateLimitDescriptionPlural":`Please wait {minutes} minutes before trying again.`,"sessionAuth.error.networkDescription":`We could not verify the UI session. If you're opening OpenChamber from another device on your local network, make sure Desktop Network Access is enabled on the desktop app and use the LAN address shown in Settings.`,"sessionAuth.error.retry":`Retry`,"sessionAuth.error.passkeySetupFailed":`Passkey setup failed.`,"sessionAuth.error.incorrectPassword":`Incorrect password. Try again.`,"sessionAuth.error.unexpectedResponse":`Unexpected response from server.`,"sessionAuth.error.networkRetry":`Network error. Check connection and retry.`,"sessionAuth.error.passkeySignInCanceled":`Passkey sign-in was canceled.`,"sessionAuth.error.enterPasswordForPasskey":`Enter your password to add a passkey.`,"sessionAuth.locked.tunnelTitle":`Tunnel access required`,"sessionAuth.locked.unlockTitle":`Unlock OpenChamber`,"sessionAuth.locked.tunnelDescription":`Open this tunnel using the one-time connect link from the desktop app.`,"sessionAuth.locked.passwordDescription":`This session is password-protected.`,"sessionAuth.locked.hostSwitcherHint":`Use Local if remote is unreachable.`,"sessionAuth.actions.cancelPasskey":`Cancel passkey`,"sessionAuth.actions.usePasskey":`Use passkey`,"sessionAuth.actions.unlockingAria":`Unlocking`,"sessionAuth.actions.unlockAria":`Unlock`,"sessionAuth.actions.trustDevice":`Trust this device`,"sessionAuth.actions.trustDeviceAria":`Trust this device`,"sessionAuth.actions.cancelPasskeySetup":`Cancel passkey setup`,"sessionAuth.actions.addPasskey":`Add passkey`,"sessionAuth.password.placeholder":`Enter password`,"sessionAuth.toast.passkeyAdded":`Passkey added`,"sessionAuth.toast.passkeySetupCanceled":`Passkey setup canceled`,"desktopHostSwitcher.title":`Instance`,"desktopHostSwitcher.transition.title":`Switching instance…`,"desktopHostSwitcher.transition.description":`Loading data from the selected instance.`,"desktopHostSwitcher.description":`Switch between Local and remote OpenChamber servers`,"desktopHostSwitcher.header.current":`Current`,"desktopHostSwitcher.header.default":`Default`,"desktopHostSwitcher.header.currentColon":`Current:`,"desktopHostSwitcher.header.currentDefaultColon":`Current default:`,"desktopHostSwitcher.status.connected":`Connected`,"desktopHostSwitcher.status.authRequired":`Auth required`,"desktopHostSwitcher.status.checking":`Checking`,"desktopHostSwitcher.status.updateRecommended":`Update recommended`,"desktopHostSwitcher.status.incompatible":`Incompatible`,"desktopHostSwitcher.status.wrongService":`Wrong service`,"desktopHostSwitcher.status.unreachable":`Unreachable`,"desktopHostSwitcher.status.unknown":`Unknown`,"desktopHostSwitcher.status.ping":` · {ms}ms ping`,"desktopHostSwitcher.statusAria":`Instance status`,"desktopHostSwitcher.sshPhase.ready":`Ready`,"desktopHostSwitcher.sshPhase.error":`Error`,"desktopHostSwitcher.sshPhase.reconnecting":`Reconnecting`,"desktopHostSwitcher.sshPhase.resolvingConfig":`Resolving config`,"desktopHostSwitcher.sshPhase.checkingAuth":`Checking auth`,"desktopHostSwitcher.sshPhase.connectingSsh":`Connecting SSH`,"desktopHostSwitcher.sshPhase.probingRemote":`Probing remote`,"desktopHostSwitcher.sshPhase.installing":`Installing`,"desktopHostSwitcher.sshPhase.updating":`Updating`,"desktopHostSwitcher.sshPhase.detectingServer":`Detecting server`,"desktopHostSwitcher.sshPhase.startingServer":`Starting server`,"desktopHostSwitcher.sshPhase.forwardingPorts":`Forwarding ports`,"desktopHostSwitcher.sshPhase.idle":`Idle`,"desktopHostSwitcher.ssh.needInstancesHint":`Need SSH instances? Manage them in Settings.`,"desktopHostSwitcher.ssh.instanceFallback":`SSH instance`,"desktopHostSwitcher.ssh.connectingTo":`Connecting to {host}`,"desktopHostSwitcher.actions.refresh":`Refresh`,"desktopHostSwitcher.actions.refreshInstancesAria":`Refresh instances`,"desktopHostSwitcher.actions.remoteSsh":`Remote SSH`,"desktopHostSwitcher.actions.instanceActionsAria":`Instance actions`,"desktopHostSwitcher.actions.edit":`Edit`,"desktopHostSwitcher.actions.delete":`Delete`,"desktopHostSwitcher.actions.connect":`Connect`,"desktopHostSwitcher.actions.defaultInstanceAria":`Default instance`,"desktopHostSwitcher.actions.setAsDefaultAria":`Set as default`,"desktopHostSwitcher.actions.setAsDefault":`Set as default`,"desktopHostSwitcher.actions.openInNewWindowAria":`Open in new window`,"desktopHostSwitcher.actions.openInNewWindow":`Open in new window`,"desktopHostSwitcher.actions.addInstance":`Add instance`,"desktopHostSwitcher.actions.cancel":`Cancel`,"desktopHostSwitcher.actions.save":`Save`,"desktopHostSwitcher.actions.add":`Add`,"desktopHostSwitcher.actions.switchToLocal":`Switch to Local`,"desktopHostSwitcher.actions.retry":`Retry`,"desktopHostSwitcher.actions.switchInstanceAria":`Switch instance`,"desktopHostSwitcher.actions.switchInstance":`Switch instance`,"desktopHostSwitcher.actions.switchToAria":`Switch to {instance}`,"desktopHostSwitcher.field.labelPlaceholder":`Label`,"desktopHostSwitcher.field.labelOptionalPlaceholder":`Label (optional)`,"desktopHostSwitcher.field.urlPlaceholder":`https://host:port`,"desktopHostSwitcher.state.limitedOnPage":`Instance switcher is limited on this page. Use Local to recover.`,"desktopHostSwitcher.state.loading":`Loading...`,"desktopHostSwitcher.state.instanceUnreachable":`Instance unreachable`,"desktopHostSwitcher.edit.title":`Edit instance`,"desktopHostSwitcher.add.title":`Add instance`,"desktopHostSwitcher.error.failedToSave":`Failed to save`,"desktopHostSwitcher.error.failedToLoad":`Failed to load`,"desktopHostSwitcher.error.invalidUrl":`Invalid URL (must be http/https)`,"desktopHostSwitcher.error.failedToOpenNewWindow":`Failed to open new window`,"desktopHostSwitcher.instance.local":`Local`,"desktopHostSwitcher.instance.fallback":`Instance`,"desktopHostSwitcher.startup.title":`Default SSH instance unavailable`,"desktopHostSwitcher.startup.connectingTo":`Connecting to {host}...`,"desktopHostSwitcher.startup.failed":`Failed to connect the default SSH instance.`,"desktopHostSwitcher.toast.sshConnected":`SSH instance "{host}" connected`,"desktopHostSwitcher.toast.sshFailedToConnect":`SSH instance "{host}" failed to connect`,"desktopHostSwitcher.toast.instanceUnreachable":`Instance "{host}" is unreachable`,"miniChat.header.newSession":`New session`,"miniChat.header.session":`Session`,"miniChat.header.defaultAgent":`Default agent`,"miniChat.header.noModel":`No model`,"miniChat.status.busy":`Running`,"miniChat.status.retry":`Retrying`,"miniChat.status.idle":`Idle`,"miniChat.actions.pin":`Pin above other windows`,"miniChat.actions.unpin":`Unpin window`,"miniChat.actions.pinAria":`Pin Mini Chat window`,"miniChat.actions.unpinAria":`Unpin Mini Chat window`,"miniChat.actions.openMain":`Open in main window`,"miniChat.actions.openMainAria":`Open session in main window`,"miniChat.unavailable.title":`Session unavailable`,"miniChat.unavailable.description":`This session could not be loaded. It may have been deleted, archived, or opened from a different project context.`,"sessions.sidebar.session.menu.openMiniChatWindow":`Open in Mini Chat Window`,"header.actions.newMiniChat":`New Mini Chat Window`,"header.actions.newMiniChatAria":`Open a new Mini Chat window`,"header.actions.openSessionMiniChat":`Open Session in Mini Chat`,"header.actions.openSessionMiniChatAria":`Open current session in Mini Chat`,"header.windowControls.groupAria":`Window controls`,"header.windowControls.minimize":`Minimize window`,"header.windowControls.maximize":`Maximize window`,"header.windowControls.restore":`Restore window`,"header.windowControls.close":`Close window`,"errorBoundary.title":`Something went wrong`,"errorBoundary.description":`The application encountered an unexpected error. This has been logged for debugging.`,"errorBoundary.state.unknownError":`Unknown error`,"errorBoundary.state.componentStackLabel":`Component stack:`,"errorBoundary.actions.errorDetails":`Error details`,"errorBoundary.actions.tryAgain":`Try again`,"errorBoundary.actions.copy":`Copy`,"errorBoundary.actions.copied":`Copied`,"jsonTreeView.error.emptyJson":`Empty JSON content`,"jsonTreeView.error.invalidJson":`Invalid JSON`,"jsonTreeView.error.invalidJsonTitle":`Invalid JSON`,"jsonTreeView.actions.expandAll":`Expand All`,"jsonTreeView.actions.collapseAll":`Collapse All`,"numberInput.actions.decreaseAria":`Decrease value`,"numberInput.actions.increaseAria":`Increase value`,"goToLineDialog.field.linePlaceholderShort":`Line`,"goToLineDialog.field.linePlaceholder":`Line number`,"goToLineDialog.actions.go":`Go`,"goToLineDialog.helper.editorUnavailable":`Editor unavailable.`,"goToLineDialog.helper.currentLineRange":`Current Line: {current}. Type a line number between 1 and {max} to navigate to.`,"goToLineDialog.helper.goToLine":`Go to line {line}`,"dialog.common.actions.close":`Close`,"filesView.toast.relativePathCopied":`Relative path copied`,"filesView.tree.menu.copyRelativePath":`Copy Relative Path`,"multiRun.branchSelector.placeholder.selectSourceBranch":`Select source branch...`,"multiRun.branchSelector.status.loadingBranches":`Loading branches...`,"multiRun.branchSelector.status.noBranchesFound":`No branches found`,"multiRun.branchSelector.status.notInGitRepository":`Not in a git repository.`,"multiRun.branchSelector.groups.localBranches":`Local branches`,"multiRun.branchSelector.groups.remoteBranches":`Remote branches`,"multiRun.window.actions.closeAria":`Close multi-run`,"multiRun.window.description":`OpenChamber Multi-Run window.`,"voice.status.idle":`Voice Ready`,"voice.status.listening":`Listening...`,"voice.status.processing":`Processing...`,"voice.status.speaking":`Speaking...`,"voice.status.error":`Voice Error`,"voice.status.conversationModeActiveAria":`Conversation mode active`,"voice.action.finishAndTranscribe":`Finish and transcribe voice input`,"onboarding.common.actions.back":`Back`,"onboarding.common.copyToClipboard":`Copy to clipboard`,"onboarding.common.status.copiedToClipboard":`Copied to clipboard`,"onboarding.chooser.title":`Welcome to OpenChamber`,"onboarding.chooser.description":`Choose how you want to connect to get started.`,"onboarding.chooser.tabs.localInstall":`Local Install`,"onboarding.chooser.tabs.connectRemote":`Connect Remote`,"onboarding.localSetup.title":`Setting Up OpenCode`,"onboarding.localSetup.description":`Install OpenCode CLI to continue.`,"onboarding.localSetup.dialog.selectOpencodeBinary":`Select opencode binary`,"onboarding.localSetup.errors.cliNotReady":`OpenCode CLI is not ready yet. Please confirm installation is complete and try again.`,"onboarding.localSetup.errors.detectionFailed":`Detection failed`,"onboarding.localSetup.windows.title":`Windows setup`,"onboarding.localSetup.windows.stepInstallWsl":`Install OpenCode with the command below.`,"onboarding.localSetup.windows.stepInstallWslSuffix":``,"onboarding.localSetup.windows.stepRunInstallInWsl":`Run the install command below in a Windows terminal.`,"onboarding.localSetup.windows.stepSetBinaryPath":`If OpenChamber does not detect OpenCode automatically, set the binary path below.`,"onboarding.localSetup.intro":`OpenCode is the heart of OpenChamber — install it to get started.`,"onboarding.localSetup.docs.windows":`OpenCode docs`,"onboarding.localSetup.docs.default":`OpenCode docs`,"onboarding.localSetup.actions.checking":`Checking…`,"onboarding.localSetup.actions.checkAndContinue":`I've completed installation, check and continue`,"onboarding.localSetup.actions.checkNow":`Check now`,"onboarding.localSetup.helper.checkAndContinue":`Click to check if OpenCode CLI is available. If successful, you'll automatically enter the main screen.`,"onboarding.localSetup.status.watching":`Waiting for OpenCode`,"onboarding.localSetup.status.autoContinue":`We'll continue automatically once it's detected.`,"onboarding.localSetup.field.alreadyInstalled":`Already installed? Set the OpenCode CLI path:`,"onboarding.localSetup.advanced.title":`Set a custom binary path`,"onboarding.localSetup.troubleshoot.title":`Having trouble?`,"onboarding.localSetup.actions.browse":`Browse`,"onboarding.localSetup.actions.apply":`Apply`,"onboarding.localSetup.helper.saveAndReload":`Saves to OpenChamber settings and reloads OpenCode configuration.`,"onboarding.localSetup.remotePreference":`Prefer to use a remote server?`,"onboarding.localSetup.actions.connectRemoteServer":`Connect to Remote Server →`,"onboarding.localSetup.windows.hintInstallInWsl":`On Windows, install and run OpenCode natively.`,"onboarding.localSetup.windows.hintDetectionFailed":`If detection fails, set a native path such as opencode.cmd or opencode.exe.`,"onboarding.localSetup.hint.ensurePath":`Already installed? Make sure opencode is in your PATH.`,"onboarding.localSetup.hint.setEnv":`Or set OPENCODE_BINARY environment variable.`,"onboarding.localSetup.hint.missingRuntime":`If you see "env: node: No such file or directory" or "env: bun: No such file or directory", install that runtime or ensure it is on PATH.`,"onboarding.remoteConnection.title":`Connect to Remote Server`,"onboarding.remoteConnection.titleRecovery":`Connect to a Different Server`,"onboarding.remoteConnection.description":`Enter the address of an OpenChamber server to connect to.`,"onboarding.remoteConnection.field.serverAddress":`Server Address`,"onboarding.remoteConnection.field.serverAddressPlaceholder":`https://your-server.example.com:4096`,"onboarding.remoteConnection.field.nameOptional":`Name (optional)`,"onboarding.remoteConnection.field.namePlaceholder":`My Remote Server`,"onboarding.remoteConnection.errors.connectionTestFailed":`Connection test failed`,"onboarding.remoteConnection.errors.failedToSaveConnection":`Failed to save connection`,"onboarding.remoteConnection.status.connectedSuccessfully":`Connected successfully ({latencyMs}ms)`,"onboarding.remoteConnection.status.authWarning":`Server requires authentication. You can still connect.`,"onboarding.remoteConnection.status.connectionFailed":`Connection Failed`,"onboarding.remoteConnection.status.suggestionsUnreachable":`Suggestions: Check the server address, verify the server is running, or check your network connection.`,"onboarding.remoteConnection.status.suggestionsWrongService":`Suggestions: Verify the URL points to an OpenChamber server, or contact the server administrator.`,"onboarding.remoteConnection.actions.testing":`Testing…`,"onboarding.remoteConnection.actions.testConnection":`Test Connection`,"onboarding.remoteConnection.actions.connectAndRestart":`Connect & Restart`,"onboarding.remoteConnection.actions.whatToDo":`What would you like to do?`,"onboarding.remoteConnection.actions.chooseDifferentServer":`Choose Different Server`,"onboarding.remoteConnection.actions.useLocalInstead":`Use Local Instead`,"onboarding.remoteConnection.probe.authMessage":`Server requires authentication. You can still connect, but may need to provide credentials.`,"onboarding.remoteConnection.probe.updateRecommendedMessage":`This instance is running a different OpenChamber version. You can connect, but update both apps if something does not work.`,"onboarding.remoteConnection.probe.incompatibleMessage":`Server is running OpenChamber but is not compatible with this app version. Update OpenChamber on the server, then try again.`,"onboarding.remoteConnection.probe.wrongServiceMessage":`Server responded but is not running OpenChamber. Verify the address points to an OpenChamber server.`,"onboarding.remoteConnection.probe.unreachableMessage":`Server is unreachable. Check your network connection and verify the server address.`,"onboarding.desktopRecovery.localUnavailable.title":`Local OpenCode Unavailable`,"onboarding.desktopRecovery.localUnavailable.description":`OpenCode CLI could not be started or is not installed. Install OpenCode or connect to a remote server instead.`,"onboarding.desktopRecovery.localUnavailable.retry":`Retry Local`,"onboarding.desktopRecovery.localUnavailable.useLocal":`Set Up Local`,"onboarding.desktopRecovery.noDefaultConnection.title":`No Default Connection`,"onboarding.desktopRecovery.noDefaultConnection.description":`Your saved default connection could not be found. Choose how you want to connect.`,"onboarding.desktopRecovery.remoteUnreachable.title":`Remote Server Unreachable`,"onboarding.desktopRecovery.remoteUnreachable.description":`Could not connect to "{host}". Check your network connection and verify the server address.`,"onboarding.desktopRecovery.remoteUnreachable.retry":`Retry Connection`,"onboarding.desktopRecovery.incompatibleServer.title":`Incompatible Server`,"onboarding.desktopRecovery.incompatibleServer.description":`The server at "{host}" is not running OpenChamber. Verify the address points to an OpenChamber server.`,"onboarding.desktopRecovery.remoteIncompatible.title":`Server Update Required`,"onboarding.desktopRecovery.remoteIncompatible.description":`The OpenChamber server at "{host}" is not compatible with this app version. Update OpenChamber on the server, then try again.`,"onboarding.desktopRecovery.common.useLocal":`Use Local`,"onboarding.desktopRecovery.common.useRemote":`Use Remote`,"onboarding.desktopRecovery.actions.retrying":`Retrying…`,"onboarding.desktopRecovery.actions.retryConnection":`Retry Connection`,"startup.initRecovery.title":`Startup failed`,"startup.initRecovery.description":`OpenChamber could not finish initialization. Check that the server is running, then retry.`,"startup.initRecovery.retry":`Retry`,"startup.initRecovery.retrying":`Retrying…`,"onboarding.desktopRecovery.placeholders.remoteServer":`the remote server`,"onboarding.desktopRecovery.placeholders.unknownServer":`unknown`,"vscodeLayout.title.chat":`Chat`,"vscodeLayout.title.newSession":`New session`,"vscodeLayout.title.sessions":`Sessions`,"vscodeLayout.title.sessionFallback":`Session`,"vscodeLayout.actions.backToSessionsAria":`Back to sessions`,"vscodeLayout.actions.archiveAllAria":`Archive all sessions`,"vscodeLayout.actions.archiveAllConfirm":`Archive all`,"vscodeLayout.actions.archiveAllSuccess":`Archived {count} session(s)`,"vscodeLayout.actions.archiveAllError":`Failed to archive {count} session(s)`,"vscodeLayout.actions.cancel":`Cancel`,"vscodeLayout.actions.newSessionAria":`New session`,"vscodeLayout.actions.openAgentManagerAria":`Open Agent Manager`,"vscodeLayout.actions.resizeSessionsSidebarAria":`Resize sessions sidebar`,"vscodeLayout.actions.settingsAria":`Settings`,"vscodeLayout.quota.title":`Rate limits`,"vscodeLayout.quota.mode.used":`Used`,"vscodeLayout.quota.mode.remaining":`Remaining`,"vscodeLayout.quota.lastUpdated":`Last updated {time}`,"vscodeLayout.quota.noRateLimitsAvailable":`No rate limits available.`,"vscodeLayout.quota.noRateLimitsReported":`No rate limits reported.`,"vscodeLayout.quota.actions.rateLimitsAria":`Rate limits`,"vscodeLayout.quota.actions.showUsedAria":`Show used quota`,"vscodeLayout.quota.actions.showRemainingAria":`Show remaining quota`,"vscodeLayout.quota.actions.refreshAria":`Refresh rate limits`,"updateDialog.header.updateAvailable":`Update Available`,"updateDialog.header.updating":`Updating OpenChamber...`,"updateDialog.changelog.title":`What's new`,"updateDialog.status.installingUpdate":`Installing update...`,"updateDialog.status.serverRestarting":`Server restarting...`,"updateDialog.status.waitingForServer":`Waiting for server...`,"updateDialog.status.autoReloadHint":`The page will reload automatically when the update is complete.`,"updateDialog.fallback.updateViaTerminal":`Or update via terminal:`,"updateDialog.actions.copyCommand":`Copy command`,"updateDialog.actions.copied":`Copied!`,"updateDialog.status.downloadingPayload":`Downloading update payload...`,"updateDialog.actions.downloadUpdate":`Download Update`,"updateDialog.status.downloading":`Downloading...`,"updateDialog.actions.restartToUpdate":`Restart to Update`,"updateDialog.actions.updateNow":`Update Now`,"updateDialog.actions.openMobileUpdate":`Open update`,"updateDialog.status.updating":`Updating...`,"updateDialog.error.updateFailed":`Update failed`,"updateDialog.error.takingLonger":`Update is taking longer than expected. Wait a bit and refresh, or run: openchamber update`,"mobileUpdate.toast.available.title":`OpenChamber update available`,"mobileUpdate.toast.available.description":`Version {version} is ready for Android.`,"mobileUpdate.toast.actions.download":`Download`,"mobileUpdate.toast.actions.dismiss":`Dismiss`,"opencodeUpdate.toast.available.title":`OpenCode update`,"opencodeUpdate.toast.available.description":`Version {version} available.`,"opencodeUpdate.toast.actions.update":`Update`,"opencodeUpdate.toast.actions.dismiss":`Dismiss`,"opencodeUpdate.toast.actions.reload":`Reload OpenCode`,"opencodeUpdate.toast.upgrading.title":`Updating OpenCode...`,"opencodeUpdate.toast.upgrading.description":`Keep OpenChamber open.`,"opencodeUpdate.toast.updated.title":`OpenCode updated`,"opencodeUpdate.toast.updated.description":`Update installed.`,"opencodeUpdate.toast.updated.descriptionWithVersion":`Version {version} installed.`,"opencodeUpdate.toast.failed.title":`Could not update OpenCode`,"opencodeUpdate.toast.failed.description":`The OpenCode upgrade failed.`,"opencodeUpdate.toast.reload.message":`Restarting OpenCode...`,"memoryDebugPanel.title":`Debug Panel`,"memoryDebugPanel.tabs.memory":`Memory`,"memoryDebugPanel.tabs.streaming":`Streaming`,"memoryDebugPanel.section.sessionsInMemory":`Sessions in Memory`,"memoryDebugPanel.section.uiStreamingMetrics":`UI Streaming Metrics`,"memoryDebugPanel.section.vscodeBridgeMetrics":`VS Code Bridge Metrics`,"memoryDebugPanel.section.noUiSamples":`No UI streaming samples yet. Start a stream and keep this panel open.`,"memoryDebugPanel.section.noVscodeSamples":`No VS Code bridge samples yet.`,"memoryDebugPanel.metric.totalMessages":`Total Messages`,"memoryDebugPanel.metric.cachedSessions":`Cached Sessions`,"memoryDebugPanel.metric.userMessages":`User Messages`,"memoryDebugPanel.metric.assistantMessages":`Assistant Messages`,"memoryDebugPanel.metric.viewportWindow":`Viewport Window`,"memoryDebugPanel.metric.zombieTimeout":`Zombie Timeout`,"memoryDebugPanel.metric.githubTotalRequests":`GitHub Total Requests`,"memoryDebugPanel.metric.metrics":`Metrics`,"memoryDebugPanel.metric.samples":`Samples`,"memoryDebugPanel.metric.lastUpdate":`Last Update`,"memoryDebugPanel.metric.uiMetrics":`UI Metrics`,"memoryDebugPanel.metric.vscodeMetrics":`VS Code Metrics`,"memoryDebugPanel.metric.messageListRenders":`MsgList Renders`,"memoryDebugPanel.metric.messageListStreamRenders":`MsgList Stream Renders`,"memoryDebugPanel.metric.chatMessageRenders":`ChatMessage Renders`,"memoryDebugPanel.metric.chatMessageStreamRenders":`ChatMessage Stream Renders`,"memoryDebugPanel.metric.chatMessageStaticDuringStream":`ChatMessage Static During Stream`,"memoryDebugPanel.metric.chatMessageStaticOutsideActiveTurn":`ChatMessage Static Outside Active Turn`,"memoryDebugPanel.metric.messagesValue":`{count} messages`,"memoryDebugPanel.metric.minutesValue":`{count} minutes`,"memoryDebugPanel.metric.msgsValue":`{count} msgs`,"memoryDebugPanel.metric.roleMsgsValue":`U {user} / A {assistant}`,"memoryDebugPanel.metric.countValue":`Count {value}`,"memoryDebugPanel.metric.avgValue":`Avg {value}`,"memoryDebugPanel.metric.maxValue":`Max {value}`,"memoryDebugPanel.metric.totalValue":`Total {value}`,"memoryDebugPanel.actions.logState":`Log State`,"memoryDebugPanel.actions.copyJson":`Copy JSON`,"memoryDebugPanel.tooltip.logCurrentState":`Log current memory state to browser console`,"memoryDebugPanel.streaming.copy.copied":`Streaming debug JSON copied`,"memoryDebugPanel.streaming.copy.failed":`Failed to copy JSON`,"memoryDebugPanel.streaming.copy.hint":`Copy exports both UI and VS Code streaming metrics as JSON`,"memoryDebugPanel.common.idle":`idle`,"memoryDebugPanel.common.live":`live`,"memoryDebugPanel.common.notAvailable":`n/a`,"memoryDebugPanel.common.untitled":`Untitled`,"directoryTree.field.newDirectoryPlaceholder":`new_directory`,"textarea.resizeHandleAria":`Resize textarea`,"sidebar.resize.leftPanelAria":`Resize left panel`,"sidebar.resize.rightPanelAria":`Resize right panel`,"mainLayout.mobile.closeDrawerAria":`Close drawer`,"sortableTabsStrip.aria.tabs":`Tabs`,"openChamberLogo.aria.logo":`OpenChamber logo`,"markdownRenderer.code.actions.copyTitle":`Copy code`,"markdownRenderer.code.actions.copiedTitle":`Copied`,"markdownRenderer.table.actions.copyTitle":`Copy table`,"markdownRenderer.code.actions.enableWrapTitle":`Enable line wrap`,"markdownRenderer.code.actions.disableWrapTitle":`Disable line wrap`,"markdownRenderer.table.actions.downloadTitle":`Download table`,"markdownRenderer.table.toast.downloadedAsFormat":`Table downloaded as {format}`,"markdownRenderer.mermaid.actions.copyTitle":`Copy`,"markdownRenderer.mermaid.actions.copySourceTitle":`Copy source`,"markdownRenderer.mermaid.actions.downloadSvgTitle":`Download SVG`,"markdownRenderer.mermaid.actions.zoomInTitle":`Zoom in`,"markdownRenderer.mermaid.actions.zoomOutTitle":`Zoom out`,"markdownRenderer.mermaid.actions.resetViewTitle":`Reset view`,"markdownRenderer.mermaid.toast.downloadFailed":`Failed to download diagram`,"common.date.today":`Today`,"common.date.yesterday":`Yesterday`,"common.date.yesterdayWithTime":`Yesterday {time}`,"common.relative.justNow":`Just now`,"common.relative.minutesAgoShort":`{count}min ago`,"common.relative.hoursAgoShort":`{count}h ago`,"common.relative.daysAgoShort":`{count}d ago`,"common.relative.weeksAgoShort":`{count}w ago`,"common.relative.yearsAgoShort":`{count}y ago`,"common.relative.minutesAgoCompact":`{count}m`,"common.relative.hoursAgoCompact":`{count}h`,"common.relative.daysAgoCompact":`{count}d ago`,"common.relative.weeksAgoCompact":`{count}w ago`,"common.relative.monthsAgoCompact":`{count}mo`,"common.relative.yearsAgoCompact":`{count}y ago`,"contextFileOpen.failure.tooLarge":`File is too large to open (>{count} lines)`,"contextFileOpen.failure.missing":`File not found`,"contextFileOpen.failure.unreadable":`Failed to open file`,"quota.window.5h":`5-Hour`,"quota.window.7d":`7-Day Limit`,"quota.window.7dSonnet":`7-Day Sonnet Limit`,"quota.window.7dOpus":`7-Day Opus Limit`,"quota.window.weekly":`Weekly Limit`,"quota.window.daily":`Daily`,"quota.window.monthly":`Monthly Limit`,"quota.window.credits":`Credits`,"quota.window.creditsBalance":`Credits Balance`,"quota.window.billingCycle":`Billing Cycle`,"quota.window.auto":`Auto`,"quota.window.api":`API`,"quota.window.planLimit":`Plan Limit`,"quota.window.onDemand":`On-demand`,"quota.window.session":`Session`,"quota.window.premium":`Premium Interactions`,"quota.window.chat":`Chat Requests`,"quota.window.completions":`Completions`,"quota.window.premiumInteractions":`Premium interactions`},i=[`en`,`fr`,`zh-CN`,`zh-TW`,`uk`,`es`,`pt-BR`,`ko`,`pl`,`ja`],a={en:`common.language.english`,fr:`common.language.french`,"zh-CN":`common.language.simplifiedChinese`,"zh-TW":`common.language.traditionalChinese`,uk:`common.language.ukrainian`,es:`common.language.spanish`,"pt-BR":`common.language.brazilianPortuguese`,ko:`common.language.korean`,pl:`common.language.polish`,ja:`common.language.japanese`},o=`openchamber.i18n.v1`;function s(e){if(!e)return;let t=e.toLowerCase().replace(/_/g,`-`);if(t===`zh-tw`||t.startsWith(`zh-tw-`)||t===`zh-hk`||t.startsWith(`zh-hk-`)||t===`zh-mo`||t.startsWith(`zh-mo-`)||t===`zh-hant`||t.startsWith(`zh-hant-`))return`zh-TW`;if(t.startsWith(`zh`))return`zh-CN`;if(t.startsWith(`en`))return`en`;if(t===`fr`||t.startsWith(`fr-`))return`fr`;if(t===`uk`||t.startsWith(`uk-`)||t===`ua`||t.startsWith(`ua-`))return`uk`;if(t===`es`||t.startsWith(`es-`))return`es`;if(t===`pt`||t.startsWith(`pt-`))return`pt-BR`;if(t===`ko`||t.startsWith(`ko-`))return`ko`;if(t===`ja`||t.startsWith(`ja-`))return`ja`;if(t===`pl`||t.startsWith(`pl-`))return`pl`}function c(e){return s(e)??`en`}function l(){if(!(typeof window>`u`))try{let e=window.localStorage.getItem(o);if(!e)return;let t=JSON.parse(e);return typeof t.locale==`string`?c(t.locale):void 0}catch{return}}function u(e){if(!(typeof window>`u`))try{window.localStorage.setItem(o,JSON.stringify({locale:e}))}catch{return}}function d(){let e=l();if(e)return e;if(typeof navigator<`u`)try{let e=[...navigator.languages??[],navigator.language];for(let t of e){let e=s(t);if(e)return e}}catch{return`en`}return`en`}var f=e({formatMessage:()=>_,initializeLocale:()=>g,useI18nStore:()=>h}),p=new Map([[`en`,r]]);async function m(e){let t=p.get(e);if(t)return t;let i=e===`zh-CN`?await n(()=>import(`./zh-CN-DLAKDOM9.js`),[]):e===`fr`?await n(()=>import(`./fr-Cv8ZWQdW.js`),[]):e===`zh-TW`?await n(()=>import(`./zh-TW-s3Jjx1_n.js`),[]):e===`es`?await n(()=>import(`./es-C25PRSjo.js`),[]):e===`pt-BR`?await n(()=>import(`./pt-BR-C2cJZ43o.js`),[]):e===`uk`?await n(()=>import(`./uk-DJz_P8OZ.js`),[]):e===`ko`?await n(()=>import(`./ko-DWBUCCV6.js`),[]):e===`pl`?await n(()=>import(`./pl-DaBaPCyE.js`),[]):e===`ja`?await n(()=>import(`./ja-Ue9m9eSe.js`),[]):{dict:r};return p.set(e,i.dict),i.dict}var h=t()((e,t)=>({locale:`en`,dictionary:r,loadingLocale:null,setLocale:(n,i=!0)=>{let a=t(),o=p.get(n);a.locale===n&&a.loadingLocale!==n&&o||(i&&u(n),e({locale:n,dictionary:o??a.dictionary,loadingLocale:o?null:n}),!o&&m(n).then(r=>{t().locale===n&&e({dictionary:r,loadingLocale:null})}).catch(i=>{console.error(`[i18n] failed to load locale ${n}`,i),t().locale===n&&e({locale:`en`,dictionary:r,loadingLocale:null})}))}}));function g(){h.getState().setLocale(d(),!1)}function _(e,t,n){let i=e[t]??r[t]??t;return n?i.replace(/\{([^{}]+)\}/g,(e,t)=>{let r=n[t.trim()];return r==null?e:String(r)}):i}export{i as a,h as i,g as n,a as o,f as r,_ as t};