Daniel Volz
68ab79c713
feat: enable weekday-based medication scheduling
...
Closes #463
2026-03-20 14:58:25 +01:00
Daniel Volz
29f4c4e48d
chore: release v1.20.2 ( #462 )
2026-03-17 05:55:29 +01:00
Daniel Volz
9e224c0441
fix: improve shared schedule stock overview display
2026-03-16 21:33:55 +01:00
Daniel Volz
5138d784cd
chore: improve intake reminder observability
2026-03-16 21:28:53 +01:00
Daniel Volz
14e783f111
fix: exclude obsolete medications from share flows
2026-03-16 21:21:41 +01:00
dependabot[bot]
9180783c42
build(deps): bump the minor-and-patch group in /backend with 5 updates
...
Squash merge Dependabot backend minor-and-patch dependency updates from PR #443 .
2026-03-16 07:51:28 +01:00
Daniel Volz
cc636eb98b
chore: release v1.20.1 ( #437 )
2026-03-15 20:01:58 +01:00
Daniel Volz
908e4e724f
fix: remove dead shareStockStatus gating from shared medication overview ( #436 )
...
The shareStockStatus UI toggle was replaced by shareMedicationOverview in
commit e0fb77d , but the backend gating logic was left intact. Users who
had previously set shareStockStatus=false were stuck with empty stock
values ('-') on the shared medication overview with no UI to change it.
- Remove showStockStatus parameter from buildSharedMedicationOverview()
- Remove visibility gating that nullified stock fields
- Remove shareStockStatus from settings API responses and PUT schema
- Remove shareStockStatus from frontend types, hooks, and context
- Clean up all related test fixtures and dead test cases
- DB column share_stock_status retained (never remove columns)
2026-03-15 19:27:39 +01:00
Daniel Volz
ef78e51b4e
chore: release v1.20.0 ( #434 )
2026-03-14 22:13:00 +01:00
Daniel Volz
0160ef3ddf
fix: restore schedule interaction correctness
...
* fix: restore schedule interaction correctness
* fix: use scheduled stock timing for historical doses
2026-03-14 20:49:13 +01:00
Daniel Volz
e0fb77d494
feat: embed medication overview into shared links
...
Closes #424
2026-03-14 20:26:17 +01:00
Daniel Volz
3fda41e501
fix: restore automatic intake auto-marking ( #420 )
2026-03-12 21:32:51 +01:00
Daniel Volz
c13bfad16f
feat: improve OpenAPI request contracts and examples ( #418 )
...
* feat: improve OpenAPI request contracts and examples
* fix: align AJV docs plugin typing
* fix: preserve runtime behavior for OpenAPI schemas
* fix: align medication OpenAPI body schema with app payloads
2026-03-11 14:50:42 +01:00
Daniel Volz
5264c761cf
feat: standardize OpenAPI route docs metadata ( #412 )
2026-03-10 16:52:31 +01:00
Daniel Volz
c0507c4c4b
feat: backend API key auth context and settings hardening ( #406 )
...
* feat: add backend api-key auth context and settings hardening
* fix: harden api key token hashing
2026-03-10 06:26:20 +01:00
dependabot[bot]
0e4d7f71e4
build(deps): bump the minor-and-patch group in /backend with 3 updates
...
Bumps the minor-and-patch group in /backend with 3 updates: [fastify](https://github.com/fastify/fastify ), [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ) and [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ).
Updates `fastify` from 5.8.1 to 5.8.2
- [Release notes](https://github.com/fastify/fastify/releases )
- [Commits](https://github.com/fastify/fastify/compare/v5.8.1...v5.8.2 )
Updates `@biomejs/biome` from 2.4.4 to 2.4.6
- [Release notes](https://github.com/biomejs/biome/releases )
- [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md )
- [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.4.6/packages/@biomejs/biome )
Updates `@types/node` from 25.3.3 to 25.3.5
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: fastify
dependency-version: 5.8.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@biomejs/biome"
dependency-version: 2.4.6
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/node"
dependency-version: 25.3.5
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 22:08:13 +01:00
Daniel Volz
e8279bd521
chore: release v1.19.0 ( #388 )
...
* docs: require explicit issue comment when closing issues via PR
* chore: release v1.19.0
2026-03-06 20:16:42 +01:00
dependabot[bot]
36d50c0736
build(deps): bump fastify from 5.7.4 to 5.8.1 in /backend ( #387 )
...
Bumps [fastify](https://github.com/fastify/fastify ) from 5.7.4 to 5.8.1.
- [Release notes](https://github.com/fastify/fastify/releases )
- [Commits](https://github.com/fastify/fastify/compare/v5.7.4...v5.8.1 )
---
updated-dependencies:
- dependency-name: fastify
dependency-version: 5.8.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-06 20:02:08 +01:00
Daniel Volz
5b6c6abb69
feat: display actual reminder schedule from server config ( #386 )
...
- Expose REMINDER_HOUR and REMINDER_MINUTES_BEFORE env values via settings API
- Add reminderHour and reminderMinutesBefore to frontend Settings interface
- Replace hardcoded i18n strings with parameterized translations
- Settings page now shows configured schedule instead of static 6:00 / 15 min
2026-03-06 19:51:19 +01:00
Daniel Volz
30c97e2f0d
fix: use per-intake reminder setting as single source of truth ( #384 )
...
- Filter intakes by per-intake intakeRemindersEnabled instead of falling
back to medication-level setting (fixes #383 )
- Add SMTP delivery validation with accepted/rejected recipient checks
- Enhance email success logging with recipient, messageId, SMTP response
- Simplify MedDetailModal reminder icon logic to match backend behavior
- Sync lockfile versions to 1.18.2
2026-03-06 19:50:45 +01:00
Daniel Volz
4936929849
feat: replace hardcoded package assumptions with profile abstraction ( #379 )
2026-03-04 21:15:05 +01:00
Daniel Volz
b349e26833
chore: release v1.18.2 ( #374 )
2026-03-02 23:34:18 +01:00
dependabot[bot]
067a8c166b
build(deps-dev): bump @types/node ( #371 )
...
Bumps the minor-and-patch group in /backend with 1 update: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ).
Updates `@types/node` from 25.3.2 to 25.3.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 25.3.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 12:56:23 +01:00
Daniel Volz
e6a097d81d
chore: release v1.18.1 ( #366 )
2026-03-02 01:16:08 +01:00
Daniel Volz
f4723c6f99
chore: release v1.18.0 ( #365 )
2026-03-02 00:41:20 +01:00
Daniel Volz
508bc764d5
fix: align backend amount stock and reminder semantics ( #362 )
...
* fix: align backend amount stock and reminder semantics
* test: align settings email route success mock with SMTP delivery checks
2026-03-02 00:02:26 +01:00
Daniel Volz
9e8a6315e7
fix: keep topical stock non-depleting in planner flows ( #359 )
...
* fix: keep topical stock non-depleting in planner and reports
* test: stabilize e2e selectors for updated medication semantics
* fix(backend): add missing planner translation keys
2026-02-28 23:36:52 +01:00
Daniel Volz
7accb2aad6
feat: persist package amount metadata in backend ( #356 )
...
* feat: add package amount persistence and backend route support
* test: align backend test schemas with medication metadata fields
* fix(backend): restore intake usage normalizer for planner endpoint
* fix(backend): keep export typing compatible before liquid-unit stack step
2026-02-28 23:21:13 +01:00
Daniel Volz
2f2edfa479
chore: release v1.17.1 ( #351 )
2026-02-27 01:53:09 +01:00
Daniel Volz
b009d9e158
fix: frontend nginx restart loop from invalid log_format scope ( #350 )
...
* fix: place nginx log_format in valid context
* fix: unblock required checks for nginx hotfix
* fix: restore mandatory doku files in nginx hotfix pr
2026-02-27 01:47:59 +01:00
dependabot[bot]
8e4cb5dcd4
build(deps): bump minimatch from 10.2.2 to 10.2.4 in /backend ( #338 )
...
Bumps [minimatch](https://github.com/isaacs/minimatch ) from 10.2.2 to 10.2.4.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/minimatch/compare/v10.2.2...v10.2.4 )
---
updated-dependencies:
- dependency-name: minimatch
dependency-version: 10.2.4
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 01:29:04 +01:00
dependabot[bot]
7f26dca7a7
build(deps-dev): bump @types/node ( #343 )
...
Bumps the minor-and-patch group in /backend with 1 update: [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ).
Updates `@types/node` from 25.3.0 to 25.3.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-version: 25.3.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 01:29:00 +01:00
dependabot[bot]
1668eb935c
build(deps-dev): bump @types/supertest from 6.0.3 to 7.2.0 in /backend ( #346 )
...
Bumps [@types/supertest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/supertest ) from 6.0.3 to 7.2.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/supertest )
---
updated-dependencies:
- dependency-name: "@types/supertest"
dependency-version: 7.2.0
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-27 01:28:47 +01:00
Daniel Volz
1ea4919323
chore: release v1.17.0 ( #348 )
2026-02-27 01:19:39 +01:00
Daniel Volz
ba0ab672b9
docs: update memory and report for multi-pr delivery ( #347 )
2026-02-27 01:15:40 +01:00
Daniel Volz
57c998ba09
chore: update dependabot automation and agent governance ( #341 )
...
* chore: update dependabot automation and agent governance
* chore: trigger required CI checks for governance PR
2026-02-27 01:11:05 +01:00
Daniel Volz
6b27d234d9
chore: reduce polling log noise across backend and nginx ( #336 )
2026-02-27 00:54:21 +01:00
Daniel Volz
19ba4bb7d2
feat: add FORM_LOGIN_ENABLED auth toggle ( #334 )
2026-02-27 00:48:58 +01:00
dependabot[bot]
fd7cc56bb7
build(deps): bump rollup from 4.57.1 to 4.59.0 in /backend ( #332 )
...
Bumps [rollup](https://github.com/rollup/rollup ) from 4.57.1 to 4.59.0.
- [Release notes](https://github.com/rollup/rollup/releases )
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rollup/rollup/compare/v4.57.1...v4.59.0 )
---
updated-dependencies:
- dependency-name: rollup
dependency-version: 4.59.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 06:28:51 +01:00
dependabot[bot]
8420c74a55
build(deps): bump bn.js from 4.12.2 to 4.12.3 in /backend ( #330 )
...
Bumps [bn.js](https://github.com/indutny/bn.js ) from 4.12.2 to 4.12.3.
- [Release notes](https://github.com/indutny/bn.js/releases )
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md )
- [Commits](https://github.com/indutny/bn.js/compare/v4.12.2...v4.12.3 )
---
updated-dependencies:
- dependency-name: bn.js
dependency-version: 4.12.3
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-26 00:14:46 +01:00
Daniel Volz
de300ad919
chore: release v1.16.1 ( #326 )
2026-02-25 22:26:19 +01:00
Daniel Volz
06bf608913
fix: support core shoutrrr provider schemes ( #317 )
...
* fix: support core shoutrrr provider schemes
* fix(ci): resolve backend lint failures and harden shoutrrr URL handling
* fix(codeql): mark validated gotify target as intentional external call
* fix(codeql): route gotify scheme through validated webhook sink
2026-02-25 22:22:50 +01:00
Daniel Volz
a47bde0956
chore: sync lockfile package versions to 1.16.0 ( #325 )
...
* chore: sync lockfile package versions to 1.16.0
* fix(ci): align medications route formatting with biome
2026-02-25 22:15:43 +01:00
Daniel Volz
dbdf3b61cb
fix: harden reminder scheduler dedupe and boundary timing ( #319 )
...
* fix: harden reminder scheduler dedupe and boundary timing
* fix(ci): align medications route formatting with biome
2026-02-25 22:15:35 +01:00
Copilot
2a9ca39c24
Allow medications with only a generic name (no commercial name required) ( #311 )
...
* Initial plan
* feat: allow generic name only for medications (frontend changes)
- Add getMedDisplayName() helper for consistent name display
- Update validation to require either commercial or generic name
- Update all display locations to use display name fallback
- Add i18n keys for nameOrGenericRequired in en.json and de.json
- Remove required attribute from commercial name field
- Update FIELD_LIMITS.name.min from 1 to 0
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
* feat: allow generic name only for medications (backend changes)
- Update Zod schema to allow empty name with cross-field refinement
- Update reminder scheduler to use name || genericName for display
- Update planner routes to match medications by display name
- Update existing tests to match new validation behavior
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
* fix: update placeholder text and fix FIELD_LIMITS test
- Remove "(optional)" from generic name placeholder in en/de
- Update types.test.ts to expect FIELD_LIMITS.name.min = 0
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
2026-02-25 21:29:25 +01:00
dependabot[bot]
691550fb33
build(deps): bump bn.js from 4.12.2 to 4.12.3 in /backend ( #305 )
...
Bumps [bn.js](https://github.com/indutny/bn.js ) from 4.12.2 to 4.12.3.
- [Release notes](https://github.com/indutny/bn.js/releases )
- [Changelog](https://github.com/indutny/bn.js/blob/master/CHANGELOG.md )
- [Commits](https://github.com/indutny/bn.js/compare/v4.12.2...v4.12.3 )
---
updated-dependencies:
- dependency-name: bn.js
dependency-version: 4.12.3
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-25 21:29:13 +01:00
Daniel Volz
0fded0d42f
chore: release v1.16.0 ( #308 )
2026-02-25 00:19:56 +01:00
Daniel Volz
96b2a0c96f
feat: image upload optimization with sharp, thumbnails, and structured error codes ( #304 )
...
- Add sharp for server-side image processing (WebP conversion + thumbnails)
- New shared backend utility for image upload, optimization, and cleanup
- Return structured error codes from upload endpoints (IMAGE_TOO_LARGE, INVALID_TYPE, etc.)
- Frontend error code mapping with i18n support (EN + DE)
- MedicationAvatar tries thumbnail first, falls back to full image
- Error display in MedicationsPage, MobileEditModal, and Auth avatar upload
Closes #302
2026-02-24 23:52:59 +01:00
Daniel Volz
7a32b2045e
fix: run one stock reminder catch-up after restart ( #300 )
...
* fix: run one stock reminder catch-up after restart
* fix(backend): persist scheduler stock-check timestamp in reminder state
2026-02-24 21:21:34 +01:00
Daniel Volz
26475fd3d0
feat: add correlation ids and tighten frontend security headers ( #299 )
...
* feat: add correlation ids and tighten frontend security headers
* docs: remove obsolete project setup guide
* fix: restore health config flags for compatibility
* test(frontend): align auth fetch assertions with correlation headers
2026-02-24 21:21:30 +01:00