dependabot[bot]
19d3f83aef
build(deps): bump @fastify/static from 8.3.0 to 9.0.0 in /backend ( #187 )
...
Bumps [@fastify/static](https://github.com/fastify/fastify-static ) from 8.3.0 to 9.0.0.
- [Release notes](https://github.com/fastify/fastify-static/releases )
- [Commits](https://github.com/fastify/fastify-static/compare/v8.3.0...v9.0.0 )
---
updated-dependencies:
- dependency-name: "@fastify/static"
dependency-version: 9.0.0
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:30 +01:00
dependabot[bot]
6922a856c0
build(deps): bump @fastify/cors from 10.1.0 to 11.2.0 in /backend ( #186 )
...
Bumps [@fastify/cors](https://github.com/fastify/fastify-cors ) from 10.1.0 to 11.2.0.
- [Release notes](https://github.com/fastify/fastify-cors/releases )
- [Commits](https://github.com/fastify/fastify-cors/compare/v10.1.0...v11.2.0 )
---
updated-dependencies:
- dependency-name: "@fastify/cors"
dependency-version: 11.2.0
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:26 +01:00
dependabot[bot]
45a319dc06
build(deps): bump @fastify/cookie from 10.0.1 to 11.0.2 in /backend ( #184 )
...
Bumps [@fastify/cookie](https://github.com/fastify/fastify-cookie ) from 10.0.1 to 11.0.2.
- [Release notes](https://github.com/fastify/fastify-cookie/releases )
- [Commits](https://github.com/fastify/fastify-cookie/compare/v10.0.1...v11.0.2 )
---
updated-dependencies:
- dependency-name: "@fastify/cookie"
dependency-version: 11.0.2
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:11:18 +01:00
dependabot[bot]
81ac12ba60
build(deps): bump the minor-and-patch group in /frontend with 7 updates ( #177 )
...
Bumps the minor-and-patch group in /frontend with 7 updates:
| Package | From | To |
| --- | --- | --- |
| [i18next-browser-languagedetector](https://github.com/i18next/i18next-browser-languageDetector ) | `8.2.0` | `8.2.1` |
| [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom ) | `7.12.0` | `7.13.0` |
| [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ) | `2.3.12` | `2.3.15` |
| [@playwright/test](https://github.com/microsoft/playwright ) | `1.58.1` | `1.58.2` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8 ) | `4.0.17` | `4.0.18` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `7.3.0` | `7.3.1` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) | `4.0.17` | `4.0.18` |
Updates `i18next-browser-languagedetector` from 8.2.0 to 8.2.1
- [Changelog](https://github.com/i18next/i18next-browser-languageDetector/blob/master/CHANGELOG.md )
- [Commits](https://github.com/i18next/i18next-browser-languageDetector/compare/v8.2.0...v8.2.1 )
Updates `react-router-dom` from 7.12.0 to 7.13.0
- [Release notes](https://github.com/remix-run/react-router/releases )
- [Changelog](https://github.com/remix-run/react-router/blob/main/packages/react-router-dom/CHANGELOG.md )
- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@7.13.0/packages/react-router-dom )
Updates `@biomejs/biome` from 2.3.12 to 2.3.15
- [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.3.15/packages/@biomejs/biome )
Updates `@playwright/test` from 1.58.1 to 1.58.2
- [Release notes](https://github.com/microsoft/playwright/releases )
- [Commits](https://github.com/microsoft/playwright/compare/v1.58.1...v1.58.2 )
Updates `@vitest/coverage-v8` from 4.0.17 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/coverage-v8 )
Updates `vite` from 7.3.0 to 7.3.1
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v7.3.1/packages/vite )
Updates `vitest` from 4.0.17 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/vitest )
---
updated-dependencies:
- dependency-name: i18next-browser-languagedetector
dependency-version: 8.2.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: react-router-dom
dependency-version: 7.13.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: "@biomejs/biome"
dependency-version: 2.3.15
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@playwright/test"
dependency-version: 1.58.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@vitest/coverage-v8"
dependency-version: 4.0.18
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: vite
dependency-version: 7.3.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: vitest
dependency-version: 4.0.18
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-13 20:11:01 +01:00
dependabot[bot]
6c10f9af0c
build(deps): bump the minor-and-patch group in /backend with 10 updates ( #182 )
...
Bumps the minor-and-patch group in /backend with 10 updates:
| Package | From | To |
| --- | --- | --- |
| [@fastify/multipart](https://github.com/fastify/fastify-multipart ) | `9.3.0` | `9.4.0` |
| [@libsql/client](https://github.com/tursodatabase/libsql-client-ts/tree/HEAD/packages/libsql-client ) | `0.10.0` | `0.17.0` |
| [argon2](https://github.com/ranisalt/node-argon2 ) | `0.40.3` | `0.44.0` |
| [fastify](https://github.com/fastify/fastify ) | `5.7.3` | `5.7.4` |
| [openid-client](https://github.com/panva/openid-client ) | `6.8.1` | `6.8.2` |
| [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ) | `2.3.12` | `2.3.15` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8 ) | `4.0.16` | `4.0.18` |
| [drizzle-kit](https://github.com/drizzle-team/drizzle-orm ) | `0.31.8` | `0.31.9` |
| [supertest](https://github.com/ladjs/supertest ) | `7.1.4` | `7.2.2` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) | `4.0.16` | `4.0.18` |
Updates `@fastify/multipart` from 9.3.0 to 9.4.0
- [Release notes](https://github.com/fastify/fastify-multipart/releases )
- [Commits](https://github.com/fastify/fastify-multipart/compare/v9.3.0...v9.4.0 )
Updates `@libsql/client` from 0.10.0 to 0.17.0
- [Release notes](https://github.com/tursodatabase/libsql-client-ts/releases )
- [Changelog](https://github.com/tursodatabase/libsql-client-ts/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tursodatabase/libsql-client-ts/commits/v0.17.0/packages/libsql-client )
Updates `argon2` from 0.40.3 to 0.44.0
- [Release notes](https://github.com/ranisalt/node-argon2/releases )
- [Commits](https://github.com/ranisalt/node-argon2/commits/v0.44.0 )
Updates `fastify` from 5.7.3 to 5.7.4
- [Release notes](https://github.com/fastify/fastify/releases )
- [Commits](https://github.com/fastify/fastify/compare/v5.7.3...v5.7.4 )
Updates `openid-client` from 6.8.1 to 6.8.2
- [Release notes](https://github.com/panva/openid-client/releases )
- [Changelog](https://github.com/panva/openid-client/blob/main/CHANGELOG.md )
- [Commits](https://github.com/panva/openid-client/compare/v6.8.1...v6.8.2 )
Updates `@biomejs/biome` from 2.3.12 to 2.3.15
- [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.3.15/packages/@biomejs/biome )
Updates `@vitest/coverage-v8` from 4.0.16 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/coverage-v8 )
Updates `drizzle-kit` from 0.31.8 to 0.31.9
- [Release notes](https://github.com/drizzle-team/drizzle-orm/releases )
- [Commits](https://github.com/drizzle-team/drizzle-orm/compare/drizzle-kit@0.31.8...drizzle-kit@0.31.9 )
Updates `supertest` from 7.1.4 to 7.2.2
- [Release notes](https://github.com/ladjs/supertest/releases )
- [Commits](https://github.com/ladjs/supertest/compare/v7.1.4...v7.2.2 )
Updates `vitest` from 4.0.16 to 4.0.18
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/vitest )
---
updated-dependencies:
- dependency-name: "@fastify/multipart"
dependency-version: 9.4.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: "@libsql/client"
dependency-version: 0.17.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: argon2
dependency-version: 0.44.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: fastify
dependency-version: 5.7.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: openid-client
dependency-version: 6.8.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@biomejs/biome"
dependency-version: 2.3.15
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: "@vitest/coverage-v8"
dependency-version: 4.0.18
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: drizzle-kit
dependency-version: 0.31.9
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: minor-and-patch
- dependency-name: supertest
dependency-version: 7.2.2
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: minor-and-patch
- dependency-name: vitest
dependency-version: 4.0.18
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-13 20:10:51 +01:00
dependabot[bot]
6eb7bf6d0d
build(deps-dev): bump lint-staged from 15.5.2 to 16.2.7 ( #175 )
...
Bumps [lint-staged](https://github.com/lint-staged/lint-staged ) from 15.5.2 to 16.2.7.
- [Release notes](https://github.com/lint-staged/lint-staged/releases )
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md )
- [Commits](https://github.com/lint-staged/lint-staged/compare/v15.5.2...v16.2.7 )
---
updated-dependencies:
- dependency-name: lint-staged
dependency-version: 16.2.7
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:10:39 +01:00
dependabot[bot]
2a97a78810
build(deps-dev): bump @biomejs/biome from 2.3.12 to 2.3.15 ( #173 )
...
Bumps [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome ) from 2.3.12 to 2.3.15.
- [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.3.15/packages/@biomejs/biome )
---
updated-dependencies:
- dependency-name: "@biomejs/biome"
dependency-version: 2.3.15
dependency-type: direct:development
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-02-13 20:10:28 +01:00
dependabot[bot]
92ea6d5f8b
build(deps): bump actions/setup-node from 4 to 6 ( #171 )
...
Bumps [actions/setup-node](https://github.com/actions/setup-node ) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases )
- [Commits](https://github.com/actions/setup-node/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/setup-node
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:10:05 +01:00
dependabot[bot]
0c83648a56
build(deps): bump actions/checkout from 4 to 6 ( #170 )
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/v4...v6 )
---
updated-dependencies:
- dependency-name: actions/checkout
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:08:56 +01:00
Daniel Volz
77b0f3a0f9
chore: improve dev tooling (CI tests, dependabot, coverage) ( #169 )
...
- Add frontend unit tests with coverage to CI test workflow
- Add dependabot.yml for automated dependency updates (npm + GitHub Actions)
- Add backend coverage thresholds (60/65/50/60) to vitest.config.ts
- Exclude services/ and logger from coverage (untestable schedulers)
2026-02-13 19:52:33 +01:00
Daniel Volz
82d8bec91b
chore: add noNestedTernary biome rule (warn) ( #168 )
...
- Enforce no nested ternary expressions via biome linter
- No existing code violations found
- Complements clarity-over-brevity coding guideline
2026-02-13 19:32:17 +01:00
Daniel Volz
7122121c12
chore: release v1.10.3 ( #167 )
2026-02-13 19:02:38 +01:00
Daniel Volz
36ee80b554
chore: add workflow to auto-move project items to Done on close/merge ( #165 )
...
- New workflow project-auto-done.yml triggers on issue close and PR merge
- Uses GraphQL to find the project item and update Status to Done
- Handles both issues and pull requests with proper type detection
- Skips gracefully if item is not on the board or already Done
- Update release-manager.agent.md to reflect automation (manual is now fallback)
v1.10.3
2026-02-13 18:45:51 +01:00
Daniel Volz
33342e7e25
docs: add mandatory project board update steps to release-manager ( #164 )
...
- Add critical safety rule: always verify project board status after merge
- Correct misleading claim that Closes #N auto-moves project status (it doesn't)
- Add concrete GraphQL mutation commands for moving items to Done
- Include known project field IDs for Status column
2026-02-13 18:42:08 +01:00
github-actions[bot]
19d5ef71ab
chore: update test count badges [skip ci]
2026-02-13 17:37:51 +00:00
Daniel Volz
5c09f97cb3
test: improve frontend test coverage ( #163 )
...
- Export DashboardPage helper functions for testability
- Add new test files: App, SharedSchedule, AppContext, UnsavedChangesContext, useUnsavedChangesWarning
- Expand existing test coverage for Auth, MedDetailModal, MobileEditModal, DashboardPage, MedicationsPage, PlannerPage, and more
- Add edge case and error handling tests across components, hooks, and pages
2026-02-13 18:34:19 +01:00
Copilot
0b0472f2f5
Fix OIDC token exchange behind HTTPS reverse proxy ( #162 )
...
* Initial plan
* Fix OIDC callback URL construction for HTTPS reverse proxy
- Replace hardcoded http:// URL with OIDC_REDIRECT_URI from environment
- Build complete callback URL with query parameters for proper validation
- Fixes token exchange 401 errors when running behind HTTPS reverse proxy
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
* Update OIDC_REDIRECT_URI documentation to clarify full URL requirement
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
* fix: format oidc.ts to pass biome check
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: DanielVolz <3275994+DanielVolz@users.noreply.github.com >
Co-authored-by: Daniel Volz <mail@danielvolz.org >
2026-02-13 18:29:33 +01:00
dependabot[bot]
38f3533dd9
build(deps-dev): bump qs from 6.14.1 to 6.14.2 in /backend ( #158 )
...
Bumps [qs](https://github.com/ljharb/qs ) from 6.14.1 to 6.14.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/ljharb/qs/compare/v6.14.1...v6.14.2 )
---
updated-dependencies:
- dependency-name: qs
dependency-version: 6.14.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-12 21:43:41 +01:00
dependabot[bot]
463c756447
build(deps): bump fast-xml-parser and @aws-sdk/client-ses in /backend ( #157 )
...
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser ) and [@aws-sdk/client-ses](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ses ). These dependencies needed to be updated together.
Updates `fast-xml-parser` from 5.2.5 to 5.3.4
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases )
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md )
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.2.5...v5.3.4 )
Updates `@aws-sdk/client-ses` from 3.956.0 to 3.988.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-ses/CHANGELOG.md )
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.988.0/clients/client-ses )
---
updated-dependencies:
- dependency-name: fast-xml-parser
dependency-version: 5.3.4
dependency-type: indirect
- dependency-name: "@aws-sdk/client-ses"
dependency-version: 3.988.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-12 21:43:35 +01:00
Daniel Volz
4275dca838
fix: improve modal scroll lock and e2e script workflow ( #156 )
2026-02-12 21:43:28 +01:00
Daniel Volz
6072d8eb2e
docs: consolidate copilot governance and add medassist skills ( #160 )
2026-02-12 21:18:50 +01:00
Daniel Volz
98939877db
feat: expand Playwright E2E coverage ( #155 )
...
* feat: comprehensive Playwright E2E test rewrite
Rewrite all E2E tests with correct CSS selectors, add new spec files,
and implement robust auth handling to work within backend rate limits.
Changes:
- Rewrite fixtures/index.ts with JWT-based /auth/me mock to avoid
10 req/min rate limit on /auth/me during test runs
- Rewrite auth.setup.ts with offline JWT validity check to reuse
existing auth state across runs (saves login rate-limit budget)
- Rewrite auth.spec.ts (6 tests) - login page, fields, submit,
redirect guard, invalid credentials, login/register toggle
- Rewrite dashboard.spec.ts (8 tests) - header, nav tabs,
navigation, overview/schedules sections, days selector, redirect
- Rewrite medications.spec.ts (8 tests) - form fields, stock
inventory, package type toggle, intake schedule, save/cancel,
unsaved changes guard
- Rewrite settings.spec.ts (12 tests) - language, notification
matrix, thresholds, calculation mode, toggle switch, export/import,
user menu navigation
- Create planner.spec.ts (9 tests) - form, date inputs, calculate,
reset, checkbox, submit, tab state, eyebrow heading
- Create schedule.spec.ts (12 tests) - timeline, days selector,
past/future toggles, day blocks, today highlight, collapse/expand,
overview table, share button
- Update playwright.config.ts: remove mobile projects, enable
webServer section for CI
- Add .github/workflows/e2e.yml CI workflow for Playwright tests
Total: 57 E2E tests across 6 spec files, all passing consistently
across 5+ consecutive runs without backend restart.
Closes #154
* feat: add comprehensive E2E data tests with medication CRUD, dashboard, planner, schedule
Add 48 new Playwright E2E tests covering real medication data scenarios:
- medication-crud: 14 tests for create/edit/delete/list via UI form
- dashboard-data: 13 tests for overview table, timeline, dose tracking
- planner-data: 9 tests for demand calculator with results/status chips
- schedule-data: 11 tests for timeline, collapse/expand, dose mark/undo
Infrastructure improvements:
- Add API helpers (createMedicationViaAPI, deleteMedicationViaAPI,
deleteAllMedicationsViaAPI) with retry logic for rate-limit resilience
- Configure chromium-data project for serial execution with retry:1
- Add /auth/me mock to avoid rate-limit exhaustion on auth endpoint
- Increase navigateTo reliability with networkidle waits
- Increase auth token validity threshold from 2 to 10 minutes
- Make backend rate limit configurable via RATE_LIMIT_MAX env var
- Set RATE_LIMIT_MAX=300 in dev docker-compose for E2E test support
Total suite: 57 empty-state + 48 data tests = 105 tests (chromium)
* test: add E2E tests for medication editing, stock status, and share schedule
- medication-edit.spec.ts: 10 tests covering generic name, notes,
taken-by add/remove, expiry date, refill, intake schedule editing,
adding intake rows, reminder toggle, and package type changes
- stock-status.spec.ts: 12 tests verifying dashboard shows correct
status chips (High/Normal/Warning/Danger) for different stock levels,
overview table, reorder card, detail modal, and planner integration
- share-schedule.spec.ts: 10 tests for taken-by badges, share button,
share dialog, link generation, shared schedule page navigation,
dose tracking on shared page, and notes display
- fixtures/index.ts: add createShareTokenViaAPI, updateSettingsViaAPI
helpers; expand createMedicationViaAPI with takenBy, notes, expiryDate
- playwright.config.ts: update testMatch/testIgnore for new test files
- docker-compose.dev.yml: increase RATE_LIMIT_MAX to 1000 for E2E tests
* docs: refine release-manager instructions for CLI safety and commit-linked release notes
* fix: resolve PR155 CI failures for frontend lint and e2e proxy
* fix: stabilize auth-related e2e checks in CI
2026-02-12 20:06:11 +01:00
Copilot
0f6a580ceb
feat: add GitHub Project automation for feature request tracking ( #114 )
...
* Initial plan
* feat: add GitHub Project automation for feature request tracking
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-10 17:50:58 +01:00
Daniel Volz
30271915d3
chore: release v1.10.2 ( #153 )
2026-02-10 16:44:21 +01:00
Daniel Volz
1c50e9395f
fix: past days UX improvements and clear missed logic ( #152 )
...
- Render past days above 'Show past days' toggle when expanded
- Auto-scroll to today when expanding past days
- Remove blue hover color from past day dividers (use opacity instead)
- Fix 'All taken' logic: green only for manually taken doses
- Yellow styling stays for days with non-taken doses (even after dismissal)
- Warning icon disappears after 'Clear missed' (dismissed doses not counted)
v1.10.2
2026-02-10 16:42:23 +01:00
Daniel Volz
e335729399
fix: prevent badge workflow push rejection on concurrent runs ( #151 )
...
Add git pull --rebase before push to handle cases where main moved
between checkout and push (e.g., two Docker builds triggering badge
updates simultaneously). Also add concurrency group to cancel
duplicate runs.
2026-02-09 21:09:45 +01:00
github-actions[bot]
399d63caec
chore: update test count badges [skip ci]
2026-02-09 20:02:55 +00:00
Daniel Volz
ffbe957f41
chore: release v1.10.1 ( #150 )
2026-02-09 21:01:42 +01:00
Daniel Volz
749e92b135
fix: bottle total capacity backward compatibility ( #149 )
...
* fix: bottle total capacity shows dash for old medications
Old medications created before the totalPills column was added had
totalPills=null. This caused two issues:
1. MedDetailModal showed '—' instead of the actual capacity in the
Package Details section (while the Stock section showed correct values)
2. Edit form showed an empty Total Capacity field on mobile
Fix: Fall back to packageSize (looseTablets for bottles) when totalPills
is null, matching the behavior already used in MedicationsPage and the
stock display section.
Added test for backward compatibility scenario.
* chore: retrigger CI
v1.10.1
2026-02-09 20:59:30 +01:00
Daniel Volz
5093f96e8a
fix: intake reminder catch-up for missed advance notification window ( #148 )
...
When the scheduler missed the exact notification minute (due to system sleep,
high load, or GC pauses), the advance reminder was permanently lost. A dead zone
existed between the notify time and the intake time where neither advance nor
missed-intake logic would trigger.
Changes:
- getUpcomingIntakes now catches up intakes where the notify window passed but
the intake time is still in the future
- Seeding logic sends a catch-up notification for recently missed intakes
(within grace period) instead of silently seeding state
- Added 4 tests covering catch-up scenarios
2026-02-09 20:58:08 +01:00
github-actions[bot]
bd6eccdb22
chore: update test count badges [skip ci]
2026-02-09 18:37:26 +00:00
Daniel Volz
9d289d45c9
chore: release v1.10.0 ( #147 )
2026-02-09 19:36:04 +01:00
Daniel Volz
3ec1460c4e
feat: frontend improvements - shared schedule, bottle type, settings UI, planner notifications ( #146 )
...
- Rewrite SharedSchedule to match DashboardPage rendering with time-based consumption
- Add bottle package type support across all views (MedDetail, Refill, Planner, Dashboard)
- Redesign settings page with colored threshold chips, validation, and stock reminder display
- Add shareStockStatus toggle and send manual reminder button
- Pill/pills singular/plural consistency across all views
- Planner send notification via push (Shoutrrr) in addition to email
- Stock overflow warning and past-missed day styling
- Update README: bottles in Smart Inventory, push in Trip Planner, new ENV section
- 708 passing frontend tests including new coverage for all changes
v1.10.0
2026-02-09 19:33:54 +01:00
Daniel Volz
f56f2b7c88
feat: backend improvements - reminder tracking, share stock status, planner notifications ( #145 )
...
- Separate stock/intake reminder tracking in DB with dedicated columns
- Add shareStockStatus setting to control stock visibility on shared links
- Rewrite planner notification to support both email and Shoutrrr push
- Add push notification footer text for intake and stock reminders
- New DB migrations: stock_reminder_tracking (0006), share_stock_status (0007)
- Update backend i18n with demandCalculator section and critically low text
- Add 514 passing backend tests including new coverage for all changes
2026-02-09 19:32:32 +01:00
github-actions[bot]
8ff652459d
chore: update test count badges [skip ci]
2026-02-09 07:15:26 +00:00
Daniel Volz
fb937e795b
fix: planner usage calculation uses user-selected start date ( #144 )
...
The Demand Calculator used max(now, start) as the effective planner start,
which caused asymmetric counting when the current time fell between morning
and evening doses. For example, at 15:00 a medication with 07:00+20:00
intakes over 3 days showed 5 pills (2+3) instead of 6 (3+3) because the
morning dose on the start day was skipped while the evening was counted.
Changes:
- Use the user-selected start date directly instead of max(now, start)
- Optimize calculateUsageInRange to skip ahead to the relevant range
instead of iterating from the original blister start date
- Add regression tests for asymmetric counting and blister-before-range
2026-02-09 08:10:13 +01:00
Daniel Volz
6d6f906a9a
chore: update CI workflow and agent configuration ( #143 )
...
- docker-build.yml: build on tags + main, set latest only on tags
- release-manager.agent.md: add one-PR-per-feature/fix rule
2026-02-08 22:17:03 +01:00
Daniel Volz
3de1b2ef0c
fix: UI polish for intake form, dashboard cards, and schedule ( #142 )
...
- Intake form: replace remind checkbox with bell icon + toggle switch
- Intake form: smart takenBy dropdown based on medication's people
- Dashboard: hide DETAILS row for pill bottles on mobile cards
- Dashboard: use status-chip with icons in schedule view (past/today/future)
- Dashboard: reduce spacing between icons and status chips on mobile
- MedDetailModal: show package type in PACKAGE DETAILS heading
- PlannerPage: show dash for bottle blisters column
- Shorten Pill Bottle label in EN/DE translations
- Update related tests
2026-02-08 22:13:52 +01:00
Daniel Volz
b07b586eef
chore: replace console.log with structured logging ( #141 )
...
- Add startup logger (utils/logger.ts) with LOG_LEVEL support
- Add ServiceLogger type for scheduler functions
- Replace all console.log calls with leveled log methods
- Downgrade verbose scheduler info logs to debug level
- Remove unnecessary console.log in auth plugin
2026-02-08 22:09:27 +01:00
Daniel Volz
ffcd8983b4
revert: undo "fix: update backend and frontend images to use main tag" ( #140 )
...
This reverts commit cdf0088b0f .
2026-02-08 20:17:15 +00:00
daniel
cdf0088b0f
fix: update backend and frontend images to use 'main' tag
2026-02-08 19:47:23 +00:00
github-actions[bot]
152608731b
chore: update test count badges [skip ci]
2026-02-08 19:37:42 +00:00
Daniel Volz
291a90d401
chore: release v1.9.0 ( #139 )
2026-02-08 20:34:29 +01:00
Daniel Volz
8c5deed4c2
feat: theme dropdown with system preference and comprehensive bottle-type fixes ( #138 )
...
- Replace dark/light toggle with Light/Dark/System dropdown menu
- System theme follows OS prefers-color-scheme setting
- Apply theme dropdown to shared schedule page
- Fix 7 packageType (bottle) bugs across stock calc, share, refills, export/import
- Fix planner bottle-type stock calculation and display
- Fix dailyRate double-counting with per-intake takenBy
- Fix About modal update check stale caching
- Fix intake reminder past-intake seeding and push title
- Fix phantom DB path in drizzle.config.ts
- Fix mobile dose field visibility
- Make medication name clickable in dashboard reminder bar
- Improve planner checkbox UX with inline tooltip
- Add 20+ new tests covering all fixes
v1.9.0
2026-02-08 20:32:40 +01:00
github-actions[bot]
b19bcf02c2
chore: update test count badges [skip ci]
2026-02-08 16:32:40 +00:00
Daniel Volz
27a9910dbd
chore: release v1.8.8 ( #137 )
2026-02-08 17:29:37 +01:00
Daniel Volz
eb2e445398
fix: correct stock calculation for both manual and automatic modes ( #136 )
...
Manual mode: Use takenAt timestamp instead of dose date-only comparison
to correctly distinguish doses taken before vs after stock correction
on the same day. Add polling race condition guard (mutationInFlightRef)
so Take/Undo immediately reflects in dashboard stock.
Automatic mode: Grid-align effectiveStart to the medication schedule
and use hybrid consumed calculation (time-based + early-taken doses)
for accurate stock counting.
v1.8.8
2026-02-08 17:27:47 +01:00
Daniel Volz
61b8812808
ci: fix release workflow ordering and remove redundant workflows ( #135 )
...
- Tag builds now also set 'latest' Docker tag (fixes race condition where
main-push build could overwrite latest with older version)
- Remove duplicate release.yml (create-release job in docker-build.yml
already handles GitHub releases)
- Remove redundant version-bump.yml (release.sh already bumps versions
in the release PR)
- Change update-test-badges.yml trigger to workflow_run after successful
docker-build (prevents parallel execution and ensures correct ordering)
- Update agent instructions and CI documentation to reflect changes
2026-02-08 16:57:40 +01:00
Daniel Volz
f7838bd919
chore: release v1.8.7 ( #134 )
2026-02-08 15:14:14 +01:00
github-actions[bot]
b0fd3f4187
chore: update test count badges [skip ci]
2026-02-08 14:13:07 +00:00