Commits b92f1ef, adcddd7.
src/lib/offline/outbox.ts, sync.ts).mergeBanksOutbox.ts, mergeCategoriesOutbox.ts, mergeWishlistOutbox.ts).OutboxSyncContext, useOutboxSync, usePendingEntities, usePendingTransactions hooks for UI awareness of pending state.Adding a transaction on mobile while offline (commute, no signal) was the dominant unmet use case. Without an outbox, the form just failed silently. The outbox makes the PWA actually useful as a "capture now, sync later" tool. Extending to all mutable entities meant onboarding (creating a first bank/category) also works offline.
src/lib/offline/ (new module)src/app/(main)/* — UI for pending indicatorsnext.config.* — PWA tuningtests/e2e/offline-*.spec.ts — E2E coverageentity-dispatch.ts and merge logic — easy to miss when adding a model.