Files
vibe-kanban/frontend/src/i18n/locales/ja/common.json
Louis Knight-Webb d941e9a5e0 Add integrated terminal with PTY backend and xterm.js frontend (Vibe Kanban) (#2104)
* integrated terminal

* ci

* persist terminal

* Done! I've moved the TerminalPanelContainer from the main panel area to the right sidebar. Here's a summary of the changes:

- Added `isTerminalVisible: boolean` to global state (defaults to `true`)
- Added `toggleTerminal()` and `setTerminalVisible(value)` actions
- Added `isTerminalVisible` to the persisted state and the `useWorkspacePanelState` hook

- Imported `TerminalPanelContainer` and `useUiPreferencesStore`
- Restructured the component to always include a terminal section at the bottom (when not in create mode and `isTerminalVisible` is true)
- Dynamic flex ratios:
  - With upper content + terminal: flex-4 (content) / flex-2 (git) / flex-4 (terminal)
  - Without upper content + terminal: flex-3 (git) / flex-7 (terminal)
  - When terminal is hidden: original ratios preserved

- Removed the `TerminalPanelContainer` import
- Removed the TERMINAL case from the right main panel rendering

- Added `isTerminalVisible` to `ActionVisibilityContext` interface
- Updated `ToggleTerminalMode` action to use `toggleTerminal()` and check `isTerminalVisible`

- Added `isTerminalVisible` from `panelState` to the visibility context

The terminal now appears permanently at the bottom of the right sidebar (when visible), and the toggle button collapses/expands just the terminal section within the sidebar. The visibility state is persisted to localStorage.

* Frontend ESLint passes with no errors. The backend Rust error (`crates/utils/src/shell.rs:31`) is a pre-existing issue in the codebase, not related to my changes.

* `cargo check` passes now. The fix was adding `.to_path_buf()` to convert the `&Path` reference to an owned `PathBuf`.

* The code compiles. Done! I've added three environment variables in `crates/local-deployment/src/pty.rs:73-75`:

1. `ZDOTDIR=/nonexistent` - prevents zsh from loading `~/.zshrc`
2. `PS1="$ "` - sets the bash prompt
3. `PROMPT="$ "` - sets the zsh prompt

The terminal prompt will now show just `$ ` instead of `lkw@Louiss-MacBook-Pro vibe-kanban %`. Run `pnpm run dev:qa` and open the terminal panel to verify.

* Cleanup script changes for workspace 928e696e-5f40-4603-9227-798f0520e07f

* Done! The fix is simpler - using `cmd.arg("-f")` to tell zsh/bash to skip loading config files. This:

1. Removes the `ZDOTDIR=/nonexistent` that was causing errors
2. Adds `-f` flag which skips `.zshrc`/`.bashrc` loading
3. Keeps `PS1` and `PROMPT` env vars which will now be respected

Run `pnpm run dev:qa` and open the terminal to verify the prompt shows `$ `.

* Cleanup script changes for workspace 928e696e-5f40-4603-9227-798f0520e07f

* I've implemented the terminal theme integration. Here's a summary of the changes:

## Changes Made

**1. Created `frontend/src/utils/terminalTheme.ts`**
- `hslToHex()` function to convert HSL CSS variable format (`"210 40% 98%"`) to hex colors
- `getCssVariable()` helper to read CSS variables from the `.new-design` element
- `getTerminalTheme()` function that builds an xterm.js `ITheme` object from CSS variables:
  - Uses `--console-background` and `--console-foreground` for main colors
  - Uses `--console-success` and `--console-error` for green/red ANSI colors
  - Provides appropriate ANSI color palettes for both light and dark modes

**2. Updated `frontend/src/components/ui-new/terminal/XTermInstance.tsx`**
- Imported `useTheme` hook and `getTerminalTheme` utility
- Replaced hardcoded Tokyo Night theme with dynamic `getTerminalTheme()` call
- Added effect to update terminal theme when app theme changes (`terminal.options.theme = getTerminalTheme()`)

The terminal will now:
- Initialize with colors matching the current theme
- Automatically update colors when switching between light and dark mode
- Use the console color variables defined in `index.css`

* Cleanup script changes for workspace 928e696e-5f40-4603-9227-798f0520e07f

* Now I understand the issue clearly. Here are the relevant variables:

| Variable | Light Mode | Dark Mode | Purpose |
|----------|------------|-----------|---------|
| `--_primary` | `0 0% 5%` (dark) | `240 4.8% 95.9%` (light) | Button background - **inverted** |
| `--_console-background` | `0 0% 100%` (white) | `0 0% 0%` (black) | Terminal background - **correct** |
| `--_console-foreground` | `0 0% 5%` (dark) | `210 40% 98%` (light) | Terminal text - **correct** |
| `--bg-primary` | `0 0% 100%` (white) | `0 0% 13%` (dark gray) | Page background |

The code was changed to use `--primary` but that's the wrong variable. For the terminal, you should use:
- `--console-background` / `--_console-background` for the background
- `--console-foreground` / `--_console-foreground` for the text

Or if you prefer to match other UI elements:
- `--bg-primary` for background
- `--text-high` for foreground text

Which approach would you prefer? The original `--console-*` variables were specifically designed for terminal styling, or we can use `--bg-primary`/`--text-high` to match the general UI background.

* Cleanup script changes for workspace 928e696e-5f40-4603-9227-798f0520e07f

* Done. The terminal will now use `--bg-primary` for the background and `--text-high` for the foreground text. This means:

- **Light mode**: White background (`0 0% 100%`) with dark text (`0 0% 5%`)
- **Dark mode**: Dark gray background (`0 0% 13%`) with light text (`0 0% 96%`)

* Done. The terminal will now use `--bg-secondary` for the background and `--text-high` for the foreground text. This means:

- **Light mode**: Light gray background (`0 0% 95%`) with dark text (`0 0% 5%`)
- **Dark mode**: Darker gray background (`0 0% 11%`) with light text (`0 0% 96%`)

* Let me know if you find any issues during testing or need adjustments!

* Cleanup script changes for workspace 928e696e-5f40-4603-9227-798f0520e07f

* terminal

* sidebar cleanup

* fix chat collapse

Amp-Thread-ID: https://ampcode.com/threads/T-019bc754-8db9-712a-a915-58d74d210cad
Co-authored-by: Amp <amp@ampcode.com>

* for the terminal on windows we need to default to powershell if avalibale for the pty  (vibe-kanban 049dbf73)

only if powershell.exe cannot be resolved, we should use cmd.

* he colour theme used for the terminal ui isn't visible enough in light mode (vibe-kanban 5f50878a)

t I think we either don't override the ANSI colour mapping with our own, or it's not contrasted enough

* fmt

---------

Co-authored-by: Gabriel Gordon-Hall <ggordonhall@gmail.com>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Solomon <abcpro11051@disroot.org>
2026-01-16 17:56:28 +00:00

291 lines
12 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.
{
"folderPicker": {
"legend": "フォルダ名をクリックして移動 • アクションボタンで選択",
"manualPathLabel": "パスを手動入力:",
"go": "移動",
"searchLabel": "現在のディレクトリを検索:",
"selectCurrent": "現在を選択",
"gitRepo": "git リポジトリ",
"selectPath": "パスを選択"
},
"branchSelector": {
"badges": {
"current": "現在",
"remote": "リモート"
},
"currentDisabled": "現在のブランチは選択できません",
"empty": "ブランチが見つかりません",
"placeholder": "ブランチを選択",
"searchPlaceholder": "ブランチを検索..."
},
"breadcrumb": {
"more": "More"
},
"buttons": {
"cancel": "キャンセル",
"close": "閉じる",
"connect": "接続",
"continue": "続行",
"create": "作成",
"delete": "削除",
"disconnect": "切断",
"edit": "編集",
"manage": "管理",
"replay": "再生",
"reset": "リセット",
"save": "保存",
"send": "送信"
},
"conversation": {
"args": "引数",
"deniedByUser": "{{toolName}} がユーザーによって拒否されました",
"output": "出力",
"plan": "計画",
"planToggle": {
"hide": "計画を非表示",
"show": "計画を表示"
},
"result": "結果",
"toolDetailsToggle": {
"hide": "詳細を非表示",
"show": "詳細を表示"
},
"taskCompleted": "タスク完了",
"ran": "実行",
"tool": "ツール",
"toolSummary": {
"read": "{{path}} を読み込み",
"searched": "「{{query}}」を検索",
"fetched": "{{url}} を取得",
"ranCommand": "コマンドを実行",
"createdTask": "タスクを作成: {{description}}",
"todoOperation": "{{operation}} Todo"
},
"fixScript": "スクリプトを修正"
},
"language": {
"browserDefault": "ブラウザ設定"
},
"states": {
"error": "エラー",
"loading": "読み込み中...",
"loadingHistory": "履歴を読み込み中",
"reconnecting": "再接続中",
"saving": "保存中...",
"success": "成功"
},
"orgMembers": {
"moreCount": "他 {{count}} 人"
},
"orgSwitcher": {
"title": "組織を切り替える",
"description": "切り替える組織を選択してください。",
"loadError": "組織の読み込みに失敗しました。もう一度お試しください。",
"noOrganizations": "あなたはどの組織にも所属していません。",
"menuItem": "組織",
"loadingPlaceholder": "組織を読み込み中...",
"selectPlaceholder": "組織を選択",
"currentBadge": " (現在)"
},
"navbar": {
"tryNewUI": "新しいUIを試す"
},
"signOut": "サインアウト",
"devMode": {
"banner": "開発モード - これは開発ビルドです"
},
"oauth": {
"title": "Vibe Kanbanにサインイン",
"description": "サインインして組織に参加し、チームとタスクを共有します",
"continueWithGitHub": "GitHubで続行",
"continueWithGoogle": "Googleで続行",
"waitingTitle": "認証を完了",
"waitingDescription": "認証用のポップアップウィンドウが開きました",
"waitingForAuth": "認証を待っています...",
"popupInstructions": "ポップアップウィンドウが開かない場合は、ポップアップブロックの設定を確認してください。",
"back": "戻る",
"successTitle": "認証成功!",
"welcomeBack": "おかえりなさい、{{name}}",
"errorTitle": "認証失敗",
"errorDescription": "アカウントの認証中に問題が発生しました",
"tryAgain": "再試行"
},
"toolbar": {
"sortBy": "並べ替え",
"groupBy": "グループ化"
},
"sorting": {
"ascending": "昇順",
"descending": "降順"
},
"grouping": {
"date": "日付",
"assignee": "担当者",
"label": "ラベル"
},
"workspaces": {
"title": "ワークスペース",
"searchPlaceholder": "検索...",
"active": "アクティブ",
"archived": "アーカイブ済み",
"loading": "読み込み中...",
"selectToStart": "ワークスペースを選択して開始",
"draft": "下書き",
"viewArchive": "アーカイブを表示",
"backToActive": "アクティブに戻る",
"noArchived": "アーカイブされたワークスペースはありません",
"pin": "ピン留め",
"unpin": "ピン留め解除",
"archive": "アーカイブ",
"more": "その他の操作",
"rename": {
"title": "ワークスペースの名前を変更",
"description": "このワークスペースの新しい名前を入力してください。",
"nameLabel": "名前",
"placeholder": "ワークスペース名を入力",
"action": "名前を変更",
"renaming": "名前を変更中..."
}
},
"fileTree": {
"searchPlaceholder": "ファイルを検索...",
"noResults": "一致するファイルがありません",
"title": "ファイル",
"showGitHubComments": "GitHubコメントを表示",
"hideGitHubComments": "GitHubコメントを非表示"
},
"sections": {
"changes": "変更",
"repositories": "リポジトリ",
"addRepositories": "リポジトリを追加",
"project": "プロジェクト",
"processes": "プロセス",
"devServer": "開発サーバー",
"advanced": "詳細設定",
"workingBranch": "作業ブランチ",
"recent": "最近",
"other": "その他",
"devServerPreview": "開発サーバープレビュー",
"terminal": "ターミナル"
},
"repos": {
"loading": "リポジトリを読み込み中...",
"noRecentRepos": "最近のリポジトリが見つかりません",
"noReposAdded": "リポジトリが追加されていません",
"noReposAddedHint": "下のオプションからこのワークスペースにリポジトリを追加してください"
},
"actions": {
"browseRepos": "ディスク上のリポジトリを参照",
"createNewRepo": "ディスク上に新しいリポジトリを作成",
"viewInChangesPanel": "変更パネルで表示",
"copyPath": "パスをコピー",
"copyWorktreePath": "ワークツリーパスをコピー",
"openInIde": "IDEで開く",
"repoSettings": "リポジトリ設定",
"cancel": "キャンセル",
"saveChanges": "変更を保存",
"copied": "コピーしました"
},
"comments": {
"addReviewComment": "レビューコメントを追加",
"addPlaceholder": "コメントを追加...",
"editPlaceholder": "コメントを編集..."
},
"confirm": {
"defaultConfirm": "確認",
"defaultCancel": "キャンセル"
},
"empty": {
"noChanges": "表示する変更がありません"
},
"commandBar": {
"noResults": "結果が見つかりません。",
"back": "戻る",
"defaultPlaceholder": "コマンドを入力または検索..."
},
"chatBox": {
"variants": "バリアント"
},
"projects": {
"noProjectFound": "プロジェクトが見つかりません",
"createFirstPrompt": "タスクを開始するには、まずプロジェクトを作成してください。",
"createNew": "新しいプロジェクトを作成",
"noProjectsFound": "プロジェクトが見つかりません"
},
"betaWorkspaces": {
"title": "新しいUIを試す",
"intro": "Vibe KanbanのUIをゼロから再構築しました。あなたは試用に招待されています。",
"newUiDescription": "新しいUIは日常業務に最適化されていますエージェントの管理、変更のプレビュー、コードのレビュー。また、旧UIでは利用できない機能も利用可能になります",
"newFeatures": {
"multiRepo": "複数のリポジトリを同時に編集",
"multiAgent": "単一のワークスペースで複数のエージェント会話(異なるエージェント間でも)を実行",
"commandBar": "コマンドバーでより高速なナビゲーション"
},
"oldUiDescription": "現時点では、いくつかの機能は現在のUIに残っています",
"oldFeatures": {
"kanban": "カンバンボードでのタスク管理",
"settings": "設定の変更",
"projects": "プロジェクトの管理"
},
"transition": "今後数週間の移行期間中は、両方のUIを行き来します。",
"optOutNote": "オプトアウトしたい場合は、設定からいつでも現在のUIに戻すことができます。",
"joinBeta": "ベータに参加",
"maybeLater": "後で"
},
"workspacesGuide": {
"welcome": {
"title": "ようこそ",
"content": "Vibe Kanbanの新しいUIであるWorkspacesへようこそ。早期フィードバックのために一部のユーザーに先行公開しています。ナビバーのフィードバックアイコンからいつでもご意見をお聞かせください。"
},
"commandBar": {
"title": "コマンドバー",
"content": "コマンドバーはナビゲーションの中心となるハブです。CMD+Kで開いて、ワークスペースで利用可能なすべてのアクションを検索・アクセスできます。"
},
"contextBar": {
"title": "コンテキストバー",
"content": "コンテキストバーでペイン間をすばやく切り替えられます。使いやすい場所にドラッグして配置できます。"
},
"sidebar": {
"title": "ワークスペースサイドバー",
"content": "すべてのワークスペースの状態を一目で確認できます。通知により注意が必要なワークスペースがハイライトされます。マージ済みのワークスペースをアーカイブしてサイドバーを整理しましょう。"
},
"multiRepo": {
"title": "マルチリポジトリ対応",
"content": "1つのワークスペースに複数のリポジトリを追加できます。別のリポジトリで作業しながら他のリポジトリのコードを参照したり、複数のリポジトリにまたがる変更を同時に実装できます。"
},
"sessions": {
"title": "複数セッション",
"content": "1つのワークスペース内で複数のエージェント会話セッションを作成できます異なるエージェントとのセッションも含む。これにより会話の制限を回避したり、別スレッドでレビューエージェントを起動できます。"
},
"preview": {
"title": "変更のプレビュー",
"content": "コンテキストを切り替えることなく、内蔵ブラウザで作業をプレビューできます。デスクトップ、モバイル、カスタムビューポートサイズでテストできます。"
},
"diffs": {
"title": "差分とコメント",
"content": "再設計された差分パネルには変更のファイルツリーが含まれています。差分に直接コメントしてエージェントにフィードバックを送ったり、ワークスペースがPRにリンクされている場合はGitHubコメントを表示できます。"
},
"classicUi": {
"title": "クラシックUIに戻る",
"content": "ナビバー左側の終了アイコンをクリックすると、クラシックカンバンボードに戻ります。新しいUIを完全に無効にするには、設定の「ベータ機能」にある「Workspacesベータを有効にする」オプションを更新してください。"
}
},
"logs": {
"searchLogs": "ログを検索",
"selectProcessToView": "プロセスを選択してログを表示"
},
"processes": {
"noProcesses": "プロセスがありません"
},
"search": {
"matchCount": "{{current}} / {{total}}",
"noMatches": "一致なし"
},
"contextUsage": {
"label": "コンテキスト使用量",
"emptyTooltip": "コンテキスト使用量は次の返信後に表示されます",
"tooltip": "コンテキスト: {{percentage}}% · {{used}} / {{total}} tokens",
"ariaLabel": "コンテキスト使用量: {{percentage}}%"
}
}