@akiojin/gwt 6.30.3 → 9.0.1
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/.cargo/config.toml +2 -0
- package/.claude-plugin/marketplace.json +18 -0
- package/.coderabbit.yaml +8 -0
- package/.codex/skills/gwt-fix-issue/scripts/inspect_issue.py +833 -0
- package/.dockerignore +63 -0
- package/.gitattributes +27 -0
- package/.husky/commit-msg +2 -0
- package/.husky/pre-commit +9 -0
- package/.husky/pre-push +12 -0
- package/.markdownlint.json +18 -0
- package/.markdownlintignore +2 -0
- package/Dockerfile +58 -0
- package/README.ja.md +161 -484
- package/README.md +164 -444
- package/cliff.toml +56 -0
- package/clippy.toml +2 -0
- package/cmake/ci-disable-native.cmake +16 -0
- package/codecov.yml +16 -0
- package/commitlint.config.cjs +107 -0
- package/deny.toml +35 -0
- package/docker-compose.yml +59 -0
- package/messages/errors.toml +52 -0
- package/package.json +12 -22
- package/rustfmt.toml +8 -0
- package/scripts/check-e2e-coverage-threshold.mjs +238 -0
- package/scripts/entrypoint.sh +36 -25
- package/scripts/install-linux-deps.sh +46 -0
- package/scripts/postinstall.js +79 -227
- package/scripts/release_issue_refs.py +317 -0
- package/scripts/run-local-backend-tests-on-commit.sh +15 -0
- package/scripts/run-local-e2e-coverage-on-commit.sh +69 -0
- package/scripts/run-local-e2e-on-commit.sh +60 -0
- package/scripts/test-all.sh +13 -0
- package/scripts/test_release_issue_refs.py +257 -0
- package/scripts/validate-skill-frontmatter.sh +108 -0
- package/scripts/verify-ci-node-toolchain.sh +76 -0
- package/scripts/verify-husky-hooks.sh +6 -0
- package/scripts/voice-eval.sh +48 -0
- package/tests/voice_eval/README.md +53 -0
- package/tests/voice_eval/manifest.template.json +55 -0
- package/tests/voice_eval/samples/.gitkeep +1 -0
- package/tests/voice_eval/script-ja.txt +10 -0
- package/vendor/ratatui-core/src/backend/test.rs +1077 -0
- package/vendor/ratatui-core/src/backend.rs +405 -0
- package/vendor/ratatui-core/src/buffer/assert.rs +71 -0
- package/vendor/ratatui-core/src/buffer/buffer.rs +1388 -0
- package/vendor/ratatui-core/src/buffer/cell.rs +377 -0
- package/vendor/ratatui-core/src/buffer.rs +9 -0
- package/vendor/ratatui-core/src/layout/alignment.rs +89 -0
- package/vendor/ratatui-core/src/layout/constraint.rs +526 -0
- package/vendor/ratatui-core/src/layout/direction.rs +63 -0
- package/vendor/ratatui-core/src/layout/flex.rs +212 -0
- package/vendor/ratatui-core/src/layout/layout.rs +2838 -0
- package/vendor/ratatui-core/src/layout/margin.rs +79 -0
- package/vendor/ratatui-core/src/layout/offset.rs +66 -0
- package/vendor/ratatui-core/src/layout/position.rs +253 -0
- package/vendor/ratatui-core/src/layout/rect/iter.rs +356 -0
- package/vendor/ratatui-core/src/layout/rect/ops.rs +136 -0
- package/vendor/ratatui-core/src/layout/rect.rs +1114 -0
- package/vendor/ratatui-core/src/layout/size.rs +147 -0
- package/vendor/ratatui-core/src/layout.rs +333 -0
- package/vendor/ratatui-core/src/lib.rs +82 -0
- package/vendor/ratatui-core/src/style/anstyle.rs +348 -0
- package/vendor/ratatui-core/src/style/color.rs +788 -0
- package/vendor/ratatui-core/src/style/palette/material.rs +608 -0
- package/vendor/ratatui-core/src/style/palette/tailwind.rs +653 -0
- package/vendor/ratatui-core/src/style/palette.rs +6 -0
- package/vendor/ratatui-core/src/style/palette_conversion.rs +82 -0
- package/vendor/ratatui-core/src/style/stylize.rs +668 -0
- package/vendor/ratatui-core/src/style.rs +1069 -0
- package/vendor/ratatui-core/src/symbols/bar.rs +51 -0
- package/vendor/ratatui-core/src/symbols/block.rs +51 -0
- package/vendor/ratatui-core/src/symbols/border.rs +709 -0
- package/vendor/ratatui-core/src/symbols/braille.rs +21 -0
- package/vendor/ratatui-core/src/symbols/half_block.rs +3 -0
- package/vendor/ratatui-core/src/symbols/line.rs +259 -0
- package/vendor/ratatui-core/src/symbols/marker.rs +82 -0
- package/vendor/ratatui-core/src/symbols/merge.rs +748 -0
- package/vendor/ratatui-core/src/symbols/pixel.rs +30 -0
- package/vendor/ratatui-core/src/symbols/scrollbar.rs +46 -0
- package/vendor/ratatui-core/src/symbols/shade.rs +5 -0
- package/vendor/ratatui-core/src/symbols.rs +15 -0
- package/vendor/ratatui-core/src/terminal/frame.rs +192 -0
- package/vendor/ratatui-core/src/terminal/terminal.rs +926 -0
- package/vendor/ratatui-core/src/terminal/viewport.rs +58 -0
- package/vendor/ratatui-core/src/terminal.rs +40 -0
- package/vendor/ratatui-core/src/text/grapheme.rs +84 -0
- package/vendor/ratatui-core/src/text/line.rs +1678 -0
- package/vendor/ratatui-core/src/text/masked.rs +149 -0
- package/vendor/ratatui-core/src/text/span.rs +904 -0
- package/vendor/ratatui-core/src/text/text.rs +1434 -0
- package/vendor/ratatui-core/src/text.rs +64 -0
- package/vendor/ratatui-core/src/widgets/stateful_widget.rs +193 -0
- package/vendor/ratatui-core/src/widgets/widget.rs +174 -0
- package/vendor/ratatui-core/src/widgets.rs +9 -0
- package/bin/gwt.js +0 -131
- package/scripts/postinstall.test.js +0 -71
- package/scripts/release-download.js +0 -66
package/README.ja.md
CHANGED
|
@@ -1,551 +1,228 @@
|
|
|
1
|
-
#
|
|
1
|
+
# gwt
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Claude Code / Codex CLI / Gemini CLI / OpenCode 対応の対話型Gitワークツリーマネージャー(グラフィカルなブランチ選択と高度なワークフロー管理機能付き)
|
|
6
|
-
|
|
7
|
-
## 概要
|
|
8
|
-
|
|
9
|
-
`@akiojin/gwt`は、直感的なインターフェースを通じてGitワークツリー管理を革新する強力なCLIツールです。Claude Code / Codex CLI / Gemini CLI / OpenCode の開発ワークフローとシームレスに統合し、インテリジェントなブランチ選択、自動ワークツリー作成、包括的なプロジェクト管理機能を提供します。
|
|
10
|
-
|
|
11
|
-
## 移行ステータス
|
|
12
|
-
|
|
13
|
-
Rust版はCLI/TUIの主要フローとWeb UI(REST + WebSocket端末)まで実装済みです。残作業はGitバックエンドのフォールバック範囲の整理、ドキュメント整備、リリース周りの調整に集中しています。
|
|
14
|
-
|
|
15
|
-
## 主要機能
|
|
16
|
-
|
|
17
|
-
- **モダンTUI**: Ratatuiによるスムーズでレスポンシブなターミナルインターフェース
|
|
18
|
-
- **フルスクリーンレイアウト**: リポジトリ情報付きの固定ヘッダー、枠線付きのブランチリスト
|
|
19
|
-
- **ブランチサマリーパネル**: コミット履歴、変更統計、ブランチメタデータに加えて、Tabでセッション要約を切り替えて表示
|
|
20
|
-
- **スマートブランチ作成**: ガイド付きプロンプトと自動ベースブランチ選択でfeature、bugfix、hotfix、releaseブランチを作成
|
|
21
|
-
- **高度なワークツリー管理**: 作成、Worktreeのあるブランチのクリーンアップ、パス最適化を含む完全なライフサイクル管理
|
|
22
|
-
- **Coding Agent 選択**: 起動時の対話型ランチャーでビルトイン(Claude Code / Codex CLI / Gemini CLI / OpenCode)または `~/.gwt/tools.json` 定義のカスタムを選択
|
|
23
|
-
- **Coding Agent 統合**: 選択したコーディングエージェントをワークツリーで起動(Claude Codeは権限設定・変更処理の統合あり)
|
|
24
|
-
- **GitHub PR統合**: マージされたプルリクエストのブランチとワークツリーの自動クリーンアップ
|
|
25
|
-
- **変更管理**: 開発セッション後のコミット、stash、破棄の内蔵サポート
|
|
26
|
-
- **tmux マルチエージェントモード**: tmux ペインを使用して複数のコーディングエージェントを並列実行(tmux 内で実行時に自動有効化)
|
|
27
|
-
- **ユニバーサルパッケージ**: 一度インストールすれば全プロジェクトで一貫した動作
|
|
28
|
-
- **エージェントモード**: 自然言語で機能要求を入力すると、仕様策定・タスク分割・並列実行・PR作成まで自律的に実行
|
|
29
|
-
|
|
30
|
-
## エージェントモード
|
|
31
|
-
|
|
32
|
-
エージェントモードは、自然言語の機能要求からコード実装までを自律的に行うマスター/サブエージェントアーキテクチャです。
|
|
33
|
-
|
|
34
|
-
### 基本操作
|
|
35
|
-
|
|
36
|
-
1. tmuxセッション内で`gwt`を起動
|
|
37
|
-
2. `Tab`キーでエージェントモードに切り替え
|
|
38
|
-
3. チャット入力欄に機能要求を入力(例: "ユーザー認証機能を追加")
|
|
39
|
-
4. マスターエージェントがSpec Kitワークフロー(仕様策定→計画→タスク分割)を自動実行
|
|
40
|
-
5. 計画を確認し、承認
|
|
41
|
-
6. サブエージェントが各タスクを並列実行
|
|
42
|
-
7. テスト検証・PR作成まで自動で完了
|
|
43
|
-
|
|
44
|
-
### 主要機能
|
|
45
|
-
|
|
46
|
-
- **Spec Kit統合**: 仕様書・計画書・タスクリストを自動生成
|
|
47
|
-
- **並列実行**: 依存関係を考慮してタスクを並列実行
|
|
48
|
-
- **セッション永続化**: 中断しても`~/.gwt/sessions/`に保存され、再開可能
|
|
49
|
-
- **ドライランモード**: "dry run"または"計画だけ"と入力すると計画のみ生成
|
|
50
|
-
- **コンテキスト圧縮**: 長い会話を自動要約してトークン消費を削減
|
|
51
|
-
- **定期進捗報告**: 2分間隔で実行中タスクの状態を報告
|
|
52
|
-
|
|
53
|
-
### キーバインド(エージェントモード)
|
|
54
|
-
|
|
55
|
-
| キー | 動作 |
|
|
56
|
-
|-----|------|
|
|
57
|
-
| `Tab` | ブランチリスト ↔ エージェントモード切り替え |
|
|
58
|
-
| `Enter` | メッセージ送信 / 計画承認 |
|
|
59
|
-
| `Esc` | 実行中タスクを一時停止 |
|
|
60
|
-
| `Shift+S` | Spec Kitウィザードを開く(ブランチリスト画面) |
|
|
61
|
-
|
|
62
|
-
### 設計ドキュメント
|
|
63
|
-
|
|
64
|
-
- [仕様書](specs/SPEC-ba3f610c/spec.md)
|
|
65
|
-
- [実装計画](specs/SPEC-ba3f610c/plan.md)
|
|
66
|
-
- [クイックスタート](specs/SPEC-ba3f610c/quickstart.md)
|
|
3
|
+
gwt は Git worktree の管理と、ブランチ単位での
|
|
4
|
+
`Claude Code` / `Codex` / `Gemini` / `OpenCode` 起動を行うターミナル (TUI) ツールです。
|
|
67
5
|
|
|
68
6
|
## インストール
|
|
69
7
|
|
|
70
|
-
GitHub Releases
|
|
71
|
-
|
|
72
|
-
### GitHub Releasesから(推奨)
|
|
8
|
+
[GitHub Releases](https://github.com/akiojin/gwt/releases) からお使いの
|
|
9
|
+
プラットフォーム向けバイナリをダウンロードし、`PATH` に配置してください。
|
|
73
10
|
|
|
74
|
-
|
|
11
|
+
### macOS
|
|
75
12
|
|
|
76
|
-
|
|
77
|
-
- `gwt-linux-aarch64` - Linux ARM64
|
|
78
|
-
- `gwt-macos-x86_64` - macOS Intel
|
|
79
|
-
- `gwt-macos-aarch64` - macOS Apple Silicon
|
|
80
|
-
- `gwt-windows-x86_64.exe` - Windows x86_64
|
|
13
|
+
インストーラーを実行します。
|
|
81
14
|
|
|
82
15
|
```bash
|
|
83
|
-
|
|
84
|
-
curl -L https://github.com/akiojin/gwt/releases/latest/download/gwt-linux-x86_64 -o gwt
|
|
85
|
-
chmod +x gwt
|
|
86
|
-
sudo mv gwt /usr/local/bin/
|
|
16
|
+
curl -fsSL https://raw.githubusercontent.com/akiojin/gwt/main/installers/macos/install.sh | bash
|
|
87
17
|
```
|
|
88
18
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
グローバルインストールまたはインストールなしで実行:
|
|
19
|
+
特定バージョンを指定してインストール:
|
|
92
20
|
|
|
93
21
|
```bash
|
|
94
|
-
|
|
95
|
-
npm install -g @akiojin/gwt
|
|
96
|
-
bun add -g @akiojin/gwt
|
|
97
|
-
|
|
98
|
-
# 一回限りの実行
|
|
99
|
-
npx @akiojin/gwt
|
|
100
|
-
bunx @akiojin/gwt
|
|
22
|
+
curl -fsSL https://raw.githubusercontent.com/akiojin/gwt/main/installers/macos/install.sh | bash -s -- --version 6.30.3
|
|
101
23
|
```
|
|
102
24
|
|
|
103
|
-
###
|
|
25
|
+
### Windows
|
|
104
26
|
|
|
105
|
-
|
|
27
|
+
GitHub Releases からバイナリをダウンロードして `PATH` に配置します。
|
|
106
28
|
|
|
107
|
-
|
|
108
|
-
# cargo-binstall でインストール(高速、GitHub Releasesからプリビルドバイナリをダウンロード)
|
|
109
|
-
cargo binstall gwt-cli
|
|
29
|
+
### Linux
|
|
110
30
|
|
|
111
|
-
|
|
112
|
-
cargo install --git https://github.com/akiojin/gwt --package gwt-cli --bin gwt --locked
|
|
31
|
+
GitHub Releases からバイナリをダウンロードして `PATH` に配置します。
|
|
113
32
|
|
|
114
|
-
|
|
115
|
-
cargo install --path crates/gwt-cli
|
|
116
|
-
|
|
117
|
-
# そのまま実行
|
|
118
|
-
cargo run -p gwt-cli
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### ソースからビルド
|
|
33
|
+
### アンインストール(macOS)
|
|
122
34
|
|
|
123
35
|
```bash
|
|
124
|
-
|
|
125
|
-
git clone https://github.com/akiojin/gwt.git
|
|
126
|
-
cd gwt
|
|
127
|
-
|
|
128
|
-
# リリースバイナリをビルド(デフォルト: gwt-cli)
|
|
129
|
-
cargo build --release
|
|
130
|
-
|
|
131
|
-
# ワークスペース全体をビルド(Web/wasm含む)
|
|
132
|
-
cargo build --workspace
|
|
133
|
-
|
|
134
|
-
# バイナリは target/release/gwt にあります
|
|
135
|
-
./target/release/gwt
|
|
36
|
+
curl -fsSL https://raw.githubusercontent.com/akiojin/gwt/main/installers/macos/uninstall.sh | bash
|
|
136
37
|
```
|
|
137
38
|
|
|
138
|
-
##
|
|
39
|
+
## 使い方
|
|
139
40
|
|
|
140
|
-
|
|
41
|
+
カレントディレクトリで TUI を起動します。
|
|
141
42
|
|
|
142
43
|
```bash
|
|
143
|
-
# グローバルインストール済みまたはPATHに追加済みの場合
|
|
144
44
|
gwt
|
|
145
|
-
|
|
146
|
-
# または一回限りの実行にbunxを使用
|
|
147
|
-
bunx @akiojin/gwt
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
CLIオプション:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
# ヘルプを表示
|
|
154
|
-
gwt --help
|
|
155
|
-
|
|
156
|
-
# バージョンを確認
|
|
157
|
-
gwt --version
|
|
158
|
-
|
|
159
|
-
# ワークツリー一覧
|
|
160
|
-
gwt list
|
|
161
|
-
|
|
162
|
-
# 既存ブランチ用のワークツリーを追加
|
|
163
|
-
gwt add feature/my-feature
|
|
164
|
-
|
|
165
|
-
# 新規ブランチとワークツリーを作成
|
|
166
|
-
gwt add -n feature/new-feature --base develop
|
|
167
|
-
|
|
168
|
-
# ワークツリーを削除
|
|
169
|
-
gwt remove feature/old-feature
|
|
170
|
-
|
|
171
|
-
# 孤立したワークツリーをクリーンアップ
|
|
172
|
-
gwt clean
|
|
173
|
-
|
|
174
|
-
# ログを表示
|
|
175
|
-
gwt logs --limit 100
|
|
176
|
-
|
|
177
|
-
# ログをフォロー
|
|
178
|
-
gwt logs --follow
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
ツールは以下のオプションを持つ対話型インターフェースを提供します:
|
|
182
|
-
|
|
183
|
-
1. **既存ブランチを選択**: ワークツリー自動作成機能付きでローカル・リモートブランチから選択
|
|
184
|
-
2. **新規ブランチ作成**: タイプ選択(feature/bugfix/hotfix/release)によるガイド付きブランチ作成
|
|
185
|
-
3. **ワークツリー管理**: 既存ワークツリーの表示、オープン、削除
|
|
186
|
-
4. **ブランチクリーンアップ**: マージ済みPRやベースブランチと差分がないブランチ/ワークツリーをローカルから自動削除(Worktreeのないブランチは対象外)
|
|
187
|
-
|
|
188
|
-
## キーボードショートカット
|
|
189
|
-
|
|
190
|
-
### ブランチリスト画面
|
|
191
|
-
|
|
192
|
-
| キー | 動作 |
|
|
193
|
-
|-----|------|
|
|
194
|
-
| `Enter` | 既存エージェントペインにフォーカス / 非表示ペインを表示 / ウィザードを開く |
|
|
195
|
-
| `d` | エージェントペインを削除(確認あり) |
|
|
196
|
-
| `v` | GitViewを開く(選択中ブランチのgit状態詳細) |
|
|
197
|
-
| `Space` | ブランチの選択/選択解除 |
|
|
198
|
-
| `Up/Down` | ブランチ間を移動 |
|
|
199
|
-
| `PageUp/PageDown` | ページ移動 |
|
|
200
|
-
| `Home/End` | 先頭/末尾のブランチへジャンプ |
|
|
201
|
-
| `f` | フィルターモードに入る |
|
|
202
|
-
| `r` | ブランチリストを更新 |
|
|
203
|
-
| `c` | マージ済みブランチのクリーンアップ |
|
|
204
|
-
| `l` | ログを表示 |
|
|
205
|
-
| `?` | ヘルプ |
|
|
206
|
-
| `q` / `Ctrl+C` | 終了 |
|
|
207
|
-
|
|
208
|
-
マウス:
|
|
209
|
-
- ブランチ行をダブルクリックするとEnter相当の操作が実行されます(ペインフォーカス/ウィザード起動)。
|
|
210
|
-
|
|
211
|
-
### フィルターモード
|
|
212
|
-
|
|
213
|
-
| キー | 動作 |
|
|
214
|
-
|-----|------|
|
|
215
|
-
| `Esc` | フィルターモードを終了 |
|
|
216
|
-
| 入力 | ブランチ名でフィルター |
|
|
217
|
-
|
|
218
|
-
### GitView画面
|
|
219
|
-
|
|
220
|
-
GitView画面は、選択中ブランチの詳細なgit状態(ファイル一覧、直近コミット)を表示します。
|
|
221
|
-
|
|
222
|
-
| キー | 動作 |
|
|
223
|
-
|-----|------|
|
|
224
|
-
| `Up/Down` | ファイル・コミット間を移動 |
|
|
225
|
-
| `Space` | ファイルのdiffまたはコミット詳細を展開/折りたたみ |
|
|
226
|
-
| `Enter` | PRリンクをブラウザで開く(ヘッダーにフォーカス時) |
|
|
227
|
-
| `v` / `Esc` | ブランチリストに戻る |
|
|
228
|
-
|
|
229
|
-
マウス:
|
|
230
|
-
- ヘッダーのPRリンクをクリックするとブラウザで開きます。
|
|
231
|
-
|
|
232
|
-
## ステータスアイコンの凡例
|
|
233
|
-
|
|
234
|
-
| アイコン | 色 | 意味 |
|
|
235
|
-
|---------|-----|------|
|
|
236
|
-
| `o` | 緑 | 安全 - コミットされていない変更やプッシュされていないコミットなし |
|
|
237
|
-
| `!` | 赤 | 未コミット - ローカルに変更あり |
|
|
238
|
-
| `^` | 黄 | 未プッシュ - リモートにプッシュされていないコミットあり |
|
|
239
|
-
| `*` | 黄 | 未マージ - マージされていない変更あり |
|
|
240
|
-
|
|
241
|
-
## エージェントステータス表示
|
|
242
|
-
|
|
243
|
-
ブランチリストの右側に、実行中のエージェントが表示されます:
|
|
244
|
-
|
|
245
|
-
| 形式 | 意味 |
|
|
246
|
-
|------|------|
|
|
247
|
-
| `[/] Claude 01:23:45` | 実行中のエージェント(スピナー、名前、稼働時間) |
|
|
248
|
-
| `[BG] Claude 01:23:45` | 非表示(バックグラウンド)のエージェント(グレーアウト) |
|
|
249
|
-
|
|
250
|
-
## コーディングエージェント
|
|
251
|
-
|
|
252
|
-
gwt は PATH 上のエージェントを検出し、ランチャーに表示します。
|
|
253
|
-
|
|
254
|
-
対応エージェント(ビルトイン):
|
|
255
|
-
|
|
256
|
-
- Claude Code (`claude`)
|
|
257
|
-
- Codex CLI (`codex`)
|
|
258
|
-
- Gemini CLI (`gemini`)
|
|
259
|
-
- OpenCode (`opencode`)
|
|
260
|
-
|
|
261
|
-
### カスタムコーディングエージェント
|
|
262
|
-
|
|
263
|
-
カスタムエージェントは `~/.gwt/tools.json` に定義するとランチャーに表示されます。
|
|
264
|
-
|
|
265
|
-
最小例:
|
|
266
|
-
|
|
267
|
-
```json
|
|
268
|
-
{
|
|
269
|
-
"version": "1.0.0",
|
|
270
|
-
"customCodingAgents": [
|
|
271
|
-
{
|
|
272
|
-
"id": "aider",
|
|
273
|
-
"displayName": "Aider",
|
|
274
|
-
"type": "command",
|
|
275
|
-
"command": "aider",
|
|
276
|
-
"defaultArgs": ["--no-git"],
|
|
277
|
-
"modeArgs": {
|
|
278
|
-
"normal": [],
|
|
279
|
-
"continue": ["--resume"],
|
|
280
|
-
"resume": ["--resume"]
|
|
281
|
-
},
|
|
282
|
-
"permissionSkipArgs": ["--yes"],
|
|
283
|
-
"env": {
|
|
284
|
-
"OPENAI_API_KEY": "sk-..."
|
|
285
|
-
},
|
|
286
|
-
"models": [
|
|
287
|
-
{ "id": "gpt-4o", "label": "GPT-4o" },
|
|
288
|
-
{ "id": "claude-3-opus", "label": "Claude 3 Opus" }
|
|
289
|
-
],
|
|
290
|
-
"versionCommand": "aider --version"
|
|
291
|
-
}
|
|
292
|
-
]
|
|
293
|
-
}
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
補足:
|
|
297
|
-
|
|
298
|
-
- `type` は `path` / `bunx` / `command` を指定します。
|
|
299
|
-
- `modeArgs` で実行モード別の引数を定義します(Normal/Continue/Resume)。
|
|
300
|
-
- `env` はエージェントごとの環境変数(任意)です。
|
|
301
|
-
- `models` は任意です。定義するとモデル選択ステップが表示されます。
|
|
302
|
-
- `versionCommand` は任意です。定義するとバージョン検出に使用されます。
|
|
303
|
-
|
|
304
|
-
## Bareリポジトリワークフロー
|
|
305
|
-
|
|
306
|
-
gwtは効率的なワークツリー管理のためにbareリポジトリワークフローをサポートしています。このアプローチではbareリポジトリ(`.git`データ)をワークツリーから分離し、より整理されたプロジェクト構成を提供します。
|
|
307
|
-
|
|
308
|
-
### ディレクトリ構造
|
|
309
|
-
|
|
310
|
-
```text
|
|
311
|
-
/project/
|
|
312
|
-
├── repo.git/ # Bareリポジトリ
|
|
313
|
-
├── main/ # ワークツリー(mainブランチ)
|
|
314
|
-
├── feature-x/ # ワークツリー(feature/xブランチ)
|
|
315
|
-
└── .gwt/ # gwt設定
|
|
316
|
-
└── project.json
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
### Bareリポジトリのセットアップ
|
|
320
|
-
|
|
321
|
-
```bash
|
|
322
|
-
# bareリポジトリとしてクローン
|
|
323
|
-
git clone --bare https://github.com/user/repo.git repo.git
|
|
324
|
-
|
|
325
|
-
# bareリポジトリからワークツリーを作成
|
|
326
|
-
cd repo.git
|
|
327
|
-
git worktree add ../main main
|
|
328
|
-
git worktree add ../feature-x feature/x
|
|
329
45
|
```
|
|
330
46
|
|
|
331
|
-
###
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
-
|
|
367
|
-
|
|
368
|
-
|
|
47
|
+
### ターミナル要件
|
|
48
|
+
|
|
49
|
+
- 256 色対応ターミナル推奨(最新のターミナルはほぼ対応済み)
|
|
50
|
+
- 最小 80x24 のターミナルサイズ
|
|
51
|
+
|
|
52
|
+
## 使い始め方
|
|
53
|
+
|
|
54
|
+
1. Git リポジトリ内で `gwt` を実行します。
|
|
55
|
+
2. サイドバーでブランチと worktree を閲覧します。
|
|
56
|
+
3. ブランチ操作欄から次を行います。
|
|
57
|
+
- worktree の作成/一覧/クリーンアップ
|
|
58
|
+
- エージェント起動
|
|
59
|
+
4. Agent や要約機能を使う場合は、**Settings** で AI プロファイルを設定します。
|
|
60
|
+
|
|
61
|
+
## キーバインド
|
|
62
|
+
|
|
63
|
+
TUI の主要なキーバインドは `Ctrl+G` プレフィックスを使用します。terminal
|
|
64
|
+
text はドラッグ範囲選択した時点で copy されます。
|
|
65
|
+
|
|
66
|
+
| キーバインド | 操作 |
|
|
67
|
+
|---|---|
|
|
68
|
+
| `Ctrl+G`, `c` | 新しいシェルタブ |
|
|
69
|
+
| `Ctrl+G`, `n` | 新しいエージェントタブ |
|
|
70
|
+
| `Ctrl+G`, `1`-`9` | タブ N に切替 |
|
|
71
|
+
| `Ctrl+G`, `]` | 次のタブ |
|
|
72
|
+
| `Ctrl+G`, `[` | 前のタブ |
|
|
73
|
+
| `Ctrl+G`, `x` | 現在のタブを閉じる |
|
|
74
|
+
| `Ctrl+G`, `w` | Worktree 一覧 |
|
|
75
|
+
| `Ctrl+G`, `s` | 設定 |
|
|
76
|
+
| `Ctrl+G`, `?` | ヘルプ / キーバインド一覧 |
|
|
77
|
+
| `Ctrl+G`, `q` | 終了 |
|
|
78
|
+
|
|
79
|
+
terminal text はドラッグで copy できます。ホスト terminal が shortcut を
|
|
80
|
+
転送する環境では、次も使えます。
|
|
81
|
+
|
|
82
|
+
- macOS: `Cmd+C`
|
|
83
|
+
- Linux / Windows: `Ctrl+Shift+C`
|
|
84
|
+
|
|
85
|
+
シェルやエージェント端末で日本語 IME の候補選択を調査する場合は、
|
|
86
|
+
`GWT_INPUT_TRACE_PATH=/tmp/gwt-input-trace.jsonl` を付けて gwt を起動してください。
|
|
87
|
+
JSONL トレースには、生の `crossterm` キーイベント、keybind 判定、PTY に
|
|
88
|
+
転送したバイト列が記録され、実行中に入力モードを切り替える必要はありません。
|
|
89
|
+
|
|
90
|
+
その routed trace と terminal の生入力を比較したい場合は、同じ端末で
|
|
91
|
+
`cargo run -p gwt-tui --example keytest -- --mode raw` を実行してください。
|
|
92
|
+
probe は既定で `/tmp/gwt-crossterm-events.jsonl` に全
|
|
93
|
+
`crossterm::event::Event` を記録し、必要なら位置引数で出力先を
|
|
94
|
+
上書きできます。
|
|
95
|
+
|
|
96
|
+
描画起因の IME 退行を切り分けるため、同じ probe には `--mode redraw` と
|
|
97
|
+
`--mode ratatui` もあります。`redraw` は同じ committed-text surface を
|
|
98
|
+
direct `crossterm` で周期再描画し、`ratatui` は同じ surface を同じ tick
|
|
99
|
+
で ratatui 経由に切り替えます。モード比較時の再描画間隔は
|
|
100
|
+
`--tick-ms <N>` で変更できます。
|
|
101
|
+
|
|
102
|
+
また gwt は起動時に minimal な kitty keyboard enhancement
|
|
103
|
+
(`DISAMBIGUATE_ESCAPE_CODES | REPORT_ALL_KEYS_AS_ESCAPE_CODES |
|
|
104
|
+
REPORT_ALTERNATE_KEYS | REPORT_EVENT_TYPES`) を要求し、終了時に pop します。
|
|
105
|
+
非対応端末では fail-open で従来挙動を維持します。互換端末で発生する
|
|
106
|
+
繰り返しキーイベントも通常の key press と同じ入力経路に残るため、IME の
|
|
107
|
+
候補ページ送り時にイベントが途中で消えにくくなります。さらに terminal pane
|
|
108
|
+
が focus を持つ間は、overlay など明示的に周期 UI が必要な場合を除いて、
|
|
109
|
+
idle な 100 ms tick では TUI を再描画しないため、バックグラウンド redraw に
|
|
110
|
+
よる IME 候補操作の中断を抑えます。一方で PTY output は即座に redraw を要求
|
|
111
|
+
するため、確定文字や通常の shell 出力が次のキー入力まで遅延しません。
|
|
112
|
+
|
|
113
|
+
## 必要環境変数と前提
|
|
114
|
+
|
|
115
|
+
### 必須
|
|
116
|
+
|
|
117
|
+
- `PATH` に `git` があること(Git コマンドが使える状態)
|
|
118
|
+
|
|
119
|
+
### 任意
|
|
120
|
+
|
|
121
|
+
- AI 利用時の認証情報(または Settings のプロファイル設定でも可):
|
|
122
|
+
- `ANTHROPIC_API_KEY` または `ANTHROPIC_AUTH_TOKEN`
|
|
123
|
+
- `OPENAI_API_KEY`
|
|
124
|
+
- `GOOGLE_API_KEY` または `GEMINI_API_KEY`
|
|
125
|
+
- `bunx` / `npx`(ローカル起動のフォールバックに利用)
|
|
126
|
+
- gwt が shared project-index runtime を bootstrap / repair するとき
|
|
127
|
+
(起動時やリポジトリ初期化時など)には `PATH` 上に Python 3.9+ が必要です。
|
|
128
|
+
gwt が `~/.gwt/runtime/chroma-venv` を自動作成し、その後は managed runtime を再利用します。
|
|
129
|
+
Windows では Command Prompt / PowerShell で `python` または `py -3` が通る状態にしてください。
|
|
130
|
+
- ベクトル索引データ (Issue / SPEC / ソースファイル) は `~/.gwt/index/<repo-hash>/` 配下に
|
|
131
|
+
保存されます。Issue および SPEC はリポジトリ単位で共有、ソースファイルは Worktree 単位です。
|
|
132
|
+
TUI は Worktree ごとにファイルシステム watcher を常駐させ、Issue 索引は起動時に
|
|
133
|
+
15 分 TTL で非同期リフレッシュします。初回検索時に `intfloat/multilingual-e5-base`
|
|
134
|
+
埋め込みモデル (約 440MB) を `~/.cache/huggingface/` にダウンロードします。
|
|
135
|
+
SPEC は `gwt-spec` ラベル付き GitHub Issue として格納され、`~/.gwt/cache/issues/<repo-hash>/` に
|
|
136
|
+
キャッシュされます。読み取りは `gwt issue spec <n>`、書き込みは
|
|
137
|
+
`gwt issue spec <n> --edit <section> -f <file>` を使用してください。
|
|
138
|
+
|
|
139
|
+
### Hook 設定ファイルの扱い
|
|
140
|
+
|
|
141
|
+
- gwt は `.claude/settings.local.json` をローカル端末向け設定として再生成し、このファイルの Git 除外も管理します。
|
|
142
|
+
- gwt は `.codex/hooks.json` を作成またはマージしますが、`.gitignore` や `info/exclude` には追加しません。
|
|
143
|
+
- `.codex/hooks.json` を version 管理するかどうかは各リポジトリの判断です。既存ファイルがある場合、gwt は gwt 管理 hook だけを置き換え、ユーザー hook と無関係な top-level 設定は保持します。
|
|
144
|
+
|
|
145
|
+
### GitHub Token(PAT)要件
|
|
146
|
+
|
|
147
|
+
gwt は GitHub 操作に `gh` CLI を使用します。以下で認証してください:
|
|
369
148
|
|
|
370
149
|
```bash
|
|
371
|
-
|
|
372
|
-
git checkout develop
|
|
373
|
-
git pull origin develop
|
|
374
|
-
git checkout -b feature/my-feature
|
|
375
|
-
|
|
376
|
-
# またはこのツールを使用すると自動的に処理されます
|
|
377
|
-
gwt
|
|
378
|
-
# → 「新規ブランチ作成」を選択 → 「feature」→ 自動的にdevelopをベースとして使用
|
|
150
|
+
gh auth login
|
|
379
151
|
```
|
|
380
152
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
> **重要**: このワークフローは人間の開発者向けです。エージェントは、ユーザーから明確かつタスク固有の指示がない限り、ブランチの作成や削除を絶対に行ってはいけません。
|
|
384
|
-
|
|
385
|
-
1. メインメニューから「新規ブランチ作成」を選択
|
|
386
|
-
2. ブランチタイプ(feature、bugfix、hotfix、release)を選択
|
|
387
|
-
3. 自動プレフィックス適用でブランチ名を入力
|
|
388
|
-
4. 利用可能なオプションからベースブランチを選択
|
|
389
|
-
5. ワークツリー作成パスを確認
|
|
390
|
-
6. 自動ワークツリーセットアップと選択ツールの起動
|
|
153
|
+
#### Fine-grained PAT 推奨権限
|
|
391
154
|
|
|
392
|
-
|
|
155
|
+
| 権限 | アクセス | 用途 |
|
|
156
|
+
|---|---|---|
|
|
157
|
+
| **Contents** | Read and Write | リポジトリ参照、ブランチ操作、リリース |
|
|
158
|
+
| **Pull requests** | Read and Write | PR 作成・編集・マージ・レビュー |
|
|
159
|
+
| **Issues** | Read and Write | Issue 作成・編集・コメント |
|
|
160
|
+
| **Metadata** | Read | 暗黙付与 |
|
|
393
161
|
|
|
394
|
-
|
|
395
|
-
- **ワークツリー削除**: オプションのブランチ削除付きクリーン削除
|
|
396
|
-
- **バッチ操作**: 複数ワークツリーの効率的な処理
|
|
162
|
+
#### 読み取り専用の最小権限
|
|
397
163
|
|
|
398
|
-
|
|
164
|
+
閲覧のみ(PR 作成やブランチ管理なし)の場合:
|
|
399
165
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
166
|
+
| 権限 | アクセス |
|
|
167
|
+
|---|---|
|
|
168
|
+
| **Contents** | Read |
|
|
169
|
+
| **Pull requests** | Read |
|
|
170
|
+
| **Issues** | Read |
|
|
171
|
+
| **Metadata** | Read |
|
|
403
172
|
|
|
404
|
-
|
|
173
|
+
### 任意(高度設定)
|
|
405
174
|
|
|
406
|
-
-
|
|
407
|
-
-
|
|
408
|
-
- **Coding Agent**: 少なくともビルトインまたはカスタムのいずれかが必要
|
|
409
|
-
- **GitHub CLI**: PR クリーンアップ機能に必要(オプション)
|
|
410
|
-
- **bun/npm**: bunx/npx実行方式に必要
|
|
175
|
+
- `GWT_AGENT_AUTO_INSTALL_DEPS` (`true` / `false`)
|
|
176
|
+
- `GWT_DOCKER_FORCE_HOST` (`true` / `false`)
|
|
411
177
|
|
|
412
|
-
|
|
178
|
+
### ログとプロファイリング
|
|
413
179
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
├── Cargo.toml # ワークスペース設定
|
|
417
|
-
├── crates/
|
|
418
|
-
│ ├── gwt-cli/ # CLIエントリポイントとTUI(Ratatui)
|
|
419
|
-
│ ├── gwt-core/ # コアライブラリ(ワークツリー管理)
|
|
420
|
-
│ ├── gwt-web/ # Webサーバー(Axum)
|
|
421
|
-
│ └── gwt-frontend/ # Webフロントエンド(Leptos CSR)
|
|
422
|
-
├── package.json # npm配布用ラッパー
|
|
423
|
-
├── bin/gwt.js # バイナリラッパースクリプト
|
|
424
|
-
├── scripts/postinstall.js # バイナリダウンロードスクリプト
|
|
425
|
-
├── specs/ # 機能仕様書
|
|
426
|
-
└── docs/ # ドキュメント
|
|
427
|
-
```
|
|
180
|
+
通常ログはプロジェクトごとに `~/.gwt/logs/<repo-hash>/gwt.log.YYYY-MM-DD` へ JSON Lines 形式で保存されます。パフォーマンスプロファイリングは **Settings > Profiling** で有効化できます。
|
|
181
|
+
ログ仕様の詳細は [#1758](https://github.com/akiojin/gwt/issues/1758) を参照してください。
|
|
428
182
|
|
|
429
183
|
## 開発
|
|
430
184
|
|
|
431
|
-
###
|
|
185
|
+
### ビルド
|
|
432
186
|
|
|
433
187
|
```bash
|
|
434
|
-
|
|
435
|
-
git clone https://github.com/akiojin/gwt.git
|
|
436
|
-
cd gwt
|
|
437
|
-
|
|
438
|
-
# プロジェクトをビルド
|
|
439
|
-
cargo build
|
|
440
|
-
|
|
441
|
-
# テストを実行
|
|
442
|
-
cargo test
|
|
443
|
-
|
|
444
|
-
# デバッグ出力付きで実行
|
|
445
|
-
cargo run
|
|
188
|
+
cargo build -p gwt-tui
|
|
446
189
|
```
|
|
447
190
|
|
|
448
|
-
###
|
|
191
|
+
### 実行(開発)
|
|
449
192
|
|
|
450
193
|
```bash
|
|
451
|
-
|
|
452
|
-
cargo build
|
|
453
|
-
|
|
454
|
-
# リリースビルド
|
|
455
|
-
cargo build --release
|
|
456
|
-
|
|
457
|
-
# テスト実行
|
|
458
|
-
cargo test
|
|
459
|
-
|
|
460
|
-
# clippy lint実行
|
|
461
|
-
cargo clippy --all-targets --all-features -- -D warnings
|
|
462
|
-
|
|
463
|
-
# コードフォーマット
|
|
464
|
-
cargo fmt
|
|
465
|
-
|
|
466
|
-
# CLIをローカル実行
|
|
467
|
-
cargo run
|
|
194
|
+
cargo run -p gwt-tui
|
|
468
195
|
```
|
|
469
196
|
|
|
470
|
-
###
|
|
471
|
-
|
|
472
|
-
1. **フォークとクローン**: リポジトリをフォークし、あなたのフォークをクローン
|
|
473
|
-
2. **ブランチ作成**: ツール自体を使用してfeatureブランチを作成
|
|
474
|
-
3. **開発**: Rustで変更を実施
|
|
475
|
-
4. **テスト**: `cargo run`でCLI機能をテスト
|
|
476
|
-
5. **品質チェック**: `cargo clippy`と`cargo fmt --check`を実行
|
|
477
|
-
6. **プルリクエスト**: 明確な説明付きでPRを提出
|
|
478
|
-
|
|
479
|
-
### コード構造
|
|
480
|
-
|
|
481
|
-
- **エントリーポイント**: `crates/gwt-cli/src/main.rs` - メインアプリケーションロジック
|
|
482
|
-
- **コアモジュール**: Git操作、ワークツリー管理は`gwt-core`に
|
|
483
|
-
- **TUIコンポーネント**: `gwt-cli/src/tui/`のRatatuiベースインターフェース
|
|
484
|
-
- **型安全性**: 包括的なRust型定義
|
|
485
|
-
- **エラーハンドリング**: `thiserror`による堅牢なエラー管理
|
|
486
|
-
|
|
487
|
-
## リリースプロセス
|
|
488
|
-
|
|
489
|
-
利用者の方は GitHub Releases もしくは npm で公開される最新版をご利用ください。メンテナ向けのリリースフロー要件は `specs/SPEC-77b1bc70/spec.md` を参照してください。
|
|
490
|
-
|
|
491
|
-
## トラブルシューティング
|
|
492
|
-
|
|
493
|
-
### よくある問題
|
|
494
|
-
|
|
495
|
-
**権限エラー**: 適切なディレクトリ権限があることを確認
|
|
496
|
-
**Git ワークツリー競合**: クリーンアップ機能を使用して古いワークツリーを削除
|
|
497
|
-
**GitHub認証**: PRクリーンアップ機能使用前に`gh auth login`を実行
|
|
498
|
-
**バイナリが見つからない**: gwtバイナリがPATHに含まれていることを確認
|
|
499
|
-
**Docker + tmux でのUnicode文字化け**: Dockerコンテナ内のtmuxでUnicode文字(Claude Codeのロゴなど)がアンダースコアに化ける場合、tmuxをUTF-8モードで起動してください:
|
|
197
|
+
### テスト
|
|
500
198
|
|
|
501
199
|
```bash
|
|
502
|
-
|
|
200
|
+
cargo test -p gwt-core -p gwt-tui
|
|
503
201
|
```
|
|
504
202
|
|
|
505
|
-
|
|
203
|
+
### Lint
|
|
506
204
|
|
|
507
|
-
```
|
|
508
|
-
|
|
205
|
+
```bash
|
|
206
|
+
cargo clippy --all-targets --all-features -- -D warnings
|
|
509
207
|
```
|
|
510
208
|
|
|
511
|
-
|
|
209
|
+
### フォーマット
|
|
512
210
|
|
|
513
211
|
```bash
|
|
514
|
-
|
|
515
|
-
sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen
|
|
516
|
-
locale-gen
|
|
517
|
-
export LANG=en_US.UTF-8
|
|
518
|
-
export LC_ALL=en_US.UTF-8
|
|
212
|
+
cargo fmt
|
|
519
213
|
```
|
|
520
214
|
|
|
521
|
-
|
|
215
|
+
## プロジェクト構成
|
|
522
216
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
217
|
+
```text
|
|
218
|
+
├── Cargo.toml # ワークスペース設定
|
|
219
|
+
├── crates/
|
|
220
|
+
│ ├── gwt-core/ # コアライブラリ(Git操作・PTY管理・設定)
|
|
221
|
+
│ ├── gwt-github/ # GitHub Issue SOT for SPEC 管理 (SPEC-12)
|
|
222
|
+
│ └── gwt-tui/ # ratatui TUI フロントエンド + CLI (`gwt issue spec ...`)
|
|
223
|
+
└── package.json # 開発用スクリプト
|
|
527
224
|
```
|
|
528
225
|
|
|
529
226
|
## ライセンス
|
|
530
227
|
|
|
531
|
-
MIT
|
|
532
|
-
|
|
533
|
-
## 貢献
|
|
534
|
-
|
|
535
|
-
貢献を歓迎します!以下の貢献ガイドラインをお読みください:
|
|
536
|
-
|
|
537
|
-
1. **Issues**: GitHub IssuesでバグレポートやFeatureリクエストを報告
|
|
538
|
-
2. **プルリクエスト**: 上記の開発ワークフローに従う
|
|
539
|
-
3. **コードスタイル**: Rustベストプラクティスと既存パターンを維持
|
|
540
|
-
4. **ドキュメント**: 重要な変更についてはREADMEとコードコメントを更新
|
|
541
|
-
|
|
542
|
-
### 貢献者
|
|
543
|
-
|
|
544
|
-
- AI Novel Project Team
|
|
545
|
-
- コミュニティ貢献者歓迎
|
|
546
|
-
|
|
547
|
-
## サポート
|
|
548
|
-
|
|
549
|
-
- **ドキュメント**: このREADMEとインラインコードドキュメント
|
|
550
|
-
- **Issues**: バグレポートとFeatureリクエスト用のGitHub Issues
|
|
551
|
-
- **ディスカッション**: 質問とコミュニティサポート用のGitHub Discussions
|
|
228
|
+
MIT
|