Added
- Reminders can go to any HTTP endpoint as a generic webhook channel (#692 by @ContatoLucasSonntag, for #660). It sits next to Gotify and ntfy, with the same delivery tracking, retry and deduplication, and an optional write-only Bearer token. Because a fixed body would have limited it to receivers that take arbitrary JSON - Home Assistant and n8n do, Discord does not, it requires
contentorembedsand answers anything else with a 400 - the channel also takes an optional payload template: paste the shape the service expects and put{{title}},{{body}},{{url}}and{{tag}}where the reminder's values belong. One generic provider then covers Discord, Slack and the rest, instead of Yuvomi growing an adapter per service. Values are JSON-escaped on the way in, so a reminder title with a quote or a line break cannot break the surrounding JSON, and a template that would only fail at delivery time is rejected while you are still in the form. Leaving the field empty keeps the default body. See the notification webhook guide. - Every member can hide the cycle tab for themselves. The tab was a household switch and nothing else: an admin turned it on for everyone or off for everyone, although not everyone in a household has a cycle (#760, reported by @ElHado). There is now a personal switch next to it, under Settings → Personal → Health, and it needs no admin rights - it only changes your own view. The two combine the strict way round: the household setting decides what is possible and the personal one can only narrow it, so turning the cycle off for the household still hides it from everyone and nobody can pull a switched-off tab back. Where that is the case, the personal switch says so instead of pretending to do something. The default is on at both ends, so nothing changes for anyone who does not touch it.
- Belarusian ruble (BYN) as a currency. Selectable everywhere a currency is, including subscriptions and shared expenses (#745, requested by @lapytko). Belarus also joins the region presets, which fills in BYN,
DD.MM.YYYYand a 24-hour clock in one step. defaultDateInPeriod()andmonthPeriodKeys()in the public date helpers (/utils/date.js). They answer the question every module with a time frame has to answer for a new entry: which date does the form start on? The rule is today as long as the displayed period contains today, otherwise the first day of that period, andmonthPeriodKeys()supplies the case that recurs everywhere - the calendar month, never the six-week grid a month view draws, which begins in the previous month. Budget has followed this rule since v1.37.0 and the calendar since v2.10.1, each with its own copy; that is why the calendar went without it until a bug report (#737). Nothing changes for anyone using Yuvomi - both modules propose exactly the same dates as before. The entry is here because/utils/is part of the surface third-party modules build on (see MODULES.md), so a module with a period frame can now inherit the rule instead of rewriting it.
Fixed
- Searching the Paperless DMS for a number finds documents that merely contain it again. A bare number was read as an archive serial number and nothing else, so a document called "1728 Pest receipt" was unreachable by searching for
1728even though it sat in the list right there (#763, reported and diagnosed by @croquetgenius). Street numbers, years, invoice numbers and model numbers were all affected, and users who do not keep ASNs at all had no way to search for a number. Bare numbers now run both readings at once: the document with that serial number comes first, the ordinary full-text matches follow, and a document found by both ways appears once. The explicit formsasn:123,asn 123andasn#123still mean the serial number and nothing else, so the exact lookup added in v1.26.0 is intact. If the serial-number lookup fails, the full-text results still come back rather than the search failing with it.