Devlog #8
Table of Contents
Devlog — 2026-07-20#
TL;DR#
A mobile-only week — no backend commits landed at all. Most of the effort went into quick actions for adding tasks and starting timers from outside the app (Spotlight/Siri on iOS, launcher shortcuts + a Quick Settings tile on Android), plus a cluster of bug fixes: flow-session break offers, deadline timezone math, monthly recurrence, and a silently-failing iOS daily notification. No release shipped.
User-facing features#
- Add a task or start a timer without opening the app: new home-screen long-press quick actions and Spotlight/Siri support on iOS, plus launcher shortcuts and a Quick Settings tile on Android. Start Flow and Start Pomodoro are now separate actions instead of one generic “start timer.”
- Flow sessions that don’t reach the 3-minute minimum no longer offer a break afterward — previously you could get a “you worked 0 minutes, here’s a 5-minute break” prompt for a session that was never even saved.
- Monthly recurring tasks can now be set to repeat on the first or last day of the month. Also fixed the recurrence subtitle literally showing “%d” instead of the actual day number.
- Fixed a timezone bug where a deadline time picked in the evening could get stored and displayed a couple hours off; date-only deadlines were also sometimes mislabeled as having a time attached.
- The goals tab now shows a proper “done for today” state when you complete your pinned daily-focus task, and frees the slot back up for recurring goals instead of leaving a stale card behind.
- Daily digest now nudges you to set (or wrap up) a horizon goal on its last day — week, month, quarter, or year.
- iOS: fixed a bug where the daily digest notification could silently never fire for some users.
Technical improvements#
- Root-caused last week’s iOS task-duplication bug: it traced back to iOS generating uppercase task IDs while every other platform used lowercase. Now unified on one shared ID generator, so the mismatch can’t recur (last week’s fix only cleaned up existing duplicates).
- Made iOS’s morning sync more resilient — a crash while scheduling the daily notification could previously abort the entire preflight sync (tasks, goals, snapshots). That failure is now isolated so it doesn’t take the rest of the sync down with it.
- Continued consolidating iOS/Android-specific code into shared cross-platform code — Todoist CSV import and the sync protocol/focus-time calculations no longer have separate iOS and Android implementations.
- CI: fixed the ~40-minute iOS build job continuing to run after a PR had already been merged and closed, wasting build time.
- No release shipped this week (still on 1.6.1). Backend had zero commits — a quiet week on the API side.