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 byscripts/seed-demo.jsis 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=offrestores 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/categoriesand
GET /api/v1/budget/categories/{categoryKey}/subcategorieswithoutlang, or with a value
that is not supported, now return the labels in the household language instead of English.
Sendlang=ento keep English; a supportedlangworks 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_URIis 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 withinvalid_grantafter 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_CLAIMdoes not do. It
covers a provider that leavesemail_verifiedout, not one that sendsemail_verified: false,
which authentik does by default since 2025.10. The guide and.env.examplenow 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.