Changed
- The whole interface has been redesigned in Apple's Human Interface Guidelines and its liquid-glass design language. Yuvomi should now feel like an app that shipped with the device: the system font stack and Apple's type scale, cool system neutrals, capsule controls and inset-grouped lists. Glass is chrome and nothing else - the tab bar, the sidebar, sheets and the action button are made of it, while everything you actually read sits on an opaque surface. Each of the seventeen modules keeps its own accent colour so you can tell at a glance where you are, and all of them were verified against the surfaces they are used on: WCAG AA in light and dark, with the same values holding under reduced transparency and increased contrast. On phones the module title now starts as a large title and collapses into the bar as you scroll, the way it does elsewhere on the platform. Nothing about your data, your household or your integrations changes
- The same swipe now means the same thing in every list. Until now only the shopping list and tasks answered a swipe at all, and they disagreed: swiping right checked off a shopping item but opened a task for editing. The start of the row now always carries the positive action and the end the destructive or secondary one, so tasks and the shopping list have swapped sides - a swipe that used to open a task now completes it. Because this is muscle memory, a one-time hint appears the first time you complete a swipe after updating. Birthdays and subscriptions gained the two gestures, which they never had: in birthdays a swipe towards the start of the row edits and one towards the end deletes, with the same five-second undo the delete button already offered; in subscriptions the pair replaces four buttons per row. The rule assigns a rank rather than a fixed role, which is why editing sits at the end in tasks and at the start in birthdays: it is the secondary action where a positive one stands beside it, and the primary one where none does
Fixed
- Printing from a device in dark mode produced an unreadable page. The print stylesheet forced text to black but only recoloured the page body, so every surface underneath kept its dark theme colour - the result was black ink on a black background, measured at 1.06:1 on module titles and 1.23:1 inside cards, across eleven of the sixteen routes measured. Both dark-mode sources now apply to screens only, so a printout always uses the light palette regardless of the theme you are working in. Light mode was never affected
- Swiping to delete a shopping item removed it immediately and for good: no undo, no confirmation, and the row flew out as if the job were done. It was the only gesture in the app that destroyed data without a way back, which is exactly the trap for anyone who learned the same gesture as harmless in tasks or birthdays. Deleting by gesture now goes through the same undoable path the row button already used
- The shopping list ignored swipes entirely until something rebuilt it. Opening the page gave you rows that answered no gesture at all; they only started working after you added an item, checked one off with the button, or switched lists. This had been the case since the gesture was introduced
- Screen readers announced every subscription row as just "Edit, button". The row body wraps all of its content - name, description, status, due date, billing cycle, payment method, amount - and carried an edit label that replaced that content instead of adding to it. The row now announces what it contains, with the action named at the end
- A number of colours that were readable in light mode failed the contrast requirement in dark mode, among them the hover states of the semantic colours, several module accents on tinted backgrounds, and icon-only buttons that fell back to the browser's default text colour instead of inheriting their own
- On a touch device, the edit and delete buttons in birthdays and subscriptions were not merely hidden but removed: with the swipe gestures carrying those two actions, the buttons were taken out of the focus order and out of the screen reader tree as well. Since the gestures are touch-only and the rows themselves carry no action, anyone driving a phone or tablet by keyboard, switch control or VoiceOver could no longer edit or delete an entry at all. The buttons now step out of the way visually but stay reachable, and come back on focus
- Deleting a contact or a document from its context menu was announced in a red that fell just short of the contrast requirement while the row was highlighted, at 4.45:1 against the tinted background. Both now use the darker ink tone the rest of the app already used on tinted surfaces
- In Arabic and Persian, every horizontally scrolling bar faded the wrong edge: the filter rows in tasks, the budget tabs and the meal week all dimmed the chips you could see while cutting off the ones you could not. The scroll position was measured in a way that never reported "there is more at the start" in a right-to-left layout, and the fade itself had a fixed physical direction
- During a swipe, the coloured action panel behind the row briefly turned into a plain surface, and the moving row lost the backing that keeps its text off the panel underneath
- In the installed app, choosing a theme that disagreed with the system left the status bar in the other one: dark mode on a light phone kept a light bar above a dark page, and the reverse for light mode on a dark phone. The status bar now follows your choice, and only falls back to the system setting when the theme is set to automatic
- On pantry and shopping, swiping a filter row or list tab sideways popped the page header back open even though the list underneath was still scrolled, and it stayed open until the next vertical scroll
- Navigating between modules left one observer behind per page header, attached to a header that no longer existed
- Undoing a deletion in the shopping list acted on whichever list you happened to be looking at, not the one the item came from. Switching lists inside the five-second window put the restored item into the wrong list and miscounted both tabs; deleting all checked items was worse, because the deletion itself was sent five seconds later to the list open at that moment, clearing a list you never asked to clear. Both now stay with the list the action started in
- The offline page had the same status bar mismatch as the app, and no way to correct it after the fact