@openchambery/web 1.18.2-beta.2 → 1.18.2-beta.21
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.
- package/dist/assets/{AgentAvatar-B2kZjgaf.js → AgentAvatar-B4fj9PIe.js} +1 -1
- package/dist/assets/{AssistantView-DvoyOGkx.js → AssistantView-C00aiEHK.js} +1 -1
- package/dist/assets/{ChatContainer-D6yfuigV.js → ChatContainer-BDFeDKu-.js} +39 -39
- package/dist/assets/{DiagramView-MGGo9iME.js → DiagramView-CUfSFI3e.js} +1 -1
- package/dist/assets/{FadeInOnReveal-aeWlaqVB.js → FadeInOnReveal-CKKU6fKI.js} +1 -1
- package/dist/assets/{Icon-AXqa-fYB.js → Icon-DiIuWOuC.js} +1 -1
- package/dist/assets/{MarkdownRendererImpl-jVOkZkyX.js → MarkdownRendererImpl-Cen6E9Lj.js} +2 -2
- package/dist/assets/{MobileDetailNavigation-Q2IzHqGA.js → MobileDetailNavigation-DILi0tN7.js} +1 -1
- package/dist/assets/{MobileShareBridge-apXM34Lb.js → MobileShareBridge-PZMRiieI.js} +1 -1
- package/dist/assets/MobileSurface-BLYcR0tO.js +2 -0
- package/dist/assets/{MultiRunWindow-B-l_O-bd.js → MultiRunWindow-D_2mWZyv.js} +1 -1
- package/dist/assets/{OnboardingScreen-CUsgwt4y.js → OnboardingScreen-CYeRZznl.js} +1 -1
- package/dist/assets/{OverlayScrollbar-D6NySAxi.js → OverlayScrollbar-BgMLtMIq.js} +1 -1
- package/dist/assets/SettingsView-CbDBfQp1.js +25 -0
- package/dist/assets/{SettingsWindow-DfVgTQ4I.js → SettingsWindow-Br7XLcSd.js} +1 -1
- package/dist/assets/{TerminalView-DNyjfkvT.js → TerminalView-CM5jRKlj.js} +1 -1
- package/dist/assets/{ToolOutputDialog-DLG1iThm.js → ToolOutputDialog-D3U6aTZ4.js} +1 -1
- package/dist/assets/appThemeRegistry-CDxBJNNB.js +2 -0
- package/dist/assets/assistant-guide-hero-BeUHQcxE.jpg +0 -0
- package/dist/assets/{button-CDvMVaiO.js → button-DaAoVF4X.js} +1 -1
- package/dist/assets/{clipboard-BW7nk_Cx.js → clipboard-BnElHSnO.js} +1 -1
- package/dist/assets/{collapsible-C2aamDvD.js → collapsible-BmuQu0dq.js} +1 -1
- package/dist/assets/{context-menu-BaxmodD8.js → context-menu-DBOMervd.js} +1 -1
- package/dist/assets/{desktopHosts-CBoBpJ1Z.js → desktopHosts-ZK_vkdzL.js} +1 -1
- package/dist/assets/{desktopRelayRestore-l2R9muux.js → desktopRelayRestore-CewM6-g5.js} +1 -1
- package/dist/assets/{diagram-CEon0BQs.js → diagram-DAE4CZy2.js} +1 -1
- package/dist/assets/{dialog-DjYfj1Sn.js → dialog-COrLBm9O.js} +1 -1
- package/dist/assets/{es-5Lhudh0n.js → es-DIVYdoxi.js} +1 -1
- package/dist/assets/{fileQueries-CE_DaZWQ.js → fileQueries-CmWYnRVz.js} +1 -1
- package/dist/assets/{fr-Q_UhFmKT.js → fr-CNTlVypq.js} +2 -2
- package/dist/assets/{gitApi-BYxg_qGJ.js → gitApi-BQT3QXD2.js} +1 -1
- package/dist/assets/gitApiHttp-BxGAFLTf.js +2 -0
- package/dist/assets/{input-k9DGGyZ6.js → input-XiL2-2gG.js} +1 -1
- package/dist/assets/insertionBoundaries-9a0RuIDc.js +1 -0
- package/dist/assets/{ja-CzMPz7bT.js → ja-C_eW5ZM8.js} +1 -1
- package/dist/assets/{ko-B-EslUsR.js → ko-CE3cOv7v.js} +1 -1
- package/dist/assets/{main-LDphyc-v.js → main-BGfX81Y9.js} +20 -20
- package/dist/assets/{main-CO6z5yRB.js → main-CEqSDnE2.js} +2 -2
- package/dist/assets/{markdown-worker-DkeWiER6.js → markdown-worker-BDyY0vt6.js} +1 -1
- package/dist/assets/{markdownTheme-DNT93i5L.js → markdownTheme-D-aLQZaM.js} +1 -1
- package/dist/assets/{miniChat-BZQwTZpx.js → miniChat-CKucSAhg.js} +2 -2
- package/dist/assets/mobile-C4bTWKry.js +2 -0
- package/dist/assets/{multirun-ZlwlkIy5.js → multirun-DeNtSkgb.js} +1 -1
- package/dist/assets/{persistence-DPNMIbF5.js → persistence-D1lIuyqO.js} +1 -1
- package/dist/assets/{pl-Dnea6Ppc.js → pl-BZKZOE99.js} +1 -1
- package/dist/assets/projectMeta-BunN9pH5.js +3 -0
- package/dist/assets/{pt-BR-Ca6QTem7.js → pt-BR-DHDgp8S3.js} +1 -1
- package/dist/assets/{radio-CJuhbQ5a.js → radio-Bziafaje.js} +1 -1
- package/dist/assets/renderElectronMiniChatApp-D8-FDgWE.js +2 -0
- package/dist/assets/renderMobileApp-CdU0aJ-e.js +23 -0
- package/dist/assets/{runtimeConfig-BtWi74Pm.js → runtimeConfig-BXCt7ZsQ.js} +1 -1
- package/dist/assets/runtimeEndpointReset-CK1GhIsm.js +145 -0
- package/dist/assets/{sortable-tabs-strip-D8JHUI0z.js → sortable-tabs-strip-pWlBorwQ.js} +1 -1
- package/dist/assets/src-8kQFmtjw.css +2 -0
- package/dist/assets/{store-wa1ersRf.js → store-CUWqzRt7.js} +2 -2
- package/dist/assets/{terminalApi-tB3qLcfa.js → terminalApi-DpiAJlil.js} +1 -1
- package/dist/assets/{tooltip-DMNR5rN0.js → tooltip-BLugzWq-.js} +1 -1
- package/dist/assets/{uk-xGc9Pzge.js → uk-CfQK6cz1.js} +1 -1
- package/dist/assets/{url-7MqoLs9X.js → url-DMs_PgIC.js} +1 -1
- package/dist/assets/useAppFontEffects-IEUQDvE8.js +7 -0
- package/dist/assets/useDesktopWindowControlsLayout-MlqJX89k.js +1 -0
- package/dist/assets/{useEffectiveDirectory-aUC3zzl_.js → useEffectiveDirectory-GbhkdO6m.js} +1 -1
- package/dist/assets/{useFontPreferences-CIurCeNv.js → useFontPreferences-92Qg-98H.js} +1 -1
- package/dist/assets/useMobileNavigationStore-DQHF_ETu.js +476 -0
- package/dist/assets/useSessionAutoCleanup-BuU_S_Sh.js +1 -0
- package/dist/assets/{useWorkerHighlightedLines-CiYQjBe6.js → useWorkerHighlightedLines-Ca6OgNHF.js} +1 -1
- package/dist/assets/{utils-Co19EJEL.js → utils-BxJEIWv5.js} +1 -1
- package/dist/assets/{zh-CN-sL4ktGB3.js → zh-CN-DvY2fKWp.js} +1 -1
- package/dist/assets/{zh-TW-Cfxps4gq.js → zh-TW-eWe0lm3-.js} +1 -1
- package/dist/index.html +8 -8
- package/dist/mini-chat.html +8 -8
- package/dist/mobile.html +8 -8
- package/package.json +1 -1
- package/server/index.d.ts +6 -0
- package/server/index.js +13 -0
- package/server/lib/config-sync/DOCUMENTATION.md +70 -0
- package/server/lib/config-sync/config-sync.test.js +197 -0
- package/server/lib/config-sync/constants.js +39 -0
- package/server/lib/config-sync/contract.js +130 -0
- package/server/lib/config-sync/credential-auth.js +39 -0
- package/server/lib/config-sync/engine.js +108 -0
- package/server/lib/config-sync/index.js +67 -0
- package/server/lib/config-sync/local-backup.js +171 -0
- package/server/lib/config-sync/plan.js +318 -0
- package/server/lib/config-sync/receiver.js +330 -0
- package/server/lib/config-sync/routes.js +141 -0
- package/server/lib/config-sync/routes.test.js +154 -0
- package/server/lib/config-sync/scripts.js +264 -0
- package/server/lib/config-sync/selections.js +112 -0
- package/server/lib/config-sync/tar.js +35 -0
- package/server/lib/config-sync/target-id.js +24 -0
- package/server/lib/event-stream/DOCUMENTATION.md +2 -2
- package/server/lib/event-stream/diff-summary.js +39 -11
- package/server/lib/event-stream/diff-summary.test.js +73 -6
- package/server/lib/event-stream/protocol.test.js +70 -7
- package/server/lib/notifications/DOCUMENTATION.md +2 -2
- package/server/lib/notifications/runtime.js +68 -27
- package/server/lib/notifications/runtime.test.js +176 -0
- package/server/lib/opencode/DOCUMENTATION.md +4 -1
- package/server/lib/opencode/bootstrap-runtime.js +2 -0
- package/server/lib/opencode/core-routes.js +1 -0
- package/server/lib/opencode/feature-routes-runtime.test.js +10 -1
- package/server/lib/opencode/openchamber-routes.js +7 -0
- package/server/lib/opencode/settings-runtime.js +82 -51
- package/server/lib/opencode/settings-runtime.test.js +42 -0
- package/server/lib/relay/DOCUMENTATION.md +1 -1
- package/server/lib/session-index/DOCUMENTATION.md +12 -6
- package/server/lib/session-index/routes.js +34 -0
- package/server/lib/session-index/routes.test.js +76 -0
- package/server/lib/session-index/service.js +53 -4
- package/server/lib/session-index/service.test.js +72 -2
- package/server/lib/session-title/DOCUMENTATION.md +19 -14
- package/server/lib/session-title/runtime.js +8 -8
- package/server/lib/session-title/runtime.test.js +231 -0
- package/server/lib/session-turn-pages/DOCUMENTATION.md +26 -6
- package/server/lib/session-turn-pages/changes.service.js +156 -0
- package/server/lib/session-turn-pages/changes.service.test.js +188 -0
- package/server/lib/session-turn-pages/reconcile.routes.test.js +52 -0
- package/server/lib/session-turn-pages/reconcile.service.js +3 -1
- package/server/lib/session-turn-pages/reconcile.service.test.js +44 -0
- package/server/lib/session-turn-pages/routes.js +273 -12
- package/server/lib/session-turn-pages/routes.test.js +387 -0
- package/server/lib/session-turn-pages/service.js +31 -7
- package/server/lib/session-turn-pages/service.test.js +40 -0
- package/server/lib/small-model/DOCUMENTATION.md +93 -38
- package/server/lib/small-model/catalog.js +10 -2
- package/server/lib/small-model/catalog.test.js +3 -1
- package/server/lib/small-model/index.js +52 -28
- package/server/lib/small-model/opencode-session.js +339 -0
- package/server/lib/small-model/opencode-session.test.js +177 -0
- package/server/lib/small-model/resolve.js +116 -5
- package/server/lib/small-model/resolve.test.js +76 -10
- package/server/lib/small-model/summary-settings.test.js +60 -3
- package/dist/assets/MobileSurface-htGkf7Ua.js +0 -2
- package/dist/assets/SettingsView-DxMpVLlt.js +0 -25
- package/dist/assets/appThemeRegistry-CgfOR_0L.js +0 -2
- package/dist/assets/gitApiHttp-D8j1qRH4.js +0 -2
- package/dist/assets/insertionBoundaries-DzXMTleb.js +0 -1
- package/dist/assets/mobile-BktO3_4R.js +0 -2
- package/dist/assets/projectMeta-v-LP2mzz.js +0 -3
- package/dist/assets/renderElectronMiniChatApp-Db8uO-6q.js +0 -2
- package/dist/assets/renderMobileApp-BCV81Ryl.js +0 -23
- package/dist/assets/runtimeEndpointReset-Dg3DMy9v.js +0 -145
- package/dist/assets/src-oHrYIqHF.css +0 -2
- package/dist/assets/useAppFontEffects-CM0VKsdo.js +0 -7
- package/dist/assets/useDesktopWindowControlsLayout-Cq-r4Hcb.js +0 -1
- package/dist/assets/useMobileNavigationStore-DnzT4jO2.js +0 -475
- package/dist/assets/useSessionAutoCleanup-DxZeceKO.js +0 -1
|
@@ -4,7 +4,7 @@ Use this space to define absolute rules for how the AI should behave across all
|
|
|
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 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.deferredTitle":`{count} changed files`,"gitView.changes.deferredStagedCount":`Staged: {count}`,"gitView.changes.deferredUnstagedCount":`Unstaged: {count}`,"gitView.changes.deferredHint":`Large change sets are not rendered automatically to keep the app responsive.`,"gitView.changes.deferredLoadAction":`Load changes`,"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:
|
|
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) and agent skills (~/.agents) to this remote so both sides match. Provider credentials (auth.json) are included only when credential sync is authorized for this instance in its settings. Symlinked folders are copied as real files.`,"settings.remoteInstances.page.sync.direction.push":`Local → remote`,"settings.remoteInstances.page.sync.direction.pull":`Remote → local`,"settings.remoteInstances.page.sync.scope.title":`What to sync`,"settings.remoteInstances.page.sync.scope.authRequiresGrant":`Authorize credential sync in this instance’s settings before including auth.json.`,"settings.remoteInstances.page.sync.runs.title":`Recent sync runs`,"settings.remoteInstances.page.sync.runs.empty":`No sync runs yet for this instance.`,"settings.remoteInstances.page.sync.runs.result.success":`Success`,"settings.remoteInstances.page.sync.runs.result.failure":`Failed`,"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.section.credentialSync":`Credential sync`,"settings.remoteInstances.page.credentialSync.description":`Connecting to this remote does not authorize copying provider login tokens. Turn this on only when you trust the remote with your OpenCode auth.json.`,"settings.remoteInstances.page.credentialSync.toggleLabel":`Allow syncing provider credentials`,"settings.remoteInstances.page.credentialSync.toggleDescription":`When enabled, config sync may transfer ~/.local/share/opencode/auth.json to this remote.`,"settings.remoteInstances.page.credentialSync.toggleAria":`Allow syncing provider credentials to this remote`,"settings.remoteInstances.page.credentialSync.confirmGrant":`Allow this remote to receive provider credentials (auth.json)? Tokens will be copied over SSH when you sync.`,"settings.remoteInstances.page.credentialSync.confirmRevoke":`Stop allowing provider credential sync to this remote? Future syncs will skip auth.json.`,"settings.remoteInstances.page.credentialSync.toast.granted":`Credential sync authorized for this remote`,"settings.remoteInstances.page.credentialSync.toast.grantFailed":`Failed to authorize credential sync`,"settings.remoteInstances.page.credentialSync.toast.revoked":`Credential sync authorization removed`,"settings.remoteInstances.page.credentialSync.toast.revokeFailed":`Failed to revoke credential sync`,"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 (forks also refresh after their first newly sent reply). Later turns are not auto-refreshed; rename or use smart title manually.`,"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":`Auto-generate the session title when a new session first becomes idle, and when a fork sends its first new message. Later turns are not auto-refreshed`,"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 SSH`,"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.projects.menu.label":`More actions`,"mobile.projects.menu.newChat":`New chat`,"mobile.projects.menu.newProject":`New project`,"mobile.projects.menu.scanQr":`Scan QR code`,"mobile.projects.menu.switchInstance":`Switch instance`,"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.pin.error":`Failed to pin session`,"sessions.sidebar.session.unpin.error":`Failed to unpin session`,"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.deferredTitle":`{count} changed files`,"gitView.changes.deferredStagedCount":`Staged: {count}`,"gitView.changes.deferredUnstagedCount":`Unstaged: {count}`,"gitView.changes.deferredHint":`Large change sets are not rendered automatically to keep the app responsive.`,"gitView.changes.deferredLoadAction":`Load changes`,"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
|
|
|
@@ -12,4 +12,4 @@ Use @filename to include file contents.`,"settings.commands.page.templateHint.us
|
|
|
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-sL4ktGB3.js`),[]):e===`fr`?await n(()=>import(`./fr-Q_UhFmKT.js`),[]):e===`zh-TW`?await n(()=>import(`./zh-TW-Cfxps4gq.js`),[]):e===`es`?await n(()=>import(`./es-5Lhudh0n.js`),[]):e===`pt-BR`?await n(()=>import(`./pt-BR-Ca6QTem7.js`),[]):e===`uk`?await n(()=>import(`./uk-xGc9Pzge.js`),[]):e===`ko`?await n(()=>import(`./ko-B-EslUsR.js`),[]):e===`pl`?await n(()=>import(`./pl-Dnea6Ppc.js`),[]):e===`ja`?await n(()=>import(`./ja-CzMPz7bT.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-DvY2fKWp.js`),[]):e===`fr`?await n(()=>import(`./fr-CNTlVypq.js`),[]):e===`zh-TW`?await n(()=>import(`./zh-TW-eWe0lm3-.js`),[]):e===`es`?await n(()=>import(`./es-DIVYdoxi.js`),[]):e===`pt-BR`?await n(()=>import(`./pt-BR-DHDgp8S3.js`),[]):e===`uk`?await n(()=>import(`./uk-CfQK6cz1.js`),[]):e===`ko`?await n(()=>import(`./ko-CE3cOv7v.js`),[]):e===`pl`?await n(()=>import(`./pl-BZKZOE99.js`),[]):e===`ja`?await n(()=>import(`./ja-C_eW5ZM8.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};
|