Daniel Volz
94bd8bd6e8
feat: improve mobile edit modal swipe gestures and tab navigation ( #256 )
...
* feat: improve mobile edit modal swipe gestures and tab navigation
Replace React passive touch handlers with native non-passive
addEventListener via useEffect for reliable horizontal swipe blocking.
Reduce axis-lock threshold from 18-26px to 6px for more responsive
gesture detection. Remove isInteractive() guard so swipe works on
input fields. Add tab strip auto-scroll via scrollIntoView when
active tab changes. Fix vertical scrolling by changing readonly
fieldset from display:block to display:flex.
Closes #252
* fix: guard scrollIntoView for jsdom test compatibility
2026-02-21 18:00:02 +01:00
Daniel Volz
0cf1c5353e
fix: notification channel toggles snap back after being enabled ( #255 )
...
* fix: notification channel toggles snap back after being enabled
The checked props for email/push notification toggles had redundant
conditions (smtpHost/shoutrrrUrl checks) that forced them to false,
causing immediate visual snap-back. Additionally, performSave()
overwrote emailEnabled/shoutrrrEnabled in local state with effective
values, disabling toggles when no SMTP host or Shoutrrr URL was set.
Remove redundant checked prop conditions (disabled attr already handles
interaction gating) and stop overwriting enabled flags in local state
after save.
Closes #250
* fix: remove leaked useModalHistory import from SettingsPage
* fix: update useSettings tests to match new toggle behavior
2026-02-21 17:59:50 +01:00
github-actions[bot]
98cf1ce1d2
chore: update test count badges [skip ci]
2026-02-21 14:51:05 +00:00
Daniel Volz
75c201cab5
fix: keep med detail stock and package values consistent ( #249 )
2026-02-21 15:47:44 +01:00
github-actions[bot]
74f079d13e
chore: update test count badges [skip ci]
2026-02-21 14:28:27 +00:00
Daniel Volz
fd3b770a81
fix: improve mobile edit modal scrolling behavior ( #247 )
2026-02-21 15:24:57 +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>
v1.13.0
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
8de54b9065
docs: sync README feature list with recent app changes ( #241 )
2026-02-20 19:50:55 +01:00
Daniel Volz
b489e1e117
fix: keep mobile med detail actions visible while scrolling ( #240 )
2026-02-20 19:31:59 +01:00
Daniel Volz
8c97abd3c9
Merge branch 'main' of github.com:DanielVolz/medassist-ng
...
* 'main' of github.com:DanielVolz/medassist-ng:
chore: update test count badges [skip ci]
2026-02-20 18:58:44 +01:00
Daniel Volz
2eec415af6
docs: enforce hard PR scope and size splitting rule in copilot instructions
2026-02-20 18:56:55 +01:00
github-actions[bot]
243a46f960
chore: update test count badges [skip ci]
2026-02-20 17:56:42 +00: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
e41efdf98b
fix: disable nginx temp file buffering for proxied responses ( #230 )
...
Replace increased proxy buffer sizes with proxy_max_temp_file_size 0
to stream upstream responses directly to clients instead of buffering
to temp files. Eliminates warnings for large medication images without
increasing per-connection RAM usage.
2026-02-16 22:03:11 +01:00
Daniel Volz
cefac8cc4e
fix: nginx proxy buffering warnings and LOG_LEVEL propagation ( #229 )
...
- Increase proxy buffer sizes to prevent upstream image responses being
buffered to temporary files (16k header + 8x256k body + 512k busy)
- Add env_file to frontend service in docker-compose.dev.yml for LOG_LEVEL
- Normalize LOG_LEVEL in nginx-entrypoint.sh (case-insensitive, trim whitespace)
- Add startup logging showing LOG_LEVEL → access_log mapping
Closes #226
2026-02-16 21:52:03 +01:00
Daniel Volz
779870960c
fix: frontend UI polish — tooltips, planner checkbox, settings layout ( #228 )
...
- Fix mobile tooltip positioning (above icon instead of centered)
- Place planner checkbox and send-now button on same row
- Move settings tooltips beside input fields instead of overlapping
- Fix input-with-tooltip layout for narrow screens
- Add daily/everyNDays i18n keys for dose frequency display
- Fix lint formatting in page components
Closes #225
2026-02-16 21:51:51 +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
dependabot[bot]
39e9ebbf28
build(deps): bump the minor-and-patch group in /frontend with 3 updates ( #221 )
...
Bumps the minor-and-patch group in /frontend with 3 updates: [i18next](https://github.com/i18next/i18next ), [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ) and [jsdom](https://github.com/jsdom/jsdom ).
Updates `i18next` from 25.8.7 to 25.8.10
- [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.7...v25.8.10 )
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 )
Updates `jsdom` from 28.0.0 to 28.1.0
- [Release notes](https://github.com/jsdom/jsdom/releases )
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md )
- [Commits](https://github.com/jsdom/jsdom/compare/28.0.0...28.1.0 )
---
updated-dependencies:
- dependency-name: i18next
dependency-version: 25.8.10
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@biomejs/biome"
dependency-version: 2.4.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: jsdom
dependency-version: 28.1.0
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:06 +01:00
dependabot[bot]
41b20bb4e6
build(deps): bump actions/github-script from 7 to 8 ( #220 )
...
Bumps [actions/github-script](https://github.com/actions/github-script ) from 7 to 8.
- [Release notes](https://github.com/actions/github-script/releases )
- [Commits](https://github.com/actions/github-script/compare/v7...v8 )
---
updated-dependencies:
- dependency-name: actions/github-script
dependency-version: '8'
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-16 19:05:55 +01:00
dependabot[bot]
f9c51956d5
build(deps-dev): bump @biomejs/biome from 2.3.15 to 2.4.1 ( #219 )
...
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@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
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-16 19:05:41 +01:00
Daniel Volz
543b42b540
docs: add mandatory PR metadata fields to release-manager agent ( #218 )
...
- Add PR Metadata section with assignee, label, and project requirements
- Update gh pr create command template to include --assignee, --label, --project flags
- Add label mapping table for branch prefix to label type
- Update workflow summary to mention metadata fields
2026-02-15 23:52:15 +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
v1.12.0
2026-02-15 23:23:38 +01:00
Daniel Volz
c47a35d642
fix: use COPY --chmod instead of RUN chmod in frontend Dockerfile ( #214 )
...
The nginx-unprivileged base image runs as non-root, so RUN chmod
on / fails with 'Operation not permitted'. Use COPY --chmod=755
to set the executable bit at build time instead.
v1.11.1
2026-02-14 21:12:51 +01:00
Daniel Volz
d8d8c4a07e
chore: release v1.11.1 ( #213 )
2026-02-14 21:07:14 +01:00
Daniel Volz
3f041f26aa
feat: respect LOG_LEVEL in frontend nginx container ( #212 )
...
Add entrypoint wrapper that translates LOG_LEVEL into nginx
access_log control. When LOG_LEVEL is warn or higher, nginx
access logs are suppressed. The frontend container now receives
LOG_LEVEL via env_file (.env) — no new env vars needed.
2026-02-14 21:04:45 +01:00
Daniel Volz
1e043c8bf3
chore: release v1.11.0 ( #210 )
2026-02-14 20:33:54 +01:00
Daniel Volz
a016e45ef2
feat: frontend LOG_LEVEL support via logger utility ( #209 )
...
- Inject LOG_LEVEL at build time via Vite define (__LOG_LEVEL__, default: warn)
- Create frontend logger utility (frontend/src/utils/logger.ts) mirroring backend API
- Replace all console.error calls with log.error in MedicationsPage, AppContext, Auth
- Supports levels: silent > error > warn > info > debug
Closes #205
v1.11.0
2026-02-14 20:28:06 +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
6ff0ad2745
fix: mobile modal UX improvements (delete confirm, browser-back, z-index) ( #206 )
...
- Replace browser confirm() with ConfirmModal for delete confirmation
- Add dedicated history entry for delete dialog so browser back dismisses it
- Track unsaved-changes warning source to restore correct context on cancel
- Add overlayClassName prop to ConfirmModal for nested z-index layering
- Add .nested-confirm CSS class for proper modal stacking
- Add i18n keys for delete confirmation dialog (EN + DE)
Closes #202
2026-02-14 20:17:01 +01:00
Daniel Volz
0ffab23b6d
feat: add back button in medication edit header ( #201 )
2026-02-14 19:22:37 +01:00
github-actions[bot]
b4ddf9fd65
chore: update test count badges [skip ci]
2026-02-14 18:12:36 +00: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
edf42bb068
fix: show reminder icon per intake dose in schedule ( #198 )
...
* fix: show reminder icon per intake dose in schedule
* test: align schedule reminder icon test with intake-level flag
2026-02-14 18:53:52 +01:00
github-actions[bot]
e2c274014f
chore: update test count badges [skip ci]
2026-02-14 17:47:54 +00:00
Daniel Volz
732a28dcc5
chore: sync copilot guidance and docker dev proxy defaults ( #199 )
2026-02-14 18:43:49 +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]
bb693243c1
build(deps): bump github/codeql-action from 3 to 4 ( #176 )
...
Bumps [github/codeql-action](https://github.com/github/codeql-action ) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: '4'
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:28:14 +01:00
dependabot[bot]
fcc84e2d0b
build(deps): bump actions/upload-artifact from 4 to 6 ( #174 )
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: '6'
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:28:10 +01:00
dependabot[bot]
91c55f8cc3
build(deps): bump docker/build-push-action from 5 to 6 ( #172 )
...
Bumps [docker/build-push-action](https://github.com/docker/build-push-action ) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-version: '6'
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:27:58 +01:00
dependabot[bot]
12d1fbbb30
build(deps-dev): bump @vitejs/plugin-react in /frontend ( #178 )
...
Bumps [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react ) from 4.7.0 to 5.1.4.
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases )
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.1.4/packages/plugin-react )
---
updated-dependencies:
- dependency-name: "@vitejs/plugin-react"
dependency-version: 5.1.4
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:27:46 +01:00
dependabot[bot]
836c48264f
build(deps-dev): bump jsdom from 27.4.0 to 28.0.0 in /frontend ( #183 )
...
Bumps [jsdom](https://github.com/jsdom/jsdom ) from 27.4.0 to 28.0.0.
- [Release notes](https://github.com/jsdom/jsdom/releases )
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md )
- [Commits](https://github.com/jsdom/jsdom/compare/27.4.0...28.0.0 )
---
updated-dependencies:
- dependency-name: jsdom
dependency-version: 28.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>
2026-02-13 20:27:42 +01:00