Files
vibe-kanban/frontend/src/i18n/locales/ja/settings.json
Louis Knight-Webb e8ff40d5a4 Remote host + username opening for VSCode based IDEs (#1134)
* feat: add remote VSCode SSH support for remote server deployments

Add support for opening VSCode via SSH when Vibe Kanban is running on a remote server.
This allows users accessing the web UI through a tunnel to open projects/tasks in their
local VSCode which connects to the remote server via SSH.

Backend changes:
- Add remote_ssh_host and remote_ssh_user fields to EditorConfig (v3)
- Create config v8 with migration from v7
- Modify EditorConfig.open_file() to return URL when remote mode is enabled
- Update API routes to return OpenEditorResponse with optional URL
- Generate vscode:// URL scheme for remote SSH connections

Frontend changes:
- Update API client to handle OpenEditorResponse type
- Modify hooks to open URLs in new tabs when returned
- Add UI fields in settings for remote SSH configuration

When remote_ssh_host is configured, clicking "Open in VSCode" generates a URL like:
vscode://vscode-remote/ssh-remote+user@host/path/to/project

This works for both project-level and task-level editor opening.

* feat: extend remote SSH support to Cursor and Windsurf editors

Extend the remote SSH feature to support Cursor and Windsurf editors,
which are VSCode forks that use the same remote SSH protocol.

Changes:
- Update EditorConfig.open_file() to generate cursor:// and windsurf:// URLs
- Show SSH configuration fields in settings for all three VSCode-based editors
- Use same vscode-remote SSH URL pattern for all three editors

When remote_ssh_host is configured, supported editors generate URLs like:
- vscode://vscode-remote/ssh-remote+user@host/path
- cursor://vscode-remote/ssh-remote+user@host/path
- windsurf://vscode-remote/ssh-remote+user@host/path

* fix: address clippy linting issues

- Fix uninlined format args in v3.rs
- Add allow attributes for re-exported types in v5-v7

* docs: add remote SSH configuration documentation

Add comprehensive documentation for the remote SSH editor feature:

- Expand Editor Integration section in global-settings.mdx
  - Document when to use remote SSH (tunnels, systemctl services, remote deployments)
  - Explain configuration fields (remote_ssh_host, remote_ssh_user)
  - Detail how the feature works with protocol URLs
  - List prerequisites for SSH access and VSCode Remote-SSH extension
  - Support for VSCode, Cursor, and Windsurf editors

- Add Remote Deployment section to README.md
  - Quick guide for setting up remote SSH access
  - Link to detailed documentation
  - Include in feature list

This documentation helps users understand and configure the remote SSH
feature when running Vibe Kanban on remote servers accessed via browser.

* remove package-lock in favour of pnpm lock

* rollback config version increment

* re-impl remote URL

* Update i18n for general settings (vibe-kanban 4a1a3ae1)

frontend/src/pages/settings/GeneralSettings.tsx

Find any strings here that haven't been i18n'd and i18n them

* add line number/col to the end of vscode-remote file paths

* handle response url when opening file in ide from DiffCard

* update remote-ssh guidance in readme

* add image to global settings docs

---------

Co-authored-by: Stephan Fitzpatrick <stephan@knowsuchagency.com>
Co-authored-by: Britannio Jarrett <britanniojarrett@gmail.com>
2025-10-31 12:39:58 +00:00

318 lines
16 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"settings": {
"layout": {
"nav": {
"title": "設定",
"general": "一般",
"generalDesc": "テーマ、通知、および設定",
"projects": "プロジェクト",
"projectsDesc": "プロジェクトスクリプトと設定",
"agents": "エージェント",
"agentsDesc": "コーディングエージェントの設定",
"mcp": "MCPサーバー",
"mcpDesc": "モデルコンテキストプロトコルサーバー"
}
},
"general": {
"loading": "設定を読み込み中...",
"loadError": "設定の読み込みに失敗しました。",
"save": {
"button": "設定を保存",
"success": "✓ 設定が正常に保存されました!",
"error": "設定の保存に失敗しました",
"unsavedChanges": "• 未保存の変更があります",
"discard": "破棄"
},
"appearance": {
"title": "外観",
"description": "アプリケーションの見た目と操作感をカスタマイズします。",
"theme": {
"label": "テーマ",
"placeholder": "テーマを選択",
"helper": "お好みの色スキームを選択してください。"
},
"language": {
"label": "言語",
"placeholder": "言語を選択",
"helper": "お好みの言語を選択してください。ブラウザ設定では、システム言語に従います。"
}
},
"taskExecution": {
"title": "タスク実行",
"description": "タスクの実行と処理方法を設定します。",
"executor": {
"label": "デフォルトエージェント設定",
"placeholder": "プロファイルを選択",
"helper": "タスク試行を作成する際に使用するデフォルトエージェント設定を選択してください。"
},
"variant": "デフォルト",
"defaultLabel": "デフォルト"
},
"editor": {
"title": "エディター",
"description": "コード編集体験を設定します。",
"type": {
"label": "エディタータイプ",
"placeholder": "エディターを選択",
"helper": "お好みのコードエディターインターフェースを選択してください。"
},
"customCommand": {
"label": "カスタムエディターコマンド",
"placeholder": "例: code, subl, vim",
"helper": "カスタムエディターを起動するコマンドを入力してください。ファイルを開くために使用されます。"
},
"remoteSsh": {
"host": {
"label": "リモートSSHホストオプション",
"placeholder": "例: ホスト名またはIPアドレス",
"helper": "Vibe Kanbanがリモートサーバーで実行されている場合に設定してください。設定すると、「エディターで開く」をクリックしたときに、ローカルコマンドを実行する代わりにSSH経由でエディターを開くURLが生成されます。"
},
"user": {
"label": "リモートSSHユーザーオプション",
"placeholder": "例: ユーザー名",
"helper": "リモート接続のSSHユーザー名。設定されていない場合、VS CodeはSSH設定を使用するか、入力を求めます。"
}
}
},
"github": {
"title": "GitHub連携",
"connected": "{{username}}として接続中",
"connectButton": "GitHubアカウントを接続",
"manage": "管理",
"disconnect": "切断",
"helper": "GitHubアカウントを接続して、プライベートリポジトリへのアクセスと高度なGit操作を有効にします。",
"or": "または",
"pat": {
"label": "個人用アクセストークン",
"placeholder": "ghp_xxxxxxxxxxxxxxxxxxxx",
"helper": "「repo」権限を持つGitHub個人用アクセストークン。OAuthの権限がプライベートリポジトリや組織所有のリポジトリに対して不十分な場合に使用してください。",
"createTokenLink": "ここでトークンを作成"
}
},
"git": {
"title": "Git",
"description": "Gitブランチ名の設定",
"branchPrefix": {
"label": "ブランチプレフィックス",
"placeholder": "vk",
"helper": "自動生成されるブランチ名のプレフィックス。空欄にするとプレフィックスなしになります。",
"preview": "プレビュー:",
"previewWithPrefix": "{{prefix}}/1a2b-タスク名",
"previewNoPrefix": "1a2b-タスク名",
"errors": {
"slash": "プレフィックスに'/'を含めることはできません。",
"startsWithDot": "プレフィックスは'.'で始めることができません。",
"endsWithDot": "プレフィックスは'.'または'.lock'で終わることができません。",
"invalidSequence": "無効なシーケンス(..、@{)が含まれています。",
"invalidChars": "無効な文字が含まれています。",
"controlChars": "制御文字が含まれています。"
}
}
},
"notifications": {
"title": "通知",
"description": "通知を受け取るタイミングと方法を制御します。",
"sound": {
"label": "音声通知",
"helper": "タスク試行の実行が完了したときに音を再生します。",
"fileLabel": "音声",
"filePlaceholder": "音声を選択",
"fileHelper": "タスク完了時に再生する音声を選択してください。音量ボタンをクリックしてプレビューできます。"
},
"push": {
"label": "プッシュ通知",
"helper": "タスク試行の実行が完了したときにシステム通知を表示します。"
}
},
"privacy": {
"title": "プライバシー",
"description": "匿名の使用データを共有してVibe-Kanbanの改善にご協力ください。",
"telemetry": {
"label": "テレメトリを有効化",
"helper": "アプリケーションの改善に役立つ匿名の使用イベント追跡を有効にします。プロンプトやプロジェクト情報は収集されません。"
}
},
"taskTemplates": {
"title": "タグ",
"description": "@tag_nameを使用してタスクの説明に挿入できる再利用可能なテキストスニペットを作成します。"
},
"tags": {
"manager": {
"title": "タスクタグ",
"addTag": "タグを追加",
"noTags": "タグはまだありません。タスクの説明によく使うテキストスニペットを作成してください。@tag_nameで使用できます。",
"table": {
"tagName": "タグ名",
"content": "内容",
"actions": "操作"
},
"actions": {
"editTag": "タグを編集",
"deleteTag": "タグを削除"
},
"deleteConfirm": "タグ「{{tagName}}」を削除してもよろしいですか?"
},
"dialog": {
"createTitle": "タグを作成",
"editTitle": "タグを編集",
"tagName": {
"label": "タグ名",
"required": "*",
"hint": "タスクの説明で@を付けて使用します:@{{tagName}}",
"placeholder": "例bug_fix、test_plan、api_docs",
"error": "タグ名にスペースを含めることはできません。アンダースコアを使用してくださいmy_tag"
},
"content": {
"label": "内容",
"required": "*",
"hint": "タスクの説明で@{{tagName}}を使用すると挿入されるテキスト",
"placeholder": "このタグを使用するときに挿入されるテキストを入力してください"
},
"errors": {
"nameRequired": "タグ名は必須です",
"saveFailed": "タグの保存に失敗しました"
},
"buttons": {
"cancel": "キャンセル",
"create": "作成",
"update": "更新"
}
}
},
"safety": {
"title": "安全性と免責事項",
"description": "安全警告とオンボーディングの承認をリセットします。",
"disclaimer": {
"title": "免責事項の承認",
"description": "安全免責事項をリセットします。",
"button": "リセット"
},
"onboarding": {
"title": "オンボーディング",
"description": "オンボーディングフローをリセットします。",
"button": "リセット"
}
}
},
"agents": {
"title": "コーディングエージェント設定",
"description": "コーディングエージェントの動作を異なる設定でカスタマイズします。",
"loading": "エージェント設定を読み込み中...",
"save": {
"button": "エージェント設定を保存",
"success": "✓ 実行設定が正常に保存されました!"
},
"editor": {
"formLabel": "JSONを編集",
"agentLabel": "エージェント",
"agentPlaceholder": "実行タイプを選択",
"configLabel": "設定",
"configPlaceholder": "設定を選択",
"createNew": "新規作成...",
"deleteTitle": "最後の設定は削除できません",
"deleteButton": "{{name}}を削除",
"deleteText": "削除",
"jsonLabel": "エージェント設定JSON",
"jsonPlaceholder": "プロファイルを読み込み中...",
"jsonLoading": "読み込み中...",
"pathLabel": "設定ファイルの場所:"
},
"errors": {
"deleteFailed": "設定の削除に失敗しました。もう一度お試しください。",
"saveFailed": "エージェント設定の保存に失敗しました。もう一度お試しください。",
"saveConfigFailed": "設定の保存に失敗しました。もう一度お試しください。"
}
},
"mcp": {
"title": "MCPサーバー設定",
"description": "モデルコンテキストプロトコルサーバーを設定して、コーディングエージェントの機能をカスタムツールとリソースで拡張します。",
"loading": "MCP設定を読み込み中...",
"applying": "設定を適用中...",
"labels": {
"agent": "エージェント",
"agentPlaceholder": "実行器を選択",
"agentHelper": "MCPサーバーを設定するエージェントを選択してください。",
"serverConfig": "サーバー設定JSON",
"popularServers": "人気サーバー",
"serverHelper": "カードをクリックして、そのMCPサーバーを上記のJSONに挿入します。",
"saveLocation": "変更は次の場所に保存されます:"
},
"loadingStates": {
"jsonEditor": "読み込み中...",
"configuration": "現在のMCPサーバー設定を読み込み中..."
},
"errors": {
"loadFailed": "設定の読み込みに失敗しました。",
"invalidJson": "無効なJSON形式です",
"validationError": "検証エラー",
"saveFailed": "MCPサーバーの保存に失敗しました",
"applyFailed": "MCPサーバー設定の適用に失敗しました",
"addServerFailed": "事前設定サーバーの追加に失敗しました",
"mcpError": "MCP設定エラー{{error}}",
"notSupported": "MCPはサポートされていません",
"supportMessage": "MCPサーバーを使用するには、MCPClaude、Amp、Gemini、Codex、またはOpencodeをサポートする別の実行器を上記で選択してください。"
},
"save": {
"button": "MCP設定を保存",
"success": "設定が保存されました!",
"successMessage": "✓ MCP設定が正常に保存されました",
"loading": "現在のMCPサーバー設定を読み込み中..."
}
},
"projects": {
"title": "プロジェクト設定",
"description": "プロジェクト固有のスクリプトと設定を構成します。",
"loading": "プロジェクトを読み込み中...",
"loadError": "プロジェクトの読み込みに失敗しました。",
"selector": {
"label": "プロジェクトを選択",
"placeholder": "設定するプロジェクトを選択",
"helper": "プロジェクトを選択して、その設定を表示および編集します。",
"noProjects": "利用可能なプロジェクトがありません"
},
"general": {
"title": "一般設定",
"description": "プロジェクトの基本情報を設定します。",
"name": {
"label": "プロジェクト名",
"placeholder": "プロジェクト名を入力",
"helper": "このプロジェクトの表示名。"
},
"repoPath": {
"label": "Gitリポジトリパス",
"placeholder": "/既存の/リポジトリ/へのパス",
"helper": "ディスク上のgitリポジトリへの絶対パス。"
}
},
"scripts": {
"title": "スクリプトと設定",
"description": "このプロジェクトのセットアップ、開発、およびクリーンアップスクリプトを設定します。",
"setup": {
"label": "セットアップスクリプト",
"helper": "このスクリプトは、ワークツリーの作成後、コーディングエージェントの開始前に実行されます。依存関係のインストールや環境の準備などのセットアップタスクに使用してください。"
},
"dev": {
"label": "開発サーバースクリプト",
"helper": "このスクリプトは、タスク試行から開発サーバーを起動するために実行できます。プロジェクトの開発サーバーを素早く起動して変更をテストするために使用してください。"
},
"cleanup": {
"label": "クリーンアップスクリプト",
"helper": "このスクリプトは、変更が行われた場合にのみ、コーディングエージェントの実行後に実行されます。リンター、フォーマッター、テスト、またはその他の検証ステップの実行など、品質保証タスクに使用してください。変更がない場合、このスクリプトはスキップされます。"
},
"copyFiles": {
"label": "ファイルをコピー",
"helper": "元のプロジェクトディレクトリからワークツリーにコピーするファイルのカンマ区切りリスト。これらのファイルは、ワークツリーが作成された後、セットアップスクリプトが実行される前にコピーされます。.env、設定ファイル、ローカル設定などの環境固有のファイルに役立ちます。gitignoreされていることを確認してください。そうしないとコミットされる可能性があります"
}
},
"save": {
"button": "プロジェクト設定を保存",
"success": "✓ プロジェクト設定が正常に保存されました!",
"error": "プロジェクト設定の保存に失敗しました",
"unsavedChanges": "• 未保存の変更があります",
"discard": "破棄",
"confirmSwitch": "未保存の変更があります。本当にプロジェクトを切り替えますか?変更は失われます。"
}
}
}
}