- High-contrast theme with expanded color palette for e-ink readability
- Updated source trees in DESIGN.md
- Updated PROJECT_PLAN.md and PROGRESS.md — all phases complete
(only on-device performance profiling remains)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- PdfExporter: creates PdfDocument, scales 300 DPI canonical coords to
72 DPI PDF points, renders strokes without grid
- Share via Intent.ACTION_SEND + FileProvider
- PDF button in editor toolbar exports current page
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- UndoableAction interface with AddStrokeAction and DeleteStrokeAction
- UndoManager: undo/redo stacks (depth 50), canUndo/canRedo StateFlows
- EditorViewModel: stroke operations routed through UndoManager,
visual callbacks sync canvas view without full DB reload
- Toolbar: undo/redo buttons with enabled state
- 9 unit tests for UndoManager
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Eraser mode: stylus touch/drag hit-tests against stroke bounding boxes
expanded by 42pt radius (~3.5mm), processes historical points
- Deletes hit strokes from canvas view and Room DB
- Backing bitmap rebuilt automatically on stroke removal
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ScaleGestureDetector for pinch zoom (0.5x-4x) with focal-point anchoring
- Finger drag for pan with multi-pointer tracking
- Zoom/pan state managed locally in PadCanvasView for responsiveness,
synced to EditorViewModel on gesture end
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Makefile wraps Gradle commands and adds emulator/device launch targets:
- run: builds, starts DC-1 emulator if needed, installs and launches
- devrun: builds, installs and launches on connected USB device
- Updated CLAUDE.md and DESIGN.md source trees
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Android project with Kotlin, Jetpack Compose, and Room. Includes:
- Gradle build system with version catalog, foojay JDK resolver, lint config
- Room entities (Notebook, Page, Stroke) with packed float BLOB encoding
- DAOs and repositories for all entities
- Unit tests for blob roundtrip and PageSize enum (10 tests, all passing)
- Minimal Application class and stub MainActivity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>