PDF 阅读器在慢速双指缩放、竖向滚动页高异步更新、页面请求超时和绘画橡皮擦等场景中,存在视口跳动、迟到结果被错误丢弃、缓存边界不明确及笔迹显示与持久化不同步的问题;同一本书的标注读取和并发写入也会产生不必要的磁盘访问或覆盖风险。\n\n调整缩放 inset 计算和竖向阅读锚点恢复,避免缩放变换被重复计入、真实页高到达时改变当前阅读位置。页面请求改为带 token 的超时重试机制,可在缓存窗口内接收有效迟到结果并提供失败重试入口;页面大图、OCR、笔迹和描述缓存统一按当前页前后两页收敛,PDF 标识改为完整内容 SHA-256,避免同名或相近文件复用错误阅读状态。\n\n绘画会话内按路径实时重绘,退出会话后使用按图层派生的位图缓存,确保橡皮擦即时作用于已提交笔迹;同时为笔迹持久化增加版本控制、为标注读写增加同步保护和内存快照,降低复用与并发场景下的状态错乱。\n\n将项目技能统一迁入 .agents/skills,并以 .claude/skills 相对软链接供 Claude Code 读取;新增详细 Git 提交技能,自动审查改动、生成中文提交说明并约束安全推送。 验证:所有项目技能通过 quick_validate;执行 xcodebuild -workspace ReadViewDemo/ReadViewDemo.xcworkspace -scheme ReadViewDemo -configuration Debug -sdk iphonesimulator CODE_SIGNING_ALLOWED=NO build,构建成功。
2.1 KiB
2.1 KiB
name, description
| name | description |
|---|---|
| start-sdk-feature-dev-lite | 实现 ReadViewSDK 的单模块功能、Bug 修复、UI 调整、局部重构、编译修复或小范围 CocoaPods 变更,并完成必要验证。作为默认开发入口;跨 EPUB/PDF 模块、改变公共协议或持久化格式、需要迁移回滚或严格执行完整方案时使用 start-sdk-feature-dev。 |
SDK 轻量开发
目标
用最小改动完成边界清晰的任务,形成“实现—验证—交付”闭环。
工作流
- 检查工作区,识别并保留用户已有修改。
- 定位目标源码、现有相邻模式和
AGENTS.md路由出的文档。 - 若用户提供方案,完整读取并执行已锁定决定;源码事实使方案不可行时先说明冲突。
- 明确 In Scope、Out of Scope、成功标准和短执行清单。
- 按模块边界实施最小修改:
- EPUB 解析与资源:
Sources/RDEpubReaderView/EPUBCore - EPUB 文本排版:
Sources/RDEpubReaderView/EPUBTextRendering - EPUB 翻页容器:
Sources/RDEpubReaderView/ReaderView - EPUB 成品 UI:
Sources/RDEpubReaderView/EPUBUI - PDF 阅读器:
Sources/RDPDFReaderView - 集成与回归入口:
ReadViewDemo
- EPUB 解析与资源:
- 自检空值、失败分支、异步乱序、取消语义、主线程、生命周期、Cell 复用、缓存边界、内存警告和可访问性。
- 检查公共 API、持久化模型、缓存键/版本、资源路径及 podspec 是否被意外改变。
- 按风险执行构建或定向 UI 测试;编译错误应修复并重试。
- 代码行为显著变化时更新最接近的
Doc/文档。
升级条件
出现以下任一情况时切换到 start-sdk-feature-dev 并说明:
- 同时改变 EPUB 与 PDF 阅读器,或改变多个 EPUB 层级的职责。
- 修改宿主可见协议、公共初始化方法或需要兼容迁移。
- 改变持久化格式、缓存架构、分页主流程或跨模块状态流。
- 用户要求逐项执行完整开发方案。
交付
最终简洁说明完成内容、关键取舍、主要文件、验证结果、未覆盖风险和同步文档;不强制套固定模板。