@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.
Files changed (98) hide show
  1. package/.cargo/config.toml +2 -0
  2. package/.claude-plugin/marketplace.json +18 -0
  3. package/.coderabbit.yaml +8 -0
  4. package/.codex/skills/gwt-fix-issue/scripts/inspect_issue.py +833 -0
  5. package/.dockerignore +63 -0
  6. package/.gitattributes +27 -0
  7. package/.husky/commit-msg +2 -0
  8. package/.husky/pre-commit +9 -0
  9. package/.husky/pre-push +12 -0
  10. package/.markdownlint.json +18 -0
  11. package/.markdownlintignore +2 -0
  12. package/Dockerfile +58 -0
  13. package/README.ja.md +161 -484
  14. package/README.md +164 -444
  15. package/cliff.toml +56 -0
  16. package/clippy.toml +2 -0
  17. package/cmake/ci-disable-native.cmake +16 -0
  18. package/codecov.yml +16 -0
  19. package/commitlint.config.cjs +107 -0
  20. package/deny.toml +35 -0
  21. package/docker-compose.yml +59 -0
  22. package/messages/errors.toml +52 -0
  23. package/package.json +12 -22
  24. package/rustfmt.toml +8 -0
  25. package/scripts/check-e2e-coverage-threshold.mjs +238 -0
  26. package/scripts/entrypoint.sh +36 -25
  27. package/scripts/install-linux-deps.sh +46 -0
  28. package/scripts/postinstall.js +79 -227
  29. package/scripts/release_issue_refs.py +317 -0
  30. package/scripts/run-local-backend-tests-on-commit.sh +15 -0
  31. package/scripts/run-local-e2e-coverage-on-commit.sh +69 -0
  32. package/scripts/run-local-e2e-on-commit.sh +60 -0
  33. package/scripts/test-all.sh +13 -0
  34. package/scripts/test_release_issue_refs.py +257 -0
  35. package/scripts/validate-skill-frontmatter.sh +108 -0
  36. package/scripts/verify-ci-node-toolchain.sh +76 -0
  37. package/scripts/verify-husky-hooks.sh +6 -0
  38. package/scripts/voice-eval.sh +48 -0
  39. package/tests/voice_eval/README.md +53 -0
  40. package/tests/voice_eval/manifest.template.json +55 -0
  41. package/tests/voice_eval/samples/.gitkeep +1 -0
  42. package/tests/voice_eval/script-ja.txt +10 -0
  43. package/vendor/ratatui-core/src/backend/test.rs +1077 -0
  44. package/vendor/ratatui-core/src/backend.rs +405 -0
  45. package/vendor/ratatui-core/src/buffer/assert.rs +71 -0
  46. package/vendor/ratatui-core/src/buffer/buffer.rs +1388 -0
  47. package/vendor/ratatui-core/src/buffer/cell.rs +377 -0
  48. package/vendor/ratatui-core/src/buffer.rs +9 -0
  49. package/vendor/ratatui-core/src/layout/alignment.rs +89 -0
  50. package/vendor/ratatui-core/src/layout/constraint.rs +526 -0
  51. package/vendor/ratatui-core/src/layout/direction.rs +63 -0
  52. package/vendor/ratatui-core/src/layout/flex.rs +212 -0
  53. package/vendor/ratatui-core/src/layout/layout.rs +2838 -0
  54. package/vendor/ratatui-core/src/layout/margin.rs +79 -0
  55. package/vendor/ratatui-core/src/layout/offset.rs +66 -0
  56. package/vendor/ratatui-core/src/layout/position.rs +253 -0
  57. package/vendor/ratatui-core/src/layout/rect/iter.rs +356 -0
  58. package/vendor/ratatui-core/src/layout/rect/ops.rs +136 -0
  59. package/vendor/ratatui-core/src/layout/rect.rs +1114 -0
  60. package/vendor/ratatui-core/src/layout/size.rs +147 -0
  61. package/vendor/ratatui-core/src/layout.rs +333 -0
  62. package/vendor/ratatui-core/src/lib.rs +82 -0
  63. package/vendor/ratatui-core/src/style/anstyle.rs +348 -0
  64. package/vendor/ratatui-core/src/style/color.rs +788 -0
  65. package/vendor/ratatui-core/src/style/palette/material.rs +608 -0
  66. package/vendor/ratatui-core/src/style/palette/tailwind.rs +653 -0
  67. package/vendor/ratatui-core/src/style/palette.rs +6 -0
  68. package/vendor/ratatui-core/src/style/palette_conversion.rs +82 -0
  69. package/vendor/ratatui-core/src/style/stylize.rs +668 -0
  70. package/vendor/ratatui-core/src/style.rs +1069 -0
  71. package/vendor/ratatui-core/src/symbols/bar.rs +51 -0
  72. package/vendor/ratatui-core/src/symbols/block.rs +51 -0
  73. package/vendor/ratatui-core/src/symbols/border.rs +709 -0
  74. package/vendor/ratatui-core/src/symbols/braille.rs +21 -0
  75. package/vendor/ratatui-core/src/symbols/half_block.rs +3 -0
  76. package/vendor/ratatui-core/src/symbols/line.rs +259 -0
  77. package/vendor/ratatui-core/src/symbols/marker.rs +82 -0
  78. package/vendor/ratatui-core/src/symbols/merge.rs +748 -0
  79. package/vendor/ratatui-core/src/symbols/pixel.rs +30 -0
  80. package/vendor/ratatui-core/src/symbols/scrollbar.rs +46 -0
  81. package/vendor/ratatui-core/src/symbols/shade.rs +5 -0
  82. package/vendor/ratatui-core/src/symbols.rs +15 -0
  83. package/vendor/ratatui-core/src/terminal/frame.rs +192 -0
  84. package/vendor/ratatui-core/src/terminal/terminal.rs +926 -0
  85. package/vendor/ratatui-core/src/terminal/viewport.rs +58 -0
  86. package/vendor/ratatui-core/src/terminal.rs +40 -0
  87. package/vendor/ratatui-core/src/text/grapheme.rs +84 -0
  88. package/vendor/ratatui-core/src/text/line.rs +1678 -0
  89. package/vendor/ratatui-core/src/text/masked.rs +149 -0
  90. package/vendor/ratatui-core/src/text/span.rs +904 -0
  91. package/vendor/ratatui-core/src/text/text.rs +1434 -0
  92. package/vendor/ratatui-core/src/text.rs +64 -0
  93. package/vendor/ratatui-core/src/widgets/stateful_widget.rs +193 -0
  94. package/vendor/ratatui-core/src/widgets/widget.rs +174 -0
  95. package/vendor/ratatui-core/src/widgets.rs +9 -0
  96. package/bin/gwt.js +0 -131
  97. package/scripts/postinstall.test.js +0 -71
  98. package/scripts/release-download.js +0 -66
package/README.ja.md CHANGED
@@ -1,551 +1,228 @@
1
- # @akiojin/gwt
1
+ # gwt
2
2
 
3
- [English](README.md)
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 を正とし、npm/bunx では該当リリースのバイナリをダウンロードして実行します。
71
-
72
- ### GitHub Releasesから(推奨)
8
+ [GitHub Releases](https://github.com/akiojin/gwt/releases) からお使いの
9
+ プラットフォーム向けバイナリをダウンロードし、`PATH` に配置してください。
73
10
 
74
- [Releasesページ](https://github.com/akiojin/gwt/releases)からプリビルドバイナリをダウンロード。各リリースには全対応プラットフォームのバイナリが含まれます:
11
+ ### macOS
75
12
 
76
- - `gwt-linux-x86_64` - Linux x86_64
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
- # Linux x86_64の例
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
- ### npm/bunx経由
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
- ### Cargo 経由
25
+ ### Windows
104
26
 
105
- Cargo CLI を直接インストールできます:
27
+ GitHub Releases からバイナリをダウンロードして `PATH` に配置します。
106
28
 
107
- ```bash
108
- # cargo-binstall でインストール(高速、GitHub Releasesからプリビルドバイナリをダウンロード)
109
- cargo binstall gwt-cli
29
+ ### Linux
110
30
 
111
- # GitHub からインストール(最新開発版)
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
- 任意のGitリポジトリで実行:
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
- ### Bareリポジトリでのgwt使用
332
-
333
- bareリポジトリまたはそのワークツリー内でgwtを実行した場合:
334
-
335
- | 起動場所 | ヘッダー表示 |
336
- |----------|-------------|
337
- | 通常リポジトリ | `Working Directory: /path [branch]` |
338
- | Bareリポジトリ | `Working Directory: /path/repo.git [bare]` |
339
- | ワークツリー(通常) | `Working Directory: /path [branch]` |
340
- | ワークツリー(bare方式) | `Working Directory: /path [branch] (repo.git)` |
341
-
342
- ### `.worktrees/`方式からのマイグレーション
343
-
344
- 既存の`.worktrees/`ディレクトリ方式を使用しているリポジトリがある場合、gwtはこれを検出してbareリポジトリ方式へのマイグレーションを提案します:
345
-
346
- 1. **バックアップ**: `.gwt-migration-backup/`にバックアップを作成
347
- 2. **bareリポジトリ作成**: `{repo-name}.git`を作成
348
- 3. **ワークツリー移行**: 既存ワークツリーを新構造に移動
349
- 4. **クリーンアップ**: 古い`.worktrees/`ディレクトリを削除
350
- 5. **設定作成**: `.gwt/project.json`を作成
351
-
352
- ### サブモジュールサポート
353
-
354
- ワークツリー作成時、gwtはサブモジュールが存在する場合は自動的に初期化します。これにより、ワークツリー作成直後からサブモジュールを使用できます。
355
-
356
- ## 高度なワークフロー
357
-
358
- ### ブランチ戦略
359
-
360
- このリポジトリは構造化されたブランチ戦略に従います:
361
-
362
- - **`main`**: 本番環境用コード。リリース専用の保護ブランチ。
363
- - **`develop`**: 機能統合ブランチ。すべてのfeatureブランチはここにマージ。
364
- - **`feature/*`**: 新機能と機能強化。**`develop`をベースとし、`develop`をターゲットにする必要があります**。
365
- - **`hotfix/*`**: 本番環境の緊急修正。`main`をベースとし、ターゲットにする。
366
- - **`release/*`**: リリース準備ブランチ。
367
-
368
- **重要**: featureブランチを作成する際は、常に`develop`をベースブランチとして使用してください:
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
- # 正しい方法: develop からfeatureブランチを作成
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
- ### GitHub統合
164
+ 閲覧のみ(PR 作成やブランチ管理なし)の場合:
399
165
 
400
- - **ブランチクリーンアップ**: マージ済みPRやベースブランチと差分がないブランチを自動検出して安全に削除
401
- - **認証確認**: 操作前にGitHub CLIセットアップを検証
402
- - **リモート同期**: クリーンアップ操作前に最新変更を取得
166
+ | 権限 | アクセス |
167
+ |---|---|
168
+ | **Contents** | Read |
169
+ | **Pull requests** | Read |
170
+ | **Issues** | Read |
171
+ | **Metadata** | Read |
403
172
 
404
- ## システム要件
173
+ ### 任意(高度設定)
405
174
 
406
- - **Rust**: Stableツールチェーン(ソースからビルドする場合)
407
- - **Git**: ワークツリーサポート付き最新版
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
- ```text
415
- @akiojin/gwt/
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
- tmux -u
200
+ cargo test -p gwt-core -p gwt-tui
503
201
  ```
504
202
 
505
- または `~/.tmux.conf` に以下を追加:
203
+ ### Lint
506
204
 
507
- ```
508
- set -gq utf8 on
205
+ ```bash
206
+ cargo clippy --all-targets --all-features -- -D warnings
509
207
  ```
510
208
 
511
- Dockerコンテナ内でロケールのインストールと設定が必要な場合もあります:
209
+ ### フォーマット
512
210
 
513
211
  ```bash
514
- apt-get update && apt-get install -y locales
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
- ```bash
526
- GWT_DEBUG=1 gwt
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 - 詳細はLICENSEファイルを参照
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