## 新功能 ### 视频时长放宽(Feature 5) - LivePhotoCore: targetDuration 从固定 0.917 秒改为动态计算(0.5-5.0 秒) - LivePhotoCore: keyFrameTime 按比例映射到目标视频时长 - EditorView: slider 上限从 1.5 秒提升至 5.0 秒 - EditorView: 超过 2 秒显示壁纸兼容性提示,超过 3 秒显示分享截断提示 ### 自定义封面帧(Feature 4) - ExportParams: 新增 coverImageURL 字段 - EditorView: 封面帧区域增加 PhotosPicker 从相册导入照片作为封面 - AppState: coverImageURL 传递到 LivePhotoWorkflow - EditorView: onDisappear 时清理临时封面文件,避免磁盘泄漏 ### 收藏/模板预设(Feature 6) - 新增 PresetManager.swift: EditingPreset 模型 + 预设管理器 - 支持保存/加载/删除预设,最多 10 个 - UserDefaults + iCloud KV Store 双重持久化 - EditorView: 预设保存/加载 UI + 空状态 ContentUnavailableView ### iCloud 同步(Feature 7) - RecentWorksManager: 新增 NSUbiquitousKeyValueStore 同步 - PresetManager: 同步支持 iCloud KV Store - 合并策略:按 ID 去重,保留最新记录,限制条数上限 ## Bug 修复 ### P0 级 - ResultView: Live Photo 预览比例从固定值改为动态计算 aspectRatio - EditorView: 修复本地化字符串拼接问题(使用 String(localized:) 替代硬编码) ### P1 级 - EditorView: 预设列表空状态显示 ContentUnavailableView - ProcessingView: 进度环与百分比文本动画同步(统一 overallProgress 计算) ### P2 级 - EditorView: 添加触觉反馈(比例切换、生成按钮、预设保存、封面导入) - HomeView: 删除作品触觉反馈 + 入场动画优化 - ProcessingView: 脉冲动画背景尺寸微调(160-175pt) - LaunchScreen: 品牌启动画面(App Icon + 标题 + 副标题) ## 本地化 - 新增约 25 个本地化 key,覆盖 8 种语言 (zh-Hans, zh-Hant, en, ja, ko, es, fr, ar) - 包含:预设管理、封面导入、时长提示、删除确认、 空状态、诊断建议等全部新增 UI 文案 ## 改动文件(16 个) - Sources/LivePhotoCore/LivePhotoCore.swift — 动态时长 + coverImageURL - to-live-photo/AppState.swift — coverImageURL 传递 - to-live-photo/PresetManager.swift — 新增预设管理器 - to-live-photo/RecentWorksManager.swift — iCloud 同步 - to-live-photo/DesignSystem.swift — 新增设计令牌 - to-live-photo/Localizable.xcstrings — 25+ 本地化 key - to-live-photo/Views/EditorView.swift — 4 项新功能 UI - to-live-photo/Views/HomeView.swift — 删除作品 + 触觉反馈 - to-live-photo/Views/ProcessingView.swift — 进度环动画修复 - to-live-photo/Views/ResultView.swift — 预览比例修复 + Live Photo 预览 - to-live-photo/Base.lproj/LaunchScreen.storyboard — 品牌启动画面 - to-live-photo/Assets.xcassets/Launch*.colorset — 启动画面颜色资源 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
105 lines
3.5 KiB
Markdown
105 lines
3.5 KiB
Markdown
# Live Photo Studio
|
||
|
||
**Bundle ID**: `xyz.let5see.livephotomaker`
|
||
**最低支持**: iOS/iPadOS 18.0
|
||
**技术栈**: SwiftUI + Swift Concurrency + Core ML
|
||
**语言**:responses in Chinese
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
Sources/LivePhotoCore/ # 核心库 (Swift Package)
|
||
to-live-photo/to-live-photo/
|
||
├── Views/ # Home → Editor → Processing → Result
|
||
├── AppState.swift # 全局状态
|
||
└── DesignSystem.swift # Soft UI 设计令牌
|
||
```
|
||
|
||
## 构建命令
|
||
|
||
```bash
|
||
# 模拟器构建(必须指定 -project)
|
||
xcodebuild -project to-live-photo/to-live-photo.xcodeproj \
|
||
-scheme to-live-photo \
|
||
-destination 'platform=iOS Simulator,name=iPhone 16 Pro' build
|
||
|
||
# Archive
|
||
xcodebuild -project to-live-photo/to-live-photo.xcodeproj \
|
||
-scheme to-live-photo \
|
||
-configuration Release \
|
||
-destination 'generic/platform=iOS' \
|
||
-archivePath build/to-live-photo.xcarchive archive
|
||
```
|
||
|
||
## Git 规范
|
||
|
||
### 提交类型
|
||
- `feat`: 新功能
|
||
- `fix`: 修复已有功能的缺陷
|
||
- `refactor`: 重构(行为不变)
|
||
- `chore`: 构建、依赖、工具
|
||
- `docs`: 仅文档
|
||
|
||
### 分支策略
|
||
- **直接 main**: 文档、注释、单文件小修复、配置微调
|
||
- **新建分支**: 新功能、涉及 ≥3 文件的改动、实验性尝试
|
||
|
||
### 提交前检查
|
||
1. `xcodebuild build` 无错误
|
||
2. UI 改动需在模拟器运行验证
|
||
3. 单次提交只做一件事
|
||
|
||
## 禁止事项
|
||
|
||
- 不修改: `Info.plist` 版本号、`Package.resolved`
|
||
- 不新增: 依赖库(需明确授权)
|
||
- 不创建: 仅用一次的工具类/文件
|
||
- 不重构: 与当前任务无关的代码
|
||
- 不执行: 破坏性删除命令(如 rm -rf 涉及 ~ 或 / 路径)
|
||
|
||
## 执行安全
|
||
|
||
- 执行前评估: 命令是否可能挂起(交互式、网络依赖、长耗时)
|
||
- 禁止交互式: 不使用 `-i` 标志或需要 stdin 输入的命令
|
||
- 长任务策略: 后台执行 + 超时设置 + 进度监控
|
||
- 阻塞处理: 若命令超过预期时间无响应,主动中断而非无限等待
|
||
|
||
## 代码规范
|
||
|
||
- 遵循 `DesignSystem.swift` 令牌,禁止硬编码颜色/间距
|
||
- 新增 View 必须包含 `accessibilityLabel`
|
||
- 新增 View 必须适配深色模式和 iPad
|
||
- 触控目标 ≥ 44pt
|
||
- 错误处理使用 `LivePhotoError` 枚举,禁止裸 `throw`
|
||
|
||
## 文档管理
|
||
|
||
### 核心原则
|
||
> 不创建需要手工同步的文档。如果信息会随代码变化,要么让代码自描述,要么接受文档必然过时。
|
||
|
||
### 文档分类
|
||
| 类型 | 文件 | 更新策略 |
|
||
|-----|------|---------|
|
||
| 宪法 | `CLAUDE.md` | 谨慎修改,每次变更需明确意图 |
|
||
| 任务 | `TASK.md` | 活跃更新,追踪里程碑进度 |
|
||
| 运维 | `docs/TEST_MATRIX.md`, `docs/USER_GUIDE.md` | 随功能<E58A9F><E883BD><EFBFBD>更同步更新 |
|
||
| 上架 | `docs/APP_STORE_METADATA.md` | 版本发布前更新 |
|
||
| 归档 | `docs/archive/` | 只读,不再更新 |
|
||
|
||
### 禁止创建
|
||
- 目录结构文档(如 PROJECT_STRUCTURE.md)— 代码即结构
|
||
- 文档索引(如 docs_index.md)— 直接浏览 docs/ 目录
|
||
- 任何需要"记得同步"的描述性文档
|
||
|
||
### 更新触发
|
||
- 新增/修改功能 → 同步 `USER_GUIDE.md` 相关章节
|
||
- 新增测试场景 → 同步 `TEST_MATRIX.md`
|
||
- 归档文档 → 不更新,保持历史原貌
|
||
|
||
## Skill 引用
|
||
|
||
本项目配套 skill: `live-photo-studio`(位于 `~/.claude/skills/live-photo-studio/SKILL.md`)
|
||
|
||
包含:设计系统令牌速查、构建踩坑记录、导航架构、关键类型、代码规范等项目专属知识。
|
||
在本项目中进行 UI 开发、调试构建问题时,可调用 `/live-photo-studio` 获取上下文。
|