## 1. iPad shell (HomeDeck) - [x] 1.1 Root IA: HomeDeck + Study + DownloadBrowser + Menu (no Explorer / Album-edit / upload-import primary path) - [x] 1.2 HomeDeck UI per `ui03-deck.png` (upper shelf, lower recent; hide scroll indicators) - [x] 1.3 Upper shelf = local downloaded courses only; empty CTA → DownloadBrowser - [x] 1.4 Recent row ~2 large cards + horizontal scroll; tap/play resume - [x] 1.5 Default cover mapping when no cover - [x] 1.6 Menu: add courses, storage, last PC URL, about ## 2. Local course + session models - [x] 2.1 `LocalCourse` + session/progress with `courseId` / `itemIndex` - [x] 2.2 `Documents/courses//` helpers and path safety - [x] 2.3 Manifest parse/validate - [x] 2.4 Recent list persistence and bump-on-open - [x] 2.5 First-launch / migration for incompatible old library data ## 3. PC Publish - [x] 3.1 Publish UI: toggle, URL, QR, trusted-LAN copy; port 8787 + fallback - [x] 3.2 HTTP lifecycle start/stop (exit stops server) - [x] 3.3 `GET /api/health`, `GET /api/courses` (combo only) - [x] 3.4 `GET /api/courses/:id` metadata - [x] 3.5 Pack builder + zip (media Stored; missing media → error) - [x] 3.6 `GET /api/courses/:id/pack` - [x] 3.7 HTML list at `GET /` - [x] 3.8 Combo albums enter catalog via Explorer Start / draft Start·Save; promote orphan combo sessions when listing ## 4. PC Explorer / Lesson (group courses) - [x] 4.1 Compact Explorer chrome: path under title; icon actions for new folder / import files / import folder - [x] 4.2 New album/course tab starts empty; selection remains on inactive selection tab (restore highlights on switch-back) - [x] 4.3 Combo draft: append item when left selection resolves to a pair - [x] 4.4 Lesson cards: context menu (Mac two-finger/right-click; Win right-click/long-press) for play/continue and delete ## 5. iPad download - [x] 5.1 Paste base URL; remember last successful URL - [x] 5.2 Camera QR scan → fill URL → fetch catalog - [x] 5.3 Unreachable →「请先在电脑打开分享」 - [x] 5.4 Multi-select download → unzip → validate → register `LocalCourse` - [x] 5.5 Busy/progress + per-course result; newer `updatedAt` overwrite - [x] 5.6 Local networking ATS + camera usage description; upload-server not primary path ## 6. Study from local courses - [x] 6.1 Open Study only from LocalCourse / recent / session - [x] 6.2 Single-item direct open; multi-item picker - [x] 6.3 Bind players for `single_*`, `video_pdf`, `pdf_audio` - [x] 6.4 Orientation from stage size; divider drag for split ratio; collapse/expand secondary stage - [x] 6.5 Trailing icons: prev/next PDF page; leading back icon-only; no mode strip / no save button - [x] 6.6 Auto progress: interaction + 60s timer + leave/background; restore on reopen - [x] 6.7 Shelf open updates recent ordering ## 7. Docs / smoke - [x] 7.1 Smoke: PC combo → publish → iPad scan/download → home → study → relaunch resume - [x] 7.2 README / smoke checklist reflect child-deck + publish flow - [x] 7.3 OpenSpec artifacts (`proposal` / `design` / `specs` / `tasks`) describe current behavior only