Files
HealthLog/docs
Marc-André Bombeck 4537ff0d8e feat(medications): add a note to the medication (#1371)
Directions such as "30 to 60 minutes before food" had nowhere to go: a
medication carried no free text of its own, only the notes on a dose
change or a course. The medication now has one note, edited on the last
step of the wizard and shown under the name on the detail page, above
the dose actions on both card variants, under the picked medication in
the log-dose sheet, and per row in the take-all-due list. One
MedicationNote component renders it everywhere, in foreground text.

The note is sealed at rest in Medication.noteEncrypted (migration
0498_medication_note, lock-bounded), with no plaintext column. Create
and update take an optional `note`: trimmed, at most 500 characters, an
empty string or null clears it, absent keeps it. The wizard sends it on
an edit only when it changed, so an unrelated save never clears it. The
list and detail reads strip the ciphertext and answer `note`.

Both ends of the data path carry it: the backup (decrypted in a portable
file, ciphertext in a disaster-recovery file), the restore, the data
export, the key-rotation registry and script, and the MCP medication
schedule, resources and fetch, fenced as user text. The doctor report
and the FHIR export leave it out: it is the person's own reminder, and
the report has no selection for personal prose.

The size baselines rise by the one-line wiring of the field in the
medication page, detail tabs, cards, log-dose sheet, wizard step and
list read; the wizard payload grows by the field's own encode and
hydrate.
2026-11-14 09:30:40 +01:00
..
2026-06-19 22:20:31 +02:00

docs/ — internal reference + operator playbooks

The user-facing documentation lives at https://docs.healthlog.dev — that's the canonical surface for self-hosting guides, integration walkthroughs, AI-provider setup, and the doctor-report workflow.

The files in this directory are the internal operator playbooks, audit notes, and machine-readable specs that ship alongside the source:

  • api/ — the OpenAPI 3.1 spec for the native-client subset (iOS DTO codegen target). See api/README.md for the preview commands. Also home to the MCP-server contract: api/mcp-capabilities.md (tools, resources, prompts, write model) and api/mcp-skills.md (building a connector / skill).
  • ops/ — operator runbooks: deploy, backup / restore, encryption-key rotation, password reset and account recovery, env checks, TLS pinning, data repair. These are what an operator reaches for during an incident.
  • self-hosting/ — operator notes next to the code: getting-started.md (install and updates, the page the boot log points at), the TrueNAS, Unraid and Portainer installs with their catalog templates, Tailscale, the reverse proxy, horizontal scaling (HEALTHLOG_PROCESS_TYPE=web|worker|all), notification channels, the environment module, document sources and reproductive-health data. Includes self-hosting/mcp.md — enabling the off-by-default MCP connector and pointing Claude.ai / ChatGPT / Claude Desktop at it, and self-hosting/sso.md — OIDC SSO login: IdP setup, the identity-pinning security model, OIDC_ONLY consequences, and the break-glass runbook. Also self-hosting/geolite2.md — bringing your own offline GeoLite2 databases via GEOLITE2_DIR instead of sending login IPs to a third-party lookup. And self-hosting/account-sharing.md — letting one account on the instance open another's health record: the three access levels, the eight sections a grant can be narrowed to, managed profiles for somebody with no login and the guardians who look after them, what revocation does and does not undo, and which trust properties of the instance are unchanged by any of it. And self-hosting/support.md — reporting a problem: error ids, the support info every account can copy, the operator's redacted support report, and finding an error in the admin log.
  • using/ — notes on using the app that sit close to the code. using/search.md covers the command palette's record search: opening it, what it finds, how matching works, and its limits on very large and shared records. using/cycle-calendar-feed.md covers subscribing to the cycle forecast from Google, Apple or Outlook.
  • migration/ — migration notes. Currently only v1.3 to v1.4; later releases are covered by CHANGELOG.md and https://docs.healthlog.dev.
  • integrations/ — per-integration reference: Withings, WHOOP, Fitbit, Google Health, Strava, Nightscout, Dawarich and Garmin; the Apple Health, Health Connect, document and data imports; AI providers; and Home Assistant with its blueprint. Oura and Polar are covered on the docs site only.
  • adr/ — architecture decision records.
  • security/ — threat-model notes.
  • diagrams/ — architecture diagrams rendered through docs.healthlog.dev.
  • releases/ — release imagery.
  • apple-store-connect-checklist.md — the iOS submission gate.
  • codex-protocol-spec.md — Codex / ChatGPT OAuth protocol reverse-engineering notes.
  • contributing/ui-standards.md — the binding UI standards: card anatomy, spacing, text colour, tokens and which primitive to use where. Read before touching any surface.
  • contributing/benchmarks.md — the large-account benchmark (latency and statements per request) and the statement budgets on the hot routes.
  • contributing/testing.md — which suite a test belongs in, the route test kit, the integration database, sharding, property and mutation tests, and the flaky-test quarantine.
  • ui-guidelines.md — UI / a11y house style; where it disagrees with the UI standards, the standards win.

If you're a self-hoster looking to spin up an instance, start at https://docs.healthlog.dev or jump to the Quick Start in the project README.