Studio Journal
Twixmas Progress: iOS Polish, Artist Editing, and Quiet Momentum
Twixmas turned out to be quietly productive — without ever feeling busy. Over the past few days I shifted focus almost entirely to iOS, smoothing off a lot of the rough edges that inevitably appear when a project spends too long living on macOS first. Kanora has always been built from a desktop-class library manager, but it also needs to feel completely at home in your hand. I am (or was) first and foremost, an iOS developer after all.
This work was about closing that gap in between Christmas films, family time, and eating and drinking far too much. Not to mention Stranger Things S5...
iOS, properly respected
Playlist workflows have been rebuilt end-to-end so they finally behave like native iOS forms instead of scaled-down Mac dialogs. We had too many hardcoded heights and widths that did not play nice with mobile. The add-to-playlist sheet now presents with a familiar navigation bar, adapts cleanly to the keyboard, and only appears once the selected track and library are actually ready. If something’s missing, the UI explains why instead of showing a blank panel.
Creating a playlist no longer summons an oversized modal that ignores safe areas. Everything scrolls when space is tight, primary actions stay within thumb reach, and the app now feels much more at home on.
The same thinking carried through the rest of the library views. Album detail screens now reflow vertically on narrow widths so artwork, metadata, and controls can breathe. Watched-paths management finally scrolls on iPhone, meaning every control is reachable. And tapping—or double-tapping—a track once again does exactly what you expect: it plays.
Artist editing, first-class at last
Artists now have a dedicated editor that mirrors the album experience. Names, MusicBrainz IDs, biographies, and artwork all live in one place, with character counts, unsaved-change prompts, and clear entry points from the detail view.
Custom biographies are explicitly marked as user-authored, so future metadata imports won’t overwrite something you’ve written yourself. Artwork handling has been tightened up too: manual and automated images are stored differently, cache behaviour is now covered by tests, and the system knows when not to be clever.
This gives the user more control over all but Kanora will do its best to load some decent defaults.
Artwork that survives reality
A lot of quiet work went into artwork persistence. Album and artist images now store relative paths in the database, so relaunching the app—or getting a fresh container after an update—doesn’t suddenly break half your thumbnails.
A shared resolver understands both local and iCloud-backed paths, and the browsing UI has been cleaned up as a result. Storage badges inside album track lists are now icon-only, and low-resolution warnings only appear while editing—where they’re useful—rather than cluttering everyday browsing.
Playback reliability
Playback on iPhone is now more predictable and easier to reason about. Starting audio reconfigures the session correctly for the loudspeaker and avoids the override calls that were previously throwing errors.
Once music is playing, the floating mini player and the Now Playing sheet finally show real album art instead of a generic placeholder, updating instantly as tracks change or downloads complete. It’s a small thing, but it makes the whole experience feel much more finished.
Progress without the grind
One thing worth calling out explicitly: all of this happened around Christmas, not instead of it. Anthropic doubled their usage limits between December 25th and 31st, which was genuinely useful, and I absolutely took advantage of it. But the important part is that it didn’t turn Twixmas into a coding marathon or pull focus away from family time. Work happened in short, focused bursts—an hour here, a quick trip to the home office to trigger another Calude session by pointing it at another github issue while I grabbed a coffee etc.
That’s largely down to the ticket-driven workflow put in place a few weeks back. Clear scopes, small units of work, and a shared understanding (between me and the tools) of what “done” actually means. Claude Code could pick up a ticket, stay on task, and produce something reviewable without constant supervision. When time was available, progress happened. When it wasn’t, nothing broke.
The same approach was used to create an initial batch of CarPlay tickets. CarPlay is now planned as a launch feature, and the groundwork is already laid out in a way that should keep it contained and predictable rather than disruptive. The result is that features landed, tests were written, and entire UI flows were rebuilt—without interrupting Christmas films, family walks, or the important business of over-indulging. Kanora moved forward, but December still felt like December.
Where this leaves things
The app feels much more complete and more stable. A lot more polish, fewer placeholders leaving me with some screen shots I can actually share!
macOS laid the foundations, but this was the point where iOS really started to feel considered. More importantly, it’s a good sign that the way Kanora is being built is sustainable. Progress that fits into real life will always beat heroic sprints that burn out.
So Twixmas and some time off real work has ben quietly productive, without feeling busy.
That’s exactly where this project should be but now its back to the mince pies and trying to stop the kids killing each other with their new Hulk Hands and Minecraft pixel swords!
Merry Christmas!