Devlog #18
Table of Contents
Devlog — 2026-10-05#
(Kombine-mobile + kombine-api, last 7 days)
TL;DR#
Kombine now has a tablet layout. Nav rail, side-by-side panes, centred screens, iPad enabled — all in one weekend, which tells you how much of the groundwork was already sitting there. The week before that was a design-system audit pass across basically every screen, plus the webapp catching up to mobile.
User-facing features#
- Tablets are a thing now. Medium windows get a nav rail, big ones get a permanent drawer. Tasks, Log, Goals and Statistics show a list on the left and the editor/detail on the right — selection survives rotation and resizing. Shrink back to phone width and the open task pops up as a sheet again.
- iPad support switched on. Split View and Stage Manager work. Phone layout is stretched in places until the tablet work lands fully. (Yes, I shipped it anyway.)
- Sheets and dialogs adapt to screen size. Small things like reminders and date pickers become centred dialogs on wide screens instead of giant bottom sheets.
- Whole app re-aligned with the design system. Settings, Statistics, Tasks, Timer, Goals, Log, duration picker, drawer, daily goal sheet — spacing, type, colours, tag chips. Death by a thousand pixels, but it finally looks like the mockups.
- Statistics rebuilt — period-scoped Focus view, comparison header, Tasks and Goals views, one streak instead of several, a readable Monday-start year grid. Webapp got the same treatment, mobile and web now match.
- Webapp catch-up: Tasks page with Board/List views, due-date tabs and a side detail pane; Goals page reworked; Settings with steppers; auth pages on the new split-screen layout.
- “What now?” suggestion in the web timer task picker. Tap it, get one task and the reason why. Suggestions now factor in your energy level and give a boost to tasks serving an open goal, and use your local time instead of UTC.
- Android reminders are exact out of the box — no more sending you to system settings.
- Fixes people would actually notice: quick-settings tile crashed on Android 14+, “toad of the day” prompt appeared over the login screen, privacy policy showed raw markdown, cursor jumped to the start while typing tags, session summary sheet vanished before you got back to the app, hold-to-stop haptics went silent on Android 16, goal headings said “Finished in” twice, past weeks were named differently in Goals and Statistics.
- Releases 1.14.0, 1.14.1 and 1.14.2 went out.
Technical improvements#
- Sync nudges can’t get lost anymore. The “something changed, go sync” signal is now reserved before the write instead of after, so a crash or dropped connection doesn’t leave other devices stale. All REST writes now send it too — before, only one endpoint did. [VERIFY — confirm webapp edits now reach phones noticeably faster]
- Tighter data ownership on sync. Sync could link a task to someone else’s goal entry; now it’s checked everywhere and the link is dropped instead of failing. Related: tasks linking a goal entry created in the same sync request used to never get written. Fixed.
- One shared layout system for mobile (width classes, layout tokens, two-pane scaffolding), so each screen’s tablet support was a small PR, not a rewrite.
- Crash reporting is quieter and better: expected “not found”-style errors no longer show up as issues, native crashes arrive with full detail, Sentry SDK bumped.
- Design handoff tooling: app screens can be bundled and pushed back to Claude Design, and design tokens pulled in. Dark-mode activity colours keep their hue now.
- Housekeeping: build and deprecation warnings cleared, E2E tests de-flaked, architecture docs updated, a dependency bump.