Skip to content

feat(saves): encode screenshots as bounded JPEGs - #289

Merged
xxxsen merged 1 commit into
masterfrom
codex/save-screenshot-jpeg
Oct 30, 2026
Merged

xxxsen merged 1 commit into
masterfrom
codex/save-screenshot-jpeg

Conversation

@xxxsen

@xxxsen xxxsen commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

Summary

状态存档和原生存档的新截图在创建持久草稿前统一转为 JPEG,质量 0.95、高度最多 540、宽度等比缩放,仅缩小。透明区域填黑。

保存快照(手动状态存档 / 自动原生存档 / 退出最终快照)
  prepareSaveScreenshot → JPEG(0.95), height ≤ 540
  makeDraft → 本地持久化 → 上传
  上传重试 → 复用同一份 JPEG 草稿

截图处理失败仍可保存进度;覆盖存档时沿用原有的未提供截图语义。已有截图不批量转换,服务端图片接口和 runtime 契约不变。

Evidence

  • Before: makeDraft 直接接收 runtime 截图 Blob,保留其原始格式和尺寸。
    After: 浏览器真实编码验证 1920×1080 → 960×540、320×240 保持原尺寸、1080×1920 → 304×540,返回 JPEG。
  • Before: 保存和覆盖用例没有验证持久截图格式与高度。
    After: 用例读取服务端截图并解码,断言 JPEG 且高度 ≤ 540;四视口共 40 项浏览器用例通过(RPG fixture 环境补齐后,重跑对应 4 项通过)。
  • After: 真实原生存档在桌面和 4K 视口均完成保存、全新浏览器上下文恢复及再次更新,读回截图为 960×540 JPEG(4,619 bytes)。检查了 390px 手机和物理 3840×2160 / 150% 缩放的实际存档卡片。
  • After: Web 全量 613 项单元/组件测试通过;结构、UI 样式、重复代码、lint、类型检查、生产构建和 PFB verify 均通过。新增测试覆盖缩放边界、编码失败、自动/退出保存及上传重试复用。

Merge Danger

Door: two-way

可以回退代码;已经生成的有损 JPEG 不会还原成原截图。存档进度内容不受编码影响,无数据库迁移。

Blast Radius: Saves

影响新建或更新的持久存档截图;编码失败会省略本次截图,不阻止保存进度。

@xxxsen
xxxsen merged commit ddf1691 into master Oct 30, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant