# 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 # 模拟器构建 xcodebuild -scheme to-live-photo -destination 'platform=iOS Simulator,name=iPhone 16 Pro' build # Archive xcodebuild -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` | 随功能���更同步更新 | | 上架 | `docs/APP_STORE_METADATA.md` | 版本发布前更新 | | 归档 | `docs/archive/` | 只读,不再更新 | ### 禁止创建 - 目录结构文档(如 PROJECT_STRUCTURE.md)— 代码即结构 - 文档索引(如 docs_index.md)— 直接浏览 docs/ 目录 - 任何需要"记得同步"的描述性文档 ### 更新触发 - 新增/修改功能 → 同步 `USER_GUIDE.md` 相关章节 - 新增测试场景 → 同步 `TEST_MATRIX.md` - 归档文档 → 不更新,保持历史原貌