<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Devlog on Adam Swiderski</title><link>https://swiderski.tech/categories/devlog/</link><description>Recent content in Devlog on Adam Swiderski</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>aswiderski@pm.me (Adam Świderski)</managingEditor><webMaster>aswiderski@pm.me (Adam Świderski)</webMaster><lastBuildDate>Mon, 24 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://swiderski.tech/categories/devlog/index.xml" rel="self" type="application/rss+xml"/><item><title>Devlog #13</title><link>https://swiderski.tech/2026-08-24-kombine-devlog-13/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-08-24-kombine-devlog-13/</guid><description>Devlog — 2026-08-24 TL;DR Mobile shipped a new Today dashboard as the app&amp;rsquo;s start destination, replacing the old Pomodoro landing screen, then spent the rest of the week stabilizing it (a squash-merge that quietly dropped its restyle, an iOS-only launch crash, a laggy long-press). Refresh-token rotation kept getting chased down — a second silent rotation per launch, a WebSocket reconnect path forcing rotations it shouldn&amp;rsquo;t, and a fix for tokens lost when the server rotates but the client&amp;rsquo;s write never lands.</description></item><item><title>Devlog #12</title><link>https://swiderski.tech/2026-08-17-kombine-devlog-12/</link><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-08-17-kombine-devlog-12/</guid><description>Devlog — 2026-08-17 TL;DR The week&amp;rsquo;s headline is refresh-token reliability — a run of deadlocks, races, and rotation bugs across mobile and backend that were behind random logouts and stuck sessions, now fixed end to end. Due dates became timezone-correct across the whole stack: the backend now stores each user&amp;rsquo;s actual timezone instead of guessing from a midnight timestamp. Goals got period notes decoupled from outcomes (write a note without committing to a review) and the review prompt got unstuck from being silently unreachable.</description></item><item><title>Devlog #11</title><link>https://swiderski.tech/2026-08-10-kombine-devlog-11/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-08-10-kombine-devlog-11/</guid><description>Devlog — 2026-08-10 TL;DR Goals moved from four standing slots to dated periods with a review ritual (Achieved / Dropped / Carried) — the week&amp;rsquo;s biggest change, spanning mobile, webapp, and sync. The Abandoned task status was removed in favor of a derived state (archived + not done), simplifying the board back to three columns. Backend sync got a full performance pass — batch and delta pushes now pipeline into a handful of round trips instead of one per item — alongside a security hardening pass on the webapp (CSRF, CSP).</description></item><item><title>Devlog #10</title><link>https://swiderski.tech/2026-08-03-kombine-devlog-10/</link><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-08-03-kombine-devlog-10/</guid><description>Devlog — 2026-08-03 TL;DR Sync reliability and widgets dominated the week. Task conflict resolution was rebuilt around version numbers instead of timestamps, closing several silent data-loss bugs (stale overwrites, invisible completions, conflicts that vanished without a dialog). Today&amp;rsquo;s-tasks home screen widgets shipped on both Android and iOS, plus a new watch complication and iOS quick actions. Also landed: a new ABANDONED task status end-to-end, inline goal editing, and a pile of webapp UI fixes.</description></item><item><title>Devlog #9</title><link>https://swiderski.tech/2026-07-27-kombine-devlog-9/</link><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-07-27-kombine-devlog-9/</guid><description>Devlog — 2026-07-27 TL;DR Big infra week. Stood up a full observability stack (Grafana/Tempo/Loki) and wired distributed tracing end-to-end from a watch tap through the phone to the backend. Webapp got a real accessibility pass (WCAG contrast fixes, CI-gated) and its e2e suite went from fully broken to meaningfully expanded, surfacing and fixing several production bugs along the way. Also killed the client-attestation feature outright — it was never doing anything.</description></item><item><title>Devlog #8</title><link>https://swiderski.tech/2026-07-20-kombine-devlog-8/</link><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-07-20-kombine-devlog-8/</guid><description>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.</description></item><item><title>Devlog #7</title><link>https://swiderski.tech/2026-07-13-kombine-devlog-7/</link><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-07-13-kombine-devlog-7/</guid><description>Devlog — 2026-07-13 TL;DR A plumbing week: reminder settings now actually sync across devices, recurring tasks stay consistent between app and web, and a nasty watch lockout bug got closed. Plus watch complication/break fixes, dark mode polish, and an iOS duplicate-task bug.
User-facing features Custom reminder time now actually schedules a notification, and reminder settings sync across devices — change your reminder time on one device and it takes effect everywhere, not just where you changed it.</description></item><item><title>Devlog #6</title><link>https://swiderski.tech/2026-07-06-kombine-devlog-6/</link><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-07-06-kombine-devlog-6/</guid><description>Devlog — 2026-07-06 TL;DR This was a watch week. Most of the effort went into making the Wear OS/watchOS side actually reliable offline — proper token handling, a durable action queue, working complications — plus a webapp overhaul of the Sessions view and a fix for an iOS login bug that would silently log people out.
User-facing features Renamed &amp;ldquo;Calendar&amp;rdquo; to &amp;ldquo;Sessions&amp;rdquo; everywhere — mobile and web. It&amp;rsquo;s a work log, not a planner, and the old name kept setting the wrong expectations.</description></item><item><title>Devlog #5</title><link>https://swiderski.tech/2026-06-28-kombine-devlog-5/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-06-28-kombine-devlog-5/</guid><description>Kombine in June: an iOS app fell out of the migration The headline for June is short: Kombine has an iOS app now. Not a wrapper, not a demo — a real iOS (and watchOS) app with sync, timers, notifications, and Live Activities. The longer story is how it got there, because nobody sat down and &amp;ldquo;built an iOS app.&amp;rdquo; It dropped out the back of a Kotlin Multiplatform migration that had been grinding for weeks.</description></item><item><title>Devlog #4</title><link>https://swiderski.tech/2026-06-01-kombine-devlog-4/</link><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-06-01-kombine-devlog-4/</guid><description>Devlog — 2026-06-01 TL;DR — Big week. Dark mode landed on Android, Todoist import is in, and the web app got a near-complete UI overhaul covering dashboard, task views, calendar, and a command palette. Under the hood, sync got smarter with version-based delta sync and proper tombstone handling on both client and server.
User-facing features Dark mode — phone app now supports system dark mode Todoist import — bring in tasks from a Todoist CSV export Newsletter opt-in — shown during registration, also toggleable in account settings Confirm password on registration — basic but missing until now Haptics improvement — vibration strength slider now has 10 discrete steps, saves on release, and shows the current value Calendar: add task from session sheet — you can now create a task directly from the work session detail dialog Web app (not publicly available yet):</description></item><item><title>Devlog #3</title><link>https://swiderski.tech/2026-05-25-kombine-devlog-3/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-05-25-kombine-devlog-3/</guid><description>Devlog — 25 May 2026 TL;DR — Recurring tasks and daily goals landed — two features that have been in the backlog long enough to collect dust. The watch got a proper duration picker instead of making you dig through settings. Lot of polish across the board too.
User-facing features Recurring tasks. Create a task that respawns on completion — daily, weekly, monthly, or every N days. When you check it off, the next instance appears automatically.</description></item><item><title>Devlog #2</title><link>https://swiderski.tech/2026-05-18-kombine-devlog-2/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-05-18-kombine-devlog-2/</guid><description>Devlog — 18 May 2026 TL;DR — The web app shipped in a very beta version. Android got real-time timer broadcasting via push notifications and a stats screen overhaul. Big week on both sides.
User-facing features Kombine on the web. Full web client, built and shipped this week. Task list with inline status toggles, create/edit/delete, grouping by priority, energy level, Eisenhower matrix, and date. Pomodoro and Flow timer modes, activity and task pickers, break configuration.</description></item><item><title>Devlog #1</title><link>https://swiderski.tech/2026-05-11-kombine-devlog-1/</link><pubDate>Mon, 11 May 2026 00:00:00 +0000</pubDate><author>aswiderski@pm.me (Adam Świderski)</author><guid>https://swiderski.tech/2026-05-11-kombine-devlog-1/</guid><description>Devlog — 11 May 2026 TL;DR — Biggest UX week in a while. Onboarding got rebuilt from scratch with animations that actually show off the app. Task archiving is live end-to-end. Forgot password finally works — and users complete it on pages served directly from the API, no separate frontend required.
User-facing features Onboarding rebuilt. New 5-page carousel with a Bauhaus-inspired visual language and animated illustrations — live countdown timer, pulsing watch-sync ripples, a heatmap that randomises itself.</description></item></channel></rss>