Devlog #17
Table of Contents
Devlog — 2026-09-28#
TL;DR#
The headline this week is a full notifications rework: one merged morning brief, actionable task reminders, and brand-new goal-ritual and weekly-summary notifications, all managed from a single settings sheet. Underneath that, a multi-PR pass fixed a long list of quietly-wrong statistics calculations across mobile and backend, and a batch of goal-sync bugs that could duplicate or strand entries got cleaned up.
User-facing features#
- Notifications got a full rework. One morning brief now replaces two overlapping notifications and shows task titles with a one-tap “Start focus” action. Task reminders are actionable too (start focus, mark done, snooze an hour). New goal-ritual notifications nudge you to review a finished period, plan the next one, or check in partway through. An opt-in weekly summary lands Sunday evening with focus stats, target days hit, and goal progress. Everything now lives in one unified notifications settings sheet instead of scattered toggles. Shipped across mobile and backend together.
- Statistics got a correctness pass, then a cleanup. Weekly streaks, live session totals, tasks-done counts, month/year totals, and breakdown percentages were each quietly wrong in different ways — all fixed together across mobile and backend. Once the numbers were right, the stats screen had its unused day/all-time views and an unused productivity score removed.
- Goal sync bugs fixed. Goals created offline could silently duplicate themselves or strand their entries when syncing to the server; both are fixed, along with a fix so goal entries carried over from a previous period show up correctly on the web app.
- Long-press a task for a quick menu — edit, start focus, complete, change priority, link a goal, archive, delete — instead of opening each action separately.
- New quick-added tasks get their own “New” group at the top of the list for a few minutes, instead of sinking to the bottom since they have no deadline or priority yet.
- Android reminders now prompt to allow exact alarms when needed, so reminders fire on time instead of within a fuzzy up-to-an-hour window.
- iOS polish: the tab bar’s glass effect now renders correctly, goal-linked entries show as a scrollable chip row instead of squeezed buttons, menu icons pick up the right color in light mode, and home screen quick actions work again.
- Fixed a bug that could bounce you back to the login screen right after dismissing the intro, even if you’d never signed in.
Technical improvements#
- Every API call is now traced end-to-end with a shared trace ID across mobile and backend, and telemetry carries app version, user, and environment — should speed up diagnosing production issues. [VERIFY — impact not yet observed in practice]
- Reduced Sentry noise by filtering out transient network errors and expected push-notification rate-limit events.
- Sync reliability: fixed a case where deleted sessions could reappear after syncing, and pull sync no longer fires (and logs false errors) before login finishes.
- Backend logging now consistently attaches user identity and client app version/platform, making issues easier to trace back to a specific build.
- Routine maintenance: dependency bumps and CI script fixes.