Notable v0.2.6
Small corrections and improvements
Crash Handling & Resilience
- Durable Crash Reporting: Writes fail-safe crash logs to disk before process death, surviving OOM conditions.
- Crash Logs Viewer: Added log inspection (
Settings → Debug) with copy, share, and clear options. - Crash-Loop Detection: Tracks and reports rapid startup crash loops across app restarts.
- Corrupt Settings Recovery: Gracefully handles invalid settings or pen types with safe fallbacks instead of crashing at launch.
Canvas & Performance
- Zero-Allocation Scrolling: Uses canvas matrix transformations for scrolling to eliminate per-frame allocations.
- In-Place DB Updates: Updated stroke/image moves, resizes, and color changes to run in-place, fixing constraint crashes and resize/undo bugs.
- Database I/O Safety: Hardened stroke and image writes against disk I/O exceptions (
SQLiteDiskIOException).
Sync Engine
- Streaming Uploads: Streams page point data via temporary disk files to prevent heap spikes on large pages.
- Lightweight Media GC: Queries file URIs directly without loading full stroke trees into memory.
- Manifest Self-Healing: Detects missing remote manifests and re-uploads local state to prevent endless retry loops.
- Orphan Cleanup: Removes abandoned remote directories older than 7 days that aren't linked locally.
- Granular Timestamps: Advances individual
Page.updatedAttimestamps on edit.
Bug Fixes
- Deleted Notebook Navigation: Handles background notebook deletion gracefully by returning to the library instead of crashing.
- PDF Export: Fixed pagination overlapping issues.
- Focused Call Stacks: Filters logcat traces to app-specific frames for easier debugging.
Full Changelog: v0.2.5...v0.2.6