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
- - **Monaco Editor** - VS Codeと同じエディタエンジンによるコード編集
9
- - **Git統合** - ステージング、コミット、プッシュ、プル、ブランチ管理
10
- - **マルチリポジトリ対応** - ワークスペース内の複数Gitリポジトリを自動検出
11
- - **ファイルエクスプローラー** - ファイル・フォルダの作成、削除、名前変更
12
- - **Diffビューア** - 変更ファイルの差分表示
13
- - **Windowsデスクトップアプリ** - Electronベースのネイティブアプリ(自動アップデート対応)
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
- ### Windowsデスクトップアプリ(推奨)
22
+ ```bash
23
+ npm install -g deckide
24
+ deckide
25
+ ```
34
26
 
35
- [Releases](https://github.com/tako0614/ide/releases)から最新の`Deck-IDE-Setup-x.x.x.exe`をダウンロードしてインストール。
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
- # 開発モードで起動(Web + Server)
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
- ブラウザで http://localhost:3210 を開く。
56
-
57
- ## プロジェクト構成
45
+ ## CLI リファレンス
58
46
 
59
47
  ```
60
- ide/
61
- ├── apps/
62
- │ ├── web/ # フロントエンド (React + Vite)
63
- │ ├── server/ # バックエンド (Hono + node-pty)
64
- │ └── desktop/ # Electronアプリ
65
- ├── packages/
66
- │ └── shared/ # 共有型定義
67
- └── docs/ # ドキュメント
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
- - React 19
74
- - Vite
75
- - Monaco Editor
76
- - xterm.js (WebGL対応)
77
- - TypeScript
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
- ### Git操作
87
+ 1. ターミナルビューで「+」からデッキを作成
88
+ 2. デッキ内で「+」「C」「X」ボタンからターミナルを追加
89
+ - **+** — 通常のシェル
90
+ - **C** — `claude` コマンド(Claude Code)
91
+ - **X** — `codex` コマンド(Codex CLI)
92
+ 3. 複数デッキをタブで切り替え。ドラッグ&ドロップで並び替え・分割表示
112
93
 
113
- 1. サイドナビでGitアイコンをクリック
114
- 2. 変更ファイルを確認
115
- 3. 「+」でステージング、「−」でアンステージ
116
- 4. コミットメッセージを入力してコミット
117
- 5. プッシュ/プル/フェッチボタンで同期
94
+ ### Git 操作
118
95
 
119
- ## 開発
96
+ 1. ワークスペースエディタ内のソース管理パネルを開く
97
+ 2. 変更ファイルを確認し「+」でステージング
98
+ 3. コミットメッセージを入力してコミット
99
+ 4. プッシュ / プル / フェッチで同期
120
100
 
121
- ```bash
122
- # 依存関係のインストール
123
- npm install
101
+ ## プロジェクト構成
124
102
 
125
- # 開発サーバー起動
126
- npm run dev:server # サーバー (port 3210)
127
- npm run dev:web # Web (port 5173)
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
- npm run dev:desktop
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` | サーバーポート | 3210 |
145
- | `HOST` | バインドアドレス | localhost |
146
- | `BASIC_AUTH_USER` | Basic認証ユーザー名 | (なし) |
147
- | `BASIC_AUTH_PASSWORD` | Basic認証パスワード | (なし) |
148
- | `CORS_ORIGIN` | CORS許可オリジン | * (開発時) |
149
- | `DEFAULT_ROOT` | デフォルトルートパス | (なし) |
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
- - `GET /api/workspaces` - ワークスペース一覧
155
- - `POST /api/workspaces` - ワークスペース作成
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
- - `GET /api/decks` - デッキ一覧
159
- - `POST /api/decks` - デッキ作成
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
- - `GET /api/files` - ファイル一覧
163
- - `GET /api/file` - ファイル読み込み
164
- - `PUT /api/file` - ファイル保存
165
- - `POST /api/file` - ファイル作成
166
- - `DELETE /api/file` - ファイル削除
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
- - `GET /api/terminals` - ターミナル一覧
170
- - `POST /api/terminals` - ターミナル作成
171
- - `DELETE /api/terminals/:id` - ターミナル削除
172
- - `WS /api/terminals/:id` - ターミナル接続
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
- - `GET /api/git/status` - Gitステータス
176
- - `GET /api/git/repos` - リポジトリ一覧
177
- - `POST /api/git/stage` - ステージング
178
- - `POST /api/git/unstage` - アンステージ
179
- - `POST /api/git/commit` - コミット
180
- - `POST /api/git/push` - プッシュ
181
- - `POST /api/git/pull` - プル
182
- - `GET /api/git/diff` - 差分取得
183
- - `GET /api/git/branches` - ブランチ一覧
184
- - `POST /api/git/checkout` - ブランチ切り替え
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deckide",
3
- "version": "3.5.28",
3
+ "version": "3.5.30",
4
4
  "description": "Deck IDE - Browser-based IDE with terminal, file explorer, and git integration",
5
5
  "type": "module",
6
6
  "bin": {