claude-dev-server 1.1.4 → 1.2.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/README.md CHANGED
@@ -7,13 +7,14 @@
7
7
  ## 功能特性
8
8
 
9
9
  - **通用支持** - 适用于 Vite、Next.js、Webpack 或任何 dev server
10
+ - **分屏布局** - 左侧 Claude Code 终端,右侧开发服务器,可拖动分隔线调整宽度
10
11
  - **ttyd 终端** - 使用 ttyd 提供真正的 PTY 终端体验,完整支持 ANSI 转义序列、颜色、光标控制
11
12
  - **Claude Code 集成** - 通过 WebSocket 与后台 Claude Code 进程通信,实时 AI 辅助开发
12
13
  - **元素检查器** - 点击页面元素,自动定位到对应源代码位置,并发送到 Claude Code 终端
13
14
  - **智能提示格式** - 自动格式化选中元素为 `@filename:line <selector> "text content"` 格式
15
+ - **Next.js 路由支持** - 使用真实 iframe src 解决 Next.js 路由问题
14
16
  - **无需安装** - 直接使用 `npx` 运行,自动检测项目类型
15
- - **快捷键支持** - `Cmd/Ctrl + \\`` 打开/关闭面板,`Escape` 退出检查模式
16
- - **悬浮按钮** - Claude Code 图标按钮打开面板,Inspect 按钮进入检查模式
17
+ - **快捷键支持** - `Cmd/Ctrl + Shift + I` 切换检查模式,`Escape` 退出
17
18
 
18
19
  ## 快速开始
19
20
 
@@ -63,48 +64,87 @@ npx claude-dev-server@latest --port 4000
63
64
 
64
65
  ## 使用方法
65
66
 
66
- ### 悬浮按钮
67
+ ### 界面布局
67
68
 
68
- 页面右上角会显示两个悬浮按钮:
69
+ 浏览器打开后会显示分屏布局:
69
70
 
70
- | 按钮 | 功能 |
71
- |------|------|
72
- | **Claude Code 图标** | 打开/关闭 Claude Code 面板 |
73
- | **Inspect 图标** | 进入/退出元素检查模式 |
71
+ ```
72
+ ┌─────────────────────────────────────────────────────────────┐
73
+ │ ┌────────────────────┐ ┌──────────────────────────────┐ │
74
+ │ │ Claude Code 终端 │ │ 开发服务器 (Next.js) │ │
75
+ │ │ │ │ │ │ │
76
+ │ │ [Inspect 按钮] │ ╳ │ │ │
77
+ │ │ │ │ │ │ │
78
+ │ └────────────────────┘ │ └──────────────────────────────┘ │
79
+ │ 左侧 (40%) │ 右侧 (60%) │
80
+ └─────────────────────────────────────────────────────────────┘
81
+ ```
82
+
83
+ - **左侧面板** - Claude Code 终端(可拖动分隔线调整宽度)
84
+ - **右侧面板** - 开发服务器(Next.js/Vite/Webpack 应用)
85
+ - **分隔线** - 鼠标悬停变橙色,拖动可调整左右宽度
74
86
 
75
87
  ### 键盘快捷键
76
88
 
77
89
  | 快捷键 | 说明 |
78
90
  |--------|--------|
79
- | `Cmd/Ctrl + \\`` | 打开/关闭 Claude Code 面板 |
80
- | `Escape` | 退出检查模式或关闭面板 |
91
+ | `Cmd/Ctrl + Shift + I` | 切换元素检查模式 |
92
+ | `Escape` | 退出检查模式 |
81
93
 
82
94
  ### 工作流程
83
95
 
84
- 1. `Cmd/Ctrl + \\`` 或点击 Claude Code 图标打开面板
85
- 2. 在终端中直接与 Claude Code 交互
86
- 3. 点击 **Inspect** 按钮进入检查模式
87
- 4. 鼠标移动到页面元素上会高亮显示
88
- 5. 点击元素后自动发送格式化提示到终端:
96
+ 1. 在左侧 Claude Code 终端中与 AI 交互
97
+ 2. 点击左上角的 **Inspect** 按钮进入检查模式
98
+ 3. 鼠标移动到右侧页面元素上会高亮显示
99
+ 4. 点击元素后自动发送格式化提示到终端:
89
100
  ```
90
- @src/App.tsx:12 <button className="btn"> "Submit"
101
+ @src/App.tsx:12 <button.inline-flex.items-center> "Submit"
91
102
  ```
92
- 6. Claude Code 会根据代码位置上下文回答你的问题
103
+ 5. Claude Code 会根据代码位置上下文回答你的问题
93
104
 
94
105
  ## 提示格式说明
95
106
 
96
107
  选中元素后,会自动生成以下格式的提示:
97
108
 
98
109
  ```
99
- @<filename>:<line> <selector> "text content"
110
+ @<filename> <selector> "text content"
100
111
  ```
101
112
 
102
- - `@filename:line` - 源文件路径和行号(支持 React DevTools、Vue 组件)
103
- - `<selector>` - CSS 选择器(标签名 + ID + 类名)
104
- - `"text content"` - 元素文本内容(如果存在)
113
+ - `@filename` - 源文件路径
114
+ - `<selector>` - CSS 选择器(标签名 + ID + 类名,最多 3 个)
115
+ - `"text content"` - 元素文本内容(前 50 个字符)
116
+
117
+ **示例:**
118
+ ```
119
+ @apps/web/src/app/[lng]/login/page.tsx <button.inline-flex.items-center> "Log In"
120
+ ```
105
121
 
106
122
  ## 架构
107
123
 
124
+ ### Next.js 路由解决方案
125
+
126
+ 使用 `dev.html` + referer 检测解决 Next.js 在 iframe 中的路由问题:
127
+
128
+ ```
129
+ 浏览器直接访问: http://localhost:3000/dashboard
130
+
131
+ 服务器检测: 无 dev.html referer
132
+
133
+ 302 重定向到: /dev.html?path=/dashboard
134
+
135
+ dev.html 加载,创建 iframe src="/dashboard"
136
+
137
+ iframe 加载,referer=".../dev.html"
138
+
139
+ 服务器检测到 dev.html referer
140
+
141
+ 代理原始 HTML(无注入)
142
+
143
+ Next.js 有真实 window.location → 路由正常工作 ✅
144
+ ```
145
+
146
+ ### 系统架构
147
+
108
148
  ```
109
149
  ┌─────────────────────────────────────────────────────────────┐
110
150
  │ Claude Dev Server (主进程) │
@@ -113,9 +153,9 @@ npx claude-dev-server@latest --port 4000
113
153
  │ │ HTTP Proxy │ │ Control Server │ │
114
154
  │ │ (Port :3000) │ │ (WebSocket) │ │
115
155
  │ │ │ │ │ │
116
- │ │ - 代理转发 │ │ - ttyd 管理 │ │
117
- │ │ - HTML 注入 │◄───────►│ - Claude 进程 │ │
118
- │ │ - 中间件 │ │ │ │
156
+ │ │ - Referer 检测 │ │ - ttyd 管理 │ │
157
+ │ │ - dev.html 重定向│◄───────►│ - Claude 进程 │ │
158
+ │ │ - 代理转发 │ │ │ │
119
159
  │ └────────┬─────────┘ └──────────────────┘ │
120
160
  │ │ │
121
161
  │ ▼ │
@@ -132,9 +172,13 @@ npx claude-dev-server@latest --port 4000
132
172
  ┌─────────────────┐
133
173
  │ Browser │
134
174
  │ │
135
- - App 页面
136
- - Claude 终端
137
- - Inspector
175
+ ┌───────────┐
176
+ dev.html
177
+ (分屏布局)
178
+ │ │ │ │
179
+ │ │ 左: 终端 │ │
180
+ │ │ 右: iframe│ │
181
+ │ └───────────┘ │
138
182
  └─────────────────┘
139
183
  ```
140
184
 
@@ -151,27 +195,28 @@ npx claude-dev-server@latest --port 4000
151
195
 
152
196
  ### Q: 如何使用自己的 claude 命令?
153
197
 
154
- A: 使用 `--claude-path` 选项:
155
-
156
- ```bash
157
- npx claude-dev-server --claude-path /path/to/your/claude
158
- ```
198
+ A: 暂不支持,默认使用 `claude` 命令。
159
199
 
160
200
  ### Q: Inspect 模式下为什么有些元素无法选中?
161
201
 
162
- A: Dev Tools 自身的元素(悬浮按钮、面板等)已被排除,无法选中。
202
+ A: 某些特殊元素(如 iframe 内部)可能无法正常选中。
163
203
 
164
204
  ### Q: 支持哪些框架的源码定位?
165
205
 
166
- A: 目前支持 React、Vue。使用项目根路径自动计算相对路径。
206
+ A: 目前支持 Next.js (通过 Turbopack chunk 解析)。其他框架使用默认的元素选择器。
167
207
 
168
208
  ### Q: 可以在其他端口使用吗?
169
209
 
170
210
  A: 可以,使用 `--port` 选项指定任意端口。
171
211
 
212
+ ### Q: 为什么 URL 中有 `/dev.html?path=...`?
213
+
214
+ A: 这是正常的。dev.html 是分屏布局容器,`path` 参数指定右侧 iframe 要加载的实际路径。
215
+
172
216
  ## 技术栈
173
217
 
174
- - **HTTP Proxy** - 请求转发和 HTML 注入
218
+ - **HTTP Proxy** - 请求转发和 referer 检测
219
+ - **dev.html** - 分屏布局容器,解决 Next.js 路由问题
175
220
  - **ttyd** - 终端 over HTTP/WebSocket
176
221
  - **xterm.js** - Web 终端组件(VS Code 同款)
177
222
  - **WebSocket (ws)** - 客户端-服务器通信