github ulsklyc/yuvomi v2.76.0

3 hours ago

Added

  • The demo household has pocket money (#1750). The Rewards overview of a demo database now
    shows the pocket money section: Emma has an account in euros with a monthly plan, three
    credits by that plan, a birthday bonus from a parent, an approved withdrawal and one request
    that is still open. Leo has no account, so he appears as someone a parent can set up. Only a
    database filled by scripts/seed-demo.js is affected.
  • Payment reminders can be turned off for each subscription (#1708, from D#1226). Turn off the reminder
    in the subscription dialog while keeping the subscription active and its cost in the budget.
    Editing or renewing it keeps the reminder off. Existing subscriptions keep reminders enabled.
  • Loans can be put in order by interest rate or by remaining balance (#1706, from D#935). The
    loans tab has a sort menu: highest rate first, smallest balance first, or by start as before.
    Each loan now also names the month it is projected to end, which follows the payments you
    actually booked and counts from today if instalments have not been recorded up to date. A loan in another currency is compared at its stored rate, a loan without
    interest counts as 0 %, and paid-off loans stay at the end. In these two orders the loans you
    took out come first and the money you lent follows as its own group. While the list is not in
    its default order, a line above it says which order applies; tap it to change. The order is a calculation to read:
    Yuvomi does not suggest which loan to pay first and does not move payments between loans.
  • Choose which shopping lists the overview shows (#1818, from D#1624). The shopping tile now
    has options in "Customize": tick the lists you want on it. With nothing ticked it shows every
    list with open items, as before. A list you picked stays on the tile even when everything on it
    is bought, so it is one tap away when you want to add the first item. The tile shows up to
    three lists; a further one you picked is named as "+1 more list". The choice is yours alone,
    does not change what anyone else in the household sees, and only applies to the tile: the
    today sheet, the wall and the menu keep counting every list.

Changed

  • "Grant bonus" is on the Rewards overview (#1787). Giving bonus points was only possible from
    the history tab, which is not where parents look first. They now find a "Grant bonus" button
    in the head of the point standings, next to "Manage participants"; it opens the same dialog. The button in the history tab stays. Children and members who can only read
    Rewards do not see it.
  • Today's programme says which calendar an appointment comes from, and the wall when it
    ends
    (#1698, from D#988). Every appointment in "Today at a glance" and on the wall carried
    the same word underneath, "Event". It now shows the name of its calendar there, so "Early"
    reads as the shift from the work calendar. An appointment that lives in Yuvomi only keeps the
    word "Event". In wall mode the time also shows start and end ("06:00 - 14:00", or "6:00 AM -
    2:00 PM" in the 12-hour format) instead of the start alone; all-day appointments, ones carried
    over from yesterday and ones that run for a day or longer read as before, and on a phone-sized
    screen the wall keeps the start alone so the title keeps its room. The line under a title is
    now a single line in both places: a long calendar name, or any other long text there, ends in
    an ellipsis instead of wrapping.
  • The notes grid stops at four columns (#1765, from D#826). The four-column step now starts at
    1200px of grid width instead of 900px, and the fifth column is gone. A note card is never
    narrower than 232px, where it could be 216px before, so the title and first lines of a note
    stay readable on a wide screen. Phones and narrow windows look as they did.
  • Rows show fewer buttons. Lists no longer carry a pencil and a bin on every line. Editing,
    deleting and anything further sit behind one "more" button per row that is always visible and
    names what it does in words. This applies to shopping items, birthdays, tasks, loan payments
    and the five lists of the shift planner, where "Edit" and a red-outlined "Delete" stood on
    every row. Deleting stays undoable or asks first, exactly as before, and swiping still works.
    Meal cards no longer show a bin at all: open the meal to delete it.
  • Shopping rows are one line. The amount now stands at the end of the line with the name
    instead of underneath it, so amounts line up in a column and the list shows more at once. A
    long name still wraps instead of being cut off.
  • Fields are quieter and all look alike. A field used to be drawn twice - a fill plus a
    heavy outline - and in dark mode it was a near-black box with a bright edge. Fields now have
    one skin everywhere: a thin outline that still meets the contrast needed to find it, on a fill
    that carries it; in dark mode the field is a soft well instead of a black hole. Dropdowns are
    as tall as the text fields beside them and show the same small arrow on every browser, number
    fields no longer show the tiny up/down arrows, and the quick-add row of the shopping list
    focuses in violet like every other field.
  • Settings read like a list, not like a form. A choice in a settings row was a bordered
    box at the end of the line, anywhere between a third and the full width of the row. It is now
    the plain value with a small arrow, the way phone settings show it - "Language ... German".
  • Recording a measurement is quicker to read and fill in. Blood pressure was three wide
    boxes named "Systolic", "Diastolic" and "Pulse", none with a unit. It is now written the way
    it is said: "120 / 80 mmHg", with the pulse on the line below, each with an example value and
    its unit. Type, time and visibility stand as rows with the label on the left and the value on
    the right; the note keeps its own field. Screen readers still announce every part by name, and
    in right-to-left languages the reading keeps its order.
  • Documents look like documents. The preview shows the whole page as a sheet on a quiet
    background instead of the cropped top of a white rectangle, and in dark mode it is no longer
    the brightest thing on the screen. Cards are as tall as their content, with their buttons
    right below the text, and there is room between the filter bar and the first row. The list
    view shows the category symbol instead of a preview too small to read. On a desktop, opening a
    PDF no longer shows the browser's own toolbar inside the viewer; "Open in new tab" and
    "Download" remain the way to zoom and print (Safari keeps its toolbar).
  • Reading a note looks like the note. The text stood in a tinted box with a coloured edge,
    which above the red "Delete" read like an error message. The whole reading view now takes the
    colour of the note. "Edit" is one button instead of a button and a tab.
  • One empty-state message per page. Waste collection and the shift planner stacked two or
    three large "nothing here yet" blocks. The main section keeps its message; the sections below
    say it in one line with their button.
  • The task board has depth. Columns were as bright as the cards on them; they are now a
    recessed lane with the cards lying on top, and an empty column no longer shows a dashed box.
  • Opening an event, a task or a birthday shows what matters first. The reading view listed
    everything as rows of equal weight, people as a comma-separated line, under a thin colour
    strip. An event now opens with its time in words ("Today, 20:00 - 22:00") beside a dot in the
    calendar colour and the people as avatars with names. A task opens with its due date and its
    people, and "Done" is the one main button. A birthday opens with the picture, "turns 41" and
    "in 26 days". The popover on a desktop carries the title in the same size as the sheet on a
    phone.
  • A recipe without a picture opens with a head of its own. Its details began with a list of
    ingredients and nothing that said "recipe". They now open with a flat band in the kitchen
    colour that carries the sign of the meal the recipe is for. Recipes with a picture keep it,
    and the list stays as it is.
  • Ingredient amounts line up. "200 g", "1 tbsp" and "2" stood inside the same text as the
    ingredient, so every line started somewhere else. Amounts now have their own right-aligned
    column in front of the names.
  • The agenda names its days in words. "Today - Thursday, 8 October" and "Saturday, 10
    October" instead of "08.10.2026 Thursday".
  • Each money screen has one number that leads. On a phone the largest thing on every budget
    tab was the word "Budget"; the balance stood beside it in small type. Now one figure per tab
    carries the screen: the balance in the overview, net worth in accounts, the remaining debt in
    loans, the monthly cost in subscriptions. Income and expenses stand as a quiet line below it.
    On a desktop the same figure leads its column and the others step back. Long amounts and long
    currency signs take a smaller size instead of breaking.
  • The budget trend reads at a glance. The area under income is tinted, today carries a dot
    with both values, and what has not happened yet is dotted - for both lines, where expenses
    used to be dashed as well. "Today" no longer sits on a grid line, the axis says "1.", "16.",
    "31." instead of three full dates under a header that names the month, and three grid lines
    replace up to seven. Trend and ring now sit on a card like the lists beside them.
  • The spending ring shows its total in the middle. The sentence next to it ("7 segments,
    largest: ...") is still read out by screen readers.
  • Account balances are no longer green. Nearly every balance and the net worth above them
    were green merely for being above zero. A balance now stands in the text colour and only a
    negative one is red; green is kept for income and for changes.
  • Figure tiles line up. In the vitals row the dates stood at three different heights. Label,
    value, trend line and date now share the same four rows across a row of tiles, value and unit
    share a baseline, and labels are written normally instead of in spaced capitals, so a long one
    such as oxygen saturation fits on one line. On the vitals page "116/74 mmHg" stands on one
    line; in the narrower tiles of the health overview the unit still moves below the value. This
    holds for every tile of this kind: budget, health, housekeeping, inventory and the overview.
  • The small trend lines in the vitals tiles are visible. They were grey hairlines; they now
    carry the colour of the health area with a soft fill, and the latest reading is marked.
  • Hovering a figure tile no longer looks like selecting it. The tile lifts slightly; the
    coloured ring is kept for the selected one.
  • The week of activity is easier to read. Bars have a round top and a flat foot, today's
    bar stands in full colour with its value while the other days step back, and three grid
    lines replace five. On a phone the chart is taller, and the weekdays no longer run into the
    feet of the bars.
  • The overview uses fewer type sizes. Weather, birthdays, rewards and the budget tile mixed
    sizes one pixel apart; their content now reads on four steps.
  • Numbers no longer jump sideways. On the overview, times, amounts and counters now use
    digits of equal width everywhere, not only in some tiles.
  • Everything that floats has one shape, and the sidebar floats too. Dialogs, the "More"
    sheet and the search palette had tighter corners (16 px) than the event popover and the
    toasts (26 px); they now share the larger radius, with fields, tiles and menu rows rounded to
    match, and catch a fine line of light at the top. The dialog header is no longer a grey strip
    above a white body. On a desktop the sidebar is a glass panel 8 px off the window edge instead
    of a full-height bar; the content keeps its width. Light glass takes the warm tone of the
    page instead of a cool white, and the icon wells in the sidebar are visible in the light
    theme (they were 1.007:1 against the bar).
  • Login, setup, invitation and password reset have a place. The form stood as a small card
    on a plain page. It is now a glass panel in front of a still field of soft light in the
    colours of the Yuvomi mark, which also stands behind the loading screen. Everything on these
    pages sits on the panel, where text keeps its contrast (label 5.4:1 light, 6.2:1 dark, in the
    worst spot); with "reduce transparency" or "increase contrast" the light is off and the panel
    is solid. A form taller than the window can now be scrolled by hand - on a small phone or in
    landscape its lower end could only be reached with the Tab key.
  • The app no longer animates a backdrop nobody could see. Four blurred colour fields drifted
    behind the content the whole time the app was open, and the content covered them completely.
    They are gone, together with a gradient that was covered the same way. Nothing looks
    different; the browser has four large layers less to carry.
  • Rows and cards answer a tap. List rows, task cards, the cards on the overview and the rows
    in the settings now show that they are being pressed, instead of doing nothing until the next
    screen arrives.
  • "New task" closes right away. After saving, the dialog showed a check mark for about
    three quarters of a second before it closed. It now closes with the save, and the new task
    pulls open in the list: visible after about 0.2 seconds instead of 0.9.
  • A sheet you flick away travels out of the screen. Dragging a sheet down and letting go made
    it dissolve where the finger had left it. It now leaves the screen from there, as fast as the
    flick was; let go too early and it springs back just as briskly. Behind the "More" sheet the
    dimming fades with the pull.
  • Going one level deeper has a direction. On a phone, opening a settings page or a health
    area slides in from the side you are heading to, and going back comes from the other; both
    used to cut or only fade. Switching between light and dark fades instead of flipping, the
    blood pressure and weight curves draw themselves once, and a few menus that appeared or
    vanished in one frame now fade.
  • The app starts faster on a slow connection. Before the overview asked for its data, the
    start made five requests one after the other, two of them twice. What does not depend on each
    other now runs at the same time, and the second copy is served from the first. Measured on a
    throttled phone (4x CPU, "Fast 4G"), three runs each, before and after: the overview asked for
    its data after about 0.8 seconds instead of 1.3, and the greeting appeared after about 1.0
    seconds instead of 1.5.
  • Health loads in three steps instead of six. The overview asked for vitals and medication,
    then for the cycle history, then for the cycle settings, each only after the previous answer
    had arrived. These now go out together; who may see what is decided as before. Measured on the
    same throttled phone: the last answer arrived 747 ms after the first health request instead of
    1119 ms.
  • A weak connection no longer holds up the start. With a network that is neither offline nor
    answering - on a train, in a lift, at the edge of the Wi-Fi - the app waited for it although
    everything it needed was already stored on the device. It now waits 1.5 seconds once, then
    uses the stored copies and picks up the fresh ones in the background for the next start.
    Measured with a server that accepts connections and never answers: the app's own files were
    loaded after 1.6 seconds instead of never. Signing in and loading data still need the network.
  • An update no longer downloads every language. Each release fetched all 26 language files,
    of which a device uses one. Only German, the language the app falls back to, is stored in
    advance now; the language of the device is stored the first time it is used and stays
    available offline. A language that was never used on a device needs a connection once.
  • An update transfers only the files that changed. After every release the app fetched all
    of its roughly 300 files again. It now asks the server which of them differ and loads only
    those; the server answers from the content of each file, so a changed file always arrives and
    an unchanged one never does, also after a new image was installed.
  • The app's files travel smaller. The server compresses each script, stylesheet and language
    file once at the highest Brotli level and keeps the result in memory, instead of compressing
    at a low level on every request: 4.9 MB instead of 5.9 MB for all of them, about 5 MB of
    memory, and some 25 seconds of background work on one core spread over the first requests
    after a start. The files themselves are unchanged. STATIC_BROTLI=off restores the previous
    behaviour.

Fixed

  • An event written to Google keeps its time when the Google calendar is set to another time zone
    (#1875). Yuvomi sent the time you typed together with the time zone of the Google calendar it
    went into. If that calendar was set to UTC while your household lives in Amsterdam, a 14:00
    event arrived in Google as 14:00 UTC, showed there at 16:00, and came back to Yuvomi at 16:00
    with the next sync. The same happened to an event from Google once it was edited in Yuvomi.
    The time now goes out in the household time zone. This applies only when the household time
    zone is set under Settings; without it Yuvomi keeps using the time zone of the Google calendar,
    as before. Events that were already shifted are not corrected automatically: set them to the
    right time once, in Yuvomi or in Google.
  • "Mark as renewed" follows the same permission as editing a subscription. In the personal
    budget mode a subscription can only be changed or deleted by the member it belongs to. Marking
    it as renewed did not ask that question and now does: another member gets the same refusal as
    for editing, and nothing is changed. The shared budget mode is unchanged.
  • A subscription now shows in every month of the budget it is due in (#1844). A subscription
    with "Include in budget" kept one expense, on its next payment date, so the budget showed it in
    that month only. The following months now show it as an expected line that is not booked yet,
    worked out from the subscription's cycle when the month is read. Nothing is written ahead of
    time, and the booked expense still comes from "Mark as renewed". Expected lines count in no
    total; the line under the summary names their number and amount, and the CSV export marks them
    Expected. A tap on one leads to the Subscriptions tab. Months that are already over show none.
    If you deleted a subscription's expense in the budget by hand, save or renew the subscription
    to get it and the following months back.
  • Managing budget categories shows the built-in categories in your language (#1859, from D#1841).
    "Manage categories" in Budget listed the built-in categories and subcategories in English,
    whatever language Yuvomi ran in. They now appear in the language of the interface you are
    using, as they do everywhere else in Budget. Categories you created keep their name. For
    API users this changes an answer: GET /api/v1/budget/categories and
    GET /api/v1/budget/categories/{categoryKey}/subcategories without lang, or with a value
    that is not supported, now return the labels in the household language instead of English.
    Send lang=en to keep English; a supported lang works as before, and the response still
    names the language it used.
  • Long words break at a sensible place in Safari and on the iPhone (Refs #1774). Where a long
    word does not fit its line, Yuvomi hyphenates it and keeps at least four letters on each side of
    the hyphen (three in the calendar's week view). Safari ignored that limit, so a name such as
    "Wertpapierdepot" could end up as "Wertpapierde-pot". The limit is now also written the way
    Safari understands it, in every place that hyphenates, and the word breaks as
    "Wertpapier-depot". Chrome, Edge and Firefox are unchanged.
  • Pocket money without an account now says what it is for (#1774). Before an admin had opened
    an account for any child, "Pocket money" was a heading with a button and nothing below it, which
    read like a section that failed to load. It now shows one sentence below the heading, in the same
    list the accounts appear in later. Only admins who can open an account see it; a child without an
    account still sees no section.
  • Wall mode counts a shared event for everyone it is assigned to (#1828). An event assigned to
    two or more people added to the number of only one of them, and whoever had nothing else that day
    was missing from the row of faces. Each assigned person now gets the event in their number. The
    same holds for a task assigned to several people. On a phone, the row that collects several
    overdue tasks on the overview had the same fault and now shows every person those tasks are
    assigned to.
  • Wall mode shows the icon you chose for an event (#1829). Events on the wall always carried the
    generic calendar icon, whatever was picked in the event editor. They now show their own icon, as
    the calendar does; an event without one keeps the calendar icon.
  • "Today at a glance" shows the icon you chose for an event (#1829). The overview kept the
    generic calendar icon on every event after the wall had learned to show the chosen one. Both now
    read the icon the same way; the colour of the badge still says the row comes from the calendar,
    and an event without an icon of its own keeps the calendar icon.
  • The first-run state of Waste sits in the middle of the page on a desktop (#1771). Without a
    waste type the page showed its first-run block left of the middle with an empty column beside
    it. On a wide window it now spans the content area and is centred in it. With at least one
    waste type the two columns are unchanged. From a window of about 1500px the page's width cap
    leaves it slightly left of centre again.
  • A long account name on a phone breaks between word parts, not inside one (#1774). On the
    accounts tab at 390px, "Wertpapierdepot" was split as "Wertpapierde-pot" and "Housekeeping cash"
    as "Housekeepin" and "g cash", because the amount column kept its full width. A word is now only
    hyphenated with at least four letters on each side ("Wertpapier-depot"), and the column with the
    amount gives up its width, down to the amount itself, before the name is broken inside a word.
    The amount is never squeezed or overlapped.
  • A wall tablet shows events again when the household overview is set to "Assigned to me" (#1808).
    A paired display follows the household default of the overview. If that default had the calendar
    tile set to "Assigned to me", the tablet looked for events assigned to the tablet itself and
    showed none - in the event list and in the week strip; tasks and the other tiles were not
    affected. On a display the option now means all events; for members it works as before. The
    hint under Settings > Wall tablets now says where a tablet takes its overview from and names
    what it shows: calendar, tasks, rewards and weather.
  • A wall tablet no longer ends up with an empty calendar or task list from "Assigned to me" (#1808).
    That switch is remembered per browser. If someone had turned it on while signed in on the device
    that later became the wall tablet, the tablet kept filtering on itself and showed nothing - in
    the calendar without any switch to turn it off again. A wall tablet now ignores the remembered
    choice, and the task filters no longer offer the switch there. The choice itself stays stored
    for the person who made it.
  • A calendar or reminder server that says no is no longer taken for a yes. When a CalDAV
    server refused a request - a calendar or list shared read-only, a full account, a server that
    was briefly overloaded, or an entry somebody else had just changed - Yuvomi booked the request
    as done. An event, task or shopping item created here and refused by the server was then removed
    from Yuvomi by the next sync, as if it had been deleted on the server. An edit that the server
    refused was undone by the next sync. Something deleted here came back. And moving an event into
    a calendar that refused it deleted the event from its old calendar, so it was gone on both
    sides. Now an entry created here that the server refuses stays in Yuvomi and is offered again
    with every sync, for as long as it takes. A refused change or deletion is retried up to five
    times, as it always was after a network error; after the fifth refusal Yuvomi gives up on it,
    and the next sync brings the server's version back - the old text of an edited entry, or the
    entry you deleted. A move into a calendar that refuses it leaves the event where it was. A
    server that briefly refused to list your calendars, reminder lists or address books, or
    answered with an empty list, also used to get all of them switched off in the sync settings;
    they now stay on. This affects CalDAV accounts, iCloud calendars and CardDAV address books. The
    update cannot bring back entries that were already removed this way, and a calendar or list
    that was switched off has to be switched on again in the sync settings. An entry that an
    earlier version booked as uploaded although the server had refused it, and that is still in
    Yuvomi, is not rescued either: the first sync after the update still removes it (#1839).
  • An entry no longer doubles when the server's answer gets lost. If the server saved a new
    event, task or shopping item but its confirmation never arrived, Yuvomi now recognises its own
    entry on the server instead of importing it as a second one. For that, entries created in Yuvomi
    from now on get a file name on the server that also carries an identifier of this installation,
    so two Yuvomi installations using the same account can no longer overwrite each other's
    entries. Entries that are already on the server keep their name.
  • The contact sync says why a connection failed. Adding or testing a CardDAV account that the
    server refuses now shows the server's answer instead of a generic error.
  • A locked field looks locked. A field you cannot change looked exactly like one you can -
    same text, same fill, same outline; only the mouse pointer gave it away, and on a phone nothing
    did. Text, number and date fields, dropdowns and text areas now all show it the same way,
    everywhere in the app: the fill goes, the outline turns quiet and the value steps back to grey
    while staying easy to read. Settings and the reminder section used to fade such fields, which
    made the value hard to read in light mode, and a locked date was close to invisible in both
    modes; both now follow the one look. A locked dropdown drops its small arrow, so it reads as a
    value rather than something to open, and a locked field no longer shows its example text: an
    empty locked share in a split expense showed a grey "30" that looked like a value of 30. The
    calendar button of a locked date also steps back when a whole group of fields is locked, not
    only when the date itself is.
  • A row on the overview opens what it shows (#1821). A note on the overview opened the notes
    page instead of the note, and so did a note found through search: the notes page now opens the
    note it is asked for. A birthday row opens that birthday, on the phone as well, and so does a
    birthday found through search. A bin without
    an upcoming pickup leads to that bin, and "n open" for shopping in the today sheet opens the
    list when only one list has open items.
  • The keyboard focus stays on an overview row. When the overview refreshed quietly - on
    coming back to the tab, every quarter of an hour, at a day boundary - the focused row lost the
    focus and Enter did nothing. Tabbing into a row in the instant after the page appeared could
    lose it the same way. Both keep the focus now, and a dialog that a link opens directly keeps
    it too.
  • Overview rows that lead to one item open as fast as the others. A row for an event, a
    shopping list or a pantry filter did not preload the page behind it on hover or press, so its
    first tap was slower than on any other row.
  • "n open" for shopping counts every list. With more than three lists that still had open
    items, the today sheet and the wall added up only three of them and showed a smaller number
    than the shopping page.
  • A shopping list on the overview opens that list. The shopping tile shows up to three lists,
    the most recently changed first, but tapping any of them opened the shopping page on its first
    list - tap "Drugstore" and you got "Weekly shop". Each row now opens its own list, by tap, click
    and keyboard. The "All" link in the tile header still opens the shopping page as before.
  • Starting on an older Node.js 22 says what is wrong instead of dying silently (reported in
    #1728). Without Docker, Yuvomi claimed to run on any Node.js 22, but before 22.14 the
    server stopped right at startup without a single line of output, and so did the demo seed
    script. The required version is now stated correctly as Node.js 22.14 or newer, and an older
    one gets a one-line message that names the running version, what is needed, and that updating
    Node.js fixes it. The Docker image ships its own Node.js 24 and was never affected.
  • A wall tablet no longer offers to rearrange the overview or to search (#1808). A paired
    display showed the "Customise" button, let you rearrange the tiles, and answered "Done" with
    "Token scope does not permit this operation." - a display changes no settings, and that
    includes its own board. The search button beside it failed the same way. Both are gone on a
    display. To decide what the tablet shows, arrange the overview as an administrator and choose
    "Set as household default" while customising: a display never stores an arrangement of its
    own, so it always follows that default.
  • Waste: a calendar URL whose provider renames every entry on each download can be imported
    (#1795). Some providers hand out a new internal ID for every pickup each time the calendar is
    fetched (limburg.net does). Yuvomi fetches the address once for the preview and once more to
    apply it, took the new IDs for new content and refused every time with "The file content
    changed since you last previewed it". The check now compares what the preview shows - which
    waste type on which day, and how many - so the import goes through, and a calendar that really
    changed in between is still refused. Later refreshes of such an address no longer report every
    pickup as removed and added again. The refusal itself is now shown in the app's language.
  • SSO sign-in no longer fails when OIDC_REDIRECT_URI is written differently from how a URL
    is normally printed.
    The first request to the provider sent the value exactly as written,
    the second one - the code exchange - a rebuilt form of it, with the path of the incoming
    request. The two differed with a default port written out (https://host:443/...), capital
    letters in the host name, a query of its own, or a path the reverse proxy rewrites. A provider
    has to refuse such an exchange, so the sign-in failed with invalid_grant after the login at
    the provider had looked successful. Both requests now carry the same value, character for
    character; the same goes for linking an account under Settings. Nothing changes for an
    installation whose value was already in its plain form. A sign-in that is under way while the
    update is installed is refused once and works on the second click (#1768).
  • The installation guide says what OIDC_TRUST_EMAIL_WITHOUT_VERIFIED_CLAIM does not do. It
    covers a provider that leaves email_verified out, not one that sends email_verified: false,
    which authentik does by default since 2025.10. The guide and .env.example now name the fix
    on the provider side (#1780).
  • Blood pressure and its unit stay on one line in the health tiles. In a narrow tile "mmHg"
    dropped below "116/74". The size of the value used to follow the width of the whole row of
    tiles, which says little where the row fills itself with as many tiles as fit; it now follows
    the tile. A narrow tile shows the value one step smaller, the narrowest one also a smaller
    unit, and on a very small phone the vitals page shows one tile per line instead of two that are
    too narrow. Tiles in budget, housekeeping and inventory are unchanged.
  • Screen readers name the field picker in the shift type dialog. Under "Custom fields" the
    dropdown next to "Add" had no name, so it was announced as an unnamed combo box with the first
    field as its value. It is now announced as "Field to attach". Nothing changes on screen.
  • In the shift planner "To" follows "From". When adding an exception or an extra shift,
    moving "From" past "To" left "To" where it was; "Add" then failed, and the message was the
    server's English sentence in whatever language the app was set to. "To" now moves along with
    "From", in the add dialog and in the two dialogs that edit an existing range. A range that is
    still the wrong way round is named at the "To" field, in the language of the app, before
    anything is sent. For API clients the refusal keeps its sentence and gains
    reason: "range_reversed".
  • The first visit no longer reloads itself and empties the login form. One to four seconds
    after the very first load the page reloaded, and whatever had been typed into the login form
    was gone. The reload was meant for an update of the app, but it also fired when the app was
    installed in the browser for the first time.
  • An update of the app no longer interrupts what you are doing. When a new version arrived,
    the page reloaded 200 ms later - with a dialog open, a half-filled form or an unsaved overview
    layout. Now it reloads right away only when nothing is open and nobody is typing. Otherwise a
    notice with a "Reload" button appears, and the new version loads with the next page change or
    when the app goes to the background. The notice says the same in every language; in German,
    Persian, Indonesian, Korean and Polish it used to announce a reload that was already over.
  • Switching the language without a connection no longer leaves the app half switched. If the
    language file could not be loaded, texts stayed in the old language while numbers and dates
    followed the new one, the setting showed a parser error, and the next start fell back to
    German without a word. A switch that cannot load its file now changes nothing: the selection
    returns to the language in use and the line below says that there is no connection.
  • Health on a phone no longer jumps while it loads (cause of #1770). The block above the list
    of areas - person, "Due today", "Quick add" - appeared only once its data had arrived and
    pushed the list down by almost 500 px, under the finger; each row then grew again when its
    status came in. The block now holds its place from the first frame with a placeholder in its
    final shape, and the rows have their two-line height from the start. Measured layout shift at
    390x844: 0.58 before, below 0.01 after. The areas themselves load with a placeholder in the
    shape of their content instead of the word "Loading".
  • A required field no longer complains before anything was entered. In "New event" the title
    showed "This field is required." on the first Tab or when reaching for the date picker, and
    everything below it jumped down by a line. An untouched empty field now stays quiet until the
    form is submitted or until something was typed into it and removed again, and the message
    slides in instead of pushing the form. This applies to every dialog that marks required fields
    (events, tasks, meals, recipes, pantry, inventory, contact sync).
  • Checked items no longer twitch when the list changes. Adding or deleting an item in the
    shopping list, or opening a group, replayed the little "checked" animation on every item that
    had been ticked off long ago. It now plays once, on the box you touch - also when you take a
    tick back - and has become calmer. The same applies to tasks, subtasks, the housekeeping
    list and checklists in notes.
  • The tab bar keeps its glass while you change pages. On a phone the bar at the bottom went
    see-through for a moment on every tab change, and the round "+" button popped in again each
    time. Both now stand still while the page underneath changes; the "+" only arrives with an
    entrance when the page before had none.
  • A tapped row no longer stays highlighted on a phone. After a tap, list rows, task cards and
    the cards on the overview kept the look they have under a mouse pointer until something else
    was tapped.
  • Overview on a desktop: opening "New" no longer tips the button over. The plus turns into
    a cross by rotating - and it was the whole button that rotated, label included, so the capsule
    stood diagonally at 45 degrees and turned grey while its menu was open. Only the icon turns
    now, and the capsule keeps its colour. The round button on a phone looks as before.
  • Swiping a row shows its whole label at the point where the swipe takes effect. Icon and
    word sat in the middle of a panel half the row wide, while the action triggers after 80 px -
    at that moment a phone showed "Che" and half a tick. They now stand inside the strip the swipe
    uncovers, on both sides and in right-to-left languages, in every list that swipes.
  • Dark theme: the selected segment and the switch knob are the lighter surface again. The
    selected tab of a segmented control was darker than its track and read as a dent, and the knob
    of a switch was a dark dot on a light rail. The thumb now sits one step above its track
    (module-coloured labels on it keep at least 4.5:1), and the knob is white in both themes; a
    switch that is on uses the same violet as a primary button, so the knob stands at 5.7:1 instead
    of 2.7:1.
  • The budget tile on the overview wears the budget colour. Its mark was violet, the colour of
    the overview itself, because the colour was derived from the tile's link and that link carries
    a ?tab= part. The fasting tile, which had no colour of its own either, now wears the health
    colour like the other health tiles.
  • The login pages show the Yuvomi mark as it is. In the dark theme the mark on login,
    invitation and password reset was three dark dots on a lilac tile, and the circles filled less
    than a third of it. Sidebar and login pages now draw the same mark - the gradient tile with
    the three light circles of the app icon - and it no longer changes with the theme.
  • A confirmation without an explanation has no empty gap. Dialogs such as "Log out of this
    device?" showed an empty band between two hairlines, between the question and its buttons.
  • A meal dialog you did not touch no longer asks "Discard changes?". If the household members
    could not be loaded with the page, the meal dialog fetches them when it opens and fills in the
    cook selection a moment later. Closing the dialog after that asked whether to discard changes,
    although nothing had been changed. What you typed before the selection arrived still counts as
    a change, as it should.
  • Fast clicks on the month arrows in the budget land on the right month. Clicking "next"
    twice while a month was still loading moved one month instead of two, and going forward and
    straight back could leave the wrong month on screen - whichever answer arrived last won. Each
    click now counts from the month you asked for, and a late answer for a month you already left
    is ignored. The same holds for "Current" and for swiping.
  • Opening Settings > Calendar no longer shows "An unexpected error occurred." When Edge or
    Chrome filled in a saved password there, two red error messages could appear, because the
    browser's autofill sends a key press without a key and the keyboard shortcuts did not expect
    one. Such a key press is now ignored; the shortcuts work as before.

Don't miss a new yuvomi release

NewReleases is sending notifications on new releases.