diff --git a/CHANGELOG.md b/CHANGELOG.md index b1b679f..57da0a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,15 @@ for how releases are cut and published. ## [Unreleased] ### Added +- **Patients table pagination.** The Patients list now paginates at 10 rows per + page (COSS `Pagination`), so large clinics no longer scroll endlessly. +- **Per-patient record history.** The patient detail sheet shows an audit + timeline of every add/change on that chart. `GET /api/activity/patient/:fileNumber`. +- **Patient summary PDF.** A **Download summary** action on the patient sheet + produces a clean, printable one-page clinical summary (browser "Save as PDF"). +- **AI setup notice.** A single, dismissible heads-up appears above the chat + input on a fresh chat when no AI provider (API key or local Ollama) is + configured; it clears itself once you send a message. - **Version & update awareness.** `GET /api/version` reports the running version and checks GitHub Releases for a newer one; Settings → **About & updates** shows the current/latest version, and an optional, dismissible banner appears when an @@ -22,9 +31,22 @@ for how releases are cut and published. fallback where the browser doesn't support it. ### Changed +- **Messages thread** rebuilt on the shadcn `Message` / `Bubble` / `Attachment` + components (COSS colour tokens preserved) for a cleaner conversation surface. +- **Patient status badges** now use semantic colours (active → success, + inpatient → info) instead of a flat secondary badge. - `docker-compose.yml` references the published images (with a build fallback) and no longer bakes a fixed API URL into the frontend. +### Fixed +- **AI import approval card.** `previewImport` now declares a concrete record + schema so Google Gemini emits a real tool call (and the approval card renders) + instead of dumping a `tool_code`/JSON wall as text. The system prompt also + forbids printing tool calls and re-listing fields. +- **Settings network address** no longer shows a bogus container IP / "Error" + under Docker — the `/api/network` endpoint now skips container-internal + interfaces, and the panel falls back to the helpful LAN hint. + ## [0.1.0] — 2026-06-26 Initial baseline: clinician AI-chat UI wired to the TypeScript/Express/Postgres diff --git a/CLAUDE.md b/CLAUDE.md index 02984fb..0f4b56f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -106,6 +106,22 @@ with the area when useful (e.g. `frontend:` / `backend:`). End commit messages w `.env` files are git-ignored (only `.env.example` is tracked) — never commit real secrets. +### Always release after pushing + +When you finish a unit of work and **push to `main`**, you must **also cut a release** — temetro +ships as prebuilt Docker images, so an un-released change never reaches a self-hosted clinic. After +the push: + +1. **Bump the version** to the new `X.Y.Z` in **all three** `package.json` files (root, + `backend/`, `frontend/`) — they must stay in sync (`GET /api/version` reports it). +2. **Update `CHANGELOG.md`** (move `Unreleased` notes under a dated `## [X.Y.Z]` heading). +3. **Publish the images to Docker Hub** as `khalidxv/temetro-backend` and + `khalidxv/temetro-frontend`, tagged `X.Y.Z` **and** `latest`. The tag-triggered + `release` workflow does this automatically (`git tag vX.Y.Z && git push origin main --tags`). + +See [`RELEASING.md`](./RELEASING.md) for the full checklist. **Never** consider work "done and +pushed" without the version bump + image publish. + ## Customized Next.js (frontend) The `frontend/` app runs a **customized Next.js 16** whose APIs/conventions differ from public docs.