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
Daniel Volz
63cd9ef19b
fix: harden share link dose operations and token reuse ( #298 )
...
* fix: harden share link dose operations and token reuse
* fix: restore share dose compatibility and add correlation helper
2026-02-24 21:12:43 +01:00
dependabot[bot]
3e4f1440a9
build(deps-dev): bump the minor-and-patch group ( #290 )
...
Bumps the minor-and-patch group in /backend with 3 updates: [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ), [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) and [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer ).
Updates `@biomejs/biome` from 2.4.1 to 2.4.4
- [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.4/packages/@biomejs/biome )
Updates `@types/node` from 25.2.3 to 25.3.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `@types/nodemailer` from 7.0.10 to 7.0.11
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nodemailer )
---
updated-dependencies:
- dependency-name: "@biomejs/biome"
dependency-version: 2.4.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@types/node"
dependency-version: 25.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: "@types/nodemailer"
dependency-version: 7.0.11
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-23 19:25:24 +01:00
Daniel Volz
b139660241
chore: release v1.15.1 ( #280 )
2026-02-22 18:02:32 +01:00
Daniel Volz
d0e2ee0783
fix: trim whitespace from username on login and registration ( #277 )
...
Add .trim() to both loginSchema and registerSchema Zod validators so
leading/trailing spaces are stripped before validation and DB lookup.
Includes 5 new test cases covering trim behavior for both endpoints.
2026-02-22 17:51:41 +01:00
Daniel Volz
c620146c4b
chore: release v1.15.0 ( #275 )
2026-02-22 16:54:49 +01:00
Daniel Volz
5d657558f7
chore: release v1.14.4 ( #272 )
2026-02-22 14:00:02 +01:00
Daniel Volz
0c28999c89
chore: release v1.14.3 ( #271 )
2026-02-22 11:05:09 +01:00
Daniel Volz
2296303236
fix: prevent duplicate scheduler reminder sends ( #270 )
2026-02-22 10:56:13 +01:00
Daniel Volz
088a6c1a05
chore: fix all Biome lint warnings and MedDetail intake bell icons ( #265 )
...
- Backend: refactor nested ternaries, remove unused imports/any types
- Frontend: fix exhaustive deps, a11y label associations, array index keys,
empty CSS blocks, unused vars, type annotations
- MedDetail modal: fix intake schedule bell icons not rendering (use unified
intake source with fallback), place bell inline after person name
- MedDetail modal: revert schedule rows from grid to flexbox layout
Closes #264
2026-02-22 08:52:03 +01:00
Daniel Volz
228fd4cd7e
chore: release v1.14.2 ( #263 )
2026-02-21 20:56:12 +01:00
Daniel Volz
e346d60f39
chore: release v1.14.1 ( #262 )
2026-02-21 20:51:28 +01:00
Daniel Volz
afb8e5028c
fix: auto-mark intakes at due time and show robot marker ( #261 )
...
* fix: auto-mark intakes at due time and show robot marker
* test: add taken_source to integration schema
* test: align e2e route schema with taken_source
2026-02-21 20:45:05 +01:00
Daniel Volz
9ab077a037
chore: release v1.14.0 ( #259 )
2026-02-21 18:04:20 +01:00
Daniel Volz
612aa007aa
fix: unify stock semantics across planner and scheduler ( #245 )
...
* fix: unify stock semantics across planner and scheduler
* fix: stabilize dashboard hmr and align stock helper tests
2026-02-21 15:24:53 +01:00
Daniel Volz
02af93ec55
chore: release v1.13.0 ( #243 )
2026-02-20 19:55:26 +01:00
dependabot[bot]
8f57aa8bc9
build(deps): bump ajv from 8.17.1 to 8.18.0 in /backend ( #238 )
...
Bumps [ajv](https://github.com/ajv-validator/ajv ) from 8.17.1 to 8.18.0.
- [Release notes](https://github.com/ajv-validator/ajv/releases )
- [Commits](https://github.com/ajv-validator/ajv/compare/v8.17.1...v8.18.0 )
---
updated-dependencies:
- dependency-name: ajv
dependency-version: 8.18.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-20 19:51:41 +01:00
dependabot[bot]
f42ed87d94
build(deps): bump minimatch from 10.2.0 to 10.2.2 in /backend ( #237 )
...
Bumps [minimatch](https://github.com/isaacs/minimatch ) from 10.2.0 to 10.2.2.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md )
- [Commits](https://github.com/isaacs/minimatch/compare/v10.2.0...v10.2.2 )
---
updated-dependencies:
- dependency-name: minimatch
dependency-version: 10.2.2
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-20 19:51:37 +01:00
Daniel Volz
052751b2ba
feat: reports, timeline toggles, and stock correction improvements ( #236 )
...
* refactor(frontend): modularize styles and polish modal/ui interactions
* feat: add report workflow and timeline/settings improvements
* fix: resolve CI failures for backend typing, lint, and playwright config
2026-02-20 18:52:59 +01:00
Daniel Volz
89d565bc9d
chore: fix lint errors and reduce warnings across codebase ( #234 )
...
* chore: fix lint errors and reduce warnings across codebase
- Fix noExplicitAny catches in backend routes and plugins
- Fix noNestedTernary issues in backend services
- Add keyboard event handlers for useKeyWithClickEvents in frontend
- Disable noImportantStyles rule in biome.json
- Fix formatting errors across all changed files
- Fix test file lint issues
Closes #233
* fix: restore any types in test files for TS compatibility
* fix: revert Auth.tsx dependency array changes that caused infinite re-render
* fix: null-safe user.username access in AppContext dependency array
2026-02-17 05:21:47 +01:00
Daniel Volz
08a18fc14a
fix: improve export filename and import confirmation UX ( #232 )
...
Export filename:
- Include username for multi-user/instance distinction
- Include timestamp with time (YYYYMMDD-HHMM) instead of date only
- Example: medassist-export-daniel-20260216-2108.json
Import confirmation:
- Show friendly 'Import Data?' dialog on empty instances instead of
scary 'Replace All Data?' warning with danger button
- Only show destructive warning when there is existing data to replace
- Use primary button style for empty-state import
Closes #231
2026-02-16 22:20:20 +01:00
Daniel Volz
871e6066ec
fix: export/import missing refill history, prescription, and bottle fields ( #227 )
...
- Add refill history export/import with medication reference mapping
- Include totalPills (bottle type capacity) in inventory export
- Include dismissedUntil field for past dose dismissal state
- Add expiryWarningDays and shareStockStatus to settings export
- Bump export version to 1.1
- Add refill count to import result reporting
- Update i18n import success details to include refill count
Closes #224
2026-02-16 21:51:39 +01:00
dependabot[bot]
ff100dfea5
build(deps-dev): bump @types/nodemailer in /backend ( #223 )
...
Bumps [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer ) from 6.4.21 to 7.0.10.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nodemailer )
---
updated-dependencies:
- dependency-name: "@types/nodemailer"
dependency-version: 7.0.10
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-16 19:06:28 +01:00
dependabot[bot]
47581ca7ad
build(deps-dev): bump @biomejs/biome ( #222 )
...
Bumps the minor-and-patch group in /backend with 1 update: [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ).
Updates `@biomejs/biome` from 2.3.15 to 2.4.1
- [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.1/packages/@biomejs/biome )
---
updated-dependencies:
- dependency-name: "@biomejs/biome"
dependency-version: 2.4.1
dependency-type: direct:development
update-type: version-update:semver-minor
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-16 19:06:18 +01:00
Daniel Volz
36a2f7d537
chore: release v1.12.0 ( #216 )
2026-02-15 23:28:35 +01:00
Daniel Volz
4b697374f6
feat: obsolete medication archiving, start date, and UI improvements ( #215 )
...
* feat: obsolete medication archiving, start date, and UI improvements
- Add soft-archive (obsolete) for medications with dedicated section and toggle
- Add medication start date field with date picker and validation
- Add obsolete/reactivate API endpoints with proper auth
- Filter obsolete meds from schedule, coverage, planner, and notifications
- Improve UserFilterModal with intake schedules, stock badges, and click-to-open
- Improve dashboard taken-by badges with per-intake bell icons
- Add Escape key support to ConfirmModal and MobileEditModal
- Fix Lightbox close button positioning near image
- Add read-only mode support for MobileEditModal
- DB migrations: 0008 (is_obsolete, obsolete_at), 0009 (medication_start_date)
- All user-facing text uses i18n keys (en + de)
* test: fix tests for obsolete medications and UI changes
- Backend: add is_obsolete, obsolete_at, medication_start_date columns to test schemas
- Backend: add test medication inserts in planner tests for active-med filtering
- Frontend: update useMedications URL to include includeObsolete param
- Frontend: fix MobileEditModal selectors and validation assertions
- Frontend: add onClearUser prop to UserFilterModal test renders
- Frontend: fix MedicationsPage and DashboardPage test assertions
2026-02-15 23:23:38 +01:00
Daniel Volz
d8d8c4a07e
chore: release v1.11.1 ( #213 )
2026-02-14 21:07:14 +01:00
Daniel Volz
1e043c8bf3
chore: release v1.11.0 ( #210 )
2026-02-14 20:33:54 +01:00
Daniel Volz
cbc71822b0
fix: highlight empty medications in planner email with red background ( #208 )
...
- Add light red background (#fef2f2) to table rows where medication is out of stock
- Consistent with stock reminder email styling
Closes #204
2026-02-14 20:24:28 +01:00
Daniel Volz
150be1e114
feat: add prescription refills column to planner table and email ( #207 )
...
- Add 6th column 'Prescription refills' to frontend Planner table
- Add matching column to backend planner email (HTML + plaintext)
- Show remaining refills for meds with prescription tracking, '–' otherwise
- Add backend translations for new column header (EN + DE)
- Add frontend i18n keys for prescription refills column
- Update planner tests with medications table schema
Closes #203
2026-02-14 20:21:09 +01:00
Daniel Volz
8273b07231
feat: track number of prescription repeats ( #193 )
...
* feat: track prescription repeats and refill reminders
* test: align backend and frontend suites with current prescription and UI behavior
* test: update frontend and backend expectations for latest reminders and refill flow
2026-02-14 19:07:36 +01:00
Daniel Volz
684abd7fb6
fix: handle usernames case-insensitively in auth and oidc ( #197 )
2026-02-14 18:43:30 +01:00
dependabot[bot]
874babe1d8
build(deps-dev): bump @types/node from 22.19.3 to 25.2.3 in /backend ( #191 )
...
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) from 22.19.3 to 25.2.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.2.3
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-13 20:20:40 +01:00
dependabot[bot]
c9039b6e87
build(deps): bump dotenv from 16.6.1 to 17.3.1 in /backend ( #190 )
...
Bumps [dotenv](https://github.com/motdotla/dotenv ) from 16.6.1 to 17.3.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md )
- [Commits](https://github.com/motdotla/dotenv/compare/v16.6.1...v17.3.1 )
---
updated-dependencies:
- dependency-name: dotenv
dependency-version: 17.3.1
dependency-type: direct:production
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-13 20:20:37 +01:00