Marc-André Bombeck
bc5ea5a67b
Merge pull request #1233 from MBombeck/fix/v1431
...
Release v1.43.1
v1.43.1
2026-10-16 11:40:20 +02:00
Marc-André Bombeck
d2fe55bc9d
chore(release): v1.43.1
2026-10-16 11:01:44 +02:00
Marc-André Bombeck
2fb0ebfbf6
Merge remote-tracking branch 'origin/main' into fix/v1431
2026-10-16 11:01:29 +02:00
Marc-André Bombeck
0ee7e156d3
fix(report): print lab values with the precision they were recorded at
...
The doctor report PDF printed lab values and reference ranges with one
decimal and the share page with two at most, so a PSA of 0.034 read 0.0
or 0.03 and a TSH window of 0.27 read 0.3, while the labs page kept more.
The labs page itself cut values above 1 to two decimals.
One rule now decides every recorded number (src/lib/format/recorded-number):
a stored value keeps every digit it holds, minus binary float noise, and a
value converted from the unit its report printed keeps the precision of the
printed figure. The report payload carries sourceValue for that. The labs
page, its chart and history, the PDF lab table and footnote, the share
page, the day view and the OCR review all print through it, reference
bounds included. Doses on the PDF and the share page follow the same rule.
Measurement statistics in the PDF and on the share page now share one
per-row precision: up to three significant digits but never more decimals
than recorded, so a waist-to-height ratio of 0.52 no longer reads 0.5;
glucose keeps its unit's precision.
Refs #1228
2026-10-16 11:00:27 +02:00
Marc-André Bombeck
f3c4fbff2c
fix(illness): keep every episode reachable from the illness page
...
A recurring bout filed under its condition nests inside that condition's
card, but the list view drew no nested episodes, so an ended recurring
bout of an ended condition had no row anywhere and was found only through
search. A bout nested under an already nested parent was lost in either
view, and the page read only the list route's first page of 50, so the
oldest episodes dropped off the page, its settings and every picker.
Grouping moves into groupEpisodes: each episode nests under the highest
ancestor that shares its status, or is a card of its own, and a looping
parent chain leaves every member a card. Both views render the nested
episodes with their course and end date; the count heading says "flares"
only when they all are. useIllnessEpisodes reads page after page until a
short one.
Refs #1224
2026-10-16 11:00:26 +02:00
dependabot[bot]
abc8ebd5c4
build(deps): bump the production-weekly group with 10 updates ( #1231 )
...
Bumps the production-weekly group with 10 updates:
| Package | From | To |
| --- | --- | --- |
| [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3 ) | `3.1147.0` | `3.1150.0` |
| [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage ) | `3.1147.0` | `3.1150.0` |
| [@napi-rs/canvas](https://github.com/Brooooooklyn/canvas ) | `1.0.10` | `1.0.11` |
| [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query ) | `5.104.1` | `5.104.2` |
| [@tanstack/react-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/react-virtual ) | `3.14.13` | `3.14.17` |
| [dotenv](https://github.com/motdotla/dotenv ) | `18.0.6` | `18.0.7` |
| [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ) | `1.53.0` | `1.56.0` |
| [nodemailer](https://github.com/nodemailer/nodemailer ) | `10.0.16` | `10.1.0` |
| [radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui ) | `1.7.0` | `1.8.1` |
| [react-hook-form](https://github.com/react-hook-form/react-hook-form ) | `7.89.0` | `7.90.0` |
Updates `@aws-sdk/client-s3` from 3.1147.0 to 3.1150.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases )
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md )
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1150.0/clients/client-s3 )
Updates `@aws-sdk/lib-storage` from 3.1147.0 to 3.1150.0
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases )
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md )
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.1150.0/lib/lib-storage )
Updates `@napi-rs/canvas` from 1.0.10 to 1.0.11
- [Release notes](https://github.com/Brooooooklyn/canvas/releases )
- [Changelog](https://github.com/Brooooooklyn/canvas/blob/main/CHANGELOG.md )
- [Commits](https://github.com/Brooooooklyn/canvas/compare/v1.0.10...v1.0.11 )
Updates `@tanstack/react-query` from 5.104.1 to 5.104.2
- [Release notes](https://github.com/TanStack/query/releases )
- [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md )
- [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.104.2/packages/react-query )
Updates `@tanstack/react-virtual` from 3.14.13 to 3.14.17
- [Release notes](https://github.com/TanStack/virtual/releases )
- [Changelog](https://github.com/TanStack/virtual/blob/main/packages/react-virtual/CHANGELOG.md )
- [Commits](https://github.com/TanStack/virtual/commits/@tanstack/react-virtual@3.14.17/packages/react-virtual )
Updates `dotenv` from 18.0.6 to 18.0.7
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md )
- [Commits](https://github.com/motdotla/dotenv/compare/v18.0.6...v18.0.7 )
Updates `lucide-react` from 1.53.0 to 1.56.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/1.56.0/packages/lucide-react )
Updates `nodemailer` from 10.0.16 to 10.1.0
- [Release notes](https://github.com/nodemailer/nodemailer/releases )
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md )
- [Commits](https://github.com/nodemailer/nodemailer/compare/v10.0.16...v10.1.0 )
Updates `radix-ui` from 1.7.0 to 1.8.1
- [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radix-ui/CHANGELOG.md )
- [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radix-ui )
Updates `react-hook-form` from 7.89.0 to 7.90.0
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases )
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md )
- [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.89.0...v7.90.0 )
---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
dependency-version: 3.1150.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
- dependency-name: "@aws-sdk/lib-storage"
dependency-version: 3.1150.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
- dependency-name: "@napi-rs/canvas"
dependency-version: 1.0.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-weekly
- dependency-name: "@tanstack/react-query"
dependency-version: 5.104.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-weekly
- dependency-name: "@tanstack/react-virtual"
dependency-version: 3.14.17
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-weekly
- dependency-name: dotenv
dependency-version: 18.0.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-weekly
- dependency-name: lucide-react
dependency-version: 1.56.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
- dependency-name: nodemailer
dependency-version: 10.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
- dependency-name: radix-ui
dependency-version: 1.8.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
- dependency-name: react-hook-form
dependency-version: 7.90.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-weekly
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:37:24 +00:00
dependabot[bot]
8c2222ccba
build(deps): bump ossf/scorecard-action from 2.4.4 to 2.5.0 ( #1230 )
...
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action ) from 2.4.4 to 2.5.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases )
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md )
- [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e )
---
updated-dependencies:
- dependency-name: ossf/scorecard-action
dependency-version: 2.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:22:50 +00:00
dependabot[bot]
cdd5cbdb61
build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 ( #1229 )
...
Bumps [actions/download-artifact](https://github.com/actions/download-artifact ) from 8.0.1 to 8.0.2.
- [Release notes](https://github.com/actions/download-artifact/releases )
- [Commits](https://github.com/actions/download-artifact/compare/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c...9000827ccba6bdab643e8b6fd33ac0654aef8333 )
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: 8.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-10-16 08:10:18 +00:00
Marc-André Bombeck
2f5c4659fd
Merge pull request #1227 from MBombeck/release/v1.43.0
...
Release v1.43.0
v1.43.0
2026-10-16 09:25:57 +02:00
Marc-André Bombeck
d06ce36049
chore(release): v1.43.0
2026-10-16 08:46:13 +02:00
Marc-André Bombeck
f543680ada
fix(settings): keep the German nutrient card description within the length guideline
2026-10-16 08:42:43 +02:00
Marc-André Bombeck
fb80b4bc62
fix(settings): say that the nutrient card's totals include the supplements taken
2026-10-16 08:42:13 +02:00
Marc-André Bombeck
53c53ccd76
Merge branch 'v143/ui390' into release/v1.43.0
2026-10-16 08:41:32 +02:00
Marc-André Bombeck
2f9628aa95
fix(links): name a related dose by its vaccine, not its catalogue slug
2026-10-16 08:32:49 +02:00
Marc-André Bombeck
27b173eb26
Merge branch 'release/v1.43.0' into v143/ui390
2026-10-16 08:03:29 +02:00
Marc-André Bombeck
69e2f18788
fix(ui): tidy the new record and settings surfaces at phone width
...
- Composition amounts show only the decimals they carry, so 100 µg no
longer reads as 100.000 µg; the remove button stays on the amount row.
- AUDIT-C remove controls are icon-only, so they no longer spill out of
the card or cover the earlier answer.
- Life-circumstance labels keep their colon when they wrap, checkbox
groups sit in two columns and the weekly-minutes sentence ends.
- Link chips get a 44 px hit area for their remove control.
- The AI usage level reports a failed save with a sentence and the
error id instead of a bare "Error".
- The Dawarich home-country and admin refresh-gap labels sit above
their fields.
2026-10-16 08:03:29 +02:00
Marc-André Bombeck
0de5a3e5df
docs(changelog): describe the merge preview as it works
2026-10-16 07:14:11 +02:00
Marc-André Bombeck
b31b81fec6
docs: name the new sync-gap variable, the merge preview and the Dawarich schedule zone
2026-10-16 07:13:57 +02:00
Marc-André Bombeck
70de08792e
docs(changelog): add v1.43.0
2026-10-16 07:01:36 +02:00
Marc-André Bombeck
c6d57e7ccf
Merge branch 'v143/bundle' into release/v1.43.0
2026-10-16 06:59:53 +02:00
Marc-André Bombeck
057fd3b49c
perf(bundle): keep Zod off the first load of four eager routes
...
zod 4.6 grew the shared Zod chunk from 63 to 89 KB gz (the new schema
compiler and its memoizer ride along because every schema goes through
the `z` namespace), and the dashboard, measurements, mood and settings
routes each carried it for values that need no validation.
Move the measurement source list, the notes limit, the screening check
and the Coach source list into value-only modules the schemas are built
from, import the settings classifier and response check from their
leaves, and load the gate's managed settings and anamnesis sections on
demand. Re-base the four route baselines to the measured values and the
aggregate cap to 4975, with the reason in the budget comment.
2026-10-16 06:58:48 +02:00
Marc-André Bombeck
a806676a71
Merge branch 'v143/fixdata' into release/v1.43.0
2026-10-16 06:22:02 +02:00
Marc-André Bombeck
852433255c
test: follow the newest-entry read and the pulse card toast count
2026-10-16 06:05:08 +02:00
Marc-André Bombeck
d3f6d2d7c7
Merge branch 'v143/fixui' into release/v1.43.0
2026-10-16 06:04:00 +02:00
Marc-André Bombeck
f715190703
Merge branch 'release/v1.43.0' into v143/fixdata
2026-10-16 05:57:22 +02:00
Marc-André Bombeck
617b87a583
fix(measurements): sum both starts of the repeated fall-back hour into its slot
2026-10-16 05:57:19 +02:00
Marc-André Bombeck
f360d221e1
fix(admin): record the pulse rebuild and let a stopped one run again
...
The rebuild after apply now writes its state beside the dry run
(queued, running, done with counts, failed); a run left queued or
running without a job reads as failed. The card shows it and offers a
new rebuild after a failure, which the route accepts once the method is
applied, without a new dry run.
2026-10-16 05:55:31 +02:00
Marc-André Bombeck
beb7ef4ccc
Merge branch 'release/v1.43.0' into v143/fixui
2026-10-16 05:55:14 +02:00
Marc-André Bombeck
d6ea1c7973
Merge branch 'v143/loose' into release/v1.43.0
2026-10-16 05:50:52 +02:00
Marc-André Bombeck
cc9d523bc8
fix(nutrients): recompute supplement rows when the module returns or the zone moves
2026-10-16 05:49:58 +02:00
Marc-André Bombeck
abbb424d21
fix(targets): read the seven-day basis as one aggregate instead of the whole summary slice
2026-10-16 05:49:51 +02:00
Marc-André Bombeck
37645fc4bb
fix(measurements): cut drain days in the zone the server publishes for the account
2026-10-16 05:48:13 +02:00
Marc-André Bombeck
527d177371
test(mood): keep the random request id out of the no-leak byte check
2026-10-16 05:48:00 +02:00
Marc-André Bombeck
d2a806364b
test(mcp): accept type-array unions in the strict output-schema check
2026-10-16 05:48:00 +02:00
Marc-André Bombeck
3c44f3d167
fix(auth): ask the provider for a fresh sign-in when claiming a profile
2026-10-16 05:45:59 +02:00
Marc-André Bombeck
23f008c8bb
fix(anamnesis): serialise the AI switch writes so a PUT cannot resurrect a section
2026-10-16 05:45:06 +02:00
Marc-André Bombeck
13c74c4e92
test(targets): pin the resting pulse verdict below a default band as hold
2026-10-16 05:44:17 +02:00
Marc-André Bombeck
8ae60e2cb3
fix(coach): read free weekdays for a prompt only with the work section released
2026-10-16 05:42:15 +02:00
Marc-André Bombeck
120b0966b1
fix(ai-usage): never regenerate more often on frugal than on standard
...
The frugal sync gap is the larger of a day and the operator's sync gap,
so an instance gap above 24 hours no longer leaves frugal ahead of
standard.
2026-10-16 05:38:36 +02:00
Marc-André Bombeck
a8b46b9ac0
docs(api): regenerate the OpenAPI contract
2026-10-16 05:37:18 +02:00
Marc-André Bombeck
b99b70127d
fix(anamnesis): one newest AUDIT-C entry, scored against the wording offered
...
The stored language is the wording the read route offers the account;
a request naming another wording, or a takenAt more than five minutes
ahead, is refused. Latest, offerDue, the Coach block and the doctor
report all read the newest entry whose answers open.
The old one-word alcohol pattern gives way to an AUDIT-C entry in the
Coach block, and the alcohol section lists it with a remove action.
2026-10-16 05:36:42 +02:00
Marc-André Bombeck
2fc74e76df
fix(targets): place the target verdict on the dashboard's seven-day basis
2026-10-16 05:35:52 +02:00
Marc-André Bombeck
6776decaa0
test(guard): discover the resolved fields and demand a reader or a stated reason for each
2026-10-16 05:35:48 +02:00
Marc-André Bombeck
da1d31e370
feat(labs): show and file a reading's related report and visit in its sheet
2026-10-16 05:34:08 +02:00
Marc-André Bombeck
7167ba8cdc
fix(labs): pair the panel changes by marker, not by printed name
2026-10-16 05:32:13 +02:00
Marc-André Bombeck
8ba4d1b0d0
fix(nutrients): name the form an upper limit covers and phrase it per locale
2026-10-16 05:31:33 +02:00
Marc-André Bombeck
d66d3969cd
fix(records): show the screening hints when one applies without a smoking answer
2026-10-16 05:28:53 +02:00
Marc-André Bombeck
e9a0b3d959
fix(dawarich): keep a boundary fragment from overwriting a complete day
...
Dawarich groups the timeline by the day in its own account zone and sums
only what lies inside the window. Reach a whole day past both ends of
each request and keep only the chunk's own dates, so the cut edge days
are discarded and chunks never overwrite each other.
2026-10-16 05:28:51 +02:00
Marc-André Bombeck
c777819b33
fix(integrations): bound the Dawarich and Nightscout answers while reading
2026-10-16 05:28:07 +02:00
Marc-André Bombeck
1a7050d95d
fix(backup): bring every relation link back from a portable restore
...
A portable file carries no id for a medication or a lab result, so the
restore mints fresh ones and the links that named the old ids were
dropped as having no end. Carry the source id as ref on both entries and
re-point the links through an old-to-new map on restore.
2026-10-16 05:25:50 +02:00