deckide 3.5.28 → 3.5.30
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/README.md
CHANGED
|
@@ -1,187 +1,251 @@
|
|
|
1
1
|
# Deck IDE
|
|
2
2
|
|
|
3
|
-
複数のターミナルを並列で管理できる軽量なWeb IDE。AIエージェント(Claude Code、Codex CLI等)を永続的に動かすことに最適化されています。
|
|
3
|
+
複数のターミナルを並列で管理できる軽量な Web IDE。AIエージェント(Claude Code、Codex CLI 等)を永続的に動かすことに最適化されています。
|
|
4
4
|
|
|
5
5
|
## 特徴
|
|
6
6
|
|
|
7
|
-
- **マルチターミナル**
|
|
8
|
-
-
|
|
9
|
-
- **
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
7
|
+
- **マルチターミナル** — 複数のターミナルを同時に起動・管理。グリッドレイアウトで自動配置
|
|
8
|
+
- **デッキシステム** — ワークスペースごとにターミナルをグループ化。最大3デッキまで分割表示
|
|
9
|
+
- **Monaco Editor** — VS Code と同じエディタエンジンによるコード編集
|
|
10
|
+
- **Git 統合** — ステージング、コミット、プッシュ、プル、ブランチ管理、Diff ビューア
|
|
11
|
+
- **マルチリポジトリ対応** — ワークスペース内の複数 Git リポジトリを自動検出
|
|
12
|
+
- **ファイルエクスプローラー** — ファイル・フォルダの作成、削除、コンテキストメニュー
|
|
13
|
+
- **ターミナルバッファ永続化** — WebSocket 切断・再接続時にターミナル出力を完全復元
|
|
14
|
+
- **Basic 認証** — CLI またはブラウザ設定画面から認証の有効化が可能
|
|
15
|
+
- **CLI ツール** — `deckide` コマンドでバックグラウンド起動・停止・設定管理
|
|
16
|
+
- **モバイル対応** — タッチ操作、スワイプでのデッキ切替、レスポンシブレイアウト
|
|
14
17
|
|
|
15
|
-
##
|
|
18
|
+
## クイックスタート
|
|
16
19
|
|
|
17
|
-
|
|
18
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
19
|
-
│ [エクスプローラー] [Git] [設定] Deck IDE │
|
|
20
|
-
├─────────┬───────────────────────────────────────────────────┤
|
|
21
|
-
│ ファイル │ Monaco Editor │
|
|
22
|
-
│ ツリー │ │
|
|
23
|
-
│ │ │
|
|
24
|
-
│ ├───────────────────────────────────────────────────┤
|
|
25
|
-
│ │ Terminal 1 │ Terminal 2 │
|
|
26
|
-
│ │ $ claude │ $ codex │
|
|
27
|
-
│ │ ... │ ... │
|
|
28
|
-
└─────────┴───────────────────────────────────────────────────┘
|
|
29
|
-
```
|
|
20
|
+
### npm からインストール(推奨)
|
|
30
21
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g deckide
|
|
24
|
+
deckide
|
|
25
|
+
```
|
|
34
26
|
|
|
35
|
-
|
|
27
|
+
ブラウザが自動で `http://localhost:8787` を開きます。
|
|
36
28
|
|
|
37
29
|
### ソースから実行
|
|
38
30
|
|
|
39
31
|
```bash
|
|
40
|
-
# リポジトリをクローン
|
|
41
32
|
git clone https://github.com/tako0614/ide.git
|
|
42
33
|
cd ide
|
|
43
|
-
|
|
44
|
-
# 依存関係をインストール
|
|
45
34
|
npm install
|
|
46
35
|
|
|
47
|
-
#
|
|
48
|
-
npm run dev:server # ターミナル1
|
|
49
|
-
npm run dev:web # ターミナル2
|
|
36
|
+
# 開発モード(ホットリロード付き)
|
|
37
|
+
npm run dev:server # ターミナル1: サーバー (port 8787)
|
|
38
|
+
npm run dev:web # ターミナル2: Web (port 5173)
|
|
50
39
|
|
|
51
|
-
#
|
|
40
|
+
# または本番ビルド
|
|
41
|
+
npm run build
|
|
52
42
|
npm run serve
|
|
53
43
|
```
|
|
54
44
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
## プロジェクト構成
|
|
45
|
+
## CLI リファレンス
|
|
58
46
|
|
|
59
47
|
```
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
deckide [start] サーバー起動(バックグラウンド)
|
|
49
|
+
deckide start --fg サーバー起動(フォアグラウンド)
|
|
50
|
+
deckide stop サーバー停止
|
|
51
|
+
deckide restart サーバー再起動
|
|
52
|
+
deckide status サーバー状態表示
|
|
53
|
+
deckide logs [-f] サーバーログ表示
|
|
54
|
+
|
|
55
|
+
deckide port 現在のポート表示
|
|
56
|
+
deckide port <number> ポート変更(自動再起動)
|
|
57
|
+
|
|
58
|
+
deckide auth on [user] [pass] Basic 認証を有効化
|
|
59
|
+
deckide auth off Basic 認証を無効化
|
|
60
|
+
deckide auth status 認証状態表示
|
|
61
|
+
|
|
62
|
+
deckide config 全設定表示
|
|
63
|
+
deckide config set <key> <val> 設定値変更
|
|
64
|
+
deckide config get <key> 設定値取得
|
|
65
|
+
deckide config reset 設定リセット
|
|
68
66
|
```
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
### 起動オプション
|
|
71
69
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
### バックエンド
|
|
80
|
-
- Hono (高速HTTPフレームワーク)
|
|
81
|
-
- node-pty (疑似ターミナル)
|
|
82
|
-
- simple-git (Git操作)
|
|
83
|
-
- WebSocket (ターミナル通信)
|
|
84
|
-
- SQLite (データ永続化)
|
|
85
|
-
|
|
86
|
-
### デスクトップ
|
|
87
|
-
- Electron 40
|
|
88
|
-
- electron-builder
|
|
89
|
-
- electron-updater (自動アップデート)
|
|
70
|
+
| オプション | 説明 |
|
|
71
|
+
|-----------|------|
|
|
72
|
+
| `-p, --port <port>` | ポート番号(デフォルト: 8787) |
|
|
73
|
+
| `--host <host>` | バインドアドレス(デフォルト: 0.0.0.0) |
|
|
74
|
+
| `--no-open` | ブラウザを自動で開かない |
|
|
75
|
+
| `--fg` | フォアグラウンドで起動 |
|
|
90
76
|
|
|
91
77
|
## 使い方
|
|
92
78
|
|
|
93
|
-
###
|
|
94
|
-
|
|
95
|
-
1. 左サイドバーの「+」ボタンをクリック
|
|
96
|
-
2. ディレクトリパスを入力(例: `C:\Projects\myapp`)
|
|
97
|
-
3. ワークスペースが追加される
|
|
98
|
-
|
|
99
|
-
### デッキの作成
|
|
100
|
-
|
|
101
|
-
1. ワークスペースを選択
|
|
102
|
-
2. 「デッキ作成」ボタンをクリック
|
|
103
|
-
3. デッキ名を入力
|
|
79
|
+
### ワークスペース
|
|
104
80
|
|
|
105
|
-
|
|
81
|
+
1. サイドバーのフォルダアイコンをクリック
|
|
82
|
+
2. 「ワークスペース追加」でディレクトリパスを指定
|
|
83
|
+
3. ワークスペースを選択するとエディタ・ファイルツリー・Git 操作が利用可能
|
|
106
84
|
|
|
107
|
-
|
|
108
|
-
- 「Claude」: `claude` コマンドを実行するターミナルを開く
|
|
109
|
-
- 「Codex」: `codex` コマンドを実行するターミナルを開く
|
|
85
|
+
### デッキとターミナル
|
|
110
86
|
|
|
111
|
-
|
|
87
|
+
1. ターミナルビューで「+」からデッキを作成
|
|
88
|
+
2. デッキ内で「+」「C」「X」ボタンからターミナルを追加
|
|
89
|
+
- **+** — 通常のシェル
|
|
90
|
+
- **C** — `claude` コマンド(Claude Code)
|
|
91
|
+
- **X** — `codex` コマンド(Codex CLI)
|
|
92
|
+
3. 複数デッキをタブで切り替え。ドラッグ&ドロップで並び替え・分割表示
|
|
112
93
|
|
|
113
|
-
|
|
114
|
-
2. 変更ファイルを確認
|
|
115
|
-
3. 「+」でステージング、「−」でアンステージ
|
|
116
|
-
4. コミットメッセージを入力してコミット
|
|
117
|
-
5. プッシュ/プル/フェッチボタンで同期
|
|
94
|
+
### Git 操作
|
|
118
95
|
|
|
119
|
-
|
|
96
|
+
1. ワークスペースエディタ内のソース管理パネルを開く
|
|
97
|
+
2. 変更ファイルを確認し「+」でステージング
|
|
98
|
+
3. コミットメッセージを入力してコミット
|
|
99
|
+
4. プッシュ / プル / フェッチで同期
|
|
120
100
|
|
|
121
|
-
|
|
122
|
-
# 依存関係のインストール
|
|
123
|
-
npm install
|
|
101
|
+
## プロジェクト構成
|
|
124
102
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
103
|
+
```
|
|
104
|
+
ide/
|
|
105
|
+
├── bin/
|
|
106
|
+
│ └── deckide.js # CLI エントリーポイント
|
|
107
|
+
├── src/ # バックエンド (Node.js)
|
|
108
|
+
│ ├── index.ts # サーバー起動
|
|
109
|
+
│ ├── server.ts # Hono アプリ構築・ミドルウェア
|
|
110
|
+
│ ├── config.ts # 環境変数・設定
|
|
111
|
+
│ ├── websocket.ts # WebSocket サーバー・ターミナル接続
|
|
112
|
+
│ ├── types.ts # 型定義
|
|
113
|
+
│ ├── routes/ # API ルート
|
|
114
|
+
│ │ ├── workspaces.ts
|
|
115
|
+
│ │ ├── decks.ts
|
|
116
|
+
│ │ ├── files.ts
|
|
117
|
+
│ │ ├── terminals.ts
|
|
118
|
+
│ │ ├── git.ts
|
|
119
|
+
│ │ └── settings.ts
|
|
120
|
+
│ ├── middleware/ # 認証・CORS・セキュリティ
|
|
121
|
+
│ ├── utils/ # DB・パス・UTF-8・シェル
|
|
122
|
+
│ └── shared/ # フロント/バック共有型・ユーティリティ
|
|
123
|
+
├── web/ # フロントエンド (React)
|
|
124
|
+
│ └── src/
|
|
125
|
+
│ ├── App.tsx
|
|
126
|
+
│ ├── components/ # UI コンポーネント
|
|
127
|
+
│ ├── hooks/ # カスタムフック
|
|
128
|
+
│ ├── utils/ # ユーティリティ
|
|
129
|
+
│ └── styles.css # Tailwind CSS + カスタムスタイル
|
|
130
|
+
├── data/ # SQLite データベース
|
|
131
|
+
└── docs/ # ドキュメント
|
|
132
|
+
```
|
|
128
133
|
|
|
129
|
-
|
|
130
|
-
npm run build:web # Webのみ
|
|
131
|
-
npm run build:server # サーバーのみ
|
|
132
|
-
npm run build:desktop # デスクトップアプリ
|
|
134
|
+
## 技術スタック
|
|
133
135
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
| レイヤー | 技術 |
|
|
137
|
+
|---------|------|
|
|
138
|
+
| フロントエンド | React 18, Vite, Tailwind CSS 4, Monaco Editor, xterm.js 5 |
|
|
139
|
+
| バックエンド | Hono, node-pty, simple-git, WebSocket (ws), Zod |
|
|
140
|
+
| データベース | Node.js 組み込み SQLite (`node:sqlite`) |
|
|
141
|
+
| 言語 | TypeScript |
|
|
142
|
+
| ランタイム | Node.js >= 22.5.0 |
|
|
137
143
|
|
|
138
144
|
## 環境変数
|
|
139
145
|
|
|
140
|
-
サーバーは以下の環境変数をサポートします:
|
|
141
|
-
|
|
142
146
|
| 変数名 | 説明 | デフォルト |
|
|
143
147
|
|--------|------|-----------|
|
|
144
|
-
| `PORT` | サーバーポート |
|
|
145
|
-
| `HOST` | バインドアドレス |
|
|
146
|
-
| `
|
|
147
|
-
| `
|
|
148
|
-
| `
|
|
149
|
-
| `
|
|
148
|
+
| `PORT` | サーバーポート | 8787 |
|
|
149
|
+
| `HOST` | バインドアドレス | 0.0.0.0 |
|
|
150
|
+
| `DEFAULT_ROOT` | デフォルトルートパス | ホームディレクトリ |
|
|
151
|
+
| `BASIC_AUTH_USER` | Basic 認証ユーザー名 | — |
|
|
152
|
+
| `BASIC_AUTH_PASSWORD` | Basic 認証パスワード(本番は12文字以上) | — |
|
|
153
|
+
| `CORS_ORIGIN` | CORS 許可オリジン(本番は必須) | — |
|
|
154
|
+
| `NODE_ENV` | 実行環境 | development |
|
|
155
|
+
| `MAX_FILE_SIZE` | 最大ファイルサイズ (bytes) | 10485760 (10MB) |
|
|
156
|
+
| `TERMINAL_BUFFER_LIMIT` | ターミナルバッファ上限 (bytes) | 500000 |
|
|
157
|
+
| `TRUST_PROXY` | プロキシヘッダーを信頼 | false |
|
|
158
|
+
| `DECKIDE_DATA_DIR` | データディレクトリ | ~/.deckide |
|
|
150
159
|
|
|
151
160
|
## API
|
|
152
161
|
|
|
153
162
|
### ワークスペース
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
|
|
164
|
+
| メソッド | パス | 説明 |
|
|
165
|
+
|---------|------|------|
|
|
166
|
+
| GET | `/api/workspaces` | 一覧 |
|
|
167
|
+
| POST | `/api/workspaces` | 作成 |
|
|
168
|
+
| DELETE | `/api/workspaces/:id` | 削除 |
|
|
169
|
+
| GET | `/api/config` | デフォルト設定取得 |
|
|
156
170
|
|
|
157
171
|
### デッキ
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
|
|
173
|
+
| メソッド | パス | 説明 |
|
|
174
|
+
|---------|------|------|
|
|
175
|
+
| GET | `/api/decks` | 一覧 |
|
|
176
|
+
| POST | `/api/decks` | 作成 |
|
|
177
|
+
| PUT | `/api/decks/order` | 並び替え |
|
|
178
|
+
| DELETE | `/api/decks/:id` | 削除 |
|
|
160
179
|
|
|
161
180
|
### ファイル
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
181
|
+
|
|
182
|
+
| メソッド | パス | 説明 |
|
|
183
|
+
|---------|------|------|
|
|
184
|
+
| GET | `/api/files` | ディレクトリ一覧 |
|
|
185
|
+
| GET | `/api/preview` | ディレクトリプレビュー |
|
|
186
|
+
| GET | `/api/file` | ファイル読み込み |
|
|
187
|
+
| PUT | `/api/file` | ファイル保存 |
|
|
188
|
+
| POST | `/api/file` | ファイル作成 |
|
|
189
|
+
| DELETE | `/api/file` | ファイル削除 |
|
|
190
|
+
| POST | `/api/dir` | ディレクトリ作成 |
|
|
191
|
+
| DELETE | `/api/dir` | ディレクトリ削除 |
|
|
167
192
|
|
|
168
193
|
### ターミナル
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
194
|
+
|
|
195
|
+
| メソッド | パス | 説明 |
|
|
196
|
+
|---------|------|------|
|
|
197
|
+
| GET | `/api/terminals` | 一覧 |
|
|
198
|
+
| POST | `/api/terminals` | 作成 |
|
|
199
|
+
| DELETE | `/api/terminals/:id` | 削除 |
|
|
200
|
+
| WS | `/api/terminals/:id` | WebSocket 接続 |
|
|
173
201
|
|
|
174
202
|
### Git
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
203
|
+
|
|
204
|
+
| メソッド | パス | 説明 |
|
|
205
|
+
|---------|------|------|
|
|
206
|
+
| GET | `/api/git/status` | ステータス |
|
|
207
|
+
| GET | `/api/git/repos` | リポジトリ一覧 |
|
|
208
|
+
| GET | `/api/git/multi-status` | 複数リポジトリの集約ステータス |
|
|
209
|
+
| POST | `/api/git/stage` | ステージング |
|
|
210
|
+
| POST | `/api/git/unstage` | アンステージ |
|
|
211
|
+
| POST | `/api/git/commit` | コミット |
|
|
212
|
+
| POST | `/api/git/discard` | 変更を破棄 |
|
|
213
|
+
| GET | `/api/git/diff` | 差分取得 |
|
|
214
|
+
| POST | `/api/git/push` | プッシュ |
|
|
215
|
+
| POST | `/api/git/pull` | プル |
|
|
216
|
+
| POST | `/api/git/fetch` | フェッチ |
|
|
217
|
+
| GET | `/api/git/remotes` | リモート一覧 |
|
|
218
|
+
| GET | `/api/git/branch-status` | ブランチ状態(ahead/behind) |
|
|
219
|
+
| GET | `/api/git/branches` | ブランチ一覧 |
|
|
220
|
+
| POST | `/api/git/checkout` | ブランチ切り替え |
|
|
221
|
+
| POST | `/api/git/create-branch` | ブランチ作成 |
|
|
222
|
+
| GET | `/api/git/log` | コミット履歴 |
|
|
223
|
+
|
|
224
|
+
### その他
|
|
225
|
+
|
|
226
|
+
| メソッド | パス | 説明 |
|
|
227
|
+
|---------|------|------|
|
|
228
|
+
| GET | `/health` | ヘルスチェック |
|
|
229
|
+
| GET | `/api/settings` | 設定取得 |
|
|
230
|
+
| POST | `/api/settings` | 設定更新 |
|
|
231
|
+
| GET | `/api/ws-token` | WebSocket 認証トークン |
|
|
232
|
+
| POST | `/api/shutdown` | サーバー停止 |
|
|
233
|
+
|
|
234
|
+
## WebSocket プロトコル
|
|
235
|
+
|
|
236
|
+
ターミナル接続は `/api/terminals/:id` WebSocket エンドポイントを使用します。
|
|
237
|
+
|
|
238
|
+
**クライアント → サーバー:**
|
|
239
|
+
- `{ type: "claim" }` — リサイズ権限を取得
|
|
240
|
+
- `{ type: "resize", cols, rows }` — PTY サイズ変更
|
|
241
|
+
- バイナリフレーム — キーボード入力
|
|
242
|
+
|
|
243
|
+
**サーバー → クライアント:**
|
|
244
|
+
- `{ type: "sync", offsetBase, reset }` — バッファ同期開始
|
|
245
|
+
- `{ type: "ready" }` — 同期完了、入力受付可能
|
|
246
|
+
- バイナリフレーム — ターミナル出力
|
|
247
|
+
|
|
248
|
+
再接続時はバッファオフセットを指定して差分のみ取得可能(`?bufferOffset=N&reconnect=1`)。
|
|
185
249
|
|
|
186
250
|
## ライセンス
|
|
187
251
|
|