@neuralnomads/codenomad-dev 0.14.0-dev-20260422-e708c565 → 0.14.0-dev-20260502-ff4446a3
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/cli-upgrade.js +53 -0
- package/dist/cli-upgrade.test.js +31 -0
- package/dist/filesystem/browser.js +15 -1
- package/dist/index.js +17 -6
- package/dist/opencode-config/package.json +2 -2
- package/dist/opencode-config.js +14 -3
- package/dist/server/http-server.js +42 -112
- package/dist/server/routes/auth.js +6 -7
- package/dist/workspaces/__tests__/git-worktrees.test.js +43 -0
- package/dist/workspaces/__tests__/spawn.test.js +3 -2
- package/dist/workspaces/git-worktrees.js +2 -2
- package/dist/workspaces/manager.js +9 -61
- package/dist/workspaces/opencode-auth.js +18 -0
- package/dist/workspaces/opencode-auth.test.js +34 -0
- package/package.json +6 -8
- package/public/assets/ChangesTab-lyvm8KrD.js +2 -0
- package/public/assets/DiffToolbar-C_u9j1B7.js +1 -0
- package/public/assets/FilesTab-Cff47qHk.js +2 -0
- package/public/assets/GitChangesTab-DktjnpZJ.js +2 -0
- package/public/assets/{SplitFilePanel-DhUmaW0S.js → SplitFilePanel-BOHH3F--.js} +1 -1
- package/public/assets/StatusTab-CMVYg97L.js +1 -0
- package/public/assets/align-justify-CA09D616.js +1 -0
- package/public/assets/{bundle-full-DEU8L99_.js → bundle-full-xFW13Lny.js} +1 -1
- package/public/assets/{diff-viewer-DEO4RYPx.js → diff-viewer-BkQOVrnt.js} +1 -1
- package/public/assets/index-7DpT014-.js +1 -0
- package/public/assets/index-BDK4V9L0.js +1 -0
- package/public/assets/index-Bx-Bezt2.js +1 -0
- package/public/assets/{index-DbMNXyVd.js → index-CCAZZY0l.js} +1 -1
- package/public/assets/index-CEcZq5WB.js +1 -0
- package/public/assets/index-CQCmSDHL.js +1 -0
- package/public/assets/{index--oqVn_K6.js → index-Cz_fl8aY.js} +1 -1
- package/public/assets/index-Dcgftm1m.css +1 -0
- package/public/assets/index-m4C3yx3J.js +1 -0
- package/public/assets/index-mh_z9p40.js +2 -0
- package/public/assets/{loading-CjZdFQ4L.js → loading-HUhLEgb_.js} +1 -1
- package/public/assets/main-B2dfx3K6.js +48 -0
- package/public/assets/{markdown-B5oFzzk8.js → markdown-DIZIkFnr.js} +22 -22
- package/public/assets/monaco-viewer-BgP6xpZ6.js +26 -0
- package/public/assets/{todo-BCVtJDU0.js → todo-CznQMY4c.js} +1 -1
- package/public/assets/{tool-call-Be4o4PeC.js → tool-call-B_fK5Sov.js} +25 -25
- package/public/assets/{unified-picker-Be5bKL4U.js → unified-picker-DuNuUpLy.js} +1 -1
- package/public/assets/wrap-text-bFf5tsQM.js +1 -0
- package/public/index.html +4 -4
- package/public/loading.html +4 -4
- package/public/sw.js +1 -1
- package/dist/runtime-paths.js +0 -67
- package/public/assets/ChangesTab-CVfOyRjB.js +0 -2
- package/public/assets/DiffToolbar-BqTuTuLi.js +0 -1
- package/public/assets/FilesTab-BCaD4sK4.js +0 -2
- package/public/assets/GitChangesTab-GgUiE4m7.js +0 -2
- package/public/assets/StatusTab-CZk-cmFJ.js +0 -1
- package/public/assets/index-Btyhpe4o.js +0 -1
- package/public/assets/index-C6C534z4.js +0 -1
- package/public/assets/index-CMh7_0rm.js +0 -1
- package/public/assets/index-CWmlJG88.css +0 -1
- package/public/assets/index-D7RMnYOz.js +0 -1
- package/public/assets/index-DE6KDkkL.js +0 -2
- package/public/assets/index-NrX0Q8eA.js +0 -1
- package/public/assets/index-z-uWAw1M.js +0 -1
- package/public/assets/main-BIaFBThA.js +0 -48
- package/public/assets/monaco-viewer-DANembz4.js +0 -26
- package/public/assets/wrap-text-BTyaDmSX.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as e}from"./index-DE6KDkkL.js";import"./git-diff-vendor-CSgooKT_.js";import"./fast-diff-vendor-DgdwVvTQ.js";import"./highlight-vendor-8FKMu9os.js";import"./monaco-viewer-DANembz4.js";const s={"advancedSettings.title":"詳細設定","advancedSettings.environmentVariables.title":"環境変数","advancedSettings.environmentVariables.subtitle":"新しい OpenCode インスタンス起動時に適用","advancedSettings.actions.close":"閉じる"},t={"app.launchError.title":"OpenCode を起動できません","app.launchError.description":"選択された OpenCode バイナリを起動できませんでした。下のエラー出力を確認するか、OpenCode 設定から別のバイナリを選択してください。","app.launchError.binaryPathLabel":"バイナリのパス","app.launchError.errorOutputLabel":"エラー出力","app.launchError.openAdvancedSettings":"OpenCode 設定を開く","app.launchError.close":"閉じる","app.launchError.closeTitle":"閉じる (Esc)","app.launchError.fallbackMessage":"ワークスペースの起動に失敗しました","app.stopInstance.confirmMessage":"OpenCode インスタンスを停止しますか?サーバーが停止します。","app.stopInstance.title":"インスタンスを停止","app.stopInstance.confirmLabel":"停止","app.stopInstance.cancelLabel":"実行を続ける","emptyState.logoAlt":"CodeNomad ロゴ","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"フォルダを選択して AI でコーディングを開始","emptyState.actions.selectFolder":"フォルダを選択","emptyState.actions.selecting":"選択中...","emptyState.keyboardShortcut":"キーボードショートカット: {shortcut}","emptyState.examples":"例: {example}","emptyState.multipleInstances":"同じフォルダのインスタンスを複数作成できます","releases.upgradeRequired.title":"アップグレードが必要です","releases.upgradeRequired.message.withVersion":"最新の UI を使うには CodeNomad {version} に更新してください。","releases.upgradeRequired.message.noVersion":"最新の UI を使うには CodeNomad を更新してください。","releases.upgradeRequired.action.getUpdate":"更新を取得","releases.uiUpdated.title":"UI を更新しました","releases.uiUpdated.message":"UI が {version} に更新されました。","releases.devUpdateAvailable.title":"開発版が利用可能","releases.devUpdateAvailable.message":"新しい開発版が利用可能です: {version}。","releases.devUpdateAvailable.action":"リリースを見る"},o={"commandPalette.title":"コマンドパレット","commandPalette.description":"コマンドを検索して実行","commandPalette.searchPlaceholder":"コマンドを入力するか検索...","commandPalette.empty":"「{query}」に一致するコマンドが見つかりません","commandPalette.category.customCommands":"カスタムコマンド","commandPalette.category.instance":"インスタンス","commandPalette.category.session":"セッション","commandPalette.category.agentModel":"エージェントとモデル","commandPalette.category.inputFocus":"入力とフォーカス","commandPalette.category.system":"システム","commandPalette.category.other":"その他","commands.newInstance.label":"新しいインスタンス","commands.newInstance.description":"フォルダ選択を開いて新しいインスタンスを作成","commands.newInstance.keywords":"フォルダ, プロジェクト, ワークスペース, folder, project, workspace","commands.closeInstance.label":"タブを閉じる","commands.closeInstance.description":"現在のトップレベルタブを閉じる","commands.closeInstance.keywords":"閉じる, タブ, stop, quit, close","commands.nextInstance.label":"次のタブ","commands.nextInstance.description":"次のトップレベルタブへ切り替え","commands.nextInstance.keywords":"切り替え, 移動, タブ, switch, navigate","commands.previousInstance.label":"前のタブ","commands.previousInstance.description":"前のトップレベルタブへ切り替え","commands.previousInstance.keywords":"切り替え, 移動, タブ, switch, navigate","commands.newSession.label":"新しいセッション","commands.newSession.description":"新しい親セッションを作成","commands.newSession.keywords":"作成, 開始, create, start","commands.closeSession.label":"セッションを閉じる","commands.closeSession.description":"現在の親セッションを閉じる","commands.closeSession.keywords":"閉じる, 停止, close, stop","commands.scrubSessions.label":"セッションを整理","commands.scrubSessions.description":"空のセッション、主要タスクを完了したサブエージェントのセッション、不要なフォークされたセッションを削除します。","commands.scrubSessions.keywords":"整理, クリーンアップ, 空, セッション, 削除, cleanup, blank, empty, sessions, remove, delete, scrub","commands.instanceInfo.label":"インスタンス情報","commands.instanceInfo.description":"ログと状態のインスタンス概要を開く","commands.instanceInfo.keywords":"情報, ログ, コンソール, 出力, info, logs, console, output","commands.nextSession.label":"次のセッション","commands.nextSession.description":"次のセッションタブへ切り替え","commands.nextSession.keywords":"切り替え, 移動, switch, navigate","commands.previousSession.label":"前のセッション","commands.previousSession.description":"前のセッションタブへ切り替え","commands.previousSession.keywords":"切り替え, 移動, switch, navigate","commands.compactSession.label":"セッションをコンパクト化","commands.compactSession.description":"現在のセッションを要約して圧縮","commands.compactSession.keywords":"要約, 圧縮, summarize, compress","commands.compactSession.errorFallback":"セッションのコンパクト化に失敗しました","commands.compactSession.alert.title":"コンパクト化に失敗","commands.compactSession.alert.message":"コンパクト化に失敗しました: {message}","commands.undoLastMessage.label":"直前のメッセージを取り消す","commands.undoLastMessage.description":"直前のメッセージへ戻す","commands.undoLastMessage.keywords":"取り消し, 戻す, revert, undo","commands.undoLastMessage.none.title":"取り消せる操作がありません","commands.undoLastMessage.none.message":"取り消すものがありません","commands.undoLastMessage.failed.title":"取り消しに失敗","commands.undoLastMessage.failed.message":"メッセージを戻せませんでした","commands.openModelSelector.label":"モデルセレクターを開く","commands.openModelSelector.description":"別のモデルを選択","commands.openModelSelector.keywords":"モデル, LLM, AI, model, llm, ai","commands.selectModelVariant.label":"モデルバリアントを選択","commands.selectModelVariant.description":"現在のモデルの思考量を選択","commands.selectModelVariant.keywords":"バリアント, 思考, 推論, 努力, variant, thinking, reasoning, effort","commands.openAgentSelector.label":"エージェントセレクターを開く","commands.openAgentSelector.description":"別のエージェントを選択","commands.openAgentSelector.keywords":"エージェント, モード, agent, mode","commands.clearInput.label":"入力をクリア","commands.clearInput.description":"プロンプト入力欄をクリア","commands.clearInput.keywords":"クリア, リセット, clear, reset","commands.promptSubmitShortcut.label.default":"Enter: 改行, Cmd/Ctrl+Enter: プロンプト送信","commands.promptSubmitShortcut.label.swapped":"Enter: プロンプト送信, Cmd/Ctrl+Enter: 改行","commands.promptSubmitShortcut.description":"プロンプト入力で Enter と Cmd/Ctrl+Enter の動作を入れ替え","commands.promptSubmitShortcut.keywords":"enter, 送信, 改行, ショートカット, cmd, ctrl, プロンプト","commands.thinkingBlocks.label.show":"思考を表示","commands.thinkingBlocks.label.hide":"思考を非表示","commands.thinkingBlocks.description":"AI の思考セクションを表示/非表示","commands.thinkingBlocks.keywords":"思考, 推論, 切り替え, 表示, 非表示, thinking, reasoning, toggle, show, hide","commands.timelineToolCalls.label.show":"タイムラインのツールコールを表示","commands.timelineToolCalls.label.hide":"タイムラインのツールコールを非表示","commands.timelineToolCalls.description":"メッセージタイムラインのツールコール表示を切り替え","commands.timelineToolCalls.keywords":"タイムライン, ツール, 切り替え, timeline, tool, toggle","commands.keyboardShortcutHints.label.show":"キーボードショートカットのヒントを表示","commands.keyboardShortcutHints.label.hide":"キーボードショートカットのヒントを非表示","commands.keyboardShortcutHints.description":"UI 全体のキーボードショートカットヒントを表示/非表示","commands.keyboardShortcutHints.description.disabledWeb":"WebUI では無効(ヒントは常に非表示)","commands.keyboardShortcutHints.keywords":"ショートカット, キーボード, ヒント, shortcuts, keyboard, hints","commands.common.expanded":"展開","commands.common.collapsed":"折りたたみ","commands.common.visible":"表示","commands.common.hidden":"非表示","commands.common.enabled":"有効","commands.common.disabled":"無効","commands.thinkingBlocksDefault.label":"思考ビュー: {state}","commands.thinkingBlocksDefault.description":"表示中は AI の思考セクションを折りたたみ / 展開","commands.thinkingBlocksDefault.keywords":"思考, 推論, 展開, 折りたたみ, 既定, thinking, reasoning, expand, collapse, default","commands.diffViewSplit.label":"分割 diff 表示を使用","commands.diffViewSplit.description":"ツールコールの diff を左右に並べて表示","commands.diffViewSplit.keywords":"diff, 分割, 表示, split, view","commands.diffViewUnified.label":"ユニファイド diff 表示を使用","commands.diffViewUnified.description":"ツールコールの diff をインラインで表示","commands.diffViewUnified.keywords":"diff, ユニファイド, 表示, unified, view","commands.toolOutputsDefault.label":"ツール出力の既定 · {state}","commands.toolOutputsDefault.description":"ツール出力を既定で展開するか切り替え","commands.toolOutputsDefault.keywords":"ツール, 出力, 展開, 折りたたみ, tool, output, expand, collapse","commands.diagnosticsDefault.label":"診断の既定 · {state}","commands.diagnosticsDefault.description":"診断出力を既定で展開するか切り替え","commands.diagnosticsDefault.keywords":"診断, 展開, 折りたたみ, diagnostics, expand, collapse","commands.toolInputsVisibility.label":"ツール入力の表示 · {state}","commands.toolInputsVisibility.description":"ツール呼び出しの入力引数の既定の表示状態を設定します","commands.toolInputsVisibility.keywords":"ツール, 入力, 引数, 表示, 非表示, 展開, 折りたたみ, tool, inputs, arguments, visibility, hide, show, expand, collapse","commands.tokenUsageDisplay.label":"トークン使用量表示 · {state}","commands.tokenUsageDisplay.description":"アシスタントメッセージのトークン/コスト統計を表示/非表示","commands.tokenUsageDisplay.keywords":"トークン, 使用量, コスト, 統計, token, usage, cost, stats","commands.autoCleanupBlankSessions.label":"空セッションの自動クリーンアップ · {state}","commands.autoCleanupBlankSessions.description":"新しいセッション作成時に空のセッションを自動的に整理","commands.autoCleanupBlankSessions.keywords":"自動, クリーンアップ, 空, セッション, 切り替え, auto, cleanup, blank, sessions, toggle","commands.showHelp.label":"ヘルプを表示","commands.showHelp.description":"キーボードショートカットとヘルプを表示","commands.showHelp.keywords":"ショートカット, ヘルプ, shortcuts, help","commands.custom.argumentsPrompt.message":"/{name} の引数","commands.custom.argumentsPrompt.title":"カスタムコマンド","commands.custom.argumentsPrompt.inputLabel":"引数","commands.custom.argumentsPrompt.inputPlaceholder":"例: foo bar","commands.custom.argumentsPrompt.confirmLabel":"実行","commands.custom.argumentsPrompt.cancelLabel":"キャンセル","commands.custom.argumentsPrompt.openFailed.message":"引数入力を開けませんでした。","commands.custom.argumentsPrompt.openFailed.title":"コマンド引数","commands.custom.entries.descriptionFallback":"カスタムコマンド","commands.custom.sessionRequired.message":"カスタムコマンドを実行する前にセッションを選択してください。","commands.custom.sessionRequired.title":"セッションが必要です","commands.custom.runFailed.message":"カスタムコマンドの実行に失敗しました。詳細はコンソールを確認してください。","commands.custom.runFailed.title":"コマンドの実行に失敗","unifiedPicker.loading.searching":"検索中...","unifiedPicker.loading.loadingWorkspace":"ワークスペースを読み込み中...","unifiedPicker.title.command":"コマンドを選択","unifiedPicker.title.mention":"エージェントまたはファイルを選択","unifiedPicker.empty":"結果が見つかりません","unifiedPicker.sections.commands":"コマンド","unifiedPicker.sections.agents":"エージェント","unifiedPicker.sections.files":"ファイル","unifiedPicker.badge.subagent":"サブエージェント","unifiedPicker.footer.navigate":"移動","unifiedPicker.footer.select":"選択","unifiedPicker.footer.close":"閉じる"},i={"alertDialog.fallbackTitle.info":"お知らせ","alertDialog.fallbackTitle.warning":"ご確認ください","alertDialog.fallbackTitle.error":"問題が発生しました","alertDialog.actions.confirm":"確認","alertDialog.actions.run":"実行","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"キャンセル","alertDialog.prompt.inputLabel":"入力","backgroundProcessOutputDialog.title":"バックグラウンド出力","backgroundProcessOutputDialog.actions.close":"閉じる","backgroundProcessOutputDialog.loading":"出力を読み込み中...","backgroundProcessOutputDialog.truncatedNotice":"表示のため出力を省略しました。","backgroundProcessOutputDialog.loadErrorFallback":"出力の読み込みに失敗しました。"},n={"directoryBrowser.defaultDescription":"設定された workspace ルート配下のフォルダを参照します。","directoryBrowser.close":"閉じる","directoryBrowser.currentFolder":"現在のフォルダ","directoryBrowser.selectCurrent":"現在のフォルダを選択","directoryBrowser.newFolder":"新しいフォルダ","directoryBrowser.creating":"作成中…","directoryBrowser.loadingFolders":"フォルダを読み込み中…","directoryBrowser.noFolders":"利用可能なフォルダがありません。","directoryBrowser.upOneLevel":"1 つ上へ","directoryBrowser.select":"選択","directoryBrowser.load.errorFallback":"ファイルシステムを読み込めません","directoryBrowser.createFolder.promptMessage":"現在のディレクトリに新しいフォルダを作成します。","directoryBrowser.createFolder.title":"新しいフォルダ","directoryBrowser.createFolder.inputLabel":"フォルダ名","directoryBrowser.createFolder.inputPlaceholder":"例: my-new-project","directoryBrowser.createFolder.confirmLabel":"作成","directoryBrowser.createFolder.cancelLabel":"キャンセル","directoryBrowser.createFolder.invalidNameMessage":"フォルダ名を 1 つだけ入力してください。","directoryBrowser.createFolder.invalidNameDetail":"フォルダ名にスラッシュ、'..'、'~' を含めることはできません。","directoryBrowser.createFolder.errorFallback":"フォルダを作成できません","filesystemBrowser.descriptionFallback":"設定された workspace ルート配下のパスを検索します。","filesystemBrowser.rootLabel":"ルート: {root}","filesystemBrowser.actions.close":"閉じる","filesystemBrowser.actions.retry":"再試行","filesystemBrowser.actions.select":"選択","filesystemBrowser.filterLabel":"フィルター","filesystemBrowser.search.placeholder.directories":"フォルダを検索","filesystemBrowser.search.placeholder.files":"ファイルを検索","filesystemBrowser.currentFolder.label":"現在のフォルダ","filesystemBrowser.currentFolder.selectCurrent":"現在のフォルダを選択","filesystemBrowser.loading.filesystem":"ファイルシステム","filesystemBrowser.loading.workspaceRoot":"workspace ルート","filesystemBrowser.loading.loadingWithPath":"{path} を読み込み中…","filesystemBrowser.empty.noEntries":"項目が見つかりません。","filesystemBrowser.navigation.upOneLevel":"1 つ上へ","filesystemBrowser.hints.navigate":"移動","filesystemBrowser.hints.select":"選択","filesystemBrowser.hints.close":"閉じる","filesystemBrowser.errors.loadFilesystemFallback":"ファイルシステムを読み込めません","filesystemBrowser.errors.openDirectoryFallback":"ディレクトリを開けません"},a={"folderSelection.language.ariaLabel":"言語","folderSelection.logoAlt":"CodeNomad ロゴ","folderSelection.tagline":"フォルダを選択して AI でコーディングを開始","folderSelection.links.github":"CodeNomad の GitHub","folderSelection.links.githubStars":"CodeNomad の GitHub スター","folderSelection.links.discord":"CodeNomad の Discord","folderSelection.empty.title":"最近使ったフォルダはありません","folderSelection.empty.description":"フォルダを選択して開始","folderSelection.recent.title":"最近使ったフォルダ","folderSelection.recent.subtitle.one":"{count} 件のフォルダ","folderSelection.recent.subtitle.other":"{count} 件のフォルダ","folderSelection.recent.remove":"履歴から削除","folderSelection.browse.title":"フォルダを参照","folderSelection.browse.subtitle":"コンピュータ上の任意のフォルダを選択","folderSelection.browse.button":"フォルダを参照","folderSelection.browse.buttonOpening":"開いています...","folderSelection.actions.title":"フォルダを開くかサーバーに接続","folderSelection.actions.subtitle":"ローカルフォルダを開くか CodeNomad サーバーに接続します","folderSelection.actions.connectButton":"CodeNomad サーバーに接続","folderSelection.advancedSettings":"詳細設定","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"移動","folderSelection.hints.select":"選択","folderSelection.hints.remove":"削除","folderSelection.hints.browse":"参照","folderSelection.loading.title":"インスタンスを起動中...","folderSelection.loading.subtitle":"ワークスペースを準備しています。しばらくお待ちください。","folderSelection.drop.title":"フォルダをドロップして開く","folderSelection.drop.subtitle":"ドロップしたフォルダで新しいインスタンスを開始します。","folderSelection.drop.invalidTitle":"ドロップした項目を開けませんでした","folderSelection.drop.invalidMessage":"新しいインスタンスを開始するにはフォルダをドロップしてください。","folderSelection.dialog.title":"ワークスペースを選択","folderSelection.dialog.description":"コーディングを開始するワークスペースを選択してください。","folderSelection.tabs.local":"ローカルフォルダ","folderSelection.tabs.servers":"サーバー","folderSelection.servers.title":"保存済みサーバー","folderSelection.servers.subtitle":"保存したリモート CodeNomad サーバーを新しいウィンドウで開きます","folderSelection.servers.count":"{count} サーバー","folderSelection.servers.empty.title":"保存済みサーバーはありません","folderSelection.servers.empty.description":"この端末からすばやく再接続できるように、リモートサーバーを追加してください","folderSelection.servers.connectTitle":"サーバーに接続","folderSelection.servers.connectSubtitle":"リモート CodeNomad サーバーを保存して新しいウィンドウで開きます","folderSelection.servers.connectButton":"サーバーに接続","folderSelection.servers.remove":"保存したサーバーを削除","folderSelection.servers.skipTls":"自己署名 TLS","folderSelection.servers.errorTitle":"リモート接続に失敗しました","folderSelection.servers.dialog.title":"サーバーに接続","folderSelection.servers.dialog.description":"リモート CodeNomad サーバーを追加し、必要に応じてすぐに開きます。","folderSelection.servers.dialog.name":"サーバー名","folderSelection.servers.dialog.namePlaceholder":"本番サーバー","folderSelection.servers.dialog.url":"サーバー URL","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"自己署名証明書の TLS 検証をスキップします。","folderSelection.servers.dialog.cancel":"キャンセル","folderSelection.servers.dialog.save":"保存","folderSelection.servers.dialog.connect":"接続","folderSelection.servers.dialog.connecting":"接続中...","folderSelection.servers.dialog.errorRequired":"サーバー名と URL は必須です。","folderSelection.servers.dialog.errorConnect":"リモートサーバーに接続できませんでした。","folderSelection.servers.certificateInstall.title":"ローカル証明書をインストール","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad は自己署名 HTTPS のリモートウィンドウを開くために、ローカル証明書をインストールする必要があります。この証明書は、このマシン上のローカルデスクトッププロキシ通信にのみ使用されます。この後、OS が追加の証明書プロンプトを表示する場合があります。","folderSelection.servers.certificateInstall.confirmLabel":"続行","folderSelection.servers.certificateInstall.cancelLabel":"キャンセル","folderSelection.servers.certificateInstall.cancelled":"自己署名 HTTPS のリモートウィンドウを開くには、CodeNomad のローカル証明書を信頼する必要があります。","folderSelection.sidecars.button":"Open SideCar"},l={"instanceTabs.new.title":"新しいインスタンス (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"新しいインスタンス","instanceTabs.remote.title":"リモート接続","instanceTabs.remote.ariaLabel":"リモート接続","instanceInfo.title":"インスタンス情報","instanceInfo.labels.folder":"フォルダ","instanceInfo.labels.project":"プロジェクト","instanceInfo.labels.versionControl":"バージョン管理","instanceInfo.labels.opencodeVersion":"OpenCode バージョン","instanceInfo.labels.binaryPath":"バイナリのパス","instanceInfo.labels.environmentVariables":"環境変数 ({count})","instanceInfo.loading":"読み込み中...","instanceInfo.server.title":"サーバー","instanceInfo.server.port":"ポート:","instanceInfo.server.pid":"PID:","instanceInfo.server.status":"状態:","instanceTab.status.permission":"許可待ち","instanceTab.status.compacting":"圧縮中","instanceTab.status.working":"作業中","instanceTab.status.idle":"待機中","instanceTab.status.ariaLabel":"インスタンス状態: {status}","instanceTab.actions.close.ariaLabel":"インスタンスを閉じる","instanceShell.leftPanel.sessionsTitle":"セッション","instanceShell.leftPanel.instanceInfo":"インスタンス情報","instanceShell.leftDrawer.pin":"左ドロワーを固定","instanceShell.leftDrawer.unpin":"左ドロワーの固定を解除","instanceShell.leftDrawer.toggle.pinned":"左ドロワーを固定しました","instanceShell.leftDrawer.toggle.open":"左ドロワーを開く","instanceShell.leftDrawer.toggle.close":"左ドロワーを閉じる","instanceShell.rightDrawer.pin":"右ドロワーを固定","instanceShell.rightDrawer.unpin":"右ドロワーの固定を解除","instanceShell.rightDrawer.toggle.pinned":"右ドロワーを固定しました","instanceShell.rightDrawer.toggle.open":"右ドロワーを開く","instanceShell.rightDrawer.toggle.close":"右ドロワーを閉じる","instanceShell.fullscreen.enter":"全画面","instanceShell.fullscreen.exit":"全画面を終了","instanceShell.metrics.usedLabel":"使用","instanceShell.metrics.availableLabel":"残り","instanceShell.commandPalette.openAriaLabel":"コマンドパレットを開く","instanceShell.commandPalette.button":"コマンドパレット","instanceShell.connection.ariaLabel":"接続 {status}","instanceShell.connection.connected":"接続済み","instanceShell.connection.connecting":"接続中...","instanceShell.connection.disconnected":"切断","instanceShell.connection.unknown":"不明","instanceWelcome.shortcuts.newSession":"新しいセッション","instanceWelcome.empty.title":"以前のセッションはありません","instanceWelcome.empty.description":"下で新しいセッションを作成して開始","instanceWelcome.loading.title":"セッションを読み込み中","instanceWelcome.loading.description":"以前のセッションを取得中...","instanceWelcome.resume.title":"セッションを再開","instanceWelcome.resume.subtitle.one":"{count} 件のセッション","instanceWelcome.resume.subtitle.other":"{count} 件のセッション","instanceWelcome.session.untitled":"無題のセッション","instanceWelcome.new.title":"新しいセッションを開始","instanceWelcome.new.subtitle":"前回のエージェント/モデルを自動で再利用します","instanceWelcome.new.createButton":"セッションを作成","instanceWelcome.overlay.close":"閉じる","instanceWelcome.actions.viewInstanceInfo":"インスタンス情報を表示","instanceWelcome.actions.renameTitle":"セッション名を変更","instanceWelcome.actions.deleteTitle":"セッションを削除","instanceWelcome.hints.navigate":"移動","instanceWelcome.hints.jump":"ジャンプ","instanceWelcome.hints.firstLast":"先頭/末尾","instanceWelcome.hints.resume":"再開","instanceWelcome.hints.delete":"削除","instanceWelcome.toasts.renameError":"セッション名を変更できません","instanceDisconnected.title":"インスタンスが切断されました","instanceDisconnected.folderFallback":"このワークスペース","instanceDisconnected.reasonFallback":"サーバーが応答しなくなりました","instanceDisconnected.description":"{folder} に接続できません。作業を続けるにはタブを閉じてください。","instanceDisconnected.details.title":"詳細","instanceDisconnected.details.folderLabel":"フォルダ:","instanceDisconnected.actions.closeInstance":"インスタンスを閉じる","instanceShell.empty.title":"セッションが選択されていません","instanceShell.empty.description":"メッセージを表示するにはセッションを選択してください","instanceShell.rightPanel.title":"ステータスパネル","instanceShell.rightPanel.tabs.changes":"変更","instanceShell.rightPanel.tabs.gitChanges":"Git 変更","instanceShell.rightPanel.tabs.files":"ファイル","instanceShell.rightPanel.tabs.status":"ステータス","instanceShell.rightPanel.tabs.ariaLabel":"右パネルのタブ","instanceShell.rightPanel.actions.refresh":"更新","instanceShell.rightPanel.actions.save":"保存 (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":"「{path}」への変更を切り替え前に保存しますか?","instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"保存","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"変更を破棄","instanceShell.rightPanel.actions.conflict.message":"ファイルはエージェントによって変更されました。上書きしますか?","instanceShell.rightPanel.actions.conflict.confirmLabel":"上書き","instanceShell.rightPanel.actions.conflict.cancelLabel":"キャンセル","instanceShell.rightPanel.actions.refreshDirty.message":"ファイルには未保存の変更があります。更新すると編集が破棄されます。続行しますか?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"更新","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"キャンセル","instanceShell.rightPanel.toast.saveSuccess":"ファイルを保存しました","instanceShell.rightPanel.toast.saveError":"ファイルの保存に失敗しました","instanceShell.rightPanel.sections.yoloMode":"Yoloモード","instanceShell.rightPanel.sections.yoloMode.tooltip":"現在のセッションの権限リクエストを自動承認します。実行中のツールを信頼できる場合にのみ使用してください。","instanceShell.rightPanel.sections.sessionChanges":"セッション変更","instanceShell.rightPanel.sections.sessionChanges.tooltip":"現在のセッションで変更されたファイル。各ファイルの追加と削除を表示します。","instanceShell.rightPanel.sections.plan":"計画","instanceShell.rightPanel.sections.plan.tooltip":"このセッションにおけるエージェントのロードマップ。タスクやサブタスク、および完了状況を追跡します。","instanceShell.rightPanel.sections.backgroundProcesses":"バックグラウンドシェル","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"エージェントが開始した長時間実行プロセス。出力を監視し、停止または終了できます。","instanceShell.rightPanel.sections.mcp":"MCP サーバー","instanceShell.rightPanel.sections.mcp.tooltip":"Model Context Protocol (MCP) サーバー。外部ツールやサービスでエージェントの機能を拡張します。","instanceShell.rightPanel.sections.lsp":"LSP サーバー","instanceShell.rightPanel.sections.lsp.tooltip":"Language Server Protocolサーバーがコードインテリジェンス、診断、言語固有の機能を提供します。","instanceShell.rightPanel.sections.plugins":"プラグイン","instanceShell.rightPanel.sections.plugins.tooltip":"UI とサーバーの動作をカスタマイズし、MCP や LSP 以外の機能も追加できるプラグイン。","instanceShell.sessionChanges.noSessionSelected":"変更を表示するにはセッションを選択してください。","instanceShell.sessionChanges.loading":"変更を取得中...","instanceShell.sessionChanges.empty":"まだ変更はありません。","instanceShell.sessionChanges.filesChanged":"{count} 個のファイルが変更されました","instanceShell.sessionChanges.actions.show":"変更を表示","instanceShell.gitChanges.loading":"Git の変更を読み込み中...","instanceShell.gitChanges.empty":"Git の変更はまだありません。","instanceShell.gitChanges.deleted":"削除済み","instanceShell.gitChanges.binaryViewer":"バイナリファイルは表示できません","instanceShell.gitChanges.sections.staged":"ステージ済みの変更","instanceShell.gitChanges.sections.unstaged":"変更","instanceShell.gitChanges.actions.insertContext":"プロンプトに追加","instanceShell.gitChanges.actions.stage":"ファイルをステージ","instanceShell.gitChanges.actions.unstage":"ステージ解除","instanceShell.gitChanges.commit.placeholder":"コミットメッセージを入力","instanceShell.gitChanges.commit.submit":"コミット","instanceShell.gitChanges.commit.submitting":"コミット中...","instanceShell.gitChanges.commit.success":"コミットを作成しました","instanceShell.gitChanges.commit.error":"コミットを作成できませんでした","instanceShell.filesShell.fileListTitle":"ファイル一覧","instanceShell.filesShell.mobileSelectorLabel":"ファイルを選択","instanceShell.filesShell.mobileSelectorEmpty":"ファイルを選択してください","instanceShell.filesShell.viewerTitle":"変更ビューア","instanceShell.filesShell.viewerPlaceholder":"詳細な変更表示は次のステップで追加します。","instanceShell.filesShell.viewerEmpty":"ファイルが選択されていません。","instanceShell.plan.noSessionSelected":"計画を表示するにはセッションを選択してください。","instanceShell.plan.empty":"まだ計画はありません。","instanceShell.yoloMode.noSessionSelected":"Yoloモードを設定するにはセッションを選択してください。","instanceShell.yoloMode.title":"Yoloモード","instanceShell.yoloMode.description":"このセッションの権限リクエストを自動承認します。デフォルトでは無効です。","instanceShell.yoloMode.badge":"Yolo","instanceShell.yoloMode.badgeAriaLabel":"Yoloモードが有効","instanceShell.backgroundProcesses.empty":"バックグラウンドプロセスはありません。","instanceShell.backgroundProcesses.status":"状態: {status}","instanceShell.backgroundProcesses.output":"出力: {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"完了通知が有効","instanceShell.backgroundProcesses.notify.disabled":"完了通知が無効","instanceShell.backgroundProcesses.actions.output":"出力","instanceShell.backgroundProcesses.actions.stop":"停止","instanceShell.backgroundProcesses.actions.terminate":"終了","instanceShell.worktree.delete.error.title":"削除に失敗しました","instanceShell.worktree.delete.error.fallback":"worktree の削除に失敗しました","instanceShell.worktree.delete.error.causeLabel":"考えられる原因:","instanceShell.worktree.delete.error.nextStepLabel":"推奨される次の手順:","instanceShell.worktree.delete.error.summary.localChanges":"この worktree に変更済みまたは未追跡のファイルがあるため、Git が削除を拒否しました。","instanceShell.worktree.delete.error.summary.inUse":"このディレクトリ内のファイルがまだ使用中のため、CodeNomad はこの worktree を削除できませんでした。","instanceShell.worktree.delete.error.summary.notFound":"ディレクトリまたは worktree レコードが見つからなかったため、CodeNomad はこの worktree を削除できませんでした。","instanceShell.worktree.delete.error.summary.permissionDenied":"ディレクトリへのアクセスが拒否されたため、CodeNomad はこの worktree を削除できませんでした。","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad はこの worktree を削除できませんでした。","instanceShell.worktree.delete.error.cause.localChanges":"ローカル変更","instanceShell.worktree.delete.error.cause.inUse":"別のプロセスがこの worktree を使用中です","instanceShell.worktree.delete.error.cause.notFound":"worktree のディレクトリまたは記録が見つかりません","instanceShell.worktree.delete.error.cause.permissionDenied":"ファイルシステム権限が不足しています","instanceShell.worktree.delete.error.cause.unknown":"バックエンドが分類できない削除エラーを返しました","instanceShell.worktree.delete.error.nextStep.localChanges":"ローカル変更を破棄したい場合は Force delete を有効にするか、worktree を整理してから再試行してください。","instanceShell.worktree.delete.error.nextStep.inUse":"この worktree を使用している端末、エディタ、watcher、バックグラウンドプロセスを閉じてから再試行してください。","instanceShell.worktree.delete.error.nextStep.notFound":"worktree 一覧を更新して再試行してください。まだ失敗する場合は、ディスク上の worktree パスを確認してください。","instanceShell.worktree.delete.error.nextStep.permissionDenied":"ファイルシステム権限を確認し、このディレクトリをロックしている可能性のあるアプリを閉じてから再試行してください。","instanceShell.worktree.delete.error.nextStep.unknown":"下の生エラーで詳細を確認し、報告された問題に対処してから再試行してください。","instanceShell.worktree.delete.error.copyRaw":"エラーをコピー","instanceShell.worktree.delete.error.copySanitized":"サニタイズ済みをコピー","instanceShell.worktree.delete.error.copySuccess":"削除エラーをコピーしました","instanceShell.worktree.delete.error.copySanitizedSuccess":"サニタイズ済みの削除エラーをコピーしました","instanceShell.worktree.delete.error.copyFailure":"削除エラーをコピーできませんでした","versionPill.appWithVersion":"アプリ {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"OpenCode バイナリ","opencodeBinarySelector.subtitle":"OpenCode を実行する実行ファイルを選択","opencodeBinarySelector.customPath.placeholder":"opencode バイナリのパスを入力…","opencodeBinarySelector.actions.add":"追加","opencodeBinarySelector.actions.browse":"バイナリを参照…","opencodeBinarySelector.actions.removeTitle":"バイナリを削除","opencodeBinarySelector.badge.systemPath":"system PATH のバイナリを使用","opencodeBinarySelector.status.checkingVersions":"バージョンを確認中…","opencodeBinarySelector.status.checking":"確認中…","opencodeBinarySelector.dialog.title":"OpenCode バイナリを選択","opencodeBinarySelector.dialog.description":"CLI サーバーから公開されているファイルを参照します。","opencodeBinarySelector.validation.invalidBinary":"OpenCode バイナリが無効です","opencodeBinarySelector.validation.alreadyValidating":"すでに検証中です","opencodeBinarySelector.display.systemPath":"{name} (system PATH)","opencodeBinarySelector.versionLabel":"v{version}"},r={"loadingScreen.logoAlt":"CodeNomad ロゴ","loadingScreen.status.issue":"問題が発生しました","loadingScreen.actions.showAnother":"別のメッセージを表示","loadingScreen.errors.missingRoot":"読み込み用のルート要素が見つかりません","loadingScreen.phrases.neurons":"AI のニューロンをウォームアップ中…","loadingScreen.phrases.daydreaming":"AI に空想をやめるよう説得中…","loadingScreen.phrases.goggles":"AI のコード用ゴーグルを磨き中…","loadingScreen.phrases.reorganizingFiles":"AI にファイル整理をやめるようお願い中…","loadingScreen.phrases.coffee":"AI に追いコーヒーを投入中…","loadingScreen.phrases.nodeModules":"AI に node_modules を(また)消さないよう教え中…","loadingScreen.phrases.actNatural":"到着前に自然に振る舞うよう AI に指示中…","loadingScreen.phrases.rewritingHistory":"履歴を書き換えないよう AI にお願い中…","loadingScreen.phrases.stretch":"コーディングスプリント前に AI をストレッチさせています…","loadingScreen.phrases.keyboardControl":"AI にキーボードの主導権を渡すよう説得中…"},c={"logsView.title":"サーバーログ","logsView.actions.show":"サーバーログを表示","logsView.actions.hide":"サーバーログを非表示","logsView.envVars.title":"環境変数 ({count})","logsView.paused.title":"サーバーログは一時停止中です","logsView.paused.description":"ストリーミングを有効にして OpenCode サーバーの動作を監視します。","logsView.empty.waiting":"サーバー出力を待機中...","logsView.scrollToBottom":"最下部へスクロール","infoView.logs.title":"サーバーログ","infoView.logs.actions.show":"サーバーログを表示","infoView.logs.actions.hide":"サーバーログを非表示","infoView.logs.paused.title":"サーバーログは一時停止中です","infoView.logs.paused.description":"ストリーミングを有効にして OpenCode サーバーの動作を監視します。","infoView.logs.empty.waiting":"サーバー出力を待機中...","infoView.logs.scrollToBottom":"最下部へスクロール","infoView.dispose.actions.dispose":"インスタンスを破棄","infoView.dispose.actions.disposing":"破棄しています...","infoView.dispose.confirm.title":"インスタンスを破棄しますか?","infoView.dispose.confirm.message":"このディレクトリのプロジェクト状態キャッシュをクリアし、インスタンスを再読み込みします。","infoView.dispose.confirm.confirmLabel":"破棄","infoView.dispose.confirm.cancelLabel":"キャンセル","infoView.dispose.toast.success":"インスタンスを破棄しました。再読み込み中...","infoView.dispose.toast.error":"インスタンスの破棄に失敗しました。"},d={"markdown.codeBlock.copy.label":"コピー","markdown.codeBlock.copy.copied":"コピーしました!","markdown.codeBlock.copy.failed":"失敗","markdown.copy":"コピー"},m={"messageListHeader.sidebar.openSessionListAriaLabel":"セッション一覧を開く","messageListHeader.metrics.usedLabel":"使用","messageListHeader.metrics.availableLabel":"残り","messageListHeader.commandPalette.ariaLabel":"コマンドパレットを開く","messageListHeader.commandPalette.button":"コマンドパレット","messageListHeader.connection.connected":"接続済み","messageListHeader.connection.connecting":"接続中...","messageListHeader.connection.disconnected":"切断","messageSection.empty.logoAlt":"CodeNomad ロゴ","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"会話を始める","messageSection.empty.description":"下にメッセージを入力するか、コマンドパレットを開いてください:","messageSection.empty.tips.commandPalette":"コマンドパレット","messageSection.empty.tips.askAboutCodebase":"コードベースについて質問","messageSection.empty.tips.attachFilesPrefix":"次でファイルを添付:","messageSection.loading.messages":"メッセージを読み込み中...","messageSection.scroll.toFirstAriaLabel":"最初のメッセージへスクロール","messageSection.scroll.toLatestAriaLabel":"最新のメッセージへスクロール","messageSection.scroll.enableHoldAriaLabel":"長いアシスタント返信の保持を有効にする","messageSection.scroll.disableHoldAriaLabel":"長いアシスタント返信の保持を無効にする","messageSection.quote.addAsQuote":"引用として追加","messageSection.quote.addAsCode":"コードとして追加","messageSection.quote.copy":"コピー","messageSection.quote.copied":"コピーしました","messageSection.quote.copyFailed":"コピーできませんでした","messageTimeline.ariaLabel":"メッセージタイムライン","messageTimeline.segment.user.label":"あなた","messageTimeline.segment.assistant.label":"AI","messageTimeline.segment.compaction.label":"圧縮","messageTimeline.tool.fallbackLabel":"ツールコール","messageTimeline.tooltip.userFallback":"ユーザーのメッセージ","messageTimeline.tooltip.assistantFallback":"アシスタントの応答","messageTimeline.tooltip.compaction.auto":"自動コンパクト化","messageTimeline.tooltip.compaction.manual":"手動コンパクト化","messageTimeline.text.filePrefix":"[ファイル] {filename}","messageTimeline.text.attachment":"添付","messageBlock.tool.header":"ツールコール","messageBlock.tool.unknown":"不明","messageBlock.tool.goToSession.label":"セッションへ移動","messageBlock.tool.goToSession.title":"セッションへ移動","messageBlock.tool.goToSession.unavailableTitle":"セッションはまだ利用できません","messageBlock.tool.deletePart.label":"パートを削除","messageBlock.tool.deletePart.deleting":"削除中...","messageBlock.tool.deletePart.title":"このツール出力を削除","messageBlock.tool.deletePart.failed.title":"削除に失敗しました","messageBlock.tool.deletePart.failed.message":"ツール出力の削除に失敗しました","messageBlock.compaction.ariaLabel":"セッションのコンパクト化","messageBlock.compaction.autoLabel":"セッションを自動でコンパクト化しました","messageBlock.compaction.manualLabel":"セッションをあなたがコンパクト化しました","messageBlock.usage.input":"入力","messageBlock.usage.output":"出力","messageBlock.usage.reasoning":"推論","messageBlock.usage.cacheRead":"キャッシュ読み込み","messageBlock.usage.cacheWrite":"キャッシュ書き込み","messageBlock.usage.cost":"コスト","messageBlock.step.agentLabel":"エージェント: {agent}","messageBlock.step.modelLabel":"モデル: {model}","messageBlock.reasoning.thinkingLabel":"思考","messageBlock.reasoning.expandAriaLabel":"思考を展開","messageBlock.reasoning.collapseAriaLabel":"思考を折りたたむ","messageBlock.reasoning.indicator.hide":"非表示","messageBlock.reasoning.indicator.view":"表示","messageBlock.reasoning.detailsAriaLabel":"推論の詳細","codeBlockInline.actions.copy":"コピー","codeBlockInline.actions.copied":"コピーしました!","messageItem.speaker.you":"あなた","messageItem.speaker.assistant":"アシスタント","messageItem.actions.revert":"戻す","messageItem.actions.revertTitle":"ここまでの変更を元に戻す(メッセージを削除)","messageItem.actions.fork":"フォーク","messageItem.actions.forkTitle":"このメッセージからフォーク","messageItem.actions.copy":"コピー","messageItem.actions.copyTitle":"メッセージをコピー","messageItem.actions.copied":"コピーしました!","messageItem.actions.speak":"メッセージを読み上げ","messageItem.actions.generatingSpeech":"音声を生成中","messageItem.actions.stopSpeech":"再生を停止","messageItem.actions.speak.error.title":"音声再生に失敗しました","messageItem.actions.speak.error.unsupported":"このブラウザでは音声再生に対応していません。","messageItem.actions.speak.error.unavailable":"音声設定が完了するまで音声再生は利用できません。","messageItem.actions.speak.error.generate":"このメッセージの音声を生成できませんでした。","messageItem.actions.deleteMessage":"メッセージを削除(変更は元に戻さない)","messageItem.actions.deleteMessagesUpTo":"ここまでのメッセージを削除(変更は元に戻さない)","messageItem.actions.deletingMessage":"削除中...","messageItem.actions.deleteMessageFailedTitle":"削除に失敗しました","messageItem.actions.deleteMessageFailedMessage":"メッセージの削除に失敗しました","messageItem.selection.checkboxAriaLabel":"削除するメッセージを選択","messageSection.bulkDelete.toolbarAriaLabel":"選択した項目({count})","messageSection.bulkDelete.deleteSelectedTitle":"選択した項目を削除","messageSection.bulkDelete.selectAllTitle":"すべて選択","messageSection.bulkDelete.moreOptionsTitle":"その他のオプション","messageSection.bulkDelete.selectionModeLabel":"選択","messageSection.bulkDelete.selectionModeAll":"すべて","messageSection.bulkDelete.selectionModeTools":"ツールのみ","messageSection.bulkDelete.selectionHint.toggle":"項目を選択","messageSection.bulkDelete.selectionHint.range":"範囲を選択","messageSection.bulkDelete.selectionHint.clear":"選択を解除","messageSection.bulkDelete.cancelTitle":"選択をキャンセル","messageSection.bulkDelete.failedTitle":"削除に失敗しました","messageSection.bulkDelete.failedMessage":"選択した項目の削除に失敗しました","messageItem.status.queued":"待機中","messageItem.status.generating":"生成中...","messageItem.status.sending":"送信中...","messageItem.status.failedToSend":"メッセージの送信に失敗しました","messagePart.actions.delete":"パートを削除","messagePart.actions.deleting":"削除中...","messagePart.actions.deleteTitle":"この項目を削除","messagePart.actions.deleteFailedTitle":"削除に失敗しました","messagePart.actions.deleteFailedMessage":"項目の削除に失敗しました","messageItem.attachment.defaultName":"添付ファイル","messageItem.attachment.downloadAriaLabel":"{name} をダウンロード","messageItem.agentMeta.agentLabel":"エージェント: {agent}","messageItem.agentMeta.modelLabel":"モデル: {model}","messageItem.errors.authenticationFallback":"認証エラー","messageItem.errors.outputLengthExceeded":"メッセージ出力が長すぎます","messageItem.errors.requestAborted":"リクエストが中断されました","messageItem.errors.unknownFallback":"不明なエラーが発生しました","attachmentChip.removeAriaLabel":"添付を削除","expandButton.toggleAriaLabel":"チャット入力欄の高さを切り替え","promptInput.placeholder.shell":"シェルコマンドを実行 (Esc で終了)...","promptInput.placeholder.default":"メッセージ、@file、@agent を入力、または画像/テキストを貼り付け...","promptInput.hints.shell.exit":"でシェルモードを終了","promptInput.hints.shell.enable":"シェルモード","promptInput.hints.commands":"コマンド","promptInput.history.previousAriaLabel":"前のプロンプト","promptInput.history.nextAriaLabel":"次のプロンプト","promptInput.overlay.newLine":"改行","promptInput.overlay.send":"送信","promptInput.overlay.filesAgents":"ファイル/エージェント","promptInput.overlay.history":"履歴","promptInput.overlay.attachments":"• {count} 件のファイルを添付","promptInput.overlay.shellModeActive":"シェルモードが有効","promptInput.overlay.press":"押す","promptInput.overlay.againToAbort":"もう一度押すとセッションを中断","promptInput.stopSession.ariaLabel":"セッションを停止","promptInput.stopSession.title":"セッションを停止","promptInput.clear.ariaLabel":"プロンプトのテキストをクリア","promptInput.clear.title":"プロンプトのテキストをクリア","promptInput.send.ariaLabel":"メッセージを送信","promptInput.send.errorFallback":"メッセージの送信に失敗しました","promptInput.send.errorTitle":"送信に失敗","promptInput.conversationMode.enable.title":"会話モードを有効化","promptInput.conversationMode.disable.title":"会話モードを無効化","promptInput.conversationMode.error.title":"会話の読み上げに失敗しました","promptInput.conversationMode.error.message":"アシスタントの返信の読み上げを続行できませんでした。","promptInput.voiceInput.start.title":"音声入力を開始","promptInput.voiceInput.stop.title":"録音を停止して文字起こし","promptInput.voiceInput.transcribing.title":"音声を文字起こし中","promptInput.voiceInput.error.title":"音声入力に失敗しました","promptInput.voiceInput.error.permission":"音声入力を録音するにはマイクへのアクセスが必要です。","promptInput.voiceInput.error.permissionDenied":"macOS によりマイクへのアクセスが拒否されました。","promptInput.voiceInput.error.unsupported":"このブラウザーでは音声入力はサポートされていません。","promptInput.voiceInput.error.transcribe":"録音した音声を文字起こしできませんでした。"},p={"remoteAccess.eyebrow":"リモート引き継ぎ","remoteAccess.title":"CodeNomad にリモート接続","remoteAccess.subtitle":"別のデバイスから CodeNomad を開くには、以下のアドレスを使用してください。","remoteAccess.close":"リモートアクセスを閉じる","remoteAccess.refresh":"更新","remoteAccess.sections.listeningMode.label":"リッスンモード","remoteAccess.sections.listeningMode.help":"全インターフェースにバインドするか localhost のみにするかで、リモート引き継ぎを許可/制限します。","remoteAccess.toggle.on":"オン","remoteAccess.toggle.off":"オフ","remoteAccess.toggle.title":"他の IP からの接続を許可","remoteAccess.toggle.caption.all":"0.0.0.0 にバインド","remoteAccess.toggle.caption.local":"127.0.0.1 にバインド","remoteAccess.toggle.note":"変更には再起動が必要で、すべての稼働中インスタンスが一時的に停止します。サーバー再起動後に以下のアドレスを共有してください。","remoteAccess.listeningMode.restartConfirm.message":"リッスンモードを適用するため再起動しますか?実行中のインスタンスはすべて停止します。","remoteAccess.listeningMode.restartConfirm.title.all":"他のデバイスに公開","remoteAccess.listeningMode.restartConfirm.title.local":"このデバイスに限定","remoteAccess.listeningMode.restartConfirm.confirmLabel":"今すぐ再起動","remoteAccess.listeningMode.restartConfirm.cancelLabel":"キャンセル","remoteAccess.restart.errorManual":"自動で再起動できませんでした。変更を適用するにはアプリを再起動してください。","remoteAccess.sections.serverPassword.label":"サーバーパスワード","remoteAccess.sections.serverPassword.help":"リモート引き継ぎにはパスワードが必要です。覚えやすいものを設定して他のデバイスからのログインを有効にします。","remoteAccess.authStatus.unavailable":"認証状態を取得できません。","remoteAccess.username":"ユーザー名: {username}","remoteAccess.password.status.set":"リモートアクセス用のパスワードが設定されています。","remoteAccess.password.status.unset":"まだ覚えやすいパスワードが設定されていません。設定してリモート引き継ぎログインを有効にしてください。","remoteAccess.password.actions.cancel":"キャンセル","remoteAccess.password.actions.change":"パスワードを変更","remoteAccess.password.actions.set":"パスワードを設定","remoteAccess.password.form.newPassword":"新しいパスワード","remoteAccess.password.form.confirmPassword":"パスワードの確認","remoteAccess.password.form.placeholder":"8 文字以上","remoteAccess.password.error.tooShort":"パスワードは 8 文字以上である必要があります。","remoteAccess.password.error.mismatch":"パスワードが一致しません。","remoteAccess.password.save.saving":"保存中…","remoteAccess.password.save.label":"パスワードを保存","remoteAccess.sections.addresses.label":"到達可能なアドレス","remoteAccess.sections.addresses.help":"別の端末から起動またはスキャンして操作を引き継ぎます。","remoteAccess.addresses.loading":"アドレスを読み込み中…","remoteAccess.addresses.none":"まだ利用可能なアドレスがありません。","remoteAccess.addresses.actions.showOther":"他の {count} 件のアドレスを表示","remoteAccess.addresses.actions.hideOther":"他のアドレスを隠す","remoteAccess.address.scope.network":"ネットワーク","remoteAccess.address.scope.loopback":"ループバック","remoteAccess.address.scope.internal":"内部","remoteAccess.address.open":"開く","remoteAccess.address.showQr":"QR を表示","remoteAccess.address.hideQr":"QR を非表示","remoteAccess.address.qrAlt":"{url} の QR"},g={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"以前のセッションはありません","sessionPicker.resume.title":"セッションを再開 ({count}):","sessionPicker.session.untitled":"無題","sessionPicker.divider.or":"または","sessionPicker.new.title":"新しいセッションを開始:","sessionPicker.agents.loading":"エージェントを読み込み中...","sessionPicker.actions.creating":"作成中...","sessionPicker.actions.createSession":"セッションを作成","sessionPicker.actions.cancel":"キャンセル","sessionList.header.title":"セッション","sessionList.session.untitled":"無題","sessionList.status.working":"作業中","sessionList.status.compacting":"圧縮中","sessionList.status.idle":"待機中","sessionList.status.retrying":"再試行中","sessionList.status.retryingIn":"{seconds}秒後に再試行","sessionList.status.retryTooltip":"{message}({attempt}回目)","sessionList.status.retryToast":"{countdown}: {message}({attempt}回目)","sessionList.status.needsPermission":"許可待ち","sessionList.status.needsInput":"入力待ち","sessionList.expand.collapseAriaLabel":"セッションを折りたたむ","sessionList.expand.expandAriaLabel":"セッションを展開","sessionList.expand.collapseTitle":"折りたたむ","sessionList.expand.expandTitle":"展開","sessionList.actions.newSession.ariaLabel":"新しいセッション","sessionList.actions.newSession.title":"新しいセッション","sessionList.actions.copyId.ariaLabel":"セッション ID をコピー","sessionList.actions.copyId.title":"セッション ID をコピー","sessionList.actions.reload.ariaLabel":"セッションを再読み込み","sessionList.actions.reload.title":"セッションを再読み込み","sessionList.actions.rename.ariaLabel":"セッション名を変更","sessionList.actions.rename.title":"セッション名を変更","sessionList.actions.delete.ariaLabel":"セッションを削除","sessionList.actions.delete.title":"セッションを削除","sessionList.copyId.success":"セッション ID をコピーしました","sessionList.copyId.error":"セッション ID をコピーできません","sessionList.reload.error":"セッションを再読み込みできません","sessionList.delete.error":"セッションを削除できません","sessionList.delete.title":"セッションを削除","sessionList.delete.confirmMessage":'"{label}" を削除しますか?この操作は元に戻せません。',"sessionList.delete.confirmLabel":"削除","sessionList.delete.cancelLabel":"キャンセル","sessionList.rename.error":"セッション名を変更できません","sessionList.filter.placeholder":"セッションを検索…","sessionList.filter.ariaLabel":"セッションを検索","sessionList.selection.selectAllLabel":"すべて選択","sessionList.selection.selectAllAriaLabel":"すべてのセッションを選択","sessionList.selection.clearLabel":"クリア","sessionList.selection.clearAriaLabel":"選択をクリア","sessionList.selection.checkboxAriaLabel":"セッションを選択","sessionList.bulkDelete.button":"{count} 件を削除","sessionList.bulkDelete.ariaLabel":"選択した {count} 件のセッションを削除","sessionList.bulkDelete.title":"セッションを削除","sessionList.bulkDelete.confirmMessage":"選択した {count} 件のセッションを削除しますか?この操作は元に戻せません。","sessionList.bulkDelete.confirmLabel":"削除","sessionList.bulkDelete.cancelLabel":"キャンセル","sessionList.bulkDelete.error":"{count} 件のセッションを削除できません","sessionRenameDialog.title":"セッション名を変更","sessionRenameDialog.description.withLabel":'"{label}" のタイトルを更新します。',"sessionRenameDialog.description.default":"このセッションの新しいタイトルを設定します。","sessionRenameDialog.input.label":"セッション名","sessionRenameDialog.input.placeholder":"セッション名を入力","sessionRenameDialog.actions.cancel":"キャンセル","sessionRenameDialog.actions.rename":"変更","sessionRenameDialog.actions.renaming":"変更中…","sessionView.fallback.sessionNotFound":"セッションが見つかりません","sessionView.alerts.abortFailed.message":"セッションを停止できませんでした","sessionView.alerts.abortFailed.title":"停止に失敗","sessionView.alerts.revertFailed.message":"メッセージへ戻せませんでした","sessionView.alerts.revertFailed.title":"復元に失敗","sessionView.alerts.deleteUpToFailed.message":"メッセージの削除に失敗しました","sessionView.alerts.deleteUpToFailed.title":"削除に失敗しました","sessionView.alerts.forkFailed.message":"セッションのフォークに失敗しました","sessionView.alerts.forkFailed.title":"フォークに失敗","sessionView.attachments.expandPastedTextAriaLabel":"貼り付けたテキストを展開","sessionView.attachments.insertPastedTextTitle":"貼り付けたテキストを挿入","sessionView.attachments.removeAriaLabel":"添付を削除","sessionEvents.sessionCompactedToast":"セッション {label} をコンパクト化しました","sessionEvents.sessionError.unknown":"不明なエラー","sessionEvents.sessionError.title":"セッションエラー","sessionEvents.sessionError.message":"エラー: {message}","sessionState.cleanup.deepConfirm.message":"このクリーンアップは時間がかかる場合があり、意図しないセッションを削除する可能性があります。続行しますか?","sessionState.cleanup.deepConfirm.title":"セッションを徹底クリーン","sessionState.cleanup.deepConfirm.detail":"徹底クリーンは、メッセージがないセッションをすべて削除し、完了したサブエージェントのセッションを取り除き、未使用のセッションフォークを整理します。","sessionState.cleanup.deepConfirm.confirmLabel":"続行","sessionState.cleanup.deepConfirm.cancelLabel":"キャンセル","sessionState.cleanup.toast.one":"{count} 件の空セッションを整理しました","sessionState.cleanup.toast.other":"{count} 件の空セッションを整理しました"},u={"instanceServiceStatus.sections.lsp":"LSP サーバー","instanceServiceStatus.sections.mcp":"MCP サーバー","instanceServiceStatus.sections.plugins":"プラグイン","instanceServiceStatus.lsp.loading":"LSP サーバーを読み込み中...","instanceServiceStatus.lsp.empty":"LSP サーバーが検出されませんでした。","instanceServiceStatus.lsp.status.connected":"接続済み","instanceServiceStatus.lsp.status.error":"エラー","instanceServiceStatus.mcp.loading":"MCP サーバーを読み込み中...","instanceServiceStatus.mcp.empty":"MCP サーバーが検出されませんでした。","instanceServiceStatus.mcp.toggleAriaLabel":"{name} MCP サーバーを切り替え","instanceServiceStatus.plugins.loading":"プラグインを読み込み中...","instanceServiceStatus.plugins.empty":"プラグインが設定されていません。","permissionBanner.pendingRequests.one":"{count} 件の保留中リクエスト","permissionBanner.pendingRequests.other":"{count} 件の保留中リクエスト","permissionBanner.detail.permission.one":"{count} 件の許可","permissionBanner.detail.permission.other":"{count} 件の許可","permissionBanner.detail.question.one":"{count} 件の質問","permissionBanner.detail.question.other":"{count} 件の質問","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"エージェントを選択...","agentSelector.badge.subagent":"サブエージェント","agentSelector.none":"なし","agentSelector.trigger.primary":"エージェント: {agent}","modelSelector.placeholder.search":"モデルを検索...","modelSelector.none":"なし","modelSelector.trigger.primary":"モデル: {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"お気に入りのみ","modelSelector.favoritesOnly.showAll":"すべてのモデルを表示","modelSelector.favorite.add":"お気に入りに追加","modelSelector.favorite.remove":"お気に入りから削除","thinkingSelector.variant.default":"デフォルト","thinkingSelector.label":"思考: {variant}","envEditor.title":"環境変数","envEditor.count.one":"({count} 個)","envEditor.count.other":"({count} 個)","envEditor.fields.name.placeholder":"変数名","envEditor.fields.name.readOnlyTitle":"変数名 (読み取り専用)","envEditor.fields.value.placeholder":"変数値","envEditor.actions.remove.title":"変数を削除","envEditor.actions.add.title":"変数を追加","envEditor.empty":"環境変数が設定されていません。上で変数を追加して OpenCode 環境をカスタマイズしてください。","envEditor.help":"これらの変数はインスタンス起動時に OpenCode 環境で利用できます。","contextUsagePanel.headings.tokens":"トークン","contextUsagePanel.headings.context":"コンテキスト","contextUsagePanel.labels.input":"入力","contextUsagePanel.labels.output":"出力","contextUsagePanel.labels.cost":"コスト","contextUsagePanel.labels.used":"使用","contextUsagePanel.labels.available":"残り","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"無効","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"OpenCode のログレベル","settings.opencode.logLevel.subtitle":"新しい OpenCode インスタンスの起動時に使うログレベルを設定します。","settings.opencode.logLevel.selector.title":"ログ出力の詳細度","settings.opencode.logLevel.selector.subtitle":"新しい OpenCode インスタンスがどの程度ログを出力するかを選択します。","settings.opencode.logLevel.option.debug":"デバッグ","settings.opencode.logLevel.option.info":"情報","settings.opencode.logLevel.option.warn":"警告","settings.opencode.logLevel.option.error":"エラー","settings.appearance.behavior.title":"操作","settings.appearance.behavior.subtitle":"メッセージ、差分、入力の既定値。","settings.behavior.keyboardHints.title":"キーボードショートカットのヒント","settings.behavior.keyboardHints.subtitle":"UI全体でキーボードショートカットのヒントを表示します。","settings.behavior.thinking.title":"思考セクション","settings.behavior.thinking.subtitle":"メッセージ内のAIの思考セクションを表示/非表示にします。","settings.behavior.thinkingDefault.title":"思考の既定","settings.behavior.thinkingDefault.subtitle":"思考セクションを最初に展開/折りたたみのどちらで表示するかを選びます。","settings.behavior.timelineTools.title":"タイムラインのツール呼び出し","settings.behavior.timelineTools.subtitle":"メッセージタイムラインでツール呼び出しを表示/非表示にします。","settings.behavior.diffView.title":"差分表示","settings.behavior.diffView.subtitle":"ツール呼び出しの差分の表示方法を選びます。","settings.behavior.diffView.option.split":"分割","settings.behavior.diffView.option.unified":"統合","settings.behavior.toolOutputsDefault.title":"ツール出力の既定","settings.behavior.toolOutputsDefault.subtitle":"ツール出力を最初に展開/折りたたみのどちらで表示するかを選びます。","settings.behavior.diagnosticsDefault.title":"診断の既定","settings.behavior.diagnosticsDefault.subtitle":"診断出力を最初に展開/折りたたみのどちらで表示するかを選びます。","settings.behavior.toolInputsVisibility.title":"ツール入力の表示","settings.behavior.toolInputsVisibility.subtitle":"ツール呼び出しの入力引数の既定の表示状態を設定します。","settings.behavior.usageMetrics.title":"トークン使用量メトリクス","settings.behavior.usageMetrics.subtitle":"アシスタントのメッセージにトークン数とコストの統計を表示/非表示にします。","settings.behavior.autoCleanup.title":"空のセッションを自動クリーンアップ","settings.behavior.autoCleanup.subtitle":"新しいセッション作成時に空のセッションを自動的にクリーンアップします。","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Enterで送信","settings.behavior.promptSubmit.subtitle":"Enterで送信し、Cmd/Ctrl+Enterで改行します。","settings.speech.title":"音声","settings.speech.subtitle":"今すぐ音声入力を設定し、今後の機能のために音声合成の基盤も準備します。","settings.speech.provider.title":"プロバイダー","settings.speech.provider.subtitle":"音声リクエストはサーバー側の音声アダプターを使用します。","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"設定を確認しています...","settings.speech.status.configured":"設定済み","settings.speech.status.missing":"APIキーがありません","settings.speech.status.error":"音声サービスを利用できません","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"CodeNomadが管理する音声リクエストに使用されます。","settings.speech.apiKey.placeholder":"新しいAPIキーを入力","settings.speech.apiKey.storedNote":"保存済みのAPIキーは非表示になっています。置き換えるには新しい値を入力し、そのまま使うには空欄のままにしてください。","settings.speech.apiKey.clearAction":"保存済みキーを削除","settings.speech.apiKey.clearPending":"保存すると、保存済みのAPIキーは削除されます。","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"OpenAI互換の音声エンドポイント用の任意の上書き設定です。","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"文字起こしモデル","settings.speech.sttModel.subtitle":"プロンプトの音声入力を文字起こしする際に使用するモデルです。","settings.speech.ttsModel.title":"音声モデル","settings.speech.ttsModel.subtitle":"将来の再生機能のために予約されている既定の音声合成モデルです。","settings.speech.ttsVoice.title":"既定の音声","settings.speech.ttsVoice.subtitle":"将来の再生機能のために予約されている既定の音声合成ボイスです。","settings.speech.playbackMode.title":"再生モード","settings.speech.playbackMode.subtitle":"音声が届き次第再生を始めるか、ファイル全体の生成後に再生するかを選択します。","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"出力形式","settings.speech.ttsFormat.subtitle":"音声合成の出力形式を選択します。ストリーミング対応はプロバイダーとブラウザーに依存します。","settings.speech.help":"プロンプト音声入力は音声文字起こしが設定され対応している場合に表示されます。メッセージ再生にはここで選んだTTSモードと形式が使われます。","settings.speech.compatibility.streamingUnavailable":"現在の音声プロバイダー設定ではストリーミングTTSが利用可能として公開されていません。今すぐ再生を使いたい場合は再生モードを buffered に切り替えてください。","settings.speech.compatibility.browserStreamingUnavailable":"現在のブラウザーでは、選択したTTS形式をストリーミング再生できません。buffered 再生に切り替えるか、別の形式を選んでください。","settings.speech.compatibility.runtimeNote":"ストリーミングモードでも全ての形式を選択できますが、ブラウザーとプロバイダーの組み合わせによっては再生時に失敗することがあります。","settings.speech.testPlayback.action":"再生をテスト","settings.speech.testPlayback.generating":"サンプルを生成中","settings.speech.testPlayback.stop":"サンプルを停止","settings.speech.testPlayback.sample":"CodeNomad をご利用いただきありがとうございます。音声設定は正常に動作しています。","settings.speech.testPlayback.note":"このテストは現在の再生モードと形式をすぐに使います。APIキー、Base URL、モデル、音声の変更も試したい場合は先に保存してください。","settings.speech.save.action":"保存","settings.speech.save.saving":"保存中...","settings.speech.save.saved":"保存済み","settings.speech.save.unsaved":"未保存の変更","settings.speech.save.error":"保存に失敗しました","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},h={"time.relative.justNow":"たった今","time.relative.daysAgoShort":"{count} 日前","time.relative.hoursAgoShort":"{count} 時間前","time.relative.minutesAgoShort":"{count} 分前"},b={"toolCall.pending.waitingToRun":"実行待ち...","toolCall.error.label":"エラー:","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"diff 表示モード","toolCall.diff.viewMode.split":"分割","toolCall.diff.viewMode.unified":"ユニファイド","toolCall.diff.switchToSplit":"分割表示に切り替え","toolCall.diff.switchToUnified":"ユニファイド表示に切り替え","toolCall.diff.enableWordWrap":"折り返しを有効化","toolCall.diff.disableWordWrap":"折り返しを無効化","toolCall.diff.copyPatch":"パッチをコピー","toolCall.diagnostics.title":"診断","toolCall.diagnostics.ariaLabel":"診断","toolCall.diagnostics.ariaLabel.withLabel":"診断 {label}","toolCall.diagnostics.severity.error.short":"エラー","toolCall.diagnostics.severity.warning.short":"警告","toolCall.diagnostics.severity.info.short":"情報","toolCall.renderer.toolName.shell":"シェル","toolCall.renderer.toolName.fetch":"フェッチ","toolCall.renderer.toolName.invalid":"無効","toolCall.renderer.toolName.plan":"計画","toolCall.renderer.toolName.applyPatch":"パッチを適用","toolCall.renderer.action.working":"処理中...","toolCall.renderer.action.writingCommand":"コマンド作成中...","toolCall.renderer.action.preparingEdit":"編集を準備中...","toolCall.renderer.action.readingFile":"ファイルを読み込み中...","toolCall.renderer.action.preparingWrite":"書き込みを準備中...","toolCall.renderer.action.preparingPatch":"パッチを準備中...","toolCall.renderer.action.planning":"計画中...","toolCall.renderer.action.fetchingFromWeb":"Web から取得中...","toolCall.renderer.action.findingFiles":"ファイルを検索中...","toolCall.renderer.action.searchingContent":"内容を検索中...","toolCall.renderer.action.listingDirectory":"ディレクトリ一覧を取得中...","toolCall.renderer.bash.title.timeout":"タイムアウト: {timeout}","toolCall.renderer.read.detail.offset":"オフセット: {offset}","toolCall.renderer.read.detail.limit":"上限: {limit}","toolCall.renderer.todo.empty":"まだ項目がありません。","toolCall.renderer.todo.status.pending":"保留","toolCall.renderer.todo.status.inProgress":"進行中","toolCall.renderer.todo.status.completed":"完了","toolCall.renderer.todo.status.cancelled":"キャンセル","toolCall.renderer.todo.title.plan":"計画","toolCall.renderer.todo.title.creating":"計画を作成中","toolCall.renderer.todo.title.completing":"計画を完了中","toolCall.renderer.todo.title.updating":"計画を更新中","toolCall.permission.status.required":"許可が必要です","toolCall.permission.status.queued":"許可待ち","toolCall.permission.requestedDiff.label":"要求された diff","toolCall.permission.requestedDiff.withPath":"要求された diff · {path}","toolCall.permission.queuedText":"先行する許可への回答を待機中です。","toolCall.permission.actions.allowOnce":"一度だけ許可","toolCall.permission.actions.alwaysAllow":"常に許可","toolCall.permission.actions.deny":"拒否","toolCall.permission.shortcuts.allowOnce":"一度だけ許可","toolCall.permission.shortcuts.alwaysAllow":"常に許可","toolCall.permission.shortcuts.deny":"拒否","toolCall.permission.errors.unableToUpdate":"許可を更新できません","permissionApproval.title":"リクエスト","permissionApproval.empty":"保留中のリクエストはありません。","permissionApproval.kind.permission":"許可","permissionApproval.kind.question":"質問","permissionApproval.questionCount.one":"{count} 件の質問","permissionApproval.questionCount.other":"{count} 件の質問","permissionApproval.status.active":"有効","permissionApproval.actions.closeAriaLabel":"閉じる","permissionApproval.actions.goToSession":"セッションへ移動","permissionApproval.actions.loadingSession":"読み込み中…","permissionApproval.actions.loadSession":"セッションを読み込む","permissionApproval.actions.allowOnce":"一度だけ許可","permissionApproval.actions.alwaysAllow":"常に許可","permissionApproval.actions.deny":"拒否","permissionApproval.fallbackHint":"詳しい情報を見るにはセッションを読み込んでください。","permissionApproval.errors.unableToUpdatePermission":"許可を更新できません","toolCall.question.status.required":"質問が必要です","toolCall.question.status.queued":"質問待ち","toolCall.question.status.questions":"質問","toolCall.question.action.awaitingAnswers":"回答待ち...","toolCall.question.title.questions":"質問","toolCall.question.title.askingQuestions":"質問中","toolCall.question.type.one":"質問","toolCall.question.type.other":"質問","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"複数","toolCall.question.custom.title":"カスタム回答を入力","toolCall.question.custom.label":"カスタム回答","toolCall.question.custom.placeholder":"回答を入力","toolCall.question.actions.submit":"送信","toolCall.question.actions.dismiss":"閉じる","toolCall.question.shortcuts.submit":"送信","toolCall.question.shortcuts.dismiss":"閉じる","toolCall.question.queuedText":"先行する回答を待機中です。","toolCall.question.validation.answerAll":"送信する前にすべての質問に回答してください。","toolCall.question.errors.unableToReply":"回答できません","toolCall.question.errors.unableToDismiss":"閉じられません","toolCall.task.action.delegating":"委任中...","toolCall.task.sections.prompt":"プロンプト","toolCall.task.sections.steps":"手順","toolCall.task.sections.output":"出力","toolCall.task.steps.count":"{count} 手順","toolCall.task.meta.agentModel":"エージェント: {agent} • モデル: {model}","toolCall.task.meta.agent":"エージェント: {agent}","toolCall.task.meta.model":"モデル: {model}","toolCall.status.pending":"保留","toolCall.status.running":"実行中","toolCall.status.completed":"完了","toolCall.status.error":"エラー","toolCall.status.unknown":"不明","toolCall.applyPatch.action.preparing":"apply_patch を準備中...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} 件のファイル)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} 件のファイル)","toolCall.applyPatch.fileFallback":"ファイル {number}"},y=e(a,s,r,h,t,i,n,l,c,g,m,b,d,u,p,o);export{y as jaMessages};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-C6C534z4.js","assets/git-diff-vendor-CSgooKT_.js","assets/fast-diff-vendor-DgdwVvTQ.js","assets/highlight-vendor-8FKMu9os.js","assets/git-diff-vendor-HAZkIolJ.css","assets/monaco-viewer-DANembz4.js","assets/index-z-uWAw1M.js","assets/index-NrX0Q8eA.js","assets/index-D7RMnYOz.js","assets/index-CMh7_0rm.js","assets/index-Btyhpe4o.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{d as F,t as X,c as U,b as x,o as V,n as Z,k as ee,l as te}from"./git-diff-vendor-CSgooKT_.js";import{l as se,k as oe}from"./monaco-viewer-DANembz4.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))o(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function s(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function o(n){if(n.ep)return;n.ep=!0;const i=s(n);fetch(n.href,i)}})();const ne="modulepreload",ie=function(e){return"/"+e},q={},w=function(t,s,o){let n=Promise.resolve();if(s&&s.length>0){document.getElementsByTagName("link");const a=document.querySelector("meta[property=csp-nonce]"),c=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));n=Promise.allSettled(s.map(m=>{if(m=ie(m),m in q)return;q[m]=!0;const S=m.endsWith(".css"),y=S?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${y}`))return;const p=document.createElement("link");if(p.rel=S?"stylesheet":ne,S||(p.as="script"),p.crossOrigin="",p.href=m,c&&p.setAttribute("nonce",c),document.head.appendChild(p),S)return new Promise((M,R)=>{p.addEventListener("load",M),p.addEventListener("error",()=>R(new Error(`Unable to preload CSS for ${m}`)))})}))}function i(a){const c=new Event("vite:preloadError",{cancelable:!0});if(c.payload=a,window.dispatchEvent(c),!c.defaultPrevented)throw a}return n.then(a=>{for(const c of a||[])c.status==="rejected"&&i(c.reason);return t().catch(i)})},ae={"advancedSettings.title":"Advanced Settings","advancedSettings.environmentVariables.title":"Environment Variables","advancedSettings.environmentVariables.subtitle":"Applied whenever a new OpenCode instance starts","advancedSettings.actions.close":"Close"},re={"app.launchError.title":"Unable to launch OpenCode","app.launchError.description":"We couldn't start the selected OpenCode binary. Review the error output below or choose a different binary from OpenCode settings.","app.launchError.binaryPathLabel":"Binary path","app.launchError.errorOutputLabel":"Error output","app.launchError.openAdvancedSettings":"Open OpenCode Settings","app.launchError.close":"Close","app.launchError.closeTitle":"Close (Esc)","app.launchError.fallbackMessage":"Failed to launch workspace","app.stopInstance.confirmMessage":"Stop OpenCode instance? This will stop the server.","app.stopInstance.title":"Stop instance","app.stopInstance.confirmLabel":"Stop","app.stopInstance.cancelLabel":"Keep running","emptyState.logoAlt":"CodeNomad logo","emptyState.brandTitle":"CodeNomad","emptyState.tagline":"Select a folder to start coding with AI","emptyState.actions.selectFolder":"Select Folder","emptyState.actions.selecting":"Selecting...","emptyState.keyboardShortcut":"Keyboard shortcut: {shortcut}","emptyState.examples":"Examples: {example}","emptyState.multipleInstances":"You can have multiple instances of the same folder","releases.upgradeRequired.title":"Upgrade required","releases.upgradeRequired.message.withVersion":"Update to CodeNomad {version} to use the latest UI.","releases.upgradeRequired.message.noVersion":"Update CodeNomad to use the latest UI.","releases.upgradeRequired.action.getUpdate":"Get update","releases.uiUpdated.title":"UI updated","releases.uiUpdated.message":"UI is now updated to {version}.","releases.devUpdateAvailable.title":"Dev build available","releases.devUpdateAvailable.message":"A new dev build is available: {version}.","releases.devUpdateAvailable.action":"View release","theme.mode.system":"System","theme.mode.light":"Light","theme.mode.dark":"Dark","theme.toggle.title":"Theme: {mode}","theme.toggle.ariaLabel":"Theme: {mode}"},le={"commandPalette.title":"Command Palette","commandPalette.description":"Search and execute commands","commandPalette.searchPlaceholder":"Type a command or search...","commandPalette.empty":'No commands found for "{query}"',"commandPalette.category.customCommands":"Custom Commands","commandPalette.category.instance":"Instance","commandPalette.category.session":"Session","commandPalette.category.agentModel":"Agent & Model","commandPalette.category.inputFocus":"Input & Focus","commandPalette.category.system":"System","commandPalette.category.other":"Other","commands.newInstance.label":"New Instance","commands.newInstance.description":"Open folder picker to create new instance","commands.newInstance.keywords":"folder, project, workspace","commands.closeInstance.label":"Close Tab","commands.closeInstance.description":"Close the current top-level tab","commands.closeInstance.keywords":"stop, quit, close, tab","commands.nextInstance.label":"Next Tab","commands.nextInstance.description":"Cycle to the next top-level tab","commands.nextInstance.keywords":"switch, navigate, tab","commands.previousInstance.label":"Previous Tab","commands.previousInstance.description":"Cycle to the previous top-level tab","commands.previousInstance.keywords":"switch, navigate, tab","commands.newSession.label":"New Session","commands.newSession.description":"Create a new parent session","commands.newSession.keywords":"create, start","commands.closeSession.label":"Close Session","commands.closeSession.description":"Close current parent session","commands.closeSession.keywords":"close, stop","commands.scrubSessions.label":"Scrub Sessions","commands.scrubSessions.description":"Remove empty sessions, subagent sessions that have completed their primary task, and extraneous forked sessions.","commands.scrubSessions.keywords":"cleanup, blank, empty, sessions, remove, delete, scrub","commands.instanceInfo.label":"Instance Info","commands.instanceInfo.description":"Open the instance overview for logs and status","commands.instanceInfo.keywords":"info, logs, console, output","commands.nextSession.label":"Next Session","commands.nextSession.description":"Cycle to next session tab","commands.nextSession.keywords":"switch, navigate","commands.previousSession.label":"Previous Session","commands.previousSession.description":"Cycle to previous session tab","commands.previousSession.keywords":"switch, navigate","commands.compactSession.label":"Compact Session","commands.compactSession.description":"Summarize and compact the current session","commands.compactSession.keywords":"summarize, compress","commands.compactSession.errorFallback":"Failed to compact session","commands.compactSession.alert.title":"Compact failed","commands.compactSession.alert.message":"Compact failed: {message}","commands.undoLastMessage.label":"Undo Last Message","commands.undoLastMessage.description":"Revert the last message","commands.undoLastMessage.keywords":"revert, undo","commands.undoLastMessage.none.title":"No actions to undo","commands.undoLastMessage.none.message":"Nothing to undo","commands.undoLastMessage.failed.title":"Undo failed","commands.undoLastMessage.failed.message":"Failed to revert message","commands.openModelSelector.label":"Open Model Selector","commands.openModelSelector.description":"Choose a different model","commands.openModelSelector.keywords":"model, llm, ai","commands.selectModelVariant.label":"Select Model Variant","commands.selectModelVariant.description":"Choose a thinking effort for the current model","commands.selectModelVariant.keywords":"variant, thinking, reasoning, effort","commands.openAgentSelector.label":"Open Agent Selector","commands.openAgentSelector.description":"Choose a different agent","commands.openAgentSelector.keywords":"agent, mode","commands.clearInput.label":"Clear Input","commands.clearInput.description":"Clear the prompt textarea","commands.clearInput.keywords":"clear, reset","commands.promptSubmitShortcut.label.default":"Enter: New Line, Cmd/Ctrl+Enter: Submit Prompt","commands.promptSubmitShortcut.label.swapped":"Enter: Submit Prompt, Cmd/Ctrl+Enter: New Line","commands.promptSubmitShortcut.description":"Swap Enter and Cmd/Ctrl+Enter behavior in the prompt input","commands.promptSubmitShortcut.keywords":"enter, cmd, ctrl, submit, send, newline, shortcut, keybind, prompt","commands.thinkingBlocks.label.show":"Show Thinking","commands.thinkingBlocks.label.hide":"Hide Thinking","commands.thinkingBlocks.description":"Show or hide AI thinking sections","commands.thinkingBlocks.keywords":"thinking, reasoning, toggle, show, hide","commands.timelineToolCalls.label.show":"Show Timeline Tool Calls","commands.timelineToolCalls.label.hide":"Hide Timeline Tool Calls","commands.timelineToolCalls.description":"Toggle tool call entries in the message timeline","commands.timelineToolCalls.keywords":"timeline, tool, toggle","commands.keyboardShortcutHints.label.show":"Show Keyboard Shortcut Hints","commands.keyboardShortcutHints.label.hide":"Hide Keyboard Shortcut Hints","commands.keyboardShortcutHints.description":"Show or hide keyboard shortcut hints across the UI","commands.keyboardShortcutHints.description.disabledWeb":"Disabled in WebUI (shortcut hints are always hidden)","commands.keyboardShortcutHints.keywords":"shortcut, shortcuts, keyboard, keybind, hints","commands.common.expanded":"Expanded","commands.common.collapsed":"Collapsed","commands.common.visible":"Visible","commands.common.hidden":"Hidden","commands.common.enabled":"Enabled","commands.common.disabled":"Disabled","commands.thinkingBlocksDefault.label":"Thinking View: {state}","commands.thinkingBlocksDefault.description":"Collapse / Expand AI thinking sections when shown","commands.thinkingBlocksDefault.keywords":"thinking, reasoning, expand, collapse, default","commands.diffViewSplit.label":"Use Split Diff View","commands.diffViewSplit.description":"Display tool-call diffs side-by-side","commands.diffViewSplit.keywords":"diff, split, view","commands.diffViewUnified.label":"Use Unified Diff View","commands.diffViewUnified.description":"Display tool-call diffs inline","commands.diffViewUnified.keywords":"diff, unified, view","commands.toolOutputsDefault.label":"Tool Outputs Default · {state}","commands.toolOutputsDefault.description":"Toggle default expansion for tool outputs","commands.toolOutputsDefault.keywords":"tool, output, expand, collapse","commands.diagnosticsDefault.label":"Diagnostics Default · {state}","commands.diagnosticsDefault.description":"Toggle default expansion for diagnostics output","commands.diagnosticsDefault.keywords":"diagnostics, expand, collapse","commands.toolInputsVisibility.label":"Tool Inputs Visibility · {state}","commands.toolInputsVisibility.description":"Set default visibility for tool call input arguments","commands.toolInputsVisibility.keywords":"tool, inputs, arguments, visibility, hide, show, expand, collapse","commands.tokenUsageDisplay.label":"Token Usage Display · {state}","commands.tokenUsageDisplay.description":"Show or hide token and cost stats for assistant messages","commands.tokenUsageDisplay.keywords":"token, usage, cost, stats","commands.autoCleanupBlankSessions.label":"Auto-Cleanup Blank Sessions · {state}","commands.autoCleanupBlankSessions.description":"Automatically clean up blank sessions when creating new ones","commands.autoCleanupBlankSessions.keywords":"auto, cleanup, blank, sessions, toggle","commands.showHelp.label":"Show Help","commands.showHelp.description":"Display keyboard shortcuts and help","commands.showHelp.keywords":"shortcuts, help","commands.custom.argumentsPrompt.message":"Arguments for /{name}","commands.custom.argumentsPrompt.title":"Custom command","commands.custom.argumentsPrompt.inputLabel":"Arguments","commands.custom.argumentsPrompt.inputPlaceholder":"e.g. foo bar","commands.custom.argumentsPrompt.confirmLabel":"Run","commands.custom.argumentsPrompt.cancelLabel":"Cancel","commands.custom.argumentsPrompt.openFailed.message":"Failed to open arguments prompt.","commands.custom.argumentsPrompt.openFailed.title":"Command arguments","commands.custom.entries.descriptionFallback":"Custom command","commands.custom.sessionRequired.message":"Select a session before running a custom command.","commands.custom.sessionRequired.title":"Session required","commands.custom.runFailed.message":"Failed to run custom command. Check the console for details.","commands.custom.runFailed.title":"Command failed","unifiedPicker.loading.searching":"Searching...","unifiedPicker.loading.loadingWorkspace":"Loading workspace...","unifiedPicker.title.command":"Select Command","unifiedPicker.title.mention":"Select Agent or File","unifiedPicker.empty":"No results found","unifiedPicker.sections.commands":"COMMANDS","unifiedPicker.sections.agents":"AGENTS","unifiedPicker.sections.files":"FILES","unifiedPicker.sections.workspaceRoot":"WORKSPACE ROOT","unifiedPicker.badge.subagent":"subagent","unifiedPicker.footer.navigate":"navigate","unifiedPicker.footer.select":"select","unifiedPicker.footer.close":"close"},ce={"alertDialog.fallbackTitle.info":"Heads up","alertDialog.fallbackTitle.warning":"Please review","alertDialog.fallbackTitle.error":"Something went wrong","alertDialog.actions.confirm":"Confirm","alertDialog.actions.run":"Run","alertDialog.actions.ok":"OK","alertDialog.actions.cancel":"Cancel","alertDialog.prompt.inputLabel":"Input","backgroundProcessOutputDialog.title":"Background Output","backgroundProcessOutputDialog.actions.close":"Close","backgroundProcessOutputDialog.loading":"Loading output...","backgroundProcessOutputDialog.truncatedNotice":"Output truncated for display.","backgroundProcessOutputDialog.loadErrorFallback":"Failed to load output."},de={"directoryBrowser.defaultDescription":"Browse folders under the configured workspace root.","directoryBrowser.close":"Close","directoryBrowser.currentFolder":"Current folder","directoryBrowser.selectCurrent":"Select Current","directoryBrowser.newFolder":"New Folder","directoryBrowser.creating":"Creating…","directoryBrowser.loadingFolders":"Loading folders…","directoryBrowser.noFolders":"No folders available.","directoryBrowser.upOneLevel":"Up one level","directoryBrowser.select":"Select","directoryBrowser.load.errorFallback":"Unable to load filesystem","directoryBrowser.createFolder.promptMessage":"Create a new folder in the current directory.","directoryBrowser.createFolder.title":"New Folder","directoryBrowser.createFolder.inputLabel":"Folder name","directoryBrowser.createFolder.inputPlaceholder":"e.g. my-new-project","directoryBrowser.createFolder.confirmLabel":"Create","directoryBrowser.createFolder.cancelLabel":"Cancel","directoryBrowser.createFolder.invalidNameMessage":"Please enter a single folder name.","directoryBrowser.createFolder.invalidNameDetail":"Folder names cannot include slashes, '..', or '~'.","directoryBrowser.createFolder.errorFallback":"Unable to create folder","filesystemBrowser.descriptionFallback":"Search for a path under the configured workspace root.","filesystemBrowser.rootLabel":"Root: {root}","filesystemBrowser.actions.close":"Close","filesystemBrowser.actions.retry":"Retry","filesystemBrowser.actions.select":"Select","filesystemBrowser.filterLabel":"Filter","filesystemBrowser.search.placeholder.directories":"Search for folders","filesystemBrowser.search.placeholder.files":"Search for files","filesystemBrowser.currentFolder.label":"Current folder","filesystemBrowser.currentFolder.selectCurrent":"Select Current","filesystemBrowser.loading.filesystem":"filesystem","filesystemBrowser.loading.workspaceRoot":"workspace root","filesystemBrowser.loading.loadingWithPath":"Loading {path}…","filesystemBrowser.empty.noEntries":"No entries found.","filesystemBrowser.navigation.upOneLevel":"Up one level","filesystemBrowser.hints.navigate":"Navigate","filesystemBrowser.hints.select":"Select","filesystemBrowser.hints.close":"Close","filesystemBrowser.errors.loadFilesystemFallback":"Unable to load filesystem","filesystemBrowser.errors.openDirectoryFallback":"Unable to open directory"},me={"folderSelection.language.ariaLabel":"Language","folderSelection.logoAlt":"CodeNomad logo","folderSelection.tagline":"Select a folder to start coding with AI","folderSelection.links.github":"CodeNomad GitHub","folderSelection.links.githubStars":"CodeNomad GitHub Stars","folderSelection.links.discord":"CodeNomad Discord","folderSelection.empty.title":"No Recent Folders","folderSelection.empty.description":"Browse for a folder to get started","folderSelection.recent.title":"Recent Folders","folderSelection.recent.subtitle.one":"{count} folder available","folderSelection.recent.subtitle.other":"{count} folders available","folderSelection.recent.remove":"Remove from recent","folderSelection.browse.title":"Browse for Folder","folderSelection.browse.subtitle":"Select any folder on your computer","folderSelection.browse.button":"Browse Folders","folderSelection.browse.buttonOpening":"Opening...","folderSelection.actions.title":"Open Folder or Connect Server","folderSelection.actions.subtitle":"Open local folder or connect to a CodeNomad server","folderSelection.actions.connectButton":"Connect CodeNomad Server","folderSelection.advancedSettings":"Advanced Settings","folderSelection.opencode":"OpenCode","folderSelection.hints.navigate":"Navigate","folderSelection.hints.select":"Select","folderSelection.hints.remove":"Remove","folderSelection.hints.browse":"Browse","folderSelection.loading.title":"Starting instance...","folderSelection.loading.subtitle":"Hang tight while we prepare your workspace.","folderSelection.drop.title":"Drop a folder to open it","folderSelection.drop.subtitle":"Start a new instance in the dropped folder.","folderSelection.drop.invalidTitle":"Couldn't open dropped item","folderSelection.drop.invalidMessage":"Drop a folder to start a new instance.","folderSelection.dialog.title":"Select Workspace","folderSelection.dialog.description":"Select workspace to start coding.","folderSelection.tabs.local":"Local Folders","folderSelection.tabs.servers":"Servers","folderSelection.servers.title":"Saved Servers","folderSelection.servers.subtitle":"Open a saved remote CodeNomad server in a new window","folderSelection.servers.count":"{count} Servers","folderSelection.servers.empty.title":"No Saved Servers","folderSelection.servers.empty.description":"Add a remote server to reconnect quickly from this device","folderSelection.servers.connectTitle":"Connect to Server","folderSelection.servers.connectSubtitle":"Save a remote CodeNomad server and open it in a new window","folderSelection.servers.connectButton":"Connect to Server","folderSelection.servers.remove":"Remove saved server","folderSelection.servers.skipTls":"Self-signed TLS","folderSelection.servers.errorTitle":"Remote Connection Failed","folderSelection.servers.dialog.title":"Connect to Server","folderSelection.servers.dialog.description":"Add a remote CodeNomad server and optionally open it right away.","folderSelection.servers.dialog.name":"Server name","folderSelection.servers.dialog.namePlaceholder":"Production Server","folderSelection.servers.dialog.url":"Server URL","folderSelection.servers.dialog.urlPlaceholder":"https://server.example.com","folderSelection.servers.dialog.skipTls":"Skip TLS verification for self-signed certificates.","folderSelection.servers.dialog.cancel":"Cancel","folderSelection.servers.dialog.save":"Save","folderSelection.servers.dialog.connect":"Connect","folderSelection.servers.dialog.connecting":"Connecting...","folderSelection.servers.dialog.errorRequired":"Server name and URL are required.","folderSelection.servers.dialog.errorConnect":"Could not connect to the remote server.","folderSelection.servers.certificateInstall.title":"Install Local Certificate","folderSelection.servers.certificateInstall.confirmMessage":"CodeNomad needs to install a local certificate to open self-signed HTTPS remote windows. This certificate is only used for local desktop proxy traffic on your machine. Your operating system may show a second certificate prompt after this.","folderSelection.servers.certificateInstall.confirmLabel":"Continue","folderSelection.servers.certificateInstall.cancelLabel":"Cancel","folderSelection.servers.certificateInstall.cancelled":"CodeNomad needs the local certificate to be trusted before it can open self-signed HTTPS remote windows.","folderSelection.sidecars.button":"Open SideCar"},pe={"instanceTabs.new.title":"New instance (Cmd/Ctrl+N)","instanceTabs.new.ariaLabel":"New instance","instanceTabs.remote.title":"Remote connect","instanceTabs.remote.ariaLabel":"Remote connect","instanceInfo.title":"Instance Information","instanceInfo.labels.folder":"Folder","instanceInfo.labels.project":"Project","instanceInfo.labels.versionControl":"Version Control","instanceInfo.labels.opencodeVersion":"OpenCode Version","instanceInfo.labels.binaryPath":"Binary Path","instanceInfo.labels.environmentVariables":"Environment Variables ({count})","instanceInfo.loading":"Loading...","instanceInfo.server.title":"Server","instanceInfo.server.port":"Port:","instanceInfo.server.pid":"PID:","instanceInfo.server.status":"Status:","instanceTab.status.permission":"Waiting on permission","instanceTab.status.compacting":"Compacting","instanceTab.status.working":"Working","instanceTab.status.idle":"Idle","instanceTab.status.ariaLabel":"Instance status: {status}","instanceTab.actions.close.ariaLabel":"Close instance","instanceShell.leftPanel.sessionsTitle":"Sessions","instanceShell.leftPanel.instanceInfo":"Instance Info","instanceShell.leftDrawer.pin":"Pin left drawer","instanceShell.leftDrawer.unpin":"Unpin left drawer","instanceShell.leftDrawer.toggle.pinned":"Left drawer pinned","instanceShell.leftDrawer.toggle.open":"Open left drawer","instanceShell.leftDrawer.toggle.close":"Close left drawer","instanceShell.rightDrawer.pin":"Pin right drawer","instanceShell.rightDrawer.unpin":"Unpin right drawer","instanceShell.rightDrawer.toggle.pinned":"Right drawer pinned","instanceShell.rightDrawer.toggle.open":"Open right drawer","instanceShell.rightDrawer.toggle.close":"Close right drawer","instanceShell.fullscreen.enter":"Full screen","instanceShell.fullscreen.exit":"Exit full screen","instanceShell.metrics.usedLabel":"Used","instanceShell.metrics.availableLabel":"Avail","instanceShell.commandPalette.openAriaLabel":"Open command palette","instanceShell.commandPalette.button":"Command Palette","instanceShell.connection.ariaLabel":"Connection {status}","instanceShell.connection.connected":"Connected","instanceShell.connection.connecting":"Connecting...","instanceShell.connection.disconnected":"Disconnected","instanceShell.connection.unknown":"Unknown","instanceWelcome.shortcuts.newSession":"New Session","instanceWelcome.empty.title":"No Previous Sessions","instanceWelcome.empty.description":"Create a new session below to get started","instanceWelcome.loading.title":"Loading Sessions","instanceWelcome.loading.description":"Fetching your previous sessions...","instanceWelcome.resume.title":"Resume Session","instanceWelcome.resume.subtitle.one":"{count} session available","instanceWelcome.resume.subtitle.other":"{count} sessions available","instanceWelcome.session.untitled":"Untitled Session","instanceWelcome.new.title":"Start New Session","instanceWelcome.new.subtitle":"We’ll reuse your last agent/model automatically","instanceWelcome.new.createButton":"Create Session","instanceWelcome.overlay.close":"Close","instanceWelcome.actions.viewInstanceInfo":"View Instance Info","instanceWelcome.actions.renameTitle":"Rename session","instanceWelcome.actions.deleteTitle":"Delete session","instanceWelcome.hints.navigate":"Navigate","instanceWelcome.hints.jump":"Jump","instanceWelcome.hints.firstLast":"First/Last","instanceWelcome.hints.resume":"Resume","instanceWelcome.hints.delete":"Delete","instanceWelcome.toasts.renameError":"Unable to rename session","instanceDisconnected.title":"Instance Disconnected","instanceDisconnected.folderFallback":"this workspace","instanceDisconnected.reasonFallback":"The server stopped responding","instanceDisconnected.description":"{folder} can no longer be reached. Close the tab to continue working.","instanceDisconnected.details.title":"Details","instanceDisconnected.details.folderLabel":"Folder:","instanceDisconnected.actions.closeInstance":"Close Instance","instanceShell.empty.title":"No session selected","instanceShell.empty.description":"Select a session to view messages","instanceShell.rightPanel.title":"Status Panel","instanceShell.rightPanel.tabs.changes":"Session Changes","instanceShell.rightPanel.tabs.gitChanges":"Git Changes","instanceShell.rightPanel.tabs.files":"Files","instanceShell.rightPanel.tabs.status":"Status","instanceShell.rightPanel.tabs.ariaLabel":"Right panel tabs","instanceShell.rightPanel.actions.refresh":"Refresh","instanceShell.rightPanel.actions.save":"Save (Ctrl+S)","instanceShell.rightPanel.actions.saveConfirm.message":'Do you want to save changes to "{path}" before switching?',"instanceShell.rightPanel.actions.saveConfirm.confirmLabel":"Save","instanceShell.rightPanel.actions.saveConfirm.cancelLabel":"Discard Changes","instanceShell.rightPanel.actions.conflict.message":"File was modified by the agent. Overwrite agent's changes?","instanceShell.rightPanel.actions.conflict.confirmLabel":"Overwrite","instanceShell.rightPanel.actions.conflict.cancelLabel":"Cancel","instanceShell.rightPanel.actions.refreshDirty.message":"File has unsaved changes. Refresh will discard your edits. Continue?","instanceShell.rightPanel.actions.refreshDirty.confirmLabel":"Refresh","instanceShell.rightPanel.actions.refreshDirty.cancelLabel":"Cancel","instanceShell.rightPanel.toast.saveSuccess":"File saved successfully","instanceShell.rightPanel.toast.saveError":"Failed to save file","instanceShell.rightPanel.sections.yoloMode":"Yolo Mode","instanceShell.rightPanel.sections.yoloMode.tooltip":"Automatically approves permission requests for the current session. Use it only when you trust the tools being run.","instanceShell.rightPanel.sections.sessionChanges":"Session Changes","instanceShell.rightPanel.sections.sessionChanges.tooltip":"Files modified in the current session. Shows additions and deletions for each file.","instanceShell.rightPanel.sections.plan":"Plan","instanceShell.rightPanel.sections.plan.tooltip":"The agent's roadmap for this session. Tracks tasks, subtasks, and their completion status.","instanceShell.rightPanel.sections.backgroundProcesses":"Background Shells","instanceShell.rightPanel.sections.backgroundProcesses.tooltip":"Long-running processes started by the agent. You can monitor their output, stop, or terminate them.","instanceShell.rightPanel.sections.mcp":"MCP Servers","instanceShell.rightPanel.sections.mcp.tooltip":"Model Context Protocol servers that extend the agent's capabilities with external tools and services.","instanceShell.rightPanel.sections.lsp":"LSP Servers","instanceShell.rightPanel.sections.lsp.tooltip":"Language Server Protocol servers providing code intelligence, diagnostics, and language-specific features.","instanceShell.rightPanel.sections.plugins":"Plugins","instanceShell.rightPanel.sections.plugins.tooltip":"Plugins that customize the UI and server behavior, adding features beyond MCP and LSP.","instanceShell.sessionChanges.noSessionSelected":"Select a session to view changes.","instanceShell.sessionChanges.loading":"Fetching session changes...","instanceShell.sessionChanges.empty":"No session changes yet.","instanceShell.sessionChanges.filesChanged":"{count} files changed","instanceShell.sessionChanges.actions.show":"Show changes","instanceShell.gitChanges.noSessionSelected":"Select a session to view git changes.","instanceShell.gitChanges.loading":"Loading git changes...","instanceShell.gitChanges.empty":"No git changes yet.","instanceShell.gitChanges.deleted":"Deleted","instanceShell.gitChanges.binaryViewer":"Binary file cannot be displayed","instanceShell.gitChanges.sections.staged":"Staged Changes","instanceShell.gitChanges.sections.unstaged":"Changes","instanceShell.gitChanges.actions.insertContext":"Add to prompt","instanceShell.gitChanges.actions.stage":"Stage file","instanceShell.gitChanges.actions.unstage":"Unstage file","instanceShell.gitChanges.commit.placeholder":"Enter commit message","instanceShell.gitChanges.commit.submit":"Commit","instanceShell.gitChanges.commit.submitting":"Committing...","instanceShell.gitChanges.commit.success":"Commit created successfully","instanceShell.gitChanges.commit.error":"Failed to create commit","instanceShell.filesShell.fileListTitle":"File list","instanceShell.filesShell.mobileSelectorLabel":"Select file","instanceShell.filesShell.mobileSelectorEmpty":"Select a file","instanceShell.filesShell.viewerTitle":"Change viewer","instanceShell.filesShell.viewerPlaceholder":"Detailed change rendering will be added in the next step.","instanceShell.filesShell.viewerEmpty":"No file selected.","instanceShell.filesShell.hideFiles":"Hide files","instanceShell.filesShell.showFiles":"Show files","instanceShell.diff.hideUnchanged":"Hide unchanged regions","instanceShell.diff.showFull":"Show full file","instanceShell.diff.switchToSplit":"Switch to split view","instanceShell.diff.switchToUnified":"Switch to unified view","instanceShell.diff.enableWordWrap":"Enable word wrap","instanceShell.diff.disableWordWrap":"Disable word wrap","instanceShell.worktree.create":"+ Create worktree","instanceShell.worktree.delete.error.title":"Delete failed","instanceShell.worktree.delete.error.fallback":"Failed to delete worktree","instanceShell.worktree.delete.error.causeLabel":"Likely cause:","instanceShell.worktree.delete.error.nextStepLabel":"Suggested next step:","instanceShell.worktree.delete.error.summary.localChanges":"Git refused to delete this worktree because it has modified or untracked files.","instanceShell.worktree.delete.error.summary.inUse":"CodeNomad could not delete this worktree because something is still using files in the directory.","instanceShell.worktree.delete.error.summary.notFound":"CodeNomad could not delete this worktree because the directory or worktree record was not found.","instanceShell.worktree.delete.error.summary.permissionDenied":"CodeNomad could not delete this worktree because access to the directory was denied.","instanceShell.worktree.delete.error.summary.unknown":"CodeNomad could not delete this worktree.","instanceShell.worktree.delete.error.cause.localChanges":"Local changes","instanceShell.worktree.delete.error.cause.inUse":"Another process is using this worktree","instanceShell.worktree.delete.error.cause.notFound":"The worktree directory or record is missing","instanceShell.worktree.delete.error.cause.permissionDenied":"Insufficient filesystem permissions","instanceShell.worktree.delete.error.cause.unknown":"The backend returned an unclassified delete error","instanceShell.worktree.delete.error.nextStep.localChanges":"Enable Force delete if you want to discard local changes, or clean the worktree and try again.","instanceShell.worktree.delete.error.nextStep.inUse":"Close terminals, editors, watchers, or background processes using this worktree and try again.","instanceShell.worktree.delete.error.nextStep.notFound":"Refresh worktrees and try again. If it still fails, inspect the worktree path on disk.","instanceShell.worktree.delete.error.nextStep.permissionDenied":"Check filesystem permissions and close applications that may be locking this directory, then try again.","instanceShell.worktree.delete.error.nextStep.unknown":"Review the raw error below for details, then retry after addressing the reported problem.","instanceShell.worktree.delete.error.copyRaw":"Copy error","instanceShell.worktree.delete.error.copySanitized":"Copy sanitized","instanceShell.worktree.delete.error.copySuccess":"Copied delete error","instanceShell.worktree.delete.error.copySanitizedSuccess":"Copied sanitized delete error","instanceShell.worktree.delete.error.copyFailure":"Failed to copy delete error","instanceShell.plan.noSessionSelected":"Select a session to view plan.","instanceShell.plan.empty":"Nothing planned yet.","instanceShell.yoloMode.noSessionSelected":"Select a session to configure Yolo mode.","instanceShell.yoloMode.title":"Yolo mode","instanceShell.yoloMode.description":"Automatically approve permission requests for this session. Disabled by default.","instanceShell.yoloMode.badge":"Yolo mode","instanceShell.yoloMode.badgeAriaLabel":"Yolo mode enabled","instanceShell.backgroundProcesses.empty":"No background processes.","instanceShell.backgroundProcesses.status":"Status: {status}","instanceShell.backgroundProcesses.output":"Output: {sizeKb}KB","instanceShell.backgroundProcesses.notify.enabled":"Completion notification enabled","instanceShell.backgroundProcesses.notify.disabled":"Completion notification disabled","instanceShell.backgroundProcesses.actions.output":"Output","instanceShell.backgroundProcesses.actions.stop":"Stop","instanceShell.backgroundProcesses.actions.terminate":"Terminate","versionPill.appWithVersion":"App {version}","versionPill.ui":"UI","versionPill.uiWithVersion":"UI {version}","versionPill.source":" ({source})","opencodeBinarySelector.title":"OpenCode Binary","opencodeBinarySelector.subtitle":"Choose which executable OpenCode should run","opencodeBinarySelector.customPath.placeholder":"Enter path to opencode binary…","opencodeBinarySelector.actions.add":"Add","opencodeBinarySelector.actions.browse":"Browse for Binary…","opencodeBinarySelector.actions.removeTitle":"Remove binary","opencodeBinarySelector.badge.systemPath":"Use binary from system PATH","opencodeBinarySelector.status.checkingVersions":"Checking versions…","opencodeBinarySelector.status.checking":"Checking…","opencodeBinarySelector.dialog.title":"Select OpenCode Binary","opencodeBinarySelector.dialog.description":"Browse files exposed by the CLI server.","opencodeBinarySelector.validation.invalidBinary":"Invalid OpenCode binary","opencodeBinarySelector.validation.alreadyValidating":"Already validating","opencodeBinarySelector.display.systemPath":"{name} (system PATH)","opencodeBinarySelector.versionLabel":"v{version}"},ue={"loadingScreen.logoAlt":"CodeNomad logo","loadingScreen.status.issue":"Encountered an issue","loadingScreen.actions.showAnother":"Show another","loadingScreen.errors.missingRoot":"Loading root element not found","loadingScreen.phrases.neurons":"Warming up the AI neurons…","loadingScreen.phrases.daydreaming":"Convincing the AI to stop daydreaming…","loadingScreen.phrases.goggles":"Polishing the AI’s code goggles…","loadingScreen.phrases.reorganizingFiles":"Asking the AI to stop reorganizing your files…","loadingScreen.phrases.coffee":"Feeding the AI additional coffee…","loadingScreen.phrases.nodeModules":"Teaching the AI not to delete node_modules (again)…","loadingScreen.phrases.actNatural":"Telling the AI to act natural before you arrive…","loadingScreen.phrases.rewritingHistory":"Asking the AI to please stop rewriting history…","loadingScreen.phrases.stretch":"Letting the AI stretch before its coding sprint…","loadingScreen.phrases.keyboardControl":"Persuading the AI to give you keyboard control…"},ge={"logsView.title":"Server Logs","logsView.actions.show":"Show server logs","logsView.actions.hide":"Hide server logs","logsView.envVars.title":"Environment Variables ({count})","logsView.paused.title":"Server logs are paused","logsView.paused.description":"Enable streaming to watch your OpenCode server activity.","logsView.empty.waiting":"Waiting for server output...","logsView.scrollToBottom":"Scroll to bottom","infoView.logs.title":"Server Logs","infoView.logs.actions.show":"Show server logs","infoView.logs.actions.hide":"Hide server logs","infoView.logs.paused.title":"Server logs are paused","infoView.logs.paused.description":"Enable streaming to watch your OpenCode server activity.","infoView.logs.empty.waiting":"Waiting for server output...","infoView.logs.scrollToBottom":"Scroll to bottom","infoView.dispose.actions.dispose":"Dispose instance","infoView.dispose.actions.disposing":"Disposing...","infoView.dispose.confirm.title":"Dispose instance?","infoView.dispose.confirm.message":"This clears cached per-project state for this directory and reloads the instance.","infoView.dispose.confirm.confirmLabel":"Dispose","infoView.dispose.confirm.cancelLabel":"Cancel","infoView.dispose.toast.success":"Instance disposed. Reloading...","infoView.dispose.toast.error":"Failed to dispose instance."},he={"markdown.codeBlock.copy.label":"Copy","markdown.codeBlock.copy.copied":"Copied!","markdown.codeBlock.copy.failed":"Failed","markdown.copy":"Copy"},fe={"messageListHeader.sidebar.openSessionListAriaLabel":"Open session list","messageListHeader.metrics.usedLabel":"Used","messageListHeader.metrics.availableLabel":"Avail","messageListHeader.commandPalette.ariaLabel":"Open command palette","messageListHeader.commandPalette.button":"Command Palette","messageListHeader.connection.connected":"Connected","messageListHeader.connection.connecting":"Connecting...","messageListHeader.connection.disconnected":"Disconnected","messageSection.empty.logoAlt":"CodeNomad logo","messageSection.empty.brandTitle":"CodeNomad","messageSection.empty.title":"Start a conversation","messageSection.empty.description":"Type a message below or open the Command Palette:","messageSection.empty.tips.commandPalette":"Command Palette","messageSection.empty.tips.askAboutCodebase":"Ask about your codebase","messageSection.empty.tips.attachFilesPrefix":"Attach files with","messageSection.loading.messages":"Loading messages...","messageSection.scroll.toFirstAriaLabel":"Scroll to first message","messageSection.scroll.toLatestAriaLabel":"Scroll to latest message","messageSection.scroll.enableHoldAriaLabel":"Enable hold for long assistant replies","messageSection.scroll.disableHoldAriaLabel":"Disable hold for long assistant replies","messageSection.quote.addAsQuote":"Add as quote","messageSection.quote.addAsCode":"Add as code","messageSection.quote.copy":"Copy","messageSection.quote.copied":"Copied!","messageSection.quote.copyFailed":"Copy failed","messageTimeline.ariaLabel":"Message timeline","messageTimeline.segment.user.label":"You","messageTimeline.segment.assistant.label":"Asst","messageTimeline.segment.compaction.label":"Compaction","messageTimeline.tool.fallbackLabel":"Tool Call","messageTimeline.tooltip.userFallback":"User message","messageTimeline.tooltip.assistantFallback":"Assistant response","messageTimeline.tooltip.compaction.auto":"Auto Compaction","messageTimeline.tooltip.compaction.manual":"User Compaction","messageTimeline.text.filePrefix":"[File] {filename}","messageTimeline.text.attachment":"Attachment","messageBlock.tool.header":"Tool Call","messageBlock.tool.unknown":"unknown","messageBlock.tool.goToSession.label":"Go to Session","messageBlock.tool.goToSession.title":"Go to session","messageBlock.tool.goToSession.unavailableTitle":"Session not available yet","messageBlock.tool.deletePart.label":"Delete Part","messageBlock.tool.deletePart.deleting":"Deleting...","messageBlock.tool.deletePart.title":"Delete this tool call output","messageBlock.tool.deletePart.failed.title":"Delete failed","messageBlock.tool.deletePart.failed.message":"Failed to delete tool call output","messageBlock.compaction.ariaLabel":"Session compaction","messageBlock.compaction.autoLabel":"Session auto-compacted","messageBlock.compaction.manualLabel":"Session compacted by you","messageBlock.usage.input":"Input","messageBlock.usage.output":"Output","messageBlock.usage.reasoning":"Reasoning","messageBlock.usage.cacheRead":"Cache Read","messageBlock.usage.cacheWrite":"Cache Write","messageBlock.usage.cost":"Cost","messageBlock.step.agentLabel":"Agent: {agent}","messageBlock.step.modelLabel":"Model: {model}","messageBlock.reasoning.thinkingLabel":"Thinking","messageBlock.reasoning.expandAriaLabel":"Expand thinking","messageBlock.reasoning.collapseAriaLabel":"Collapse thinking","messageBlock.reasoning.indicator.hide":"Hide","messageBlock.reasoning.indicator.view":"View","messageBlock.reasoning.detailsAriaLabel":"Reasoning details","codeBlockInline.actions.copy":"Copy","codeBlockInline.actions.copied":"Copied!","messageItem.speaker.you":"You","messageItem.speaker.assistant":"Assistant","messageItem.actions.revert":"Revert","messageItem.actions.revertTitle":"Undo changes up to here (deletes messages)","messageItem.actions.fork":"Fork","messageItem.actions.forkTitle":"Fork from this message","messageItem.actions.copy":"Copy","messageItem.actions.copyTitle":"Copy message","messageItem.actions.copied":"Copied!","messageItem.actions.speak":"Speak message","messageItem.actions.generatingSpeech":"Generating speech","messageItem.actions.stopSpeech":"Stop playback","messageItem.actions.speak.error.title":"Speech playback failed","messageItem.actions.speak.error.unsupported":"Speech playback is not supported in this browser.","messageItem.actions.speak.error.unavailable":"Speech playback is unavailable until speech settings are configured.","messageItem.actions.speak.error.generate":"Unable to generate speech for this message.","messageItem.actions.deleteMessage":"Delete message (doesn't undo changes)","messageItem.actions.deleteMessagesUpTo":"Delete messages up to here (doesn't undo changes)","messageItem.actions.deletingMessage":"Deleting...","messageItem.actions.deleteMessageFailedTitle":"Delete failed","messageItem.actions.deleteMessageFailedMessage":"Failed to delete message","messageItem.selection.checkboxAriaLabel":"Select message for deletion","messageSection.bulkDelete.toolbarAriaLabel":"Selected items ({count})","messageSection.bulkDelete.deleteSelectedTitle":"Delete selected items","messageSection.bulkDelete.selectAllTitle":"Select all messages","messageSection.bulkDelete.moreOptionsTitle":"More options","messageSection.bulkDelete.selectionModeLabel":"Selection","messageSection.bulkDelete.selectionModeAll":"All","messageSection.bulkDelete.selectionModeTools":"Tools only","messageSection.bulkDelete.selectionHint.toggle":"Select item","messageSection.bulkDelete.selectionHint.range":"Select range","messageSection.bulkDelete.selectionHint.clear":"Clear Selection","messageSection.bulkDelete.cancelTitle":"Cancel selection","messageSection.bulkDelete.failedTitle":"Delete failed","messageSection.bulkDelete.failedMessage":"Failed to delete selected items","messageItem.status.queued":"QUEUED","messageItem.status.generating":"Generating...","messageItem.status.sending":"Sending...","messageItem.status.failedToSend":"Message failed to send","messagePart.actions.delete":"Delete Part","messagePart.actions.deleting":"Deleting...","messagePart.actions.deleteTitle":"Delete this item","messagePart.actions.deleteFailedTitle":"Delete failed","messagePart.actions.deleteFailedMessage":"Failed to delete item","messageItem.attachment.defaultName":"attachment","messageItem.attachment.downloadAriaLabel":"Download {name}","messageItem.agentMeta.agentLabel":"Agent: {agent}","messageItem.agentMeta.modelLabel":"Model: {model}","messageItem.errors.authenticationFallback":"Authentication error","messageItem.errors.outputLengthExceeded":"Message output length exceeded","messageItem.errors.requestAborted":"Request was aborted","messageItem.errors.unknownFallback":"Unknown error occurred","attachmentChip.removeAriaLabel":"Remove attachment","expandButton.toggleAriaLabel":"Toggle chat input height","promptInput.placeholder.shell":"Run a shell command (Esc to exit)...","promptInput.placeholder.default":"Type your message, @file, @agent, or paste images and text...","promptInput.hints.shell.exit":"to exit shell mode","promptInput.hints.shell.enable":"Shell mode","promptInput.hints.commands":"Commands","promptInput.history.previousAriaLabel":"Previous prompt","promptInput.history.nextAriaLabel":"Next prompt","promptInput.overlay.newLine":"New line","promptInput.overlay.send":"Send","promptInput.overlay.filesAgents":"Files/agents","promptInput.overlay.history":"History","promptInput.overlay.attachments":"• {count} file(s) attached","promptInput.overlay.shellModeActive":"Shell mode active","promptInput.overlay.press":"Press","promptInput.overlay.againToAbort":"again to abort session","promptInput.stopSession.ariaLabel":"Stop session","promptInput.stopSession.title":"Stop session","promptInput.clear.ariaLabel":"Clear prompt text","promptInput.clear.title":"Clear prompt text","promptInput.send.ariaLabel":"Send message","promptInput.send.errorFallback":"Failed to send message","promptInput.send.errorTitle":"Send failed","promptInput.conversationMode.enable.title":"Enable conversation mode","promptInput.conversationMode.disable.title":"Disable conversation mode","promptInput.conversationMode.error.title":"Conversation playback failed","promptInput.conversationMode.error.message":"Unable to continue speaking assistant replies.","promptInput.voiceInput.start.title":"Start voice input","promptInput.voiceInput.stop.title":"Stop recording and transcribe","promptInput.voiceInput.transcribing.title":"Transcribing audio","promptInput.voiceInput.error.title":"Voice input failed","promptInput.voiceInput.error.permission":"Microphone access is required to record voice input.","promptInput.voiceInput.error.permissionDenied":"Microphone access was denied by macOS.","promptInput.voiceInput.error.unsupported":"Voice input is not supported in this browser.","promptInput.voiceInput.error.transcribe":"Unable to transcribe the recorded audio."},be={"remoteAccess.eyebrow":"Remote handover","remoteAccess.title":"Connect to CodeNomad remotely","remoteAccess.subtitle":"Use the addresses below to open CodeNomad from another device.","remoteAccess.close":"Close remote access","remoteAccess.refresh":"Refresh","remoteAccess.sections.listeningMode.label":"Listening mode","remoteAccess.sections.listeningMode.help":"Allow or limit remote handovers by binding to all interfaces or just localhost.","remoteAccess.toggle.on":"On","remoteAccess.toggle.off":"Off","remoteAccess.toggle.title":"Allow connections from other IPs","remoteAccess.toggle.caption.all":"Binding to 0.0.0.0","remoteAccess.toggle.caption.local":"Binding to 127.0.0.1","remoteAccess.toggle.note":"Changing this requires a restart and temporarily stops all active instances. Share the addresses below once the server restarts.","remoteAccess.listeningMode.restartConfirm.message":"Restart to apply listening mode? This will stop all running instances.","remoteAccess.listeningMode.restartConfirm.title.all":"Open to other devices","remoteAccess.listeningMode.restartConfirm.title.local":"Limit to this device","remoteAccess.listeningMode.restartConfirm.confirmLabel":"Restart now","remoteAccess.listeningMode.restartConfirm.cancelLabel":"Cancel","remoteAccess.restart.errorManual":"Unable to restart automatically. Please restart the app to apply the change.","remoteAccess.sections.serverPassword.label":"Server password","remoteAccess.sections.serverPassword.help":"Remote handovers require a password. Set a memorable one to enable logins from other devices.","remoteAccess.authStatus.unavailable":"Authentication status unavailable.","remoteAccess.username":"Username: {username}","remoteAccess.password.status.set":"A password is set for remote access.","remoteAccess.password.status.unset":"No memorable password is set yet. Set one to allow remote handover logins.","remoteAccess.password.actions.cancel":"Cancel","remoteAccess.password.actions.change":"Change password","remoteAccess.password.actions.set":"Set password","remoteAccess.password.form.newPassword":"New password","remoteAccess.password.form.confirmPassword":"Confirm password","remoteAccess.password.form.placeholder":"At least 8 characters","remoteAccess.password.error.tooShort":"Password must be at least 8 characters.","remoteAccess.password.error.mismatch":"Passwords do not match.","remoteAccess.password.save.saving":"Saving…","remoteAccess.password.save.label":"Save password","remoteAccess.sections.addresses.label":"Reachable addresses","remoteAccess.sections.addresses.help":"Launch or scan from another machine to hand over control.","remoteAccess.addresses.loading":"Loading addresses…","remoteAccess.addresses.none":"No addresses available yet.","remoteAccess.addresses.actions.showOther":"Show {count} other addresses","remoteAccess.addresses.actions.hideOther":"Hide other addresses","remoteAccess.address.scope.network":"Network","remoteAccess.address.scope.loopback":"Loopback","remoteAccess.address.scope.internal":"Internal","remoteAccess.address.open":"Open","remoteAccess.address.showQr":"Show QR","remoteAccess.address.hideQr":"Hide QR","remoteAccess.address.qrAlt":"QR for {url}"},Se={"sessionPicker.title":"OpenCode • {folder}","sessionPicker.empty.noPrevious":"No previous sessions","sessionPicker.resume.title":"Resume a session ({count}):","sessionPicker.session.untitled":"Untitled","sessionPicker.divider.or":"or","sessionPicker.new.title":"Start new session:","sessionPicker.agents.loading":"Loading agents...","sessionPicker.actions.creating":"Creating...","sessionPicker.actions.createSession":"Create Session","sessionPicker.actions.cancel":"Cancel","sessionList.header.title":"Sessions","sessionList.session.untitled":"Untitled","sessionList.status.working":"Working","sessionList.status.compacting":"Compacting","sessionList.status.idle":"Idle","sessionList.status.retrying":"Retrying","sessionList.status.retryingIn":"Retrying in {seconds}s","sessionList.status.retryTooltip":"{message} (Attempt {attempt})","sessionList.status.retryToast":"{countdown}: {message} (Attempt {attempt})","sessionList.status.needsPermission":"Needs Permission","sessionList.status.needsInput":"Needs Input","sessionList.expand.collapseAriaLabel":"Collapse session","sessionList.expand.expandAriaLabel":"Expand session","sessionList.expand.collapseTitle":"Collapse","sessionList.expand.expandTitle":"Expand","sessionList.actions.newSession.ariaLabel":"New session","sessionList.actions.newSession.title":"New session","sessionList.actions.copyId.ariaLabel":"Copy session ID","sessionList.actions.copyId.title":"Copy session ID","sessionList.actions.reload.ariaLabel":"Reload session","sessionList.actions.reload.title":"Reload session","sessionList.actions.rename.ariaLabel":"Rename session","sessionList.actions.rename.title":"Rename session","sessionList.actions.delete.ariaLabel":"Delete session","sessionList.actions.delete.title":"Delete session","sessionList.copyId.success":"Session ID copied","sessionList.copyId.error":"Unable to copy session ID","sessionList.reload.error":"Unable to reload session","sessionList.delete.error":"Unable to delete session","sessionList.delete.title":"Delete session","sessionList.delete.confirmMessage":'Delete "{label}"? This cannot be undone.',"sessionList.delete.confirmLabel":"Delete","sessionList.delete.cancelLabel":"Cancel","sessionList.rename.error":"Unable to rename session","sessionList.filter.placeholder":"Search sessions…","sessionList.filter.ariaLabel":"Search sessions","sessionList.selection.selectAllLabel":"Select all","sessionList.selection.selectAllAriaLabel":"Select all sessions","sessionList.selection.clearLabel":"Clear","sessionList.selection.clearAriaLabel":"Clear selection","sessionList.selection.checkboxAriaLabel":"Select session","sessionList.bulkDelete.button":"Delete {count}","sessionList.bulkDelete.ariaLabel":"Delete {count} selected sessions","sessionList.bulkDelete.title":"Delete sessions","sessionList.bulkDelete.confirmMessage":"Delete {count} selected sessions? This cannot be undone.","sessionList.bulkDelete.confirmLabel":"Delete","sessionList.bulkDelete.cancelLabel":"Cancel","sessionList.bulkDelete.error":"Unable to delete {count} sessions","sessionRenameDialog.title":"Rename Session","sessionRenameDialog.description.withLabel":'Update the title for "{label}".',"sessionRenameDialog.description.default":"Set a new title for this session.","sessionRenameDialog.input.label":"Session name","sessionRenameDialog.input.placeholder":"Enter a session name","sessionRenameDialog.actions.cancel":"Cancel","sessionRenameDialog.actions.rename":"Rename","sessionRenameDialog.actions.renaming":"Renaming…","sessionView.fallback.sessionNotFound":"Session not found","sessionView.alerts.abortFailed.message":"Failed to stop session","sessionView.alerts.abortFailed.title":"Stop failed","sessionView.alerts.revertFailed.message":"Failed to revert to message","sessionView.alerts.revertFailed.title":"Revert failed","sessionView.alerts.deleteUpToFailed.message":"Failed to delete messages","sessionView.alerts.deleteUpToFailed.title":"Delete failed","sessionView.alerts.forkFailed.message":"Failed to fork session","sessionView.alerts.forkFailed.title":"Fork failed","sessionView.attachments.expandPastedTextAriaLabel":"Expand pasted text","sessionView.attachments.insertPastedTextTitle":"Insert pasted text","sessionView.attachments.removeAriaLabel":"Remove attachment","sessionEvents.sessionCompactedToast":"Session {label} was compacted","sessionEvents.sessionError.unknown":"Unknown error","sessionEvents.sessionError.title":"Session error","sessionEvents.sessionError.message":"Error: {message}","sessionState.cleanup.deepConfirm.message":"This cleanup may be slow, and may delete sessions you didn't intend to delete. Are you sure?","sessionState.cleanup.deepConfirm.title":"Deep Clean Sessions","sessionState.cleanup.deepConfirm.detail":"Deep Clean Sessions will delete all sessions that have no messages, remove any finished sub-agent sessions, and clear out any unused forks of a session.","sessionState.cleanup.deepConfirm.confirmLabel":"Continue","sessionState.cleanup.deepConfirm.cancelLabel":"Cancel","sessionState.cleanup.toast.one":"Cleaned up {count} blank session","sessionState.cleanup.toast.other":"Cleaned up {count} blank sessions"},we={"instanceServiceStatus.sections.lsp":"LSP Servers","instanceServiceStatus.sections.mcp":"MCP Servers","instanceServiceStatus.sections.plugins":"Plugins","instanceServiceStatus.lsp.loading":"Loading LSP servers...","instanceServiceStatus.lsp.empty":"No LSP servers detected.","instanceServiceStatus.lsp.status.connected":"Connected","instanceServiceStatus.lsp.status.error":"Error","instanceServiceStatus.mcp.loading":"Loading MCP servers...","instanceServiceStatus.mcp.empty":"No MCP servers detected.","instanceServiceStatus.mcp.toggleAriaLabel":"Toggle {name} MCP server","instanceServiceStatus.plugins.loading":"Loading plugins...","instanceServiceStatus.plugins.empty":"No plugins configured.","permissionBanner.pendingRequests.one":"{count} pending request","permissionBanner.pendingRequests.other":"{count} pending requests","permissionBanner.detail.permission.one":"{count} permission","permissionBanner.detail.permission.other":"{count} permissions","permissionBanner.detail.question.one":"{count} question","permissionBanner.detail.question.other":"{count} questions","permissionBanner.detail.wrapper":" ({detail})","agentSelector.placeholder":"Select agent...","agentSelector.badge.subagent":"subagent","agentSelector.none":"None","agentSelector.trigger.primary":"Agent: {agent}","modelSelector.placeholder.search":"Search models...","modelSelector.none":"None","modelSelector.trigger.primary":"Model: {model}","modelSelector.favoritesOnly.toggle.ariaLabel":"Toggle favorites only","modelSelector.favoritesOnly.showAll":"Show all models","modelSelector.favorite.add":"Add to favorites","modelSelector.favorite.remove":"Remove from favorites","thinkingSelector.variant.default":"Default","thinkingSelector.label":"Thinking: {variant}","envEditor.title":"Environment Variables","envEditor.count.one":"({count} variable)","envEditor.count.other":"({count} variables)","envEditor.fields.name.placeholder":"Variable name","envEditor.fields.name.readOnlyTitle":"Variable name (read-only)","envEditor.fields.value.placeholder":"Variable value","envEditor.actions.remove.title":"Remove variable","envEditor.actions.add.title":"Add variable","envEditor.empty":"No environment variables configured. Add variables above to customize the OpenCode environment.","envEditor.help":"These variables will be available in the OpenCode environment when starting instances.","contextUsagePanel.headings.tokens":"Tokens","contextUsagePanel.headings.context":"Context","contextUsagePanel.labels.input":"Input","contextUsagePanel.labels.output":"Output","contextUsagePanel.labels.cost":"Cost","contextUsagePanel.labels.used":"Used","contextUsagePanel.labels.available":"Avail","contextUsagePanel.unavailable":"--","settings.title":"Settings","settings.navigationAriaLabel":"Settings sections","settings.close":"Close settings","settings.content.eyebrow":"Workspace preferences","settings.open.title":"Open settings","settings.open.ariaLabel":"Open settings","settings.nav.appearance":"Appearance","settings.nav.notifications":"Notifications","settings.nav.remote":"Remote Access","settings.nav.speech":"Speech","settings.nav.opencode":"OpenCode","settings.scope.device":"This device","settings.scope.server":"Server setting","settings.common.enabled":"Enabled","settings.common.disabled":"Disabled","settings.section.appearance.title":"Appearance","settings.section.appearance.subtitle":"Adjust how the app looks on this device.","settings.appearance.theme.title":"Theme","settings.appearance.theme.subtitle":"Choose the color mode used throughout the app.","settings.appearance.theme.option.system":"Match your operating system setting","settings.appearance.theme.option.light":"Use the light appearance","settings.appearance.theme.option.dark":"Use the dark appearance","settings.section.notifications.title":"Notifications","settings.section.notifications.subtitle":"Control OS-level notifications for session activity.","settings.notifications.permission.granted":"Granted","settings.notifications.permission.denied":"Denied","settings.notifications.permission.default":"Not granted","settings.notifications.permission.unsupported":"Unsupported","settings.notifications.messages.unsupportedEnvironment":"OS notifications are not supported in this environment.","settings.notifications.messages.permissionDenied":"Notification permission denied. Enable notifications in your system or browser settings.","settings.notifications.messages.permissionNotGranted":"Notification permission not granted.","settings.notifications.messages.unsupportedGeneral":"Notifications are not supported in this environment.","settings.notifications.messages.permissionGranted":"Permission granted. You can now enable notifications.","settings.notifications.messages.permissionRequestDenied":"Permission denied. You may need to enable notifications in your system or browser settings.","settings.notifications.sessionStatus.title":"Session status notifications","settings.notifications.sessionStatus.subtitle":"Receive alerts when sessions need your attention.","settings.notifications.enable.title":"Enable notifications","settings.notifications.enable.permission":"Permission: {permission}","settings.notifications.requestPermission.title":"Request permission","settings.notifications.requestPermission.subtitle":"Allow the app to send notifications on this device.","settings.notifications.requestPermission.action":"Request","settings.notifications.allowVisible.title":"Notify when the app is focused","settings.notifications.allowVisible.subtitle":"Keep alerts enabled even while this window is visible.","settings.notifications.unsupportedNote":"Notifications are not supported in this environment. The notifications control stays disabled.","settings.notifications.events.title":"Notify me when","settings.notifications.events.subtitle":"Choose which session events should send alerts.","settings.notifications.events.needsInput":"Session needs input","settings.notifications.events.idle":"Session becomes idle","settings.notifications.status.enabled":"Notifications enabled","settings.notifications.status.disabled":"Notifications disabled","settings.notifications.status.unsupported":"Notifications unsupported","settings.section.remote.title":"Remote Access","settings.section.remote.subtitle":"Review how this server is exposed on your network and secure access credentials.","settings.section.opencode.title":"OpenCode","settings.section.opencode.subtitle":"Choose the OpenCode binary and environment used for new instances.","settings.opencode.runtime.title":"Runtime","settings.opencode.runtime.subtitle":"Configure which OpenCode binary new instances launch with.","settings.opencode.logLevel.title":"OpenCode Log Level","settings.opencode.logLevel.subtitle":"Control the log verbosity used when launching new OpenCode instances.","settings.opencode.logLevel.selector.title":"Default log level","settings.opencode.logLevel.selector.subtitle":"Choose how verbose new OpenCode instances should be.","settings.opencode.logLevel.option.debug":"Debug","settings.opencode.logLevel.option.info":"Info","settings.opencode.logLevel.option.warn":"Warn","settings.opencode.logLevel.option.error":"Error","settings.appearance.behavior.title":"Interaction","settings.appearance.behavior.subtitle":"Message, diff, and input defaults.","settings.behavior.keyboardHints.title":"Keyboard shortcut hints","settings.behavior.keyboardHints.subtitle":"Show keyboard shortcut hints across the UI.","settings.behavior.thinking.title":"Thinking sections","settings.behavior.thinking.subtitle":"Show or hide AI thinking sections in messages.","settings.behavior.thinkingDefault.title":"Thinking default","settings.behavior.thinkingDefault.subtitle":"Choose whether thinking sections start expanded or collapsed.","settings.behavior.timelineTools.title":"Timeline tool calls","settings.behavior.timelineTools.subtitle":"Show or hide tool call entries in the message timeline.","settings.behavior.diffView.title":"Diff view","settings.behavior.diffView.subtitle":"Choose how tool-call diffs are displayed.","settings.behavior.diffView.option.split":"Split","settings.behavior.diffView.option.unified":"Unified","settings.behavior.toolOutputsDefault.title":"Tool outputs default","settings.behavior.toolOutputsDefault.subtitle":"Choose whether tool outputs start expanded or collapsed.","settings.behavior.diagnosticsDefault.title":"Diagnostics default","settings.behavior.diagnosticsDefault.subtitle":"Choose whether diagnostics output starts expanded or collapsed.","settings.behavior.toolInputsVisibility.title":"Tool inputs visibility","settings.behavior.toolInputsVisibility.subtitle":"Set default visibility for tool call input arguments.","settings.behavior.usageMetrics.title":"Token usage metrics","settings.behavior.usageMetrics.subtitle":"Show or hide token and cost stats for assistant messages.","settings.behavior.autoCleanup.title":"Auto-cleanup blank sessions","settings.behavior.autoCleanup.subtitle":"Automatically clean up blank sessions when creating new ones.","settings.behavior.promptVoiceInput.title":"Prompt voice input","settings.behavior.promptVoiceInput.subtitle":"Show the microphone control for speech-to-text prompt input when speech is configured.","settings.behavior.promptSubmit.title":"Enter to submit","settings.behavior.promptSubmit.subtitle":"Use Enter to submit prompts; Cmd/Ctrl+Enter inserts a new line.","settings.speech.title":"Speech","settings.speech.subtitle":"Configure speech-to-text now and text-to-speech groundwork for later features.","settings.speech.provider.title":"Provider","settings.speech.provider.subtitle":"Speech requests use the server-side speech adapter.","settings.speech.provider.openaiCompatible":"OpenAI-compatible","settings.speech.status.loading":"Checking configuration...","settings.speech.status.configured":"Configured","settings.speech.status.missing":"Missing API key","settings.speech.status.error":"Speech service unavailable","settings.speech.apiKey.title":"API key","settings.speech.apiKey.subtitle":"Used for CodeNomad-managed speech requests.","settings.speech.apiKey.placeholder":"Enter a new API key","settings.speech.apiKey.storedNote":"A saved API key is hidden. Enter a new value to replace it, or leave the field blank to keep it.","settings.speech.apiKey.clearAction":"Clear saved key","settings.speech.apiKey.clearPending":"The saved API key will be removed when you save.","settings.speech.baseUrl.title":"Base URL","settings.speech.baseUrl.subtitle":"Optional override for OpenAI-compatible speech endpoints.","settings.speech.baseUrl.placeholder":"https://api.openai.com/v1","settings.speech.sttModel.title":"Transcription model","settings.speech.sttModel.subtitle":"Model used for prompt speech-to-text requests.","settings.speech.ttsModel.title":"Speech model","settings.speech.ttsModel.subtitle":"Default text-to-speech model reserved for future playback features.","settings.speech.ttsVoice.title":"Default voice","settings.speech.ttsVoice.subtitle":"Default text-to-speech voice reserved for future playback features.","settings.speech.playbackMode.title":"Playback mode","settings.speech.playbackMode.subtitle":"Choose whether TTS starts playing as audio streams in or after the full file is generated.","settings.speech.playbackMode.streaming":"Streaming","settings.speech.playbackMode.buffered":"Buffered","settings.speech.ttsFormat.title":"Output format","settings.speech.ttsFormat.subtitle":"Choose the audio format for synthesized speech. Streaming support depends on your provider and browser.","settings.speech.help":"Prompt voice input appears when speech transcription is configured and supported. Message playback uses the TTS mode and format selected here.","settings.speech.compatibility.streamingUnavailable":"Your current speech provider configuration does not advertise streaming TTS. Switch playback mode to buffered if you want playback to work now.","settings.speech.compatibility.browserStreamingUnavailable":"Your current browser cannot stream the selected TTS format. Choose buffered playback or switch to a different format.","settings.speech.compatibility.runtimeNote":"All formats stay selectable in streaming mode. Some browser and provider combinations may still fail at playback time.","settings.speech.testPlayback.action":"Test playback","settings.speech.testPlayback.generating":"Generating sample","settings.speech.testPlayback.stop":"Stop sample","settings.speech.testPlayback.sample":"Thank you for using CodeNomad, your speech settings are working fine.","settings.speech.testPlayback.note":"The test uses your current playback mode and format immediately. Save API key, base URL, model, or voice changes first if you want those reflected too.","settings.speech.save.action":"Save","settings.speech.save.saving":"Saving...","settings.speech.save.saved":"Saved","settings.speech.save.unsaved":"Unsaved changes","settings.speech.save.error":"Save failed","settings.nav.sidecars":"SideCars","settings.section.sidecars.eyebrow":"Server services","settings.section.sidecars.title":"SideCars","settings.section.sidecars.subtitle":"Configure local services listening on fixed ports that the server can proxy into tabs.","sidecars.form.name":"Name","sidecars.form.validation":"Enter a valid SideCar name and port.","sidecars.form.port":"Port","sidecars.form.insecure":"Use HTTP","sidecars.form.protocol":"Protocol","sidecars.form.protocol.help":"Choose how the proxy should connect to the local service.","sidecars.form.protocol.https":"HTTPS","sidecars.form.protocol.http":"HTTP","sidecars.form.prefixMode":"Prefix mode","sidecars.form.prefixMode.help":"Choose whether the SideCar receives the public /sidecars path prefix.","sidecars.form.prefixMode.strip":"Strip prefix","sidecars.form.prefixMode.preserve":"Preserve prefix","sidecars.form.add":"Add SideCar","sidecars.kind.port":"Port","sidecars.status.running":"Running","sidecars.status.stopped":"Stopped","sidecars.basePath":"Base path","sidecars.settings.listTitle":"Configured SideCars","sidecars.settings.listSubtitle":"Review the port-based SideCars available in the picker.","sidecars.settings.empty":"No SideCars configured yet.","sidecars.picker.title":"Open SideCar","sidecars.picker.loading":"Loading SideCars...","sidecars.picker.subtitle":"Choose an available SideCar to open in a new tab.","sidecars.picker.empty":"No port-based SideCars are available yet.","sidecars.picker.close":"Close","sidecars.open.errorTitle":"Unable to open SideCar","sidecars.open.notFound":"SideCar not found.","sidecars.open.notRunning":"SideCar is not reachable on its configured port.","sidecars.back":"Back","sidecars.refresh":"Refresh","sidecars.path":"Path","sidecars.go":"Go"},ve={"time.relative.justNow":"just now","time.relative.daysAgoShort":"{count}d ago","time.relative.hoursAgoShort":"{count}h ago","time.relative.minutesAgoShort":"{count}m ago"},ye={"toolCall.pending.waitingToRun":"Waiting to run...","toolCall.error.label":"Error:","toolCall.header.copyTitle":"Copy tool call title","toolCall.header.copyAriaLabel":"Copy tool call title","toolCall.header.showInputTitle":"Show Tool Arguments","toolCall.header.showInputAriaLabel":"Show Tool Arguments","toolCall.header.hideInputTitle":"Hide Tool Arguments","toolCall.header.hideInputAriaLabel":"Hide Tool Arguments","toolCall.io.input":"Tool Input","toolCall.io.output":"Tool Output","toolCall.diff.label":"Diff","toolCall.diff.label.withPath":"Diff · {path}","toolCall.diff.viewMode.ariaLabel":"Diff view mode","toolCall.diff.viewMode.split":"Split","toolCall.diff.viewMode.unified":"Unified","toolCall.diff.switchToSplit":"Switch to split view","toolCall.diff.switchToUnified":"Switch to unified view","toolCall.diff.enableWordWrap":"Enable word wrap","toolCall.diff.disableWordWrap":"Disable word wrap","toolCall.diff.copyPatch":"Copy patch","toolCall.diagnostics.title":"Diagnostics","toolCall.diagnostics.ariaLabel":"Diagnostics","toolCall.diagnostics.ariaLabel.withLabel":"Diagnostics {label}","toolCall.diagnostics.severity.error.short":"ERR","toolCall.diagnostics.severity.warning.short":"WARN","toolCall.diagnostics.severity.info.short":"INFO","toolCall.renderer.toolName.shell":"Shell","toolCall.renderer.toolName.fetch":"Fetch","toolCall.renderer.toolName.invalid":"Invalid","toolCall.renderer.toolName.plan":"Plan","toolCall.renderer.toolName.applyPatch":"Apply patch","toolCall.renderer.action.working":"Working...","toolCall.renderer.action.writingCommand":"Writing command...","toolCall.renderer.action.preparingEdit":"Preparing edit...","toolCall.renderer.action.readingFile":"Reading file...","toolCall.renderer.action.preparingWrite":"Preparing write...","toolCall.renderer.action.preparingPatch":"Preparing patch...","toolCall.renderer.action.planning":"Planning...","toolCall.renderer.action.fetchingFromWeb":"Fetching from the web...","toolCall.renderer.action.findingFiles":"Finding files...","toolCall.renderer.action.searchingContent":"Searching content...","toolCall.renderer.action.listingDirectory":"Listing directory...","toolCall.renderer.bash.title.timeout":"Timeout: {timeout}","toolCall.renderer.read.detail.offset":"Offset: {offset}","toolCall.renderer.read.detail.limit":"Limit: {limit}","toolCall.renderer.todo.empty":"No plan items yet.","toolCall.renderer.todo.status.pending":"Pending","toolCall.renderer.todo.status.inProgress":"In progress","toolCall.renderer.todo.status.completed":"Completed","toolCall.renderer.todo.status.cancelled":"Cancelled","toolCall.renderer.todo.title.plan":"Plan","toolCall.renderer.todo.title.creating":"Creating plan","toolCall.renderer.todo.title.completing":"Completing plan","toolCall.renderer.todo.title.updating":"Updating plan","toolCall.permission.status.required":"Permission Required","toolCall.permission.status.queued":"Permission Queued","toolCall.permission.requestedDiff.label":"Requested diff","toolCall.permission.requestedDiff.withPath":"Requested diff · {path}","toolCall.permission.queuedText":"Waiting for earlier permission responses.","toolCall.permission.actions.allowOnce":"Allow Once","toolCall.permission.actions.alwaysAllow":"Always Allow","toolCall.permission.actions.deny":"Deny","toolCall.permission.shortcuts.allowOnce":"Allow once","toolCall.permission.shortcuts.alwaysAllow":"Always allow","toolCall.permission.shortcuts.deny":"Deny","toolCall.permission.errors.unableToUpdate":"Unable to update permission","permissionApproval.title":"Requests","permissionApproval.empty":"No pending requests.","permissionApproval.kind.permission":"Permission","permissionApproval.kind.question":"Question","permissionApproval.questionCount.one":"{count} question","permissionApproval.questionCount.other":"{count} questions","permissionApproval.status.active":"Active","permissionApproval.actions.closeAriaLabel":"Close","permissionApproval.actions.goToSession":"Go to Session","permissionApproval.actions.loadingSession":"Loading…","permissionApproval.actions.loadSession":"Load Session","permissionApproval.actions.allowOnce":"Allow Once","permissionApproval.actions.alwaysAllow":"Always Allow","permissionApproval.actions.deny":"Deny","permissionApproval.fallbackHint":"Load session for more information.","permissionApproval.errors.unableToUpdatePermission":"Unable to update permission","toolCall.question.status.required":"Question Required","toolCall.question.status.queued":"Question Queued","toolCall.question.status.questions":"Questions","toolCall.question.action.awaitingAnswers":"Awaiting answers...","toolCall.question.title.questions":"Questions","toolCall.question.title.askingQuestions":"Asking questions","toolCall.question.type.one":"Question","toolCall.question.type.other":"Questions","toolCall.question.number":"Q{number}:","toolCall.question.multiple":"Multiple","toolCall.question.custom.title":"Type a custom answer","toolCall.question.custom.label":"Custom answer","toolCall.question.custom.placeholder":"Type your own answer","toolCall.question.actions.submit":"Submit","toolCall.question.actions.dismiss":"Dismiss","toolCall.question.shortcuts.submit":"Submit","toolCall.question.shortcuts.dismiss":"Dismiss","toolCall.question.queuedText":"Waiting for earlier responses.","toolCall.question.validation.answerAll":"Please answer all questions before submitting.","toolCall.question.errors.unableToReply":"Unable to reply","toolCall.question.errors.unableToDismiss":"Unable to dismiss","toolCall.task.action.delegating":"Delegating...","toolCall.task.sections.prompt":"Prompt","toolCall.task.sections.steps":"Steps","toolCall.task.sections.output":"Output","toolCall.task.steps.count":"{count} steps","toolCall.task.meta.agentModel":"Agent: {agent} • Model: {model}","toolCall.task.meta.agent":"Agent: {agent}","toolCall.task.meta.model":"Model: {model}","toolCall.status.pending":"Pending","toolCall.status.running":"Running","toolCall.status.completed":"Completed","toolCall.status.error":"Error","toolCall.status.unknown":"Unknown","toolCall.applyPatch.action.preparing":"Preparing apply_patch...","toolCall.applyPatch.title.withFileCount.one":"{tool} ({count} file)","toolCall.applyPatch.title.withFileCount.other":"{tool} ({count} files)","toolCall.applyPatch.fileFallback":"File {number}"};function Ce(...e){const t={};for(const s of e)for(const[o,n]of Object.entries(s)){if(o in t)throw new Error(`Duplicate i18n message key: ${o}`);t[o]=n}return t}const b=Ce(me,ae,ue,ve,re,ce,de,pe,ge,Se,fe,ye,he,we,be,le),ke=["en","es","fr","ru","ja","zh-Hans","he"],O=new Map(ke.map(e=>[e.toLowerCase(),e])),Le=new Set(["he"]),B=new Map([["en",b]]),A=new Map,Pe={en:async()=>b,es:async()=>(await w(async()=>{const{esMessages:e}=await import("./index-C6C534z4.js");return{esMessages:e}},__vite__mapDeps([0,1,2,3,4,5]))).esMessages,fr:async()=>(await w(async()=>{const{frMessages:e}=await import("./index-z-uWAw1M.js");return{frMessages:e}},__vite__mapDeps([6,1,2,3,4,5]))).frMessages,ru:async()=>(await w(async()=>{const{ruMessages:e}=await import("./index-NrX0Q8eA.js");return{ruMessages:e}},__vite__mapDeps([7,1,2,3,4,5]))).ruMessages,ja:async()=>(await w(async()=>{const{jaMessages:e}=await import("./index-D7RMnYOz.js");return{jaMessages:e}},__vite__mapDeps([8,1,2,3,4,5]))).jaMessages,"zh-Hans":async()=>(await w(async()=>{const{zhHansMessages:e}=await import("./index-CMh7_0rm.js");return{zhHansMessages:e}},__vite__mapDeps([9,1,2,3,4,5]))).zhHansMessages,he:async()=>(await w(async()=>{const{heMessages:e}=await import("./index-Btyhpe4o.js");return{heMessages:e}},__vite__mapDeps([10,1,2,3,4,5]))).heMessages};function Ae(e){return Le.has(e)?"rtl":"ltr"}function Ie(e){return e.trim().replace(/_/g,"-")}function _(e){if(!e)return null;const s=Ie(e).toLowerCase(),o=O.get(s);if(o)return o;const i=s.split("-")[0];return i?i==="zh"?O.get("zh-hans")??null:O.get(i)??null:null}function z(){if(typeof navigator>"u")return null;const e=Array.isArray(navigator.languages)&&navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[];for(const t of e){const s=_(t);if(s)return s}return null}function De(e,t){return t?e.replace(/\{(\w+)\}/g,(s,o)=>{const n=t[o];return n==null?"":String(n)}):e}function j(e,t,s){const o=e[t],n=b[t];return De(o??n??t,s)}const[Te,L]=F(0);let f=b,u="en";function Ee(e){return B.get(e)??b}async function Q(e){const t=B.get(e);if(t)return t;const s=A.get(e);if(s)return s;const o=Pe[e],n=o().then(i=>(B.set(e,i),A.delete(e),i)).catch(i=>{throw A.delete(e),i});return A.set(e,n),n}async function Ve(e){const t=_(e??void 0)??z()??"en";try{return f=await Q(t),u=t,L(s=>s+1),t}catch{return f=b,u="en",L(s=>s+1),"en"}}function qe(e,t){return Te(),j(f,e,t)}const K=ee(),We=e=>{const{preferences:t}=se(),[s,o]=F(u),[n,i]=F(u),a=f,c=u,m=typeof document<"u"?document.documentElement.lang:"",S=typeof document<"u"?document.documentElement.dir:"";X(()=>{const l=z();l&&o(l)});const y=U(()=>_(t().locale)??s()??"en"),p=U(()=>Ee(n()));function M(l,C){return j(p(),l,C)}x(()=>{const l=y();let C=!1;Q(l).then(N=>{C||(i(l),u=l,f=N,L(J=>J+1))}).catch(()=>{C||(i("en"),f=b,u="en",L(N=>N+1))}),V(()=>{C=!0})}),x(()=>{if(typeof document>"u")return;const l=y();document.documentElement.dir=Ae(l),document.documentElement.lang=l}),V(()=>{f=a,u=c,L(l=>l+1),typeof document<"u"&&(document.documentElement.lang=m,document.documentElement.dir=S)});const R={locale:y,t:M};return Z(K.Provider,{value:R,get children(){return e.children}})};function He(){const e=te(K);if(!e)throw new Error("useI18n must be used within I18nProvider");return e}function Y(){if(typeof window>"u"||window.__CODENOMAD_WINDOW_CONTEXT__==="remote")return"remote";if(window.__CODENOMAD_WINDOW_CONTEXT__==="local")return"local";const e=window;return typeof e.electronAPI<"u"||typeof e.__TAURI__<"u"||typeof navigator<"u"&&/tauri/i.test(navigator.userAgent)?"local":"remote"}function D(){if(typeof window>"u")return"web";const e=window.__CODENOMAD_RUNTIME_HOST__;if(e)return e;const t=window;return typeof t.electronAPI<"u"?"electron":typeof t.__TAURI__<"u"||typeof navigator<"u"&&/tauri/i.test(navigator.userAgent)?"tauri":"web"}function Me(){if(typeof navigator>"u")return"desktop";const e=navigator.userAgentData;if(e!=null&&e.mobile)return"mobile";const t=navigator.userAgent.toLowerCase();return/android|iphone|ipad|ipod|blackberry|mini|windows phone|mobile|silk/.test(t)?"mobile":"desktop"}const Re=oe("actions");let g=null;function Ne(){return g||(g={host:D(),platform:Me(),windowContext:Y()},typeof window<"u"&&Re.info(`[runtime] host=${g.host} platform=${g.platform} context=${g.windowContext}`),g)}const Ge=Ne(),Oe=()=>D()==="electron",Fe=()=>D()==="tauri",ze=()=>D()==="web",T=()=>Oe()||Fe(),E=()=>Y()==="local",je=()=>T()&&E(),Qe=()=>T()&&E(),Ke=()=>T()&&E(),Ye=()=>T()&&E();function r(e,t,s,o){if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?o:s==="a"?o.call(e):o?o.value:t.get(e)}function k(e,t,s,o,n){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,s),s}var h,d,v,I;const W="__TAURI_TO_IPC_KEY__";function $(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}class Be{constructor(t){h.set(this,void 0),d.set(this,0),v.set(this,[]),I.set(this,void 0),k(this,h,t||(()=>{})),this.id=$(s=>{const o=s.index;if("end"in s){o==r(this,d,"f")?this.cleanupCallback():k(this,I,o);return}const n=s.message;if(o==r(this,d,"f")){for(r(this,h,"f").call(this,n),k(this,d,r(this,d,"f")+1);r(this,d,"f")in r(this,v,"f");){const i=r(this,v,"f")[r(this,d,"f")];r(this,h,"f").call(this,i),delete r(this,v,"f")[r(this,d,"f")],k(this,d,r(this,d,"f")+1)}r(this,d,"f")===r(this,I,"f")&&this.cleanupCallback()}else r(this,v,"f")[o]=n})}cleanupCallback(){window.__TAURI_INTERNALS__.unregisterCallback(this.id)}set onmessage(t){k(this,h,t)}get onmessage(){return r(this,h,"f")}[(h=new WeakMap,d=new WeakMap,v=new WeakMap,I=new WeakMap,W)](){return`__CHANNEL__:${this.id}`}toJSON(){return this[W]()}}class H{constructor(t,s,o){this.plugin=t,this.event=s,this.channelId=o}async unregister(){return P(`plugin:${this.plugin}|remove_listener`,{event:this.event,channelId:this.channelId})}}async function $e(e,t,s){const o=new Be(s);try{return await P(`plugin:${e}|register_listener`,{event:t,handler:o}),new H(e,t,o.id)}catch{return await P(`plugin:${e}|registerListener`,{event:t,handler:o}),new H(e,t,o.id)}}async function P(e,t={},s){return window.__TAURI_INTERNALS__.invoke(e,t,s)}var G;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(G||(G={}));async function _e(e,t){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(e,t),await P("plugin:event|unlisten",{event:e,eventId:t})}async function Je(e,t,s){var o;const n=(o=void 0)!==null&&o!==void 0?o:{kind:"Any"};return P("plugin:event|listen",{event:e,target:n,handler:$(t)}).then(i=>async()=>_e(e,i))}export{We as I,w as _,Oe as a,Fe as b,je as c,Ye as d,Qe as e,ze as f,Ke as g,$e as h,P as i,b as j,Je as l,Ce as m,Ve as p,Ge as r,qe as t,He as u};
|