/** * The ja (Japanese) dictionary for the betterSidebar namespace. * * Mirrors the key set of `zh` in `locales.ts`. The sidebar's `t()` * consults this dict when `attachBetterLocale(store)` has been called * with an active better-locale store whose `active` is `'ja'`; absent * that, the existing zh/en chain runs unchanged. * * Translation conventions: * - Common dev-tool loanwords stay in katakana (ターミナル, ブラウザー, サンドボックス). * - Git vocabulary follows the GitHub Japan style guide (ステージ, コミット, ブランチ). * - Settings labels end in する/名/方法 to mirror the zh 「…行为/方式」 cadence. * - Placeholders keep `{name}` verbatim (interpolation runs after lookup). * - English brand names (VS Code, Cursor, Zed, SSH) stay as-is. */ /** The ja dictionary (key-set-equal to zh, enforced by the type annotation in locales.ts). */ export const ja: Record = { files: 'ファイル', explorer: 'エクスプローラー', git: 'ソース管理', terminal: 'ターミナル', editor: 'エディター', editorExplorer: 'ファイルの開き方', editorExplorerDesc: 'ファイルを開く方法を制御', editorExplorerMerged: '統合', editorExplorerMergedDesc: '同じウィンドウ内でファイルを切り替え。新しいウィンドウはファイルツューを展開した状態で開く', editorExplorerSplit: '個別', editorExplorerSplitDesc: 'パスなしウィンドウはエクスプローラー単体(ツリーのみ)。各ファイルは別ウィンドウで開く(ツリーは格納済み、デフォルトで折りたたみ)', editorTreeToggle: 'ファイルツリーパネル', editorPathPlaceholder: 'ファイルパス(セッションディレクトリからの相対 or 絶対)、Enter で開く', editorSearchPlaceholder: 'ファイル名で検索…', editorSearchNoResults: '一致するファイルはありません', editorSearchTruncated: '結果が多すぎます — 一部のみ表示', editorEmptyHint: '右のファイルツリーまたは上のパス入力欄からファイルを選んでプレビュー', openFileNewTab: '新しいタブで開く', openFileSide: '横に開く', openWithMenu: 'アプリで開く', openWithSshSuffix: ' (SSH)', pinOpenWith: 'メニューに固定', unpinOpenWith: '固定を解除', openWithExplorer: 'エクスプローラー', openWithVscode: 'VS Code', openWithCursor: 'Cursor', openWithZed: 'Zed', openWithSettingsSshTitle: 'SSH リモートホスト', openWithSettingsSshDesc: '空欄 = ローカルワークスペース。user@host または SSH エイリアスを入力すると、VSCode 系の起動方法は vscode-remote/ssh-remote プロトコルに切り替わり、エクスプローラー / Zed / 非 VSCode 系カスタムエディターはメニューから非表示になります', openWithSettingsSshPlaceholder: 'user@host または SSH エイリアス', openWithSettingsCustomTitle: 'カスタムエディター', openWithSettingsCustomDesc: '名前 + URL テンプレート({path} プレースホルダー)+ VSCode 系かどうか。SSH モードでは VSCode 系のみリモートパスを開けます', openWithSettingsAdd: '追加', openWithSettingsName: '名前', openWithSettingsTemplate: '例: cursor://file/{path}', openWithSettingsFamily: 'VSCode 系', openWithSettingsFamilyDesc: 'このエディターは VSCode の URL プロトコルを使います(SSH リモートオープンをサポート)', openWithSettingsRemove: '削除', openWithSettingsInvalidHint: '名前またはテンプレート({path} を含み scheme:// で始まる必要あり)が未入力の編集者はメニューに表示されません', newTab: '新しいタブ', openExplorer: 'エクスプローラー', brokenSymlink: '無効なシンボリックリンク', openGit: 'Git パネル', newTerminal: '新しいターミナル', terminalLimit: 'ターミナル数が上限に達しました (3)', close: '閉じる', closeOtherTabs: '他のタブを閉じる', closeLeftTabs: '左のタブを閉じる', closeRightTabs: '右のタブを閉じる', moveToFreeWindow: 'フリーウィンドウへ移動', floatDropHint: '離すとフリーウィンドウで開きます', dockToSidebar: 'サイドバーへ戻す', pinTerminal: 'ターミナルを固定', pinAgentTerminal: 'Agent ターミナルを固定', pinToWorkspace: 'ワークスペースに固定', pinToGlobal: 'グローバルに固定', unpinTerminal: '固定を解除', pinnedTerminalTooltip: '{kind} · {scope} · {cwd}', pinnedTerminalKindUi: 'UI ターミナル', pinnedTerminalKindAgent: 'Agent ターミナル', pinnedTerminalScopeWorkspace: 'ワークスペースに固定', pinnedTerminalScopeGlobal: 'グローバルに固定', pinnedRailLabel: '固定されたターミナル', closePinnedTerminal: 'ターミナルを閉じる', collapse: 'サイドバーを折りたたむ', expand: 'サイドバーを展開', collapseBottomPanel: '下パネルを折りたたむ', expandBottomPanel: '下パネルを展開', terminalError: 'ターミナル接続に失敗', terminalConnectFailed: 'ターミナル接続が繰り返し失敗しました', terminalRetry: '再試行', terminalDepsFailed: 'ターミナル依存関係 node-pty の読み込みに失敗', terminalDepsHint: 'DSH 環境のターミナルまたは cmd で以下のコマンドを実行して修復し、再試行してください(node-pty は DSH コアと同じバージョンを維持):', terminalDepsProfile: '(検出された profile:{profile})', preview: 'プレビュー', toc: '目次', edit: '編集', mermaidError: 'Mermaid レンダリング失敗', mermaidZoomIn: '拡大', mermaidZoomOut: '縮小', mermaidZoomReset: 'リセット', mermaidZoomHint: 'スクロールで拡大 ・ ドラッグで移動 ・ Esc で閉じる', refresh: '更新', showInFolder: 'フォルダーで表示', refreshUnsavedConfirm: 'ディスク上のファイルが変更されました。更新すると未保存の編集が失われます。続行しますか?', save: '保存', saved: '保存済み', unsaved: '未保存', saveFailed: '保存に失敗', truncation: 'ファイルが大きすぎます — 最初の 512KB のみ表示', binary: 'バイナリファイル、プレビュー不可', loading: '読み込み中…', error: '読み込みに失敗', retry: '再試行', splitLeft: '左に分割', splitRight: '右に分割', splitUp: '上に分割', splitDown: '下に分割', notRepo: 'このディレクトリは git リポジトリではありません', noChanges: '変更はありません', statusTruncated: '変更が多すぎるため、最初の 2000 件のみ表示しています', stage: 'ステージ', unstage: 'ステージ解除', stageAll: 'すべてステージ', unstageAll: 'すべてステージ解除', commitPlaceholder: 'コミットメッセージ (Ctrl+Enter)', commit: 'コミット', commitError: 'コミット失敗', branch: 'ブランチ', worktree: 'ワークツリー', checkoutError: 'ブランチ切り替えに失敗', history: '履歴', changes: '変更', staged: 'ステージ済み', unstaged: '未ステージ', cancel: 'キャンセル', diffEmpty: 'テキスト差分はありません', diffLoadError: '差分の読み込みに失敗', diffBinary: 'バイナリ', diffAdded: '追加', diffDeleted: '削除', diffRenamed: '名前変更', diffExpand: '残り {count} 行を展開', diffCollapse: '折りたたむ', discard: '変更を破棄', discardTitle: '変更を破棄', discardDesc: '「{path}」のワークツリー変更を破棄します(復元不可)。', viewCommitDiff: 'コミット差分を表示', copyShortHash: '短いハッシュをコピー', copyFullHash: '完全なハッシュをコピー', copySubject: 'コミットメッセージをコピー', revertCommit: 'このコミットを取り消す', revertTitle: 'このコミットを取り消す', revertDesc: '現在のブランチに「{subject}」を取り消す新しいコミットを作成します。', cherryPickCommit: 'このコミットをチェリーピック', cherryPickTitle: 'このコミットをチェリーピック', cherryPickDesc: '「{subject}」の変更を現在のブランチに適用します。', timeJustNow: 'たった今', timeMinutesAgo: '{n} 分前', timeHoursAgo: '{n} 時間前', timeYesterday: '昨日', loadMore: 'もっと読み込む', historyLoadError: '履歴の追加読み込みに失敗', produced: '今回の産物', producedOpen: 'サイドバーで開く', disconnected: 'ターミナル接続が切れました、再接続中…', exited: 'ターミナルプロセスが終了しました', noSession: 'サイドバーを使うには会話を選択してください', pluginNotLoaded: 'プラグイン未読み込み、タブは一時的に利用不可:', hiddenFiles: '隠しファイル', parent: '上位ディレクトリ', copied: 'コピーしました', copy: 'コピー', newFile: '新規ファイル', openEditor: 'エディターで開く', gitDetail: '変更詳細を表示', referenceFile: '@ファイル', addToConversation: '会話に追加', copyRelative: '相対パスをコピー', copyAbsolute: '絶対パスをコピー', download: 'ダウンロード', uploadFiles: 'ファイルをアップロード', uploadFolder: 'フォルダーをアップロード', uploadHere: 'ここにアップロード', uploadDropHint: 'ファイル/フォルダーをここにドロップしてアップロード', uploadDropChat: 'チャットにドロップで画像を会話に追加', uploadTo: '{dir} にアップロード', uploadingTo: '{dir} にアップロード中…', uploadProgress: 'アップロード中 {done}/{total}: {name}', uploadDone: '{count} 個のファイルをアップロードしました', uploadFailed: 'アップロード失敗:{error}', uploadFailedUnknown: '不明なエラー', uploadTooLarge: 'ファイルが大きすぎます(アップロード上限超過)', uploadCancelled: 'アップロードはキャンセルされました', settingsNav: 'サイドカード', settingsIntro: 'サイドカードの表示内容とデフォルト挙動を管理', settingsPopupDesc: '「{feature}」の関連オプションを設定', settingsDone: '完了', settingsOpenTitle: '新規会話でデフォルト展開', settingsOpenDesc: '新規会話時にサイドカードを自動展開。既存の会話はそれぞれのレイアウトを維持', settingsWidthTitle: 'デフォルト幅の比率', settingsWidthDesc: '新規会話時のサイドカードがウィンドウ幅に占める割合 (20–60)', settingsWidthSuffix: '%', settingsOpenPathTitle: 'チャット内ファイルをサイドバーで開く', settingsOpenPathDesc: 'チャット内のファイルリンク(ツール行、産物リスト、ファイル言及)クリック時に、システム既定アプリではなくサイドバーエディターで開く', settingsOpenToolsTitle: 'モデルにサイドバー開くツールを注入', settingsOpenToolsDesc: 'オンにすると、モデルは sidebar_open ツールでサイドバーにファイル・フォルダー・HTTP(S) ページを開ける(デフォルトオフ)', settingsTitleBarTitle: '位置互換モード', settingsTitleBarDesc: 'タイトルバー互換スキームを選択:自動検出(デフォルト、控えめ)/ DSH 公式 Web / 既知のデスクトップシェル / カスタムスキーム(下移動距離 + カスタム CSS)', settingsTitleBarStripTitle: '下移動距離', settingsTitleBarStripDesc: 'タイトルバー帯の高さ:サイドバーボタンとコンテンツが下に移動するピクセル数 (0–120、デフォルト 40。カスタムスキーム下で有効)', settingsSchemeAutoTitle: '自動検出', settingsSchemeAutoDesc: '控えめなスキーム:Window Controls Overlay 標準 API が利用可能な場合のみ実際のタイトルバー高さ分譲る。通常の Web 環境では何も変更しない', settingsSchemeWebTitle: 'DSH 公式 Web', settingsSchemeWebDesc: '公式 Web 版で動いていることを明示:一切適用しない(標準 WCO 幾何も適用外)', settingsSchemeCustomTitle: 'カスタム', settingsSchemeCustomDesc: '完全に制御:カスタム CSS を注入(内置スタイルも上書き可)し、タイトルバーの下移動距離を指定', settingsSchemeDetectedSuffix: '検出済み', settingsCustomCssTitle: 'カスタム CSS', settingsCustomCssDesc: 'ページ末尾に追加されるスタイル(同優先度では後勝ち。JS 起点のインライン変数を上書きするには !important を使用)', settingsCustomCssPlaceholder: '/* 例:自描きタイトルバーのシェルに 36px を予約 */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}', settingsSaveFailed: '保存に失敗', settingsConflict: '設定が別のウィンドウで変更されました、再試行してください', binaryNoPreview: 'このファイル形式はプレビューできません', downloadToView: 'ダウンロードして表示', settingsSubagentTitle: 'サブエージェント検出時に自動展開', settingsSubagentDesc: '現在の会話で新しいサブエージェントが発生した際、サイドバーを自動展開してタスク管理ページを開く。オフ時は手動で開く必要あり', settingsJobsTitle: '新規バックグラウンドタスク時に自動展開', settingsJobsDesc: '現在の会話で新しいバックグラウンドタスクが発生するたびにサイドバーを展開してタスクページを開く(新規タスクごとに発火)。オフ時は手動で開く必要あり', settingsToolsTitle: 'モデルにターミナルツールを注入', settingsToolsDesc: 'オンにすると、モデルが terminal_create 等 8 個のツールでサイドバーターミナルを作成・操作可能(デフォルトオフ)', settingsBottomTerminalTitle: '下パネル初回展開時に自動でターミナルを開く', settingsBottomTerminalDesc: '会話ごとに下パネルを初めて展開した際、下パネルに新しいターミナルタブを自動で開く(ターミナル数上限は依然適用。デフォルトオン)', settingsFontFamilyTitle: 'ターミナルフォント', settingsFontFamilyDesc: 'ターミナルのカスタムフォントファミリー(CSS font-family、例: "JetBrains Mono", monospace。空欄でテーマの等幅フォントに追従)', settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace', settingsFontSizeTitle: 'ターミナルフォントサイズ', settingsFontSizeDesc: 'ターミナルのフォントサイズ (px、9–32、デフォルト 13)', settingsFontSizeSuffix: 'px', settingsShellTitle: 'シェルパス', settingsShellDesc: 'UI とモデルのターミナルが起動するシェル(絶対パス or 実行ファイル名)。空欄時は従来順で解決: yaml の config.shell → $SHELL / ログインシェル / Windows の powershell.exe。以降に開くターミナルに適用', settingsShellPlaceholder: '例: /bin/zsh(空欄で自動解決)', settingsShellArgsTitle: 'シェル引数', settingsShellArgsDesc: '明示的なシェル起動引数(スペース区切り)。非空の場合デフォルト引数を完全に置き換え(yaml の shellArgs 契約と同じ)', settingsShellArgsPlaceholder: '例: -l(空欄でデフォルト引数)', settingsTabsTitle: 'サイドバーの内容', settingsViewersTitle: 'ファイルプレビュー', settingsGeneralTitle: '一般', settingsPopup: '機能設定', settingsViewerCatchAll: 'フォールバック:任意のファイル', viewerImage: '画像', viewerPdf: 'PDF', viewerMarkdown: 'Markdown', viewerCode: 'コード', viewerBinary: 'バイナリダウンロード', viewerHtml: 'HTML', browser: 'ブラウザー', browserPlaceholder: 'URL を入力、例: example.com', browserGo: '開く', browserBack: '戻る', browserForward: '進む', browserStart: 'URL を入力してブラウズ開始(サンドボックスモード)', browserBlockedScheme: 'ブロック:http/https リンクのみ許可', browserBlockedLoopback: 'ブロック:ローカルや内部アドレスはブラウズできません', browserInvalid: '無効な URL', browserNoSandboxWarning: 'サンドボックスオフ:現在のページは GUI と同一オリジンで、完全な会話権限を持ちます(設定で復元可)', htmlNoSandboxWarning: 'サンドボックスオフ:この HTML は GUI と同一オリジンで、会話ファイルや内部 API を読み取れます(設定で復元可)', sandboxStatusOn: 'サンドボックスモード:オン ・ ページは GUI のデータやローカルファイルにアクセス不可。ログイン状態とサードパーティ Cookie は利用できない場合あり', sandboxUnlock: '一時的に解除(非安全)', sandboxRestore: 'サンドボックスを復元', settingsHtmlDefaultUnsafeTitle: 'HTML プレビューをデフォルトで非サンドボックスで開く(非安全)', settingsHtmlDefaultUnsafeDesc: 'オンにすると、新しく開く HTML プレビューは非サンドボックス状態で起動(GUI と同一オリジン、会話ファイルや内部 API を読み取り可)。ステータス行から一時的にサンドボックスを復元可能', settingsHtmlSandboxTitle: 'HTML プレビューのサンドボックスを無効化(非安全)', settingsHtmlSandboxDesc: 'サンドボックスをオフにすると、プレビューされる HTML は GUI と同一オリジンで動作し、会話ファイル・ローカルストレージ・内部 API にアクセス可能。完全に信頼できるファイルのみで有効化', settingsBrowserSandboxTitle: 'ブラウザーサンドボックスを無効化(非安全)', settingsBrowserSandboxDesc: 'サンドボックスをオフにすると、訪問するあらゆるサイトが GUI と同一オリジンで動作し、会話データを読み取ったりログイン状態を偽装したりできます。完全に信頼できるサイトのみで有効化', settingsBrowserLinksTitle: 'チャット内の外部リンクをサイドバーで開く', settingsBrowserLinksDesc: 'オンにすると、チャットや GUI の外部リンククリック時に新しいウィンドウではなくサイドバーで開く。HTTP と HTTPS は下のスイッチで個別制御。Ctrl/Cmd+クリックで一時的にバイパス', settingsBrowserHttpTitle: 'HTTP ページをサイドバーで開く', settingsBrowserHttpDesc: 'オンにすると、チャットや GUI の HTTP 外部リンククリック時にサイドバーで開く(urlTarget を宣言したプラグインページが優先)。Ctrl/Cmd+クリックで一時的にバイパス', settingsBrowserHttpsTitle: 'HTTPS ページをサイドバーで開く', settingsBrowserHttpsDesc: 'オンにすると、チャットや GUI の HTTPS 外部リンククリック時にサイドバーで開く。デフォルトオフ:大半の HTTPS サイトは埋め込みを拒否するため、システムブラウザーの方がスムーズ', settingsBrowserLoopbackTitle: '許可されたローカルアドレス', settingsBrowserLoopbackDesc: 'サイドバーブラウザがアクセスできるループバックアドレスのカンマ区切り許可リスト(例:localhost:5174 や 127.0.0.1:8080)。空の場合、デフォルトですべてのローカルアドレスをブロックします。サンドボックスは引き続き適用され、ページは GUI データを読み取れません', settingsBrowserLoopbackPlaceholder: '例 localhost:5174, 127.0.0.1:8080', browserOpenExternal: 'ブラウザーで開く', browserEmbedBlocked: '{host} は埋め込みを拒否しました', browserEmbedBlockedDesc: 'このサイトは X-Frame-Options / frame-ancestors で他ページ内での表示を禁止しているため、サイドバー内で読み込めません。ブラウザーで直接開いてください', browserEmbedAnyway: 'それでも読み込む', subagent: 'タスク管理', openSubagent: 'タスク管理', subagentMainAgent: 'メインエージェント', subagentEmpty: 'サブエージェントなし', subagentEmptyDesc: 'メインエージェントが派生したサブエージェントはここに表示されます', subagentRunning: '実行中', subagentInactive: 'アイドル', subagentModeOneShot: 'ワンショット', subagentModeContinuable: '継続可', subagentCount: '{count} 個のサブエージェント', subagentCountRunning: '{count} 個のサブエージェント ・ {running} 個実行中', subagentDiagCorrupt: 'ディレクトリ破損', subagentDiagUnsupported: '未サポートのエントリ', subagentDiagUnavailable: '利用不可', subagentThinking: '思考中…', sideChat: 'サイドチャット(beta)', sideChatNew: '新規スレッド', sideChatUntitled: '新規スレッド', sideChatEmpty: 'サイド会話なし', sideChatEmptyDesc: '各サイド会話はタブバーの独立 Tab で、現在の会話のコンテキストを継承し、メイン会話には入りません', sideChatCreating: 'サイド会話を作成中…', sideChatRetry: '再試行', sideChatThreads: 'スレッド切替 / 新規', sideChatSave: '新規会話として保存', sideChatSaveTitle: 'このスレッドをトップレベルの会話に昇格、メイン会話リストに表示', sideChatSaved: '新規会話として保存しました', sideChatNoTurn: '最初のターンを完了してから保存可能', sideChatPendingDrop: '最後の未回答フォローアップは保存される会話に含まれません', sideChatFirstPlaceholder: '最初の質問を入力、コンテキスト継承済み…', sideChatComposerPlaceholder: 'フォローアップを質問…', sideChatThinking: '深掘り中…', sideChatThink: '思考プロセス', sideChatInjection: 'コンテキスト注入済み', sideChatSend: '送信', sideChatCancel: '停止', sideChatCancelTitle: '現在のターンを中止(キューは保持)', sideChatClose: 'スレッドを閉じる', sideChatCloseTitle: 'スレッドの agent を解放(履歴は保持)', sideChatError: 'サイド会話エラー:{message}', jobs: 'バックグラウンドタスク', jobsCount: '{count} 個のバックグラウンドタスク', jobsCountRunning: '{count} 個のバックグラウンドタスク ・ {running} 個実行中', jobStatusRunning: '実行中', jobStatusStopping: '停止中', jobStatusCompleted: '完了', jobStatusKilled: '終了', jobStatusFailed: '失敗', jobDurationSeconds: '{seconds} 秒', jobDurationMinutes: '{minutes} 分 {seconds} 秒', jobDurationHours: '{hours} 時間 {minutes} 分', jobViewOutput: '出力を表示', jobHideOutput: '出力を隠す', jobNoOutput: 'まだ出力なし', jobNotReadYet: 'モデルがこのタスクの出力を読み取るのを待機中(モデルが job_output を実行すると、出力がここに表示されます)', jobOutputTruncated: '出力が長すぎるため表示を切り詰めました', jobOutputError: '出力の読み取りに失敗', jobKill: '終了', jobKillConfirm: 'もう一度クリックして終了を確認', jobKillError: '終了に失敗', addPluginsTabCard: 'Tab プラグインを追加', addPluginsTabCardDesc: '新しいサイドバーページを登録', addPluginsViewerCard: 'プレビュープラグインを追加', addPluginsViewerCardDesc: '新しいファイル種別プレビューを登録', addPluginsTabDesc: 'サイドバーページ(Tab)はプラグインで拡張可能。プラグインは ctx.betterSidebar サービス経由で登録。「インストール」をクリックしてインストールコマンドをコピー、DSH 環境のターミナルに貼り付けて実行。', addPluginsViewerDesc: 'ファイルプレビューアーはプラグインで拡張可能。プラグインは ctx.betterSidebar サービス経由で登録。「インストール」をクリックしてインストールコマンドをコピー、DSH 環境のターミナルに貼り付けて実行。', addPluginsBrowseMore: 'GitHub でプラグинをさらに閲覧(topic: dsh-better-sidebar)', addPluginsSearch: 'プラグイン名 / 説明で検索…', addPluginsNoMatch: '一致するプラグインなし', addPluginsRecommended: '推奨プラグイン', addPluginsEmpty: 'まだプラグインが収録されていません、GitHub topic であなたのプラグインを公開してください', openPlugin: '開く', copyInstall: 'インストールコマンドをコピー', pluginMdExportDesc: 'better-sidebar の Markdown ツールバーに「エクスポート」ボタンを追加:現在の .md を単体 HTML(テーブル・コードブロック・Mermaid 図表をインライン化、プレビューテーマに追従したレイアウト)にレンダリングして .md と同じディレクトリに保存、または印刷ダイアログ経由で PDF にエクスポート', pluginOfficeDesc: 'better-sidebar エディター向け Office スイートプレビュー(.docx / .xlsx / .pptx)。重い Office レンダリングライブラリをコアバンドルから分離、必要に応じてインストール', pluginFlowglassDesc: 'ライブセッションフローグラフ:ユーザー、アシスタント、ツール呼び出しの 3 レーン泳道、並列グループ、サブエージェント支線、ドリルダウン、ライブ状態をサポート。better-sidebar インストール時にネイティブ「Flowglass」Tab を登録、未インストール時は独立ドロワーを保持', pluginGitForgeDesc: 'better-sidebar「Git Forge」Tab:GitHub/Gitea 等 Forge アカウントライブラリ + プロジェクト単位の認可 + push ポリシー硬核拒絶。token はローカル secrets のみ、モデルコンテキストに入らない。読み取り専用 GitForge ツールと agent HTTPS credential helper を提供', pluginGithubWorkbenchDesc: 'better-sidebar「GitHub ワークベンチ」タブ:リモートリポジトリのツリー + Issues / Pull requests / Actions タブ。読み取りに加え、Issue・PR の作成、コメント、編集、クローズ/再オープン、squash・merge・rebase マージ(強確認)、CI の再実行/キャンセルに対応。リポジトリ切替ポップアップはアクセス可能なリポジトリを自動取得し、公開リポジトリの検索にも対応。better-sidebar 未導入時は独立右パネルへ自動フォールバック', pluginSuhuangScrollDesc: 'ローカルの Suhuang Scroll Runtime を DSH 設定と better-sidebar に接続し、モデル設定、接続テスト、連続採点の操作を提供。Suhuang Scroll Runtime と dsh-better-sidebar が必要', pluginGitRemotesDesc: 'better-sidebar Git リモート Tab:ブランチ/アップストリーム/ahead-behind 表示、fetch(prune 可)、ff-only pull、確認後のみ push。内蔵 Git のステージ/コミットは置き換えず、force-push やモデル自動 push ツールは提供しない', pluginSentinelDesc: '条件駆動の agent 起動システム:ファイル/プロセス/ポート/HTTP/コマンド/webhook センサーが条件達成時に休眠会話を自動起動。「Sentinel」Tab を登録しサーバー全体の監視テーブルを表示', pluginServerDeckDesc: 'サーバーカードダッシュボード:各サーバーを1枚のカードで表示し、オンライン状態・OS・稼働時間・CPU/メモリ/ディスク使用率とレイテンシを確認。カードをクリックすると xterm.js の対話ターミナルを開き、~/.ssh/config をワンクリック取り込み(Git ホスティングの別名は自動スキップ)。better-sidebar インストール時はネイティブな「サーバー」タブを登録、未インストール時は独立ドロワーを維持', pluginSidebarQaDesc: 'better-sidebar ベースの選択して質問 Tab:会話選択 → 右パネルで質問 → 同ワークスペースの独立追問会話(❓追問・主題)。高速 no-thinking モデルが主対話コンテキストを圧縮し引用と一緒に注入、主対話を中断しない。追問はネスト、継続、アーカイブ可能', pluginSidenoteDesc: 'Codex スタイルのサイドチャット + 選択注釈:現在の会話を fork して独立したサイド会話を作成(一覧からはアーカイブで隠蔽、複数共存、/side コマンド、リロード/再起動後も復元、モデルは主会話に追従)。assistant メッセージを選択 → 番号バッジ + 注釈エディタ →「N 件の注釈」チップが次のメッセージに同梱、またはサイドチャットで直接質問', pluginSshTunnelDesc: 'better-sidebar「SSH トンネル」Tab:複数ホストインベントリ + プロジェクト単位の認可 + 鍵のローカル保管。モデルツール SSHManager(exec/SFTP/セッション戦略)。中央対話ターミナルと双欄 SFTP', pluginTurnReviewDesc: '「直近のターン」の diff に Approve / Request changes のヒューマンゲート。直前ターンのみ審査、会話を fork しない。ファイルをメイン会話/サブエージェント/未帰属グループ分け、ファイル単位でチェックして差し戻し + 任意コメント、ファイルをクリックするとターン開始スナップショット vs 現在の diff を先に表示。/rewind ではない', pluginVideoPreviewDesc: 'better-sidebar エディター内で動画ファイルをインラインプレビュー(.mp4/.webm/.mov/.mkv/.avi 等)。HTTP Range (206) をサポートする専用 /video ホストルートを搭載、プログレスバードラッグ可、20MB mediaLimit 制限なし', pluginCodeNavDesc: 'コードプレビューナビゲーター:ファイルタイプから言語を自動判定してシンタックスハイライト、シンボルアウトライン(クラス/メソッド/変数のフィルタ&ワンクリックジャンプ)、ファイル内検索(全一致ハイライト、前/次へ、大文字小文字区別)。better-sidebar のコードファイルプレビューを引き継ぎます', pluginDocsPanelDesc: 'DSH サイドバー内の「グローバルドキュメント」:任意のワークスペースから読めるグローバル Markdown ノート。リストで選んで閲覧、ホバーでアウトラインジャンプ、Chrome / VS Code で外部オープン、コードコピー。ディレクトリは設定可(デフォルト ~/.dsh/docs)', pluginEgoBrowserDesc: 'DeepSeek Harness 用エージェントブラウザ:32 個の ego_* ツールが本物の Chromium を操作し、サイドバーのネイティブ「ego ブラウザ」Tab がエージェントの訪れる全ページをライブ表示。クリック・ドラッグ・入力で操作を引き継げます。better-sidebar があれば Tab を自動登録、なければフローティングバブルにフォールバック', pluginBilingualReaderDesc: 'DSH サイドバーで論文 PDF を読む:ネイティブ PDF 表示、テキストを選択して LLM で翻訳。コンテキストを使い、メイン会話から完全に分離', }