Platform Hardening & Blog Launch
- Hardened platform reliability with offline replay and idempotent writes
- Launched 15 SEO-optimized blog posts
- Last-used task auto-restores when starting focus sessions
New Features
Smart Task Restore
Starting a focus session now automatically restores your last-used task selection, so you can pick up where you left off without re-selecting your project and task every time.
Blog Launch
Published 15 blog posts covering Pomodoro techniques, productivity tips, and focus strategies. The blog uses a hub-and-spoke internal linking structure for discoverability, with navigation added to both the landing page and app footer.
Timeline Edit Filtering
Archived and deleted projects/tasks are now properly excluded from the timeline session edit dropdowns. Sessions linked to archived items show an “(Archived)” label until you reassign them.
Platform Hardening
Offline Replay Reliability
Mutations made while offline are now persisted to localStorage and replayed with idempotency keys. The server deduplicates retries so sessions are never double-counted.
365-Day Session Retention
Server-side session queries now support up to 365 days of history, matching what the Stats page offers for year and all-time views.
Deterministic Pagination
Session listing uses cursor-based pagination with a canonical endedAt DESC, id DESC sort, eliminating edge cases where sessions could be skipped or duplicated across pages.
CI Query Plan Checks
A new CI step provisions a real Postgres database and validates that hot-path queries use index scans, catching performance regressions before they reach production.
Fixes
- Fixed stuck completion guard that could silently drop sessions after errors
- Fixed CI schema provisioning by bypassing drizzle-kit in favor of raw SQL