Major Release (Breaking Changes)
⚠ This release has breaking changes for existing deployments. Read "Breaking Changes" and "Upgrading from 1.x" below before you pull the new images.
Upgrading from 1.x
- Back up your database first:
docker exec mediqux_postgres pg_dump -U mediqux_user mediqux_db > backup.sql
- Download the new
docker-compose.ymland.env.example. - Carry over your existing
POSTGRES_PASSWORD,JWT_SECRET,PUID/PGIDinto the new.env(setAPP_PORTto whatever your oldFRONTEND_DOCKER_PORTwas). docker compose pull && docker compose up -d. Migrations will run automatically.
⚠ Breaking Changes
- Single exposed port now (
APP_PORT) -BACKEND_URL,MEDIQUX_API_URL,FRONTEND_DOCKER_PORT,BACKEND_DOCKER_PORTare gone. POST/PUT /api/userstake apatientIdsarray now, not a singlepatientId.- The unused
doctorrole has been removed fromusers. - Self-service signup only works for the very first account; every account after that is admin-created.
- License changed from CC BY-NC-SA 4.0 to AGPLv3.
Added
- Full React/Vite/Tailwind frontend rewrite (old Bootstrap frontend kept under
frontend-legacy/). - A user account can be linked to multiple patients.
- Patient detail page now aggregates that patient's appointments, prescriptions, lab reports, diagnostic studies, and active medications.
- New Settings page with selectable accent color.
- Real backend connectivity indicator in the sidebar.
- Inline form validation (errors show as you leave a field, not just on failed save).
POSTGRES_HOSTto point at an external PostgreSQL instance.
Security
- Fixed missing ownership checks on several read/write endpoints that let a scoped account access another patient's records.
- Frontend container now runs as a non-root user.
Bug Fixes
- Correct "Invalid credentials" message on bad login (was showing "Session expired").
- Logout now returns to the dashboard, not the page you logged out from.
- Two prescriptions of the same medication no longer share one status record.
- Cleaner 401 on missing/expired tokens, distinguishable from an invalid one.
- Fresh installs now get a real first-time setup screen to create the admin account.
- Uploaded PDFs/attachments are no longer fetchable without auth via a raw static path.
TRUST_PROXY_HOPSfixes rate limiting behind the new single-port/Caddy setup.
Code Quality
- Duplicated RBAC patient-scoping and several other repeated patterns consolidated into shared backend helpers.
Full details in CHANGELOG.md.
Full Changelog: 1.0.13...2.0.0