Releases: momentmaker/pancakemaker
Releases · momentmaker/pancakemaker
v1.7.2
Fixed
- Cross-route expense orphans — Dashboard QuickAdd no longer lets you accidentally pair a Business category with a Personal panel (or vice versa); the panel now derives automatically from the selected category's route. Existing orphaned expenses (e.g. a Business → Travel expense that showed $0 on the category page but appeared in the detail view as "Unknown Panel") are healed automatically on app load. Subtle p/b markers in the Dashboard category dropdown disambiguate same-named categories across routes.
v1.7.1
[1.7.1] - 2026-03-31
Fixed
- Sync indicator stuck on "Syncing" forever — circuit breaker now shows "Sync error" after 3 failures, manual retry bypasses it, and periodic retry with exponential backoff keeps sync alive
Changed
- Upgrade GitHub Actions to v5 and Node.js 22
v1.7.0
[1.7.0] - 2026-03-24
Added
- Mobile decimal keyboard for amount input — QuickAdd now uses
inputMode="decimal"for a cleaner numpad without spinner arrows - One-click expense duplicate — copy any expense with the same category, amount, currency, and description, dated to today
Changed
- Update README.md
v1.6.1
[1.6.1] - 2026-02-28
Fixed
- Sync status stuck at "Local" after page reload for authenticated users — SyncContext now reads the engine's actual initial status instead of hardcoding "local"
- Auto-sync on app startup when authenticated — engine now fires an initial sync in start() when a JWT token is present
v1.6.0
[1.6.0] - 2026-02-28
Fixed
- Reduce dashboard DB queries from 8+ to 2 — derive all stats from current + previous month expenses to prevent iOS Safari WASM JIT crash
- Simplify sync engine — remove interval timer, focus handler, and delayed start; sync now only fires after login or CRUD operations
v1.5.8
Fixed
- Batch sync pull with yields to prevent iOS Safari WASM JIT crash — process entries in groups of 20 with main-thread yields between batches
- Remove reactive sync triggers from all write paths — sync now fires via 5-min interval, focus event, manual button, or after auth login
- Delay initial sync by 3 seconds to let the app render first
- Detect crash loops (restart within 60s) and defer sync to next interval
- Circuit breaker: disable sync after 3 consecutive failures
v1.5.7
Reverted
- Revert all changes from v1.5.2–v1.5.6 (iOS PWA crash fixes) — introduced regressions in regular browser mode
- All source files restored to v1.5.1 state
v1.5.6
Fixed
- Chunk sync entry application into batches of 20 with browser yields between batches to prevent Safari WASM JIT thrashing (known wa-sqlite issue where sustained WASM execution causes 300-500% CPU spikes and WKWebView crashes)
- Yield to main thread between push and pull operations and before notifying UI of new data
v1.5.5
Fixed
- Break iOS PWA crash-restart loop — detect rapid restarts and disable sync for the session to prevent infinite WKWebView crashes
- Delay initial sync by 3 seconds after startup to let WASM/IDB settle before making network calls
- Batch pull writes in SQLite transactions to reduce IDB contention (N individual writes → 1 transaction)
- Disable sync after 3 consecutive failures to prevent runaway retry loops
v1.5.4
[1.5.4] - 2026-02-28
Fixed
- Remove WAL journal mode and disable deferred IDB purge to prevent iOS standalone WKWebView crashes after idle