]>
acesimba.cloud Git - codebuddy-web.git/log
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Codebuddy [Thu, 18 Jun 2026 08:57:20 +0000 (16:57 +0800)]
任务清单:暂停/恢复 + 受限删除
后端 (backend/app.py):
- GET /api/tasks 返回 status (active/paused) 和 paused_at 字段
- POST /api/tasks/{id}/pause: 标记暂停,记录 paused_at
- POST /api/tasks/{id}/resume: 恢复启用,清除 paused_at
- DELETE /api/tasks/{id}: 仅允许删除已暂停超 24 小时的任务
前端 (frontend/index.html):
- 任务卡片:删除按钮改为暂停(⏸)/恢复(▶)按钮
- 默认仅列出启用状态任务,勾选"显示全部任务"查看暂停的
- 暂停超 24 小时的任务才显示删除按钮(✕)
- 删除确认 modal:3 次确认,每次需等待 10 秒才能点击
- 暂停状态任务卡片半透明显示,标注已暂停时长
- ESC/点击遮罩/取消按钮 关闭删除 modal
Codebuddy [Thu, 18 Jun 2026 08:46:35 +0000 (16:46 +0800)]
修复粘贴框关闭与终端复制
问题1: 粘贴框无法关闭
- ESC 监听提升到 document 级(避免焦点不在 pasteInput 时失效)
- 点击遮罩层(modal 外部)关闭 modal
- 移除 pasteInput 上的重复 ESC 处理
问题2: 终端选区无法复制
- 加 attachCustomKeyEventHandler: 有选区时 Ctrl+C 复制到剪贴板(不发中断)
- 优先用 navigator.clipboard.writeText,HTTP 下用临时 textarea + execCommand 兜底
- 无选区时 Ctrl+C 正常发中断信号
Codebuddy [Thu, 18 Jun 2026 08:39:34 +0000 (16:39 +0800)]
粘贴改为右上角弹窗模式(避免发送自动提交问题)
变更:
- 移除下方独立输入框,恢复 xterm 原生输入(两条绿线之间)
- 右上角"列表"后加回"📋 粘贴"按钮
- 点击弹出 modal:textarea + 📎 + ✕ + 发送,样式复用豆包式输入框
- modal 支持文字/图片粘贴、图片拖拽、📎 选文件
- Ctrl+Enter 或点发送:内容进 xterm 输入行(不自动提交),modal 自动关闭
- ESC 关闭 modal
- 发送逻辑只发内容字符流,不带 \r,用户自行回车提交
原因: 之前自动提交方案(\n / \r / bracketed paste 包裹)均无法让 codebuddy
CLI 正确触发提交。改为"内容进输入行 + 用户回车"最可靠,符合终端交互本质。
Codebuddy [Thu, 18 Jun 2026 08:07:46 +0000 (16:07 +0800)]
方案B: xterm输出区 + 独立输入框(豆包式)
重构终端页为上下两区:
- 上: xterm 区保留 codebuddy TUI 输出(流式/工具调用/交互确认)
- 下: 独立多行 textarea 输入区 + 发送/📎/✕ 按钮
输入区能力:
- 文字粘贴: 浏览器原生 textarea paste,可靠不失效
- 图片粘贴: Ctrl+V 截图自动上传到 /api/upload-image,显示绿色 chip
- 图片拖拽: 拖文件到输入框上传
- 📎 按钮: 选择图片文件
- 发送: Ctrl+Enter 或点发送按钮,文字+图片标签一起进 PTY
移除:
- 旧的 xterm paste 监听(与 xterm 内部冲突导致粘贴失效)
- 旧的 📋 粘贴 modal(被独立输入区取代)
保留: backend /api/upload-image 端点不变
Codebuddy [Thu, 18 Jun 2026 07:58:56 +0000 (15:58 +0800)]
支持终端粘贴文字与截图(未完成,待方案B重构)
新增:
- backend: /api/upload-image 端点,接收 base64 图片存到 data/pastes/
- frontend: paste 事件检测图片/文字,上传后以 <image_local_path> 标签发 CLI
- frontend: 顶部栏 📋 粘贴按钮 + modal(多行 textarea 输入)
- frontend: extractPasteText/htmlToText(HTML 转 TSV/纯文本)
- .gitignore: 排除 data/pastes/
已知问题: 自定义 paste 监听与 xterm 内部冲突,文字粘贴失效。
下一步: 按方案 B 重构——xterm 区保留 TUI 输出,下方加独立 textarea 输入框。
Codebuddy [Thu, 18 Jun 2026 03:56:19 +0000 (11:56 +0800)]
Initial commit: Codebuddy Web Console
前后端分离结构:
- backend/app.py: FastAPI 后端 (PTY 终端 + 任务注册表 + JWT 鉴权)
- frontend/index.html: xterm.js 前端页面
- data/: 任务注册表运行时状态 (tasks.json 已 gitignore)
- logs/: 运行时日志 (已 gitignore)
原单文件 /root/codebuddy-web.py 拆分为前后端分离,
systemd 服务指向 /home/Codebuddy-web/backend/app.py