Journal

The work,
as it happens.

Notes from building Task(ed), AisleWise, and EveryPaw — what shipped, what broke, and what it taught. Written from each app's log as the work lands.

August 2026

EveryPaw

Care Today gets a Siri card

Asking Siri "what's due in EveryPaw" — or "Care Today for [pet]" — now opens an interactive card of overdue and due-today reminders instead of just opening the app. It holds up to five items with a Show Reminders control for overflow, and completing a row goes through the exact same code path as marking it done from Home or a notification, so there is one completion behavior to trust rather than three that drift apart.

iOS 18 devices open Home instead — the card needs an API iOS 26 has and older systems don't — but the shortcut still routes correctly there, which took a fix: those intents had stopped recognizing the section marker they write themselves.

The quieter half of v2.4.5 is internal: the record screens collapsed onto a shared six-view template, and a 1,400-line ContentView split into bucket files. No visible change from either — it's groundwork so the next care feature doesn't grow inside one file.

Task(ed)

Telling the system what you actually do

Completing a task, adding one to a list, quick-adding, and showing today's tasks are now reported to iOS as you do them in the app — not only when run through Siri or Shortcuts. That reporting is the raw material Siri Suggestions, Spotlight, and the Lock Screen draw on when they offer an app action, and until now Task(ed) had no way onto those surfaces at all.

What came of a week of carrying it on device: 26 donations recorded, nothing surfacing proactively yet. That's expected — whether and when the system acts on donations is Apple's call, not ours — and because donating is purely additive, it shipped as a finding rather than a blocker. Destructive actions like delete and clear-completed are never reported; the system shouldn't be suggesting those.

AisleWise

Speaks Your Language

AisleWise was translated, but English kept leaking through in places no string sweep had caught: the sort menu rendered raw enum values, list counts were assembled by gluing words together in code order, the Spending tab and scanner copy were hardcoded, and VoiceOver hints pasted English words into otherwise translated sentences. All fixed, with counts reading properly in singular and plural — Spanish changes the verb, not just the noun.

The subtlest bug was data, not strings: the category browser saved the translated aisle name, so an item added in Spanish stored "Panadería" — which then sorted as a custom category, could render a duplicate header, and went invisible to Siri's aisle filter. Built-in categories now store the raw name and resolve the translation at display time, with existing lists normalized on read so nothing migrates.

AisleWise

Prices that survive a comma

In locales where the decimal separator is a comma — French, German, Spanish, and others — the Total field on the receipt-confirm sheet was silently stripping the comma while you typed: "12,34" became 1234, and a 100× error got written into the saved trip. The per-item price fields already handled this; the total field simply hadn't been given the same locale-aware formatter. Now both sheets use it, so what you confirm is what you meant.

Task(ed)

A filter that follows you into the list

Tapping "Today 3" while a Quick Find tag filter was active dropped the filter — you'd land on a Today list of four tasks, unfiltered, wondering which three you meant. The section list had no way of knowing a filter existed upstream. Filtering now travels as one shared predicate used by both Home's counts and the section list, which also means both sides finally agree on what a search term matches. While a filter is active, buckets expand in place to show their matching tasks, so the answer is visible before you tap anything.