 TanXinandTanXin
|
7e20e2d117
|
release: 发布 v1.13.0 Theme V3 主题系统版本 (#107)
## 发布说明
**v1.13.0 Theme V3 主题系统版本**
### 关联 Issue
- 关联 #99(「能不能直接在网页加个密码?」):本版本实现其中**主题苹果风**部分——新增 Apple 内置主题(macOS
风格浅色)并落地 Theme V3 主题系统;**网页访问密码**部分未包含在本版本,issue 保持开启、留待后续版本。
### 版本亮点
- **内置主题 5 → 7 款**:新增 CRT Amber(CRT 磷光深色:径向暗角背景 + 扫描线/闪烁/辉光/噪点全开 + 方形
mono 造型)与 Glass(蓝紫浅色玻璃态:mesh 粉彩漂移背景 + 强表面模糊 + 1.4× 圆角 + 分段控件);Glacier
替换为 Apple(macOS 风格浅色,完整 ANSI 16 色无障碍变体)
- **Theme V3 声明式令牌系统**(schemaVersion
3):`background`(solid/linear/radial/mesh 四类型、停靠点白名单、读性遮罩下限
0.25/0.35、drift 动画)、`effects`(scanline/flicker/glow/noise 强度钳制
0-1、data-fx-* 门控、Cyberpunk
默认视觉不变)、`typography`(字号/圆角缩放)、`appearance.blur` 独立表面模糊档位
- **零 DOM 操作、前后端同源校验**:背景/效果全部 CSS 变量 + 属性驱动;V2 主题数据自动升级、glacier
baseTheme 优雅降级;导入/导出双向兼容
- **在线主题编辑器支持 V3**:背景层/效果/版式三组面板 + blur 档位,导出 schemaVersion 3
- **全量文档对齐**:README/tests README/AGENTS/CHANGELOG 与当前实现同步
### 提交列表
| 提交 | 说明 |
| ---- | ---- |
| 268a892 | feat: 内置主题 Glacier 替换为 Apple 浅色主题 |
| 86e3ddf | feat: Theme V3 主题系统落地——背景层、效果注册表与版式缩放 |
| 9092e2a | release: 发布 v1.13.0(版本号 + CHANGELOG) |
| c098a7c | docs: 全量文档与当前实现对齐(测试清单 + 措辞修正) |
### 验证结果
- ✅ typecheck(worker + frontend + tests 三工程)
- ✅ vitest 54 文件 / 649 用例
- ✅ build:frontend 可复现内联构建(html.ts 再生成)
- ✅ 主题 e2e 6/6(含 CRT/Glass 切换、drift 属性、强模糊与 body::before 背景计算值断言)
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-08-27 16:05:14 +08:00 |
|
TanXin
|
e5fcddce7f
|
release: v1.4.0 — 升级 Theme V2 与在线主题编辑体验 (#52)
升级 Theme V2 界面风格系统、GitHub Pages 在线主题编辑器与登录账号主题同步,并补齐主题数据安全校验、首屏性能优化和相关回归测试。
完整变更请参阅 CHANGELOG.md。
|
2026-07-30 15:11:09 +08:00 |
|
 TanXinandTanXin
|
f0b3bbb035
|
release: v1.3.0 — 增强 Agent 交互、主题系统与服务器体验 (#44)
## 版本概述
发布 CloudSSH v1.3.0。
本版本重点完善 AI Agent 与终端之间的协作体验,增强危险操作确认安全性,并补充服务器搜索、网络质量提示、Standard
深浅主题及在线主题编辑器同步。
## 主要变更
### Agent 与终端交互
- 完善 Agent 危险操作确认框:
- 使用无障碍 `alertdialog` 语义。
- 默认聚焦拒绝按钮。
- 支持 `Escape` 快速拒绝和对话框内焦点限制。
- 关闭 Agent、销毁会话或切换标签时自动拒绝待确认操作。
- 用户选择终端内容后,在选区末端显示“询问 AI 助手”入口。
- 点击入口后直接将完整选区发送给当前会话的 Agent。
- Agent 所有代码块新增一键复制功能。
- 明确标注的安全 Shell 单行命令可填入当前活动终端,但不会自动执行。
- 非 Shell、多行或包含控制字符的代码不会提供终端填入入口。
### 服务器与网络体验
- 服务器列表新增前端即时搜索。
- 支持按服务器名称、主机地址和用户名进行不区分大小写的过滤。
- CF 物理延迟和 WebSocket RTT 新增绿、黄、红三色网络质量提示。
- 网络质量仅通过颜色表达,不增加“良好/一般/较差”等额外文字。
### 主题系统
- 新增 Standard Dark 和 Standard Light 两款常用主题。
- 将 CSS 变量、终端调色板和自定义主题同步逻辑收敛至统一主题模块。
- 保留 Cyberpunk、Glacier 和 Gruvbox,当前共提供五款内置主题。
### 在线主题编辑器
- 预设主题选择改为下拉框,修复主题展示不完整和部分主题无法选择的问题。
- 同步当前项目的服务器搜索、区域选择、网络质量提示、终端选区入口和 Agent 代码块操作 UI。
- 补齐 Standard Dark/Light 主题预览。
### 发布文档
- 项目版本号升级至 `1.3.0`。
- 更新 `CHANGELOG.md`。
- 同步更新中英文 README。
## 验证结果
- `pnpm test`:21 个测试文件、400 个测试用例全部通过。
- `pnpm run build:frontend`:生产前端构建及 Worker HTML 内联成功。
- `git diff --check`:通过。
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-07-27 13:46:33 +08:00 |
|
 TanXinandTanXin
|
18e5624d43
|
release: v1.2.1 — 同步主题编辑器 UI 并完善 SFTP 国际化 (#42)
## 变更概述
本次更新发布 v1.2.1,主要同步在线主题编辑器与主项目的最新 UI 和国际化能力,并修复 SFTP 右键菜单在中文模式下仍显示英文的问题。
## 主要变更
### 主题编辑器
- 同步主项目最新 UI 风格。
- 补全登录页、服务器列表、终端、SFTP 和 AI Agent 的主题预览。
- 支持简体中文与英文切换。
- 复用主项目语言偏好,并支持 URL 参数和浏览器语言自动解析。
- 使用统一的非阻塞 Toast 操作反馈。
- 同步最新主题变量和操作标签风格。
### SFTP 国际化修复
- 修复中文模式下右键菜单仍显示 `Open`、`Download`、`Rename`、`Delete` 的问题。
- 为右键菜单补充完整的中英文词典。
- 语言变化时主动关闭已打开的菜单,避免保留切换前的语言。
- 增加词典完整性和防止菜单文案再次硬编码的回归测试。
### 版本发布
- 项目版本升级至 `v1.2.1`。
- 按 Keep a Changelog 规范更新 `CHANGELOG.md`。
## 验证情况
- [x] 375 项自动化测试全部通过
- [x] TypeScript 编译通过
- [x] Vite 生产构建通过
- [x] Worker 内联前端产物生成成功
- [x] 中英文词典键保持一致
- [x] SFTP 右键菜单国际化回归测试通过
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-07-24 17:36:21 +08:00 |
|
 TanXinandTanXin
|
a75ae17ae7
|
feat: 新增 locationHint 智能区域调度,自动推断最优 DO 部署区域降低 SSH 连接延迟 (#33)
## Summary
- 新增 DO locationHint 智能区域调度:保存服务器时通过 ipinfo.io 自动推断目标 IP 地理位置,持久化最优
Cloudflare DO 部署区域,连接时直接读取数据库,零运行时外部 API 调用
- 服务器管理弹窗和匿名连接表单新增区域下拉选择器(默认"自动"),支持手动覆盖
- 主题编辑器预览同步新增 REGION_HINT 区域选择器
## Changes
### Core
- 新增 `src/worker/ip-geo.ts`:IP 地理位置推断模块,支持 11 个 Cloudflare DO 区域,US/CA
按经度细分东西海岸
- 新增 `frontend/src/regions.ts`:共享区域选项组件
- `servers` 表新增 `region`(用户手动覆盖)和 `inferred_hint`(系统推断持久化)两列,使用幂等
`PRAGMA table_info` 守卫安全迁移
- `handleAddServer` 保存时触发一次性 IP 地理推断并写入 `inferred_hint`
- `handleUpdateServer` host 变更时自动重新推断
- `handleConnectServer` 连接时直接读 DB 注入 `locationHint`,零运行时外部调用
- `handleSSHConnection` 匿名路径仅读取 URL `?region=` 参数作为手动覆盖
- `handleTokenSSHConnection` 从 config.locationHint 读取,经白名单校验后传入 DO
`get()`
### Frontend
- 服务器管理弹窗新增区域下拉选择器,编辑时显示系统推断值
- 匿名连接表单新增区域高级选项
- DEBUG_MODE 下保存服务器时显示推断过程调试弹窗
- 主题编辑器预览同步新增 REGION_HINT 区域选择器
### Fixes
- 切换 IP 地理推断 API 从 ipapi.co 到 ipinfo.io(免费 50k 次/月,避免 Workers 共享 IP 下的
429 限流)
- 亚太地区统一使用 `apac` hint,避免 `apac-ne` 无 DO 节点导致 fallback
- 终端输入不再触发无意义的 `JSON parse failed` 噪音日志
- 区域选择器和调试弹窗适配主题变量
## Note
locationHint 是 Cloudflare 的 best-effort 特性,当目标区域 DO 容量不足时会 fallback
到最近可用区域。免费计划下亚太区域 DO 容量有限,可能无法总是分配到最近节点。
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-07-12 20:06:39 +08:00 |
|
 TanXinandTanXin
|
918bd69fbb
|
feat: 实现 AI Agent 运维助手完整功能,优化前端交互与并发稳定性,健全安全策略与异常保活机制 (#23)
## 摘要 (Summary)
本 PR 整合了 `test` 分支中关于 **AI Agent 运维助手系统**
的核心实现、后续优化以及一系列高并发、竞态条件、连接保活及接口报错的修复工作。项目现已具备功能完整、安全可控、交互流畅且高度稳定的 AI
助手侧边栏。
---
## 核心变更内容 (Key Changes)
### 1. AI Agent 核心功能与工具链扩展
* **工具箱扩展**:实现了 8 个运维相关的核心工具,包括
`detect_environment`(环境探测)、`list_processes`(进程列表)、`service_manage`(服务管理)、`docker_manage`(容器管理)以及基础终端执行工具。
* **流式输出与 Markdown**:AI 助手的回复支持逐字流式加载显示,完成后使用 `marked` + `DOMPurify`
渲染(支持 GFM 表格),替代了原有的手写解析器。
*
**上下文管理**:引入了对话历史摘要机制(`trimMessages`),优化了上下文管理策略,同时将终端及环境上下文移入系统提示词(System
Prompt),防止跨请求历史数据重复与丢失。
### 2. 前端交互与 UX 深度优化
* **折叠式思考过程**:实现了 AI
思考过程折叠容器,工具调用不再占用主回复空间;支持思考步骤的实时预览与交互,完成后展开可查看完整执行链路。
* **样式与主题调整**:优化了 Agent 侧边栏宽度、输入框 Placeholder 颜色、发送按钮样式、自动换行与主题颜色的同步预览。
* **输入流并发保护**:在安全弹窗确认期间显式禁用输入,以“完成/取消”代替粗暴中断,避免指令状态冲突。
### 3. 并发、安全与系统稳定性修复 (核心痛点)
* **安全双层拦截**:重构安全分级策略,采用“LLM 主观判断 + 工具层硬编码规则兜底拦截”的双层过滤。对高危操作(如包管理
`apt/yum` 等)以及 `sudo` 操作增加强制用户确认流程。
* **彻底消除 API 400 错误**:修复了在消息裁剪、指令 Abort、用户取消等场景下,因 `tool_calls`
孤儿消息或消息不配对导致的大模型接口报 400 错误的问题;增加了消息完整性校验,自动过滤残留/不配对的工具消息。
* **防止 DO 冬眠与卡死**:
* 在 `runLoop` 中引入 5 秒一次的 `keepAlive` 保活机制,防止 Cloudflare Durable Object
在等待大模型响应或等待用户确认期间因无操作而冬眠。
* 将保活定时器提升为类字段,防止关闭连接时发生定时器泄漏。
* **网络与并发修复**:
* 修复了多命令执行导致的 SSH 频繁断开和前端 WebSocket 重连风暴。
* 解决了 `Channel removed before open` 竞态条件,以及 exec channel 未释放导致 SSH 报错
`Channel open failed (reason=2)` 的 channel 泄漏问题。
* 为 WebSocket Handler 增加了全局错误边界,避免未捕获异常导致 DO 意外崩溃断开。
### 4. SSH 基础体验优化
* **主机密钥验证优化 (TOFU)**:重构了主机密钥指纹变更提示,拆分多行展示已知指纹与实际指纹的对比,并动态识别并展示密钥算法类型(如
`ssh-ed25519`)。
### 5. 文档与部署优化
* **一键部署**:为 README 添加了 Cloudflare 一键部署按钮,并更新了最新的演示视频。
* **开发规约**:更新了 `AGENTS.md`,同步了 AI Agent 相关的 8 大工具、保活看门狗及两层安全策略的开发维护说明。
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-07-08 21:43:38 +08:00 |
|
 TanXinandTanXin
|
451feee4ab
|
feat: 增强 SFTP WebSocket 逻辑,新增终端搜索功能,并提升安全性 (#22)
这个 Pull Request 为前端 SSH 客户端引入了重大增强,重点包括多会话管理、终端功能改进、安全性增强以及 UI/UX
优化。最重要的改动包括新增多标签页会话管理器、终端内搜索与日志导出功能、最近连接的本地安全存储,以及反映这些新能力的 UI
更新。文档也已更新,说明了所有新功能和架构变更。
**主要功能新增:**
* 新增标签页管理器(`tab-manager.ts`),支持在单个页面内进行多会话 SSH 终端和 SFTP
面板管理,具备完整的会话隔离,并在 UI
中新增了标签栏(`frontend/index.html`、`docs/theme-editor/index.html`)。
* 实现了终端内搜索功能(通过 `@xterm/addon-search`)以及终端日志导出功能,并为两者添加了 UI
控件(`frontend/package.json`、`frontend/index.html`、`src/terminal.ts`
文档更新)。
**安全性与易用性改进:**
* 引入了安全的本地加密存储,用于保存最近 5 条匿名连接记录,并提供了列出、自动填充和清除最近连接的
UI(`frontend/src/auth-form.ts`、`docs/theme-editor/index.html`)。
* 通过在本地及 API 中持久化已知主机指纹,增强了中间人攻击(TOFU)防护,提升了第二次连接的安全性(README 更新)。
**SFTP 与终端功能增强:**
* SFTP 面板现已支持并发下载和上传取消操作,相关文档和 UI
已同步更新以反映这些能力(`README.md`、`README_en.md`、`src/sftp-panel.ts`)。
* 状态栏现在显示双段延迟信息(RTT 与 CF 到主机的延迟)以及当前 Cloudflare
数据中心代码,主应用和主题编辑器预览中均已实现(`docs/theme-editor/index.html`)。
**文档与架构:**
* 所有新功能和架构变更均已在中英文 README 及架构图中进行了文档记录,包括新增文件以及针对
`tab-manager.ts`、终端功能和安全机制的更新说明。
这些改动共同为用户带来了更强大、更友好、更安全的 SSH 客户端体验(由Copilot助手总结)。
---------
Co-authored-by: TanXin <tanxin@example.com>
|
2026-07-05 11:15:56 +08:00 |
|
 
|
bc760c6566
|
feat: 新增 SFTP 文件管理功能、完善主题编辑器集成及设计新Logo (#19)
## SFTP 文件管理
- 新增 SFTP v3 文件管理器:目录浏览、上传/下载(并发+取消)、新建/重命名/删除
- SFTP 使用独立 WebSocket 通道,与终端会话并行运行互不干扰
- 修复多项兼容性问题:init 数组越界、channel ID 冲突、面板关闭断连、
Shell 卡死、上传超 32KB 失败、文件大小显示错误、~ 路径解析等
- 添加 SFTP 心跳机制防止空闲断开,文件时间改为前端本地格式化显示
## 主题编辑器与 UI
- 主题编辑器集成 SFTP 文件管理器预览,面板常驻终端右侧并排显示
- 重新设计项目 Logo 云朵图标,优化 SVG 在不同背景下的显示效果
## 依赖升级
- xterm.js 5.x → 6.x,wrangler 3.x → 4.x,vitest 3.x → 4.x
- 移除 nodejs_compat compatibility flag,更新 compatibility_date
## 其他
- 修正 AGENTS.md 中 npm 为 pnpm 命令
- 优化 connectServer 按钮恢复逻辑
- 补充 SFTP 和 Logo 相关文档
---------
Co-authored-by: TanXin <tanxin@example.com>
Co-authored-by: David xu <xqdoo00o@gmail.com>
|
2026-07-02 11:23:36 +08:00 |
|
 
|
c58a264ebf
|
feat: 终端主题系统、文件传输优化及多项 SSH 安全与稳定性修复 (#16)
将 test 分支的多个提交合并为一条,主要包含以下变更:
新功能
- 新增终端主题系统,支持自定义主题编辑器(可视化编辑、导入/导出、云端存储),统一前端 UI 与编辑器的 CSS 变量使用,消除所有硬编码颜色
- 添加 docs 根目录入口页,重定向到主题编辑器
性能优化
- 减少使用 slice 改为 subarray 以缩减开销
- 提高上传下载大文件的速度
Bug 修复
- 修复多个安全问题
- 修复加密密钥迁移导致用户空间 SSH 连接失败
- 修复 WebSocket 升级与 POST body 不兼容导致连接超时
- 修复 SSH 保活机制失效和终端输出换行问题
- 修复输入空格时误触发粘贴检测的问题
- 修复连接按钮文字不可见的问题
- 修复自定义主题导出逻辑
- 修复导入主题后刷新页面导致 WebSocket 断开的问题
- 修复 trz 上传大于 64K 文件卡住的问题
- 删除 connect() 中被 setupWebSocketHandlers 覆盖的 onclose 死代码
- 修复登录 Alpine 服务器显示错误 (#15)
文档与 CI
- 更新提交流程规范,禁止创建特性分支,所有变更直接提交到 test 分支
- 更新 README,补充自定义主题和主题编辑器说明
- 优化 GitHub Pages 部署时机,仅当 docs 目录变更时触发
---------
Co-authored-by: David xu <xqdoo00o@gmail.com>
Co-authored-by: TanXin <tanxin@example.com>
|
2026-06-29 21:59:37 +08:00 |
|