11 Commits
Author SHA1 Message Date
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
TanXinandTanXin 52fec4e00f release: 发布 v1.12.0 分享审计保留与清理完善版本 (#103)
## 版本内容

### 分享审计保留与清理
- 审计记录保留与清理能力:终态会话由所有者整体清空(写入墓碑事件保留追责线索)或导出完整 JSON 归档;终态满默认 90 天由 alarm
自动清理
- 审计保留期创建时自定义(7–365 天,白名单校验,默认 90)
-
清理留痕集中展示:清理时间与方式(手动/自动)同步用户库(`audit_purged_at`/`audit_purge_type`),折叠面板展示;已清理分享等同删除效果,不再提供查看审计入口
- 手动清空后取消已排期的自动清理闹钟;保留期服务端校验统一为 7–365 天;修复闹钟设置失败导致"有排期无闹钟"的幽灵状态

### 工程与质量
- 新增审计清理回归测试 8 用例(墓碑隔离、归属/终态校验、同步失败容错、排期回滚、留痕接缝、迁移幂等)
- UserDBDO SQL 查询类型化封装(`query<T>`/`one<T>`),消除 22 处 `as unknown as`
- 测试类型检查纳入门禁:`tests/` 拆分
`tsconfig.worker`/`tsconfig.frontend`(workers-types 与 DOM lib 的 Element
接口冲突无法单配置共存)
- 弱随机数加固(会话名 `crypto.randomUUID`);pnpm
供应链策略(`blockExoticSubdeps`/`minimumReleaseAge` 7 天/`no-downgrade`);CI
权限收敛 `contents: read`;`.gitleaks.toml` 误报豁免
- pi-lens 项目策略口径(AGENTS.md #31):XSS 类规则刻意不做项目级禁用,仅行内逐处豁免

## 提交列表

- 1c38c7a `release: 发布 v1.12.0 分享审计保留与清理完善版本`
- 4dd7c63 `feat: 审计清理回归测试、UserDBDO 类型化查询与测试类型门禁`
- 50389f3 `fix: 消除 pi-lens 剩余告警——SAFETY 注释/测试类型/XSS 抑制/空 catch 说明`
- 23a3e8e `chore: 代码质量审查整改——弱随机数/测试类型检查/供应链加固等 7 项`
- 1cf0ef9 `chore: 配置 pi-lens 项目策略降低风格类噪音并清理用户库遗留项`
- 0f27a50 `fix: 审计清理后完全隐藏分享卡片,仅保留集中式清理记录`
- 7c42e8e `feat: 审计清理改为删除效果并新增集中式清理记录留痕区`
- a3847ee `fix: 审计清理后改用折叠面板展示清理记录并补齐中英文词条`
- b730219 `fix: 审计保留期服务端校验统一为 7–365 天并修复清理闹钟静默失败`
- a68a6c8 `feat: 分享审计保留期支持创建时自定义(7–365 天)`
- 158b205 `fix: 手动清空审计后取消已排期的自动清理唤醒`
- 618f63c `feat: 分享审计记录保留与清理能力(清空/导出/自动保留期)`

## 验证结果

- typecheck 全绿(src + tests.worker + tests.frontend + frontend 四段)
- 全量测试 644/644(54 文件)
- build:frontend 构建成功并内联
- 关联 Issue/PR:无(基于 v1.11.0 #102)

---------

Co-authored-by: TanXin <tanxin@example.com>
2026-08-26 12:35:58 +08:00
TanXin 82643b9460 release: 发布 v1.9.0 一次性 SSH 分享版本 (#86)
## 发布说明

本次发布将 CloudSSH 升级至 `v1.9.0`,新增默认关闭、可选启用的一次性 SSH 授权分享与分享会话专用审计。

## 主要变更

- 使用仅含 256 位随机能力凭证的分享链接,持久层只保存哈希,链接只能领取一次。
- 支持独立的领取有效期、最长会话时间、所有者实时撤销和连接到期关闭。
- 接收者明确同意审计后进入受限会话,仅可使用终端与 SFTP。
- 分享会话禁用 AI Agent、自动重连、OS 检测、元数据更新、主机指纹替换及全链路 `keyboard-interactive`。
- 新增 `SSHShareDO`,记录会话生命周期、SFTP 请求/结果和终端 PTY 输出;审计失败或达到容量上限时关闭会话。
- 增加 `ENABLE_SSH_SHARING` 部署配置、中英文说明和完整安全回归。

## 安全边界

- 原始分享凭证不会进入 SSH Durable Object 或持久层,领取后仅签发 60 秒有效的连接票据。
- 分享链要求目标及全部跳板节点已有可信路径级主机指纹,并始终启用严格主机密钥签名验证。
- PTY 输出审计不是目标机级强审计,文档已明确其覆盖范围和限制。

## 验证

- Worker 与前端类型检查:通过
- 单元与集成测试:584 项通过
- Chromium/WebKit 浏览器回归:通过(1 项按测试条件跳过)
- 前端生产构建:通过
- Wrangler 干运行:通过,正确识别 3 个 Durable Object 绑定
- `git diff --check`:通过

Refs #84

Issue #84 保持开启,用于继续收集分享功能的实际使用反馈和后续需求。
2026-08-16 12:35:58 +08:00
TanXinandTanXin db4bbcfc44 release: 发布 v1.7.0 (#73)
## 发布概述

发布 CloudSSH v1.7.0,增加可选的 GitHub 用户访问限制与私有实例模式,并包含同期的依赖、构建和类型安全加固。

## 主要变化

- 新增 `GITHUB_ALLOWED_USER_IDS`,按稳定的 GitHub 数字用户 ID 限制允许登录的账号。
- 新增 `REQUIRE_GITHUB_AUTH`,启用后禁止匿名 SSH;与白名单组合后仅允许指定 GitHub 用户使用实例。
- 在 OAuth 回调、既有 session、一次性连接令牌和 WebSocket 升级路径持续执行后端访问策略校验。
- 强制登录模式下校验一次性连接令牌与当前 GitHub 用户的归属关系。
- 未登录页面新增强制 GitHub 登录状态,并同步更新中英文部署与配置文档。
- DOMPurify 升级至 3.4.13,并完善前端构建产物校验、忽略规则和服务器保存响应类型。

## 版本与文档

- `package.json` 版本更新为 `1.7.0`。
- `CHANGELOG.md` 新增 `1.7.0` 发布记录(2026-08-11)。

## 验证

- Worker 与前端 TypeScript 类型检查通过
- 36 个测试文件、548 项单元与集成测试通过
- 32 项 Chromium E2E 与无障碍测试通过
- 生产前端构建与 Worker 内嵌生成通过
- test 分支 CI
与测试环境部署通过:https://github.com/newbietan/CloudSSH/actions/runs/31460428306
- `git diff --check` 通过

---------

Co-authored-by: TanXin <tanxin@example.com>
2026-08-11 13:19:41 +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 2a93044850 release: v1.3.2 — 完善质量门禁、服务器与 SFTP 管理及 Agent 上下文 (#46)
## 版本概述

发布 CloudSSH v1.3.2。

本版本建立完整的发布前质量门禁,增强服务器标签与分页、SFTP 多选批处理,并将终端选区询问 Agent
调整为可预览、可移除的上下文附件,避免未经用户补充问题就直接发送。

## 主要变更

### 质量门禁与可复现构建

- `test` 与 `main` 部署前执行冻结锁文件安装、Worker/前端类型检查、单元与集成测试、生产构建、Playwright 浏览器
E2E 和 axe 无障碍回归。
- 构建流程不再隐式安装依赖,并校验唯一 JS/CSS 入口,保证 Worker 内联产物可复现。
- 新增服务器分页、Agent 上下文及无障碍浏览器回归。

### 服务器管理

- 服务器配置支持最多 10 个规范化标签,并持久化到 UserDBDO SQLite。
- 服务器列表支持标签筛选,搜索与标签变化时自动回到第一页。
- 每页固定展示 9 张服务器卡片。

### SFTP 文件管理

- 支持普通单选、`Cmd/Ctrl` 切换选择、`Shift` 连选及全选。
- 支持批量文件下载和批量删除。
- 批量下载复用顺序下载队列,批量删除等待全部结果后统一刷新。

### Agent 终端选区上下文

- “询问 AI 助手”不再自动发送终端选区。
- 选区作为当前标签独立的上下文附件加入输入区,支持来源和大小展示、展开预览、替换及移除。
- 用户必须补充问题后才能发送;选区被明确标记为非可信分析数据,不代表操作授权,也不能覆盖用户指令。
- 补充成功发送清理、失败保留、会话隔离和无障碍回归。

### 文档与版本

- 根版本号升级至 `1.3.2`。
- 按 Keep a Changelog 规范更新 `CHANGELOG.md`。
- 同步更新中英文 README、测试说明和项目维护索引。

## 验证结果

- `pnpm run typecheck`:通过。
- `pnpm test`:26 个测试文件、421 个测试用例全部通过。
- `pnpm run build:frontend`:生产前端构建及 Worker HTML 内联成功。
- `pnpm run test:e2e`:4 项 Chromium E2E 与 axe 无障碍回归全部通过。
- `git diff --check`:通过。

## 备注

- 构建仍存在原有的 JavaScript 单包体积和动态/静态导入提示,不影响本次发布。

---------

Co-authored-by: TanXin <tanxin@example.com>
2026-07-28 13:57:03 +08:00
TanXinandTanXin dc6fba5ce2 fix: 修复安全漏洞与逻辑缺陷并更新前端构建产物 (#24)
追加一次安全更新:
- 主要修复由Copilot提出的问题点

Co-authored-by: TanXin <tanxin@example.com>
2026-07-08 22:56:37 +08:00
TanXin 06a79a33c2 feat: SSH 协议增强、文件传输优化及多标签页支持
SSH 协议层:
- 新增 Curve25519 密钥交换算法支持
- 新增 AES-CTR 加密模式 (aes256-ctr, aes192-ctr, aes128-ctr)
- 新增 HMAC 完整性校验 (hmac-sha2-256, hmac-sha2-512, hmac-sha1)
- 优化算法协商和密钥派生流程

前端:
- 文件传输从 Zmodem 迁移到 trzsz,支持拖拽上传和 tmux 兼容
- 新增多标签页 SSH 支持(登录用户可在新标签页打开独立终端)
- 修复 WebSocket 二进制数据处理问题

后端:
- 恢复 Hibernation API 支持长连接
- 兼容 Dropbear 等不发送 shell 确认的 SSH 服务器
- 关闭调试日志

构建:
- 迁移到 pnpm 包管理器
- 添加 GitHub Actions 自动部署
2026-06-23 13:57:11 +08:00
TanXin bdc8d0da17 fix: 修复前端多个问题
- 修复 favicon 未加载:构建脚本未内联 public/favicon.svg
- 修复终端重连残留:断开连接后清空终端内容和状态
- 修复 sz 下载文件损坏:将 Uint8Array 转为普通数组传给 save_to_disk
- 修复 rz 上传失败:input 元素过早移除导致 onchange 无法触发
2026-06-22 16:04:02 +08:00
GreenhandTan ddf2156103 fix: 修复前端资源内嵌时由于 String.replace 占位符解析引发的乱码与DOM损坏问题 2026-06-14 09:21:19 +08:00
GreenhandTan 5ed25efe6f fix: 修复SSH自定义协议连接缺陷并优化前端集成构建流程 2026-06-14 09:12:46 +08:00