Devlog — 2026-09-14#

TL;DR#

The Log reached its last client this week — the webapp — closing out the rollout that started with mobile and backend. The long-standing iOS bug where text and icons vanished after the app sat backgrounded for a while finally got a real fix (not just a workaround), traced to an upstream rendering bug. Beyond that: a task-deletion regression got fixed, the Log screen got a small redesign, and pause-time accuracy was hardened further.

User-facing features#

  • The Log shipped to its last client: the webapp now shows log entries merged into the day timeline alongside sessions, matching mobile. A related gap closed alongside it — writing a log entry through the API directly wasn’t notifying other devices to sync, only the mobile write path was; both now behave the same.
  • The iOS bug where the app looked normal (colors, layout, cards) but all text and icons disappeared after a long time backgrounded got a real fix, traced to an upstream Compose Multiplatform rendering bug and resolved by upgrading the toolchain. A safety-net workaround (rebuilding the screen after 30+ minutes backgrounded) shipped alongside it as a fallback.
  • Fixed a layout bug that could push the task menu off-screen — taking with it the only way to delete a task. The delete option now stays reachable; swiping a task now deletes it directly (recoverable via undo), with archiving moved to the opposite swipe direction.
  • The Log screen’s two floating buttons were replaced with a simpler button pair above the list, and a redundant stats card was folded into the timeline summary — freeing up space without losing the tap-through to Statistics.
  • You can now clear a selected task from the timer and from the add/edit session sheet, not just swap it for another — matching how activity selection already worked.
  • Last week’s session/timer pause-accuracy fix got hardened: pausing that spans an app restart, or stopping a session directly from a paused state, still accounts for paused time correctly.

Technical improvements#

  • A refactor made a class of iOS-only bugs — where a dependency change compiled fine on Android but silently broke iOS — surface as a build error on both platforms instead of shipping unnoticed.
  • Backend toolchain bumped to Go 1.27, with CI and linter versions kept in step to avoid mismatched-version build failures.