Update project docs to reflect current state after post-Phase 10 polish
- PROGRESS.md: remove stale known issues (all fixed), add post-Phase 10 feature polish section covering toolbar redesign, 4 pen sizes, line/box/move tools, edge swipe nav, page reorder, notebook rename, filter/sort, JPG export, clipboard ops, startup state restoration, and DB migrations - PROJECT_PLAN.md: add Phase 11 (Server Sync Integration) and Phase 12 (Notebook Backup/Export) with step breakdowns - DESIGN.md: add Tools table, sync architecture section, backup/export design, JPG export, stroke styles, startup state restoration, edge swipe nav; update rendering strategy (3-layer compositing), source tree, schema, and pen sizes - CLAUDE.md: update build commands, architecture, source tree, and key conventions to match current codebase Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,7 @@ completed and log them in PROGRESS.md.
|
||||
- [x] 1.4: Define Room entities
|
||||
- `data/model/Notebook.kt`, `Page.kt`, `Stroke.kt`, `PageSize.kt`
|
||||
- [x] 1.5: Implement type converters
|
||||
- `data/db/Converters.kt` — `FloatArray` ↔ `ByteArray`
|
||||
- `data/db/Converters.kt` — `FloatArray` <-> `ByteArray`
|
||||
- [x] 1.6: Define DAOs
|
||||
- `data/db/NotebookDao.kt`, `PageDao.kt`, `StrokeDao.kt`
|
||||
- [x] 1.7: Define Room database
|
||||
@@ -43,30 +43,30 @@ completed and log them in PROGRESS.md.
|
||||
- `ui/notebooks/NotebookListScreen.kt` — list, create dialog, delete confirmation
|
||||
- [x] 2.4: Auto-create page 1 on notebook creation
|
||||
- In `NotebookRepository.create()`
|
||||
- [x] 2.5: Navigation: tap notebook → page list (stub screen)
|
||||
- [x] 2.5: Navigation: tap notebook -> page list (stub screen)
|
||||
- **Verify:** `./gradlew build` — PASSED (build + test + lint)
|
||||
|
||||
## Phase 3: Canvas — Basic Drawing
|
||||
|
||||
- [x] 3.1: Implement `PadCanvasView` — stylus event handling
|
||||
- `ui/editor/PadCanvasView.kt` — `onTouchEvent`, `getHistoricalX/Y`
|
||||
- [x] 3.2: Stroke rendering — `Path`/`Paint`, backing bitmap (1/4 resolution)
|
||||
- [x] 3.2: Stroke rendering — `Path`/`Paint`, backing bitmap (screen resolution)
|
||||
- [x] 3.3: Grid drawing — 60pt spacing, drawn on screen only
|
||||
- [x] 3.4: Coordinate transform — canonical ↔ screen via `Matrix`
|
||||
- [x] 3.4: Coordinate transform — canonical <-> screen via `Matrix`
|
||||
- [x] 3.5: Implement `CanvasState`
|
||||
- `ui/editor/CanvasState.kt` — zoom, pan, active tool, pen widths
|
||||
- `ui/editor/CanvasState.kt` — zoom, pan, active tool, pen sizes, line styles
|
||||
- [x] 3.6: Implement `EditorViewModel`
|
||||
- `ui/editor/EditorViewModel.kt` — load/save strokes from Room
|
||||
- [x] 3.7: Implement `EditorScreen` + toolbar
|
||||
- `ui/editor/EditorScreen.kt`, `ui/editor/Toolbar.kt`
|
||||
- [x] 3.8: Wire navigation — notebook list → pages → editor (pages auto-navigates to first page)
|
||||
- [x] 3.8: Wire navigation — notebook list -> pages -> editor (pages auto-navigates to first page)
|
||||
- **Verify:** `./gradlew build` — PASSED (build + test + lint). Manual on-device test pending.
|
||||
|
||||
## Phase 4: Zoom and Pan
|
||||
|
||||
- [x] 4.1: `ScaleGestureDetector` for pinch-to-zoom (0.5×–4×) with focal-point zoom
|
||||
- [x] 4.1: `ScaleGestureDetector` for pinch-to-zoom (0.5x-4x) with focal-point zoom
|
||||
- [x] 4.2: Finger drag for pan with pointer tracking
|
||||
- [x] 4.3: Input routing — `TOOL_TYPE_STYLUS` → draw, `TOOL_TYPE_FINGER` → zoom/pan
|
||||
- [x] 4.3: Input routing — `TOOL_TYPE_STYLUS` -> draw, `TOOL_TYPE_FINGER` -> zoom/pan
|
||||
- **Verify:** `./gradlew build` — PASSED. Manual on-device test pending.
|
||||
|
||||
## Phase 5: Eraser
|
||||
@@ -99,12 +99,12 @@ completed and log them in PROGRESS.md.
|
||||
- [x] 8.1: `PageListScreen` with page grid (aspect-ratio cards)
|
||||
- `ui/pages/PageListScreen.kt`, `PageListViewModel.kt`
|
||||
- [x] 8.2: Add new page FAB
|
||||
- [x] 8.3: NavGraph updated — pages route shows PageListScreen, tap page → editor
|
||||
- [x] 8.3: NavGraph updated — pages route shows PageListScreen, tap page -> editor
|
||||
- **Verify:** `./gradlew build` — PASSED
|
||||
|
||||
## Phase 9: PDF Export
|
||||
|
||||
- [x] 9.1: `PdfExporter` — Android `PdfDocument` API with 300→72 DPI scaling
|
||||
- [x] 9.1: `PdfExporter` — Android `PdfDocument` API with 300->72 DPI scaling
|
||||
- `ui/export/PdfExporter.kt`
|
||||
- [x] 9.2: Share via `Intent.ACTION_SEND` + `FileProvider`
|
||||
- `res/xml/file_provider_paths.xml` already configured in Phase 1
|
||||
@@ -117,3 +117,31 @@ completed and log them in PROGRESS.md.
|
||||
- [x] 10.2: Auto-save — strokes save on completion (since Phase 3)
|
||||
- [x] 10.3: Empty states (notebook list, page list), delete confirmations (notebooks)
|
||||
- [ ] 10.4: Performance profiling on target devices (requires on-device testing)
|
||||
|
||||
## Phase 11: Server Sync Integration
|
||||
|
||||
- [ ] 11.1: Proto setup — add `protobuf-lite` dependency, generate Kotlin
|
||||
stubs from eng-pad-server proto definitions
|
||||
- [ ] 11.2: Implement `SyncClient` — gRPC client for eng-pad-server
|
||||
(password auth over TLS, notebook/page/stroke push/pull)
|
||||
- [ ] 11.3: Implement `SyncManager` — orchestrates sync operations, conflict
|
||||
resolution (last-write-wins or manual), tracks sync state per notebook
|
||||
- [ ] 11.4: Sync settings UI — server URL, credentials, TLS CA cert
|
||||
configuration screen
|
||||
- [ ] 11.5: Per-notebook sync button — manual sync trigger from editor or
|
||||
page list toolbar
|
||||
- [ ] 11.6: Sync-all — bulk sync from notebook list screen
|
||||
- [ ] 11.7: Status indicators — sync state badges on notebook list items
|
||||
(synced, pending, error)
|
||||
|
||||
## Phase 12: Notebook Backup/Export
|
||||
|
||||
- [ ] 12.1: Define zip format — `notebook_title.engpad.zip` with
|
||||
`notebook.json` metadata and `pages/NNN.json` stroke data
|
||||
- [ ] 12.2: Implement export — serialize notebook + pages + strokes to zip,
|
||||
share via FileProvider + intents
|
||||
- [ ] 12.3: Implement import — parse zip, create notebook + pages + strokes
|
||||
in Room DB
|
||||
- [ ] 12.4: Export-all — single zip containing all notebooks for full backup
|
||||
- [ ] 12.5: UI integration — export/import buttons in notebook list and
|
||||
editor toolbar
|
||||
|
||||
Reference in New Issue
Block a user