Added
- Norwegian Bokmål as the 26th language (#1529, translated by @nilsanmy). The app, the web
installer and the command-line installer speak Norwegian Bokmål. A Norwegian Bokmål browser or
LANG=nb_NO.UTF-8picks it on its own, and the new region "Norwegian Bokmål (Norway)" sets
kroner, day.month.year and the 24-hour clock in one step. A household on that region without
its own data language also gets Norwegian for the entries Yuvomi writes itself. - Admins are asked once whether the household should use the browser's time zone (#1607).
A household that never chose a time zone counts "today" in the server's zone, usually UTC, so
east of UTC today's meals stayed empty and overdue tasks were not counted during the first
hours of the day. If your browser is in a different zone, the overview now shows one line
naming both zones with two choices: use the browser's zone, or keep things as they are. Either
answer ends the question for every admin on every device, and nothing changes until someone
answers. The same line with the first choice stays in Settings under "Time zone" for as long
as the zones differ; members see it without the button. A browser that reports only UTC or
no zone never triggers it, and two names for the same zone (Asia/Calcutta and Asia/Kolkata)
do not count as a difference.
Changed
- The event and task forms say when "Only me" is combined with assigned people. Visibility
"Only me" means only the person who created the entry sees it, so the other people
assigned to it do not see it. The form now shows a hint for that combination and points to
"Assignees only" for an entry they should see. Nothing is blocked and the assignment stays as
it is. - Task history shows the selected task beside it on wide screens (#1550). From the width
at which the task list becomes list and detail (a main column of about 1040px, so a 1280px
laptop with the sidebar open and anything wider), the history entries stand on the left and
the task of the selected entry opens on the right, as in the list: the first entry is
selected when you open History, arrow keys move through the entries, the back button returns
to the previous one, and a link with?open=selects its entry. List, Board and History now
end at the same outer edge; until now History ended 436px short of the header at 1440px.
Below that width History keeps its narrower reading lane and an entry still opens its task as
a sheet. Switching between List and History selects the first row of the view you switch to,
and the person filter in History fades at its edge when it does not fit. - The mobile tab bar is more glass and lets more of the page show through. The floating
capsule at the bottom of the screen is thinner (66 % instead of 86 % in light, 50 % instead of
88 % in dark), blurs and saturates what scrolls beneath it more strongly, and carries a light
sheen and a finer bright rim. Tab labels are now in the main text color, so they stay readable
over photos and colored cards; the active tab keeps its violet label, filled icon and pill.
With reduced transparency or increased contrast turned on, and in browsers without backdrop
blur, the capsule stays opaque as before.
Fixed
-
An address that does not exist takes you to the closest page instead of a mislabeled
overview (#1607). Opening something like/settings/xyzused to show the overview while the
address bar kept the wrong address and the tab title read the app name twice. The app now goes
to the closest page above it (/settingshere, the overview when there is none), corrects the
address, and says so once in a short message. The wrong address is not kept in the history, so
the back button does not return to it. A trailing slash (/settings/) is corrected without a
message and keeps what follows the address (?view=...). Pages of modules that are switched off or not allowed for you behave as before.
One link inside the app pointed at such an address: the painkiller shortcut in the cycle day
log landed on the overview and now opens Medications. -
Avatars show the same initials for a person on every page, and a Korean, Chinese or
Japanese name shows the given name (#1607, #1464). A name written in Hangul, Han characters
or kana showed only its first character, which is the family name, so two children with the
same family name had identical avatars. Such a name now shows the last two characters of the
given name (민수 for 김민수, 太郎 for 田中太郎), and the whole name if it has one or two. It makes
no difference whether the name was entered with a space: 김 민수 shows 민수 as well. Where the
circle is too small for two of these characters - the small avatars on task cards, calendar
entries and next to a module icon - it shows the last one.
For every other name with several words the initials are now the first letter of the first
and of the last word, everywhere: "AS" for Anna Maria Schmidt and "DM" for Dr. Hans
Müller. Until now each page had its own copy of the rule. Contacts already worked this way;
all other places took the first two words ("AM", "DH"), so the same person could carry two
different sets of initials, and a middle name or a title stood in for the family name. Names
with one or two words look as before. Two more differences between the pages are gone: a
name starting with an emoji showed a broken character and now shows the emoji, and two
spaces between the words of a name left the avatar in Settings with one letter or none.
The member chips under Settings > Permissions are 2px larger so that two Korean, Chinese or
Japanese characters fit. -
"No access to this module" is shown in your language (#1607). When a request was refused
because your role has no access to a module, or only read access, the message came from the
server in English, whatever language the app was set to. Both messages are now translated
into all 26 languages, on every page that shows them. API clients keep the Englisherror
text and get a newreasonfield beside it:module_access_deniedormodule_read_only. -
"You do not have permission to do that" is shown in your language (#1607). Around 110
other refusals, such as "Not authorized." or "Admin access required.", reached the page as
the server wrote them: in English, a few in German. They all say no more than that the
permission is missing, so the app now shows one translated sentence for them, in all 26
languages. A refusal that says something more specific keeps its own text: a locked task, a
recipe managed by its provider, a missing right in a second module ("Write access to the
shopping list is required."), an expired form token, the sign-in page and the wall display.
Those are still English. For API clients nothing changes in theerrortext; the specific
refusals carry a newreasonfield, for exampletask_locked,recipe_mirrored,
cross_module_accessorcsrf_invalid. -
The status buttons on the task board name their task for screen readers (#1607). The
icon button on each board card that moves a task on was announced only as "Set to in
progress", "Mark as done" or "Reopen", so every button in a column had the same name. It now
reads "Set Laundry to in progress". The tooltip stays the short form. -
Subscriptions without a monthly budget no longer show "Monthly budget 0" next to
"Unlimited" (#1607). With no budget set, the figures above the list carried a card
"Monthly budget 0.00" with an empty bar, right beside the card saying there is no budget
limit. The zero card is gone in that case and three cards remain: monthly cost, no budget
limit, yearly projection. With a budget set, the four cards are unchanged. -
Korean no longer writes "18:00 시" (#1607). With the 24-hour clock, Korean put the hour
counter 시 after a time that already has minutes, as in "내일, 18:00 시". The time now stands
on its own, as in Japanese and Chinese. -
The empty shopping list no longer promises that ticked items move to the pantry by
themselves (#1607). The hint read "After the shop, ticked items move into the pantry", but
nothing moves until you choose "Into pantry" on the ticked items. It now says they can be
moved, in all 26 languages, and it is left out when the pantry is switched off or you may not
write there, because that action is not offered then either. -
The Budget tile on the overview opens the month, not the tab you last had open (#1607).
Budget remembers its last tab. After a visit to Statistics, "Add entry" on the empty Budget
tile, the tile's header link and the "Monthly balance" figure all led to Statistics, where
nothing can be added. All three now open the Budget tab, which shows the month the tile is
about and carries the add button. -
Korean sentences pick the right particle for the name they contain (#1607). Wherever a
name, title or tag is inserted into a Korean sentence, the app showed both particle forms at
once, for example "캘린더이(가)" or "「우유」을(를) 삭제할까요?". It now writes the form that fits the
inserted word: "캘린더가", "「우유」를", "서울로". After Latin letters, digits and emoji both forms
stay, because the right one depends on how the word is pronounced. Texts the server writes
itself (push notifications, calendar feeds, stored calendar titles) follow the same rule from
the same place; none of them contains such a form today, so nothing already stored changes.
The installer is not affected. -
The calendar mirrors fully in right-to-left languages. In Arabic and Persian the week
view drew the column lines of the all-day row 1px beside those of the time grid, the month
grid drew a line along its outer right edge and only a thin one between its two leftmost days,
the hour labels and the "All day" label sat against the outer edge instead of the grid, the red
now line in the day view ran across the hour column with its dot on the wrong end, and nested
calendar filters were indented from the left. The avatars on all-day entries now sit at the end of
the line instead of right after the title, and the compact month dots start at the edge of the
day. Left-to-right layouts are unchanged. -
A balance below zero is explained in two more places (#1623). In the list of requests
waiting for approval the note with the current balance was missing when the member had been
taken out of rewards while the request was still open - the page looked the balance up among
the members taking part and found nothing. The balance now comes with each request. If that
member was the last one taking part, the overview showed only "nobody takes part yet" and
the request could not be seen or decided at all; the list of open requests now stands above
that message. And on a
family rewards tile that is one row high (1x1, 2x1), a negative balance was shown as a number
next to an empty bar; a short line saying that the next points make up for it now stands
in place of that bar.
API:GET /api/v1/rewards/redemptionsaddsuser_balanceto every row. -
The month heading of Calendar and Budget follows the word order of the language (#1607).
Both pages put the month name, a space and the year together themselves, which gave "10월 2026"
in Korean instead of "2026년 10월" (and the same for Japanese, Chinese and Hungarian). Month
and year now come from one formatter that asks the UI language for the order and always uses
the Gregorian calendar. German and English look the same as before; a few languages gain the
connecting words their grammar asks for ("Octubre de 2026", "Tháng 10 năm 2026"). -
An event that ends at midnight is drawn at its full length in the week and day view
(#1607). An event from 23:00 to 00:00 appeared as a 30-minute strip, and one from 22:00 to
00:00 as well: an end at exactly 00:00 was read as "ends at minute 0 of the same day". It now
runs to the end of the day, and it shares its column correctly with events that overlap it.
Events of 24 hours or more stay in the all-day row as before. -
A recurring event found in the global search opens at its next date, not in its first year
(#1607). The search behind Cmd/Ctrl+K listed a series with the date of its very first
occurrence, and the link opened the calendar there: a birthday from 1990 opened October 1990.
The global search now resolves a series to its next occurrence from today, with the same
two-year window the calendar's own search uses, and the link carries that day. In
GET /api/v1/search,events[].start_datetimeof a recurring event is therefore the next
occurrence instead of the series start;idis unchanged. -
A repeat end before the start date is no longer saved (#1607). An event starting on 2 October
could be saved as "daily, until 30 September": the dialog only checked that the end was a valid
date, and the server only checked the form of the rule. The dialog now shows the error at the
repeat-end field, andPOST /api/v1/calendar,PUT /api/v1/calendar/{id}and the "this and
following" edit answer 400. A repeat end on the start day stays valid. A series from an ICS
import or a synced calendar that already carries such a rule is still imported and stays
editable; tasks are unchanged, because a task is due on its own date and the rule only decides
about its successor. -
The weekday buttons of a weekly series no longer all look switched off (#1607). A weekly
event without chosen weekdays repeats on the weekday of its start, but the "repeat on" buttons
showed none of the seven as active. The weekday of the start date is now shown as active, both
when you switch a new event to weekly and when you open an existing series, and it follows the
start date until you pick days yourself. The stored rule of an existing series is not rewritten. -
Editing a shared expense no longer rewrites its history (#1607). The activity feed of a group
showed the amount an expense has now, so correcting 50 to 10 also changed the earlier "Expense
created" line to 10 - for expenses created by other members too. Each entry now records the
amount and currency at the moment it was written, and a deleted expense keeps its amount in the
feed. Entries written before this change show the title without an amount: what the expense
cost back then was never recorded. -
Opening one occurrence of a recurring event opens that occurrence (#1607). In the month,
week and day views, clicking or pressing Enter on an occurrence of a series opened the first
occurrence the view had loaded instead - for a daily series the day before the visible range.
The detail view showed that day, the editor was filled with it, and "This event only" then
changed or deleted it, not the occurrence you clicked. Each occurrence now opens itself; the
agenda already did. -
Subtasks can be added from the task sheet again (#1598). Since v2.70.0 "Add subtask" turns
into a text field inside the task. In the sheet - every phone and every narrow window - Enter
in that field triggered the comment button further down instead of saving the subtask, and
the field had no button of its own, so there was no way left to add one; only the detail
column on wide screens worked. The field now has an "Add" button next to it, and Enter saves
the subtask and keeps the field open for the next one. In any sheet with more than one form,
Enter now submits the form the field belongs to and ignores buttons of a view that is hidden
at that moment, so Enter in the edit form of a task saves the task. -
A new household starts in its own time zone (#1607). The first-run page now sends the
browser's time zone along, and the server stores it as the household time zone. Until now a
fresh install had none, so the server counted "today" in the container's zone, usually UTC:
east of UTC the dashboard showed no meals for today and overdue tasks were not counted as
overdue during the first hours of the day, west of UTC the day turned over hours early in
the evening. A browser that reports no usable zone, or only UTC, sends nothing and the server
falls back toTZas before. Households that already exist are not changed - an admin sets
the zone once in the settings under "Time zone". -
Reopening a completed task no longer erases its points from the history (#1607). Reopening
a task used to delete its earning. If the points were already in a reward request, the balance
went below zero and the history showed only the request, neither the earning nor that it had
been taken back. The earning now stays in the history and reopening adds a second entry,
"Reopened: ", that takes the same points back. Completing the task again awards them
again. A balance can still go below zero this way; the page and the overview tile now say so
next to the number, the next points make up for it, and a pending request stays pending for
the parents to decide - with the current balance shown beside it when it is below zero.
Earnings that earlier versions deleted on reopening are not restored. -
A recurring task gives its points once a day, not once per tick (#1603). Ticking off a
recurring task creates its next occurrence right away, and that one could be ticked off again
at once - each time for the full points. A recurring task now pays each person at most once
per day; the day is the household's, not UTC. Ticking off still works and still moves the
series on, and reopening a task and completing it again on the same day keeps its points. The
same holds for subtasks that carry points. If you catch up two missed occurrences of the same
task on one day, they count once. -
Correcting the date of a series' first entry no longer moves the rest of the series (#1545).
Every later occurrence of a recurring payment is counted from its start day, and that was still
the date of the first entry. Correcting it with "Only this occurrence" (the rent was debited on
the 6th, not the 5th) moved every month not yet shown to the 6th, and for a weekly or "every N"
series it changed which days came up at all. A series now keeps its own start day. To move it,
change the date on the first entry and choose "Change all future occurrences": the occurrences
from today on move to the new day, while the first entry keeps its date once it is booked. On
update every series keeps the start day it had, so no date changes. After a series is moved to a
new day or given a new rhythm, opening a past month no longer adds a second booking on the new
day next to the one already there: before the change, every past month of the series is filled
in with its bookings on the old days, so none is missing and none is doubled. This also holds
when the rhythm is changed on the first entry with "Only this occurrence", which until now left
the old bookings standing and added the new ones beside them. -
After leaving wall mode on the phone, the plus button and the tab bar look as before (#1588).
Leaving wall mode redrew the overview without taking its plus button out of the page: the button
lost its plus sign, the tab bar stopped leaving room for it, its tabs grew wider and "More" slid
under the button. The same happened after "Try again" on an overview that had failed to load.
In both cases the button now takes its usual place next to the tab bar. Entering wall mode no
longer leaves the plus button on the wall while the overview loads. -
The task list orders a day's tasks by the household's clock, not the device's. The order
inside a group and a board column read the due time in the device's time zone. On a device whose
zone skips an hour for daylight saving time, a task due in that hour moved an hour later and
showed up after a task due later the same day, even when the household's own zone has no such gap
that day. The order now compares the due date and time as entered, and "now" is the household's
time, like the due label and the grouping next to it. -
A task's "Starts on" badge follows the household's day. The badge on a task without a due
date compared its start date with midnight on the device. On a device in another time zone it
stayed on a task that had already started in the household, or left too early. The date in the
badge could also show the day before, for example with the device in Berlin and the household
set to Honolulu. -
A new recurring event shows up on its real days right away. After creating a series, the
calendar only placed the event on the start date typed into the form, which is not always one of
its days: a series starting on the 15th that repeats on the last day of the month showed an entry
on the 15th and none on the 30th or 31st. Its other occurrences in the open month or week only
appeared after switching views. The calendar now loads the series from the server after saving,
so every occurrence in view is shown and none on a day without one. If that reload fails or only
reaches the offline copy, the new series still shows on its start day as before. -
The command-line installer takes the answer its own prompt shows. In German, Swedish, Dutch,
Spanish, Portuguese, Italian, French, Polish, Czech and Turkish the yes/no questions show the
local letter -[j/N],[s/N],[e/H]- butinstall.shonly understoody, so typingj
for the weather widget, calendar sync or document storage silently answered no. Turkishhat
the final "proceed?" did not cancel, and the Czech and Dutch letter for entering a key by hand
generated one instead. Every language now accepts the letter its prompt shows and its own word
for yes and no -ja,sí,да,はい,نعمand so on, also typed in capitals - as well as
y/yesandn/no. The three document-storage questions, which showed[y/N]in those
languages, now show the same letter as every other question. -
The command-line installer now gets through all seven steps, on macOS as well. The
interactive setup ended without a message right after the prerequisite check, and after the
summary it stopped before writing.env. On macOS two more stops were waiting behind those:
the answers were compared with a bash 4 feature that the bundled bash 3.2 rejects with "bad
substitution", and after the admin account was created aheadoption macOS does not know
ended the run before the success message. -
Budget categories, the API reference and OpenWeatherMap descriptions follow every app
language (#1523). Three places kept a language list of their own that stopped growing with
the app: asked for their categories in Portuguese (Brazil), Hungarian, Korean, Indonesian,
Persian, Filipino or Norwegian Bokmål, the budget answered in English, or in European
Portuguese for Brazil, and the API reference listed only 15 languages as valid forlang.
Both now take their languages from the app's own translations, so a new language works there
from its first day. The weather tile with OpenWeatherMap now asks for the language in the
spelling OpenWeatherMap documents (pt_br,zh_cn,cz,kr,no) instead of the app's
code, which it does not list for Brazilian Portuguese, Chinese, Czech, Korean and Norwegian.
Filipino, which OpenWeatherMap does not offer, usesOPENWEATHER_LANGand otherwise English.
OPENWEATHER_LANGis that fallback and takes an OpenWeatherMap code; a code OpenWeatherMap does
not list is now ignored in favour of English, as the installation guide and.env.examplesay. -
Shared expenses say why an amount cannot be saved (#1607). An amount of 0, a negative
amount or one written with thousands separators (10,000in Korea or the US,10.000in
Germany) only greyed out the Save button. The reason now appears under the amount once you
leave the field, with an example of the expected spelling. An amount with more decimals than
the currency has, such as10.000for won, was sent and came back as an English server
message; it is now caught at the field in your language, also for exact shares and when
recording a payment. An exact share that is empty, 0 or negative is caught there as well, even
when the shares add up. Over the API, a negative amount, share or payment was never stored,
but the answer was the database's raw constraint text; it is now "must be greater than
zero", and-0no longer slips through as a share of 0. The running total of a split follows
the household's number format and the expense's currency instead of always reading like
33.00. -
The "discard changes" question has two different buttons in every language (#1607). In
Korean, Italian and Ukrainian both buttons said "Cancel", in Turkish and Russian the two words
were nearly the same, so it was unclear which one throws the input away. The discarding button
now says "discard" there, and the question above it uses the same verb. The same applied to the
question when leaving the permissions sheet with unsaved changes in Korean, Italian and
Russian. -
Saving a name dialog with an empty field says so instead of closing (#1607). Creating a
shopping list with an empty name closed the dialog without a message and without a list. The
same dialog asks for the new name of a list, folder, category or subtask and for a custom
reminder time, and behaved the same there. It now stays open and marks the field as required;
Cancel and Escape still close it. -
A rejected default visibility in the Health settings jumps back (#1607). When the server
refused a change to the default visibility of a health area, the error appeared but the field
kept showing the new value, so the sheet implied a sharing change that never happened. The
field now returns to the saved value, like the switches above it. -
Settings no longer show the sheet of a module you have no access to (#1607). A member whose
permission for a module is "No access" still found that module's sheet under Settings, open and
operable, next to a "no access" error; the server refused every change. The sheet is now gone
from the list, from the settings search and from its direct address, as the module already was
from the navigation. With "Read only" the sheet stays. -
The board shows the lock of a locked task (#1607). A task that only its assignees may
change carried its lock in the list but lost it on the board card. The card now shows the same
sign. -
Ticking off a recurring task now says when it comes back (#1603). Completing a recurring
task creates its next occurrence at once, so the list, the board and the Overview tile showed
an open task that looked just like the one you had ticked off - with "repeat from completion"
even with the same date - and the tick seemed to have done nothing. Every way of completing
it now answers with "Done - next due ": the Complete button and the "who did it" choice
in the task view (also when opened from Overview or the calendar), the checkbox, the swipe and
the person choice in the list, moving a card to Done on the board, and the wall display. With
a named person it is one message that says both. The undo in the list stays. For API clients,
PATCH /api/v1/tasks/{id}/statusadditionally returnsnext_due_date, the due date of the
next occurrence that is not yet done, ornull. -
The edit form also says when a recurring task comes back (#1620). Setting a recurring task
to "Done" through the status field of the edit form creates its next occurrence just like
ticking it off, but the form only answered "saved". It now shows the same "Done - next due
" as every other way of completing a task; any other save still says "saved". For API
clients,PUT /api/v1/tasks/{id}additionally returnsnext_due_dateunder the same rule as
PATCH /api/v1/tasks/{id}/status: the due date of the next pending occurrence when this call
completed a recurring task, otherwisenull. -
A rejected
PUT /api/v1/preferencesno longer applies part of the request (#1622). The
route checked and stored one field after the other, so a request with several fields that
failed on a later one answered 400 or 403 while the fields before it were already saved: a
validtimezone_hint_dismissedfollowed by an invalidlanguagedismissed the time zone
hint for the whole household although the request had failed. The whole request is now applied
or nothing is, for household, personal and admin-only fields alike; status and error text of
the answer are unchanged. The app sends these fields one at a time, so this only showed
through the API. -
Housekeeping: a visit stored without a time zone stays in its own month. Yuvomi itself
stores a check-in as a point in time, but a row written into the database by hand can carry a
plain wall-clock time such as2026-09-30T23:30:00. The month lists of the module (visits,
work sessions, monthly summary, pending and paid amounts) compared such a row as text against
the month's UTC bounds: east of UTC a visit late on the last day of a month appeared in the
next month, west of UTC one early on the first day appeared in the previous month or dropped
out of the six-month chart, while the chart and the overview tile already counted it in the
household's month. All of them now read the month from the household's clock. Stored values
are not rewritten. -
A recurring shared expense is checked when it is created, not when it is booked. Creating
one through the API accepted any payer, any participants and any split values. A person who
was never in the group could be named as payer or participant and was then booked a debt in
that group on every due date. A split that cannot be booked (exact amounts that do not add up
to the amount, percentages that do not add up to 100, a missing share) was stored as well, and
on its due date it stopped the booking run for every due recurring expense of the
installation, each hour again. Such a request is now answered with400under the same rule
as a single expense, and nothing is stored. Recurring expenses that already exist are not
changed. -
One recurring shared expense that cannot be booked no longer holds back the others. All
due recurring expenses were booked together, so a single one that failed stopped the booking
for every group, hour after hour, and only the server log said so. Each one is now booked on
its own. One that cannot be booked is paused, and the group's activity shows "Recurring
expense paused automatically: it could not be booked" with its title. That also applies when
the payer or a participant has left the group since it was created, or their account was
deleted: nothing more is booked for them. Once the person is back in the group, resuming the
recurring expense books it again.
Security
-
Ticking off, reopening or archiving a task now respects its visibility. A private task, or
one visible to its assignees only, is hidden from everyone else, and since v2.12.0 it cannot be
edited or deleted by them either. Changing its status was left out of that rule: a household
member who could not see a task could still mark it done, reopen it or archive it by addressing
it directly through the API. Marking it done could credit the points to the wrong person and
create the next occurrence of a recurring task; reopening it took the points already credited
back again and discarded that next occurrence. The task's content was not readable this way. The
status change now answers "Task not found" for a task you cannot see, exactly as for one that
does not exist, and changes nothing. A subtask can no longer be added beneath a task you cannot
see for the same reason. Nothing changes for tasks you can see: the person who created a task,
the people assigned to it and, for tasks shared with everyone, every member tick them off as
before. Affected are all versions since v1.11.0, which introduced task visibility. -
A reminder can only be set on an entry you can see, and it only names an entry you can see.
Reminders are set per person on a task, a calendar event, a subscription or an inventory item.
Setting one checked that you may use the module, but not that the entry exists or that you may
see it, and the list of due reminders and the notification then showed the entry's title. A
household member could therefore learn the title of a private task, of a task or event visible
to its assignees only, of an event from a calendar subscription that is not shared, and, in
personal budget mode, the name, amount and due date of a private subscription. Setting or
replacing a reminder on an entry you cannot see now answers "Entity not found", the same as for
an entry that does not exist. Due reminders, push notifications and the notification channels
skip a reminder whose entry its recipient cannot see. That also covers reminders created before
this update and entries that became private afterwards, such as a task changed to private or
an event you are no longer assigned to. Such a reminder is kept, not deleted, and comes back
if the entry becomes visible to you again. One consequence: a person assigned to a private
event no longer receives the reminder its creator set, because a private event is visible to
its creator only; use "assignees only" for an event the assigned people should hear about.
Your own reminders and those passed on to the assignees of an event work as before. Affected
are all versions since v1.11.0 for tasks and events, since v1.23.0 for subscriptions, and
since v0.20.38 for events from a calendar subscription that is not shared. -
The points history no longer names a task you cannot see. A points entry in Rewards shows
the title of the task it was earned for, and the history is open to everyone who can use
Rewards. That made the title of a private task, or of one visible to its assignees only,
readable for the rest of the household as soon as the task was ticked off. The history now
shows that title only to the person the points belong to and to those who can see the task;
everyone else sees the entry with its person, date and points and the neutral text "Task
completed". Once a task has been deleted, its title stays with the person the points belong
to. This applies to entries already in the history as well. Balances, bonus points,
corrections and redemptions are shown as before. Affected are all versions since v1.11.0. -
An event from a calendar subscription that is not shared can no longer be opened or changed
by other members. A subscribed calendar (ICS) that its owner has not shared is hidden from
everyone else in the calendar, the search and the overview. Addressing one of its events
directly through the API still returned it, with title, description and location, and let a
member edit or delete it. Marking such an event as a countdown also showed it on everyone's
overview. These paths now apply the same rule as the calendar list and answer "not found", as
for an event that does not exist. The same holds for resetting a subscribed event to its feed
version: an admin could reset an event of a subscription they cannot see, and the answer told
apart an event that exists but is hidden from one that does not exist. Events from a shared
subscription and local events are unaffected. Affected are all versions since v0.20.38; the
countdown since v2.18.0. -
Household notification channels no longer receive reminders for entries that are not visible
to everyone. A notification channel set up by an admin (ntfy, Gotify, webhook or e-mail)
received every due reminder of every member, with the entry's title. That included your own
reminder for a private task or event, for one visible to its assignees only, for an event
from a calendar subscription that is not shared and, in personal budget mode, for a private
subscription with its amount and date, so the people reading that channel saw what the
entry's visibility hides from them. Such reminders now go to your own devices by push only
(and to a channel that belongs to you alone, where one exists). Reminders for entries everyone
can see reach the household channel as before. If you rely on a household channel for
reminders about private entries, turn on push notifications on your device; the reminder
also still appears in the app. Affected are all versions since v1.11.0. -
Health, shift and private-document reminders no longer reach household notification
channels. The reminders Yuvomi creates on its own went to the household channel as well:
the predicted start of a period (in the version sent to a partner, with the person's name),
the daily cycle log hint, a due preventive check-up, fasting reminders, a shift about to start
and the expiry of a document, including a private one or one shared with named people only.
Cycle, check-up and fasting reminders and shift reminders now go to the person they are meant
for only, by push (and to a channel of their own, where one exists). A document expiry reaches
the household channel only if the document is visible to the whole family. Pantry and waste
collection reminders are household matters and reach the channel as before. Affected are
versions since v2.65.0 (cycle and shifts), v2.67.0 (partner notice) and v2.68.0 (check-ups,
fasting, document expiry). -
The budget list filter and the budget plan no longer reveal what other members keep private.
In personal budget mode, an entry another member shares as "amount only" shows you its amount and
date, but not what it was for. Filtering the entry list by category still matched it under its
real category, so the set of results named the purpose the row itself hid. The filter now sees
the same view as the response: such an entry matches only the private catch-all bucket, like in
the summary and the statistics, and that bucket can be filtered on as well. A loan installment
set to amount only also kept the loan's title and lender in the list, and turned up in that
loan's overview; both now stay hidden like the entry's title.The budget plan also counted every entry of the household, whatever its visibility, so the
spending shown against a category included other members' private bookings. In personal mode it
now counts what you see, like the overview, and follows the "Mine" and "Household" view: private
entries of others no longer count, and an amount-only entry counts toward income and balance of
the savings goal but toward no category. Shared budget mode is unaffected.