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
934519767a
fix: restore obsolete actions in timeline views
2026-03-16 21:39:22 +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
dependabot[bot]
fb62227154
build(deps-dev): bump jsdom from 28.1.0 to 29.0.0 in /frontend
...
Bumps [jsdom](https://github.com/jsdom/jsdom ) from 28.1.0 to 29.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases )
- [Changelog](https://github.com/jsdom/jsdom/blob/v29.0.0/Changelog.md )
- [Commits](https://github.com/jsdom/jsdom/compare/v28.1.0...v29.0.0 )
---
updated-dependencies:
- dependency-name: jsdom
dependency-version: 29.0.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>
Co-authored-by: Daniel Volz <mail@danielvolz.org >
2026-03-16 08:36:53 +01:00
Daniel Volz
0f9458b7cb
chore: align vite 8 and plugin-react 6 stack
...
* chore: align vite 8 and plugin-react 6 stack
* fix: remove array index keys from intake rows
* chore: format shared schedule test fix
2026-03-16 08:26:50 +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
dependabot[bot]
b57dc0fb35
build(deps): bump undici from 7.21.0 to 7.24.1 in /frontend
...
Fixes multiple security vulnerabilities: CVE-2026-1525, CVE-2026-1528, CVE-2026-2581, CVE-2026-1527, CVE-2026-2229, CVE-2026-1526
2026-03-14 22:04:55 +01:00
Daniel Volz
99160c14ed
fix: out-of-stock button styling and schedule visual cleanup ( #431 )
...
- Add distinct styling for out-of-stock dose buttons (.dose-btn.take.out-of-stock)
- Remove redundant .time-row.taken opacity dimming
- Include Playwright regression test for stock status visuals
2026-03-14 21:53:58 +01:00
Daniel Volz
8ec7d3ae3d
fix: include shareMedicationOverview in unsaved settings detection ( #433 )
...
Add shareMedicationOverview to the settingsChanged memo in AppContext
so toggling the shared medication overview setting correctly triggers
the unsaved-changes indicator.
Includes regression test for the fix.
2026-03-14 21:49:37 +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
d0837a7281
feat: stack related date fields and clarify share stock labels ( #422 )
...
* feat: stack related date fields and clarify share stock labels
* test: cover stacked date pairs and share labels
2026-03-12 21:32:56 +01:00
Daniel Volz
3fda41e501
fix: restore automatic intake auto-marking ( #420 )
2026-03-12 21:32:51 +01:00
Daniel Volz
dd8ddb64e6
feat: expose optional API docs through frontend ingress ( #416 )
2026-03-11 10:03:34 +01:00
dependabot[bot]
e0a50d01bb
build(deps): bump react-i18next from 15.7.4 to 16.5.6 in /frontend ( #395 )
...
* build(deps): bump react-i18next from 15.7.4 to 16.5.6 in /frontend
Bumps [react-i18next](https://github.com/i18next/react-i18next ) from 15.7.4 to 16.5.6.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/react-i18next/compare/v15.7.4...v16.5.6 )
---
updated-dependencies:
- dependency-name: react-i18next
dependency-version: 16.5.6
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
* test(e2e): harden selectors for PR #395 checks
* test(e2e): harden API key and share button assertions
* test: stabilize flaky playwright checks for settings and schedule
* test: skip env-dependent e2e assertions when controls are unavailable
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Daniel Volz <mail@danielvolz.org >
2026-03-10 13:53:16 +01:00
Daniel Volz
105eb7bc0d
feat: add shared overview and harden frontend session state ( #407 )
2026-03-10 06:26:03 +01:00
Daniel Volz
733fe2f38a
fix: stabilize e2e suite and align dev runtime config ( #408 )
...
* fix: stabilize e2e suite and align dev runtime config
* fix: harden forbidden-settings e2e assertion
* fix: make forbidden settings e2e assertion robust
2026-03-10 06:25:46 +01:00
dependabot[bot]
2db49e427a
build(deps): bump the minor-and-patch group in /frontend with 4 updates
...
Bumps the minor-and-patch group in /frontend with 4 updates: [i18next](https://github.com/i18next/i18next ), [lucide-react](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-react ), [@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 `i18next` from 25.8.13 to 25.8.14
- [Release notes](https://github.com/i18next/i18next/releases )
- [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/i18next/compare/v25.8.13...v25.8.14 )
Updates `lucide-react` from 0.575.0 to 0.577.0
- [Release notes](https://github.com/lucide-icons/lucide/releases )
- [Commits](https://github.com/lucide-icons/lucide/commits/0.577.0/packages/lucide-react )
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: i18next
dependency-version: 25.8.14
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: lucide-react
dependency-version: 0.577.0
dependency-type: direct:production
update-type: version-update:semver-minor
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>
Co-authored-by: Daniel Volz <mail@danielvolz.org >
2026-03-09 22:11:32 +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
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
54d26e0241
fix: remove redundant flaky schedule timeline assertion ( #381 )
...
* test: remove redundant flaky schedule timeline assertion
* fix(frontend): fix schedule-data e2e formatting for CI gate
2026-03-04 21:15:29 +01:00
Daniel Volz
ac47fc001d
fix: adapt e2e medication flows to all package profiles ( #380 )
...
* test: adapt e2e medication flows to all package profiles
* fix(frontend): resolve frontend build lint blockers
2026-03-04 21:15:18 +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
Daniel Volz
56d244aa61
fix: stabilize frontend e2e selectors and auth/session reliability ( #373 )
2026-03-02 23:21:57 +01:00
dependabot[bot]
8fdd79ff33
build(deps-dev): bump @types/node ( #370 )
...
Bumps the minor-and-patch group in /frontend 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:16 +01:00
Daniel Volz
cd8263e607
fix: align desktop intake labels and form field pairing ( #368 )
...
* fix: align desktop intake labels and form field pairing
* chore: align frontend lockfile version and include remaining local changes
2026-03-02 01:33:28 +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
da004b5c3e
fix: align frontend tube/liquid container semantics ( #364 )
...
* fix: align frontend tube/liquid container semantics
* test(frontend): fix PR #364 CI regressions
2026-03-02 00:23:32 +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
8aaeca6b26
feat: simplify tube stock editing UI ( #357 )
...
* 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
* feat: simplify tube stock editing in desktop and mobile forms
2026-02-28 23:24:48 +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]
46d768dd4e
build(deps): bump the minor-and-patch group in /frontend with 5 updates ( #344 )
...
Bumps the minor-and-patch group in /frontend with 5 updates:
| Package | From | To |
| --- | --- | --- |
| [react](https://github.com/facebook/react/tree/HEAD/packages/react ) | `19.2.0` | `19.2.4` |
| [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react ) | `19.2.2` | `19.2.14` |
| [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom ) | `19.2.0` | `19.2.4` |
| [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom ) | `19.2.2` | `19.2.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `25.3.0` | `25.3.2` |
Updates `react` from 19.2.0 to 19.2.4
- [Release notes](https://github.com/facebook/react/releases )
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react )
Updates `@types/react` from 19.2.2 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react )
Updates `react-dom` from 19.2.0 to 19.2.4
- [Release notes](https://github.com/facebook/react/releases )
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md )
- [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react-dom )
Updates `@types/react-dom` from 19.2.2 to 19.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom )
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 )
Updates `@types/react` from 19.2.2 to 19.2.14
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react )
Updates `@types/react-dom` from 19.2.2 to 19.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom )
---
updated-dependencies:
- dependency-name: react
dependency-version: 19.2.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/react"
dependency-version: 19.2.14
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: react-dom
dependency-version: 19.2.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/react-dom"
dependency-version: 19.2.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/node"
dependency-version: 25.3.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/react"
dependency-version: 19.2.14
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/react-dom"
dependency-version: 19.2.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-02-27 01:28:55 +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
cc22f80209
fix: align frontend types and tests for react 19 ( #339 )
2026-02-27 01:01:48 +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]
8b3901c1e1
build(deps): bump rollup from 4.53.5 to 4.59.0 in /frontend ( #333 )
...
Bumps [rollup](https://github.com/rollup/rollup ) from 4.53.5 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.53.5...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:29:10 +01:00
Daniel Volz
f36d56c523
test: update modal tests to reflect global ESC handler
...
Remove ESC-keydown tests from ProfileModal.test.tsx since the
useEscapeKey hook was removed from individual modals. Escape key
handling is now centralized in App.tsx's global handler, making
per-component ESC tests invalid (the component no longer responds
to ESC in isolation).
2026-02-25 23:54:21 +01:00
Daniel Volz
f0496e8ca5
fix: remove duplicate ESC handlers causing double history.back()
...
AboutModal, ProfileModal, and ShareDialog each had their own
useEscapeKey hook AND were handled by the global ESC handler in
App.tsx. When ESC was pressed, both fired synchronously, calling
history.back() twice — navigating past the current page instead
of just closing the modal.
Removed the per-modal useEscapeKey calls since the global handler
in App.tsx already manages ESC priority for all modals.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-02-25 23:50:07 +01:00
Daniel Volz
de300ad919
chore: release v1.16.1 ( #326 )
2026-02-25 22:26:19 +01:00