2.65.1

2026-10-06

This version of Tamanu requires Chrome 153 or later.

Artifacts

central container oci://ghcr.io/beyondessential/tamanu-central:v2.65.1
central linux-amd64 https://servers.ops.tamanu.io/2.65.1/central-2.65.1-linux-amd64.tar.zst
Download
central windows-amd64 https://servers.ops.tamanu.io/2.65.1/central-2.65.1-windows.tar.zst
Download
dbt-manifest any https://docs.data.bes.au/tamanu/v2.65.1/manifest.json
Download
facility container oci://ghcr.io/beyondessential/tamanu-facility:v2.65.1
facility linux-amd64 https://servers.ops.tamanu.io/2.65.1/facility-2.65.1-linux-amd64.tar.zst
Download
facility windows-amd64 https://servers.ops.tamanu.io/2.65.1/facility-2.65.1-windows.tar.zst
Download
frontend any https://servers.ops.tamanu.io/2.65.1/web-2.65.1.tar.zst
Download
frontend container oci://ghcr.io/beyondessential/tamanu-frontend:v2.65.1
mobile android https://clients.ops.tamanu.io/2.65.1/android/tamanu/app-release.apk
patient-portal any https://servers.ops.tamanu.io/2.65.1/patient-portal-2.65.1.tar.zst
Download
patient-portal container oci://ghcr.io/beyondessential/tamanu-patient-portal:v2.65.1
reporting-docs any https://tamanu-translations.data.bes.au/2.65.x/reporting-docs-v2.65.x-standard.html
Download
reporting-schema any https://tamanu-translations.data.bes.au/2.65.x/reporting-schema-v2.65.x-standard.sql
Download
reporting-standard any https://tamanu-translations.data.bes.au/2.65.x/reporting-standard/
Download

Changelog

Bugfixes 🐛

  • desktop: TAM-7165: Expand system errors data (#11345)

Older releases in series

2.65.0

Bugfixes 🐛

  • AI: TAM-7068: AI fixes (#10884)
  • appointments: key hasPastAppointments by type and facility (#10887)
  • appointments: Fix redundant fetches in appointments (MAIN) (#11139)
  • appointments: Fix redundant fetches in appointments (#10783)
  • centralServer: refuse report writes when reporting schemas fail to init (#10799)
  • database: record the cause of a failed migration batch (#11071)
  • db: local_system_*.key uniqueness enforcement (#10828)
  • desktop: Warn against patient details in error log (HOTFIX 2.65) (#11326)
  • e2e: TAM-7111: Unblock E2E tests with issues (#10980)
  • facilityServer: exempt unrecognised clients from version check (#10963)
  • fakeData: realistic seeded reference data (#10895)
  • fakeData: typed reference data and bounded facilities in the fake seed (#10898)
  • fakeData: give generated drugs a reference_drugs row (#11065)
  • fakeData: one invoice product per drug when seeding (#11164)
  • fakeData: one encounter per seeded triage (HOTFIX 2.65) (#11298)
  • fakeData: one encounter per seeded triage (#11117)
  • fhir: use settings reader for resolver lock timeout (#10734)
  • fhir: D2: use converse not complement when flipping JSONB search comparisons (#10782)
  • fhir: stop nested transactions from escaping FHIR bundle rollback (#10950)
  • invoices: Fix invoices table footer display (#11329)
  • invoicing: exclude historical invoice products from automatic invoice item lookups (#10858)
  • labs: save republished DiagnosticReport PDFs on already-published lab requests (HOTFIX 2.65) (#11311)
  • medication: declare Prescription.discontinuedDate as a date-time string (#10962)
  • medication: disable pharmacy order send while submitting (2.65) (#11323)
  • medication: lock finalise after a saved prescription (HOTFIX 2.65) (#11325)
  • medications: hide modal close icon and pin page size for printed medication labels (#10757)
  • medications: TAM-2410: MAR document semantics (#10214)
  • medications: hide the administration schedule for hourly and half-hourly (#10999)
  • medici: restore legacy noteType in Medici report (HOTFIX 2.65) (#11244)
  • mobile: Race condition in wipeAllDataAndResync migration (#10863)
  • mobile: Stale last sync pulled count (#10827)
  • mobile: record last sync pulled records count (18ae4413ef)
  • mobile: Race condition when failed batch insert falls back to sequential inserts (#10960)
  • mobile: Race condition when failed bach insert falls back to individual inserts (950220f1ea)
  • mobile: vitals Add tab submit does nothing after a prior submit (#10991)
  • mobile: TAM-7090: “Invalid hook call” error (#11015)
  • mobile: TAM-7090: “Invalid hook call” error (#11013)
  • mobile: TAM-7090: Rules of Hooks violations (#11018)
  • mobile: TAM-7090: Rules of Hooks violations (#11017)
  • mobile: TAM-7090: don’t use function component as plain render function (5bab090c52)
  • mobile: TAM-7090: rename setStatusBar hook to useStatusBarStyle (5bab090c52)
  • mobile: TAM-7123: broken ‘Update’ link in ‘Update required’ alert (#11073)
  • mobile: Read update URL from kebab-cased problem key (ae6740d0e2)
  • mobile: Use Tamanu Blue as accent colour (#11075)
  • mobile: Use nonbreaking space in age display (#11098)
  • mobile: Photo question forever-loading state (#11090)
  • mobile: Replace “Sign out” with “Log out” (#11113)
  • mobile: Show message when logged out due to inactivity (#11125)
  • mobile: Use actual Tamanu logo on sign-in screen (#11115)
  • mobile: TAM-7094: autocomplete overflow collisions (#11166)
  • mobile: Stale data after submitting surveys (#11251)
  • patientPortal: Fix enum translation in patient portal (#11106)
  • patientPortal: Fix enum translation in patient portal (#11106)
  • patients: U7: widen patient issue note column to text (#10952)
  • referenceData: block adding reference types that need a detail record (HOTFIX 2.65) (#11219)
  • reports: exclude soft-deleted survey responses from generic survey export (#10779)
  • shared: G8: restrict simplePut and simplePost to allowed fields (#11006)
  • sync: flag merged patients for sync lookup rebuild (#10862)
  • sync: patients.display_id collision breaking sync (#10957)
  • sync: setup wizard device scope, record facility ids, guard declared host and facilities (#11056)
  • tasking: stop one task change invalidating every dashboard (#10886)
  • tasking: filter dashboard tasks by designation with EXISTS (#10891)
  • web: “crypto.randomUUID is not a function” when adding invoice item (#10967)
  • web: take date defaults and bounds from the facility timezone (#10987)
  • web: TAM-7117: date picker overflow when month spans 6 distinct weeks (#10997)
  • web: TAM-7118: confirmation modal primary button colour (#11000)
  • web: Freeze when trying to open some encounters (#11054)
  • web: correct inpatient length of stay for stays over a month (#11105)
  • scrub secrets from the seed database (#10771)- fetch all medication preset labels, not just the first 25 (#10777)- fail loudly when the config key doesn’t match the database (#10847)- Standardise spelling of ‘OK’ (#11019)- Dedupe of patients.display_id collision breaking sync (e368a7d2b8)

Configuration ⚙️

  • agents: F3: add Draft release notes skill (#10780)

Database 📊

  • fhir: restore job_worker_is_alive assumeDroppedAfter fallback (#11145)
  • mobile: V4: drop zero-benefit indexes (#10879)
  • mobile: Drop zero-benefit indexes (0e33c9f096)
  • mobile: Remove dead note_pages, note_items tables (#10880)
  • mobile: Increase SQLite cache_size, scale with available memory (#10883)
  • mobile: TAM-7100: switch from ANALYZE to PRAGMA optimize (#11140)
  • drop updated_at_sync_tick column from signers_historical (#10885)- add partial index for unresolved fhir resources (#10735)

Dependencies 📦

  • Bump @types/node for Node 26 (#10775)

Documentation 📚

  • discharge: A8: hide the discharge draft workflow pending product design (#10982)
  • medications: hide modal close icon and pin page size for printed medication labels (#10757)

Features ⭐

  • DHIS2: TAM-3990: Mark DHIS2 data sets as complete when posted (#10454)
  • agents: F3: add Draft release notes skill (#10780)
  • agents: F3: add Draft release notes skill (#10780)
  • bruno: add Get Medici Report request for fijiAspenMediciReport (#10867)
  • desktop: TAM-6806: Relegate red toast error messages (#11020)
  • discharge: S3: fix the draft workflow (#10794)
  • discharge: TAM-7081: Add feature flag to preselect medications on discharge modal (#10968)
  • facility: W1: add server-side request idempotency for the facility API (#10787)
  • fhir: materialise surveyResponse encounters (#10729)
  • fhir: TAM-6912: add encounter diagnosis to MedicationRequest reasonCode (#10986)
  • imaging: TAM-6807: Add new portable x ray type (#10651)
  • imagingTypes: TAM-7121: Add portable x ray imaging area type (#11072)
  • immunisation: TAM-7000: Add birth certificate number to vaccine certificate (#10850)
  • integrations: TAM-7020: mSupply stock on hand source of truth (#10900)
  • invoices: TAM-7076: Add available facilities to insurance plan (#10945)
  • medications: TAM-2410: hourly, half-hourly prescription frequencies (#10215)
  • medications: TAM-2409: update MAR to accommodate new frequencies (#10403)
  • medications: TAM-6894: Last sent column update (#11074)
  • mobile: TAM-7027: Ensure Android SDK 35 (support for 16kb page) (#10724)
  • patientListings: TAM-6790: Add sort to some columns (#10736)
  • seed: top up restored seed data with the running version’s types (#11010)
  • shared: report the reporting schema version to canopy (#10948)
  • sync: TAM-7004: make unique constraints on syncable tables deferrable (#10515)

Performance 🌊

  • facility: TAM-7029: use faith for the central server connection (#10656)
  • labs: N7: make lab test edit-marker query index-usable (#10937)
  • mobile: V4: add high-value database indexes (#10797)
  • mobile: Add high-value database indexes (afbf9d2b74)
  • mobile: Periodically refresh SQLite stats for query planner (#10826)
  • mobile: TanStack-ify all queries & mutations (#10802)
  • mobile: Sundry performance refactors (#10829)
  • mobile: Adopt React Compiler (#10925)
  • mobile: TAM-7093: GZIP-compress sync push payloads (#10795)
  • mobile: TAM-7095: don’t validate form on every keystroke (#10961)
  • mobile: Remove redundant navigation.goBack wrappers (#11021)
  • mobile: L6: don’t hydrate models when simply checking existence (#10959)
  • mobile: Dedupe shallow clone of array (#11023)
  • mobile: TAM-7098: stabilise translation context values (#11097)
  • mobile: TAM-7126: skip sync save transaction when there’s nothing to pull (#11092)
  • mobile: TAM-7094: fix autocomplete input woes (#10908)
  • mobile: TAM-7126: drop (nonfunctional) topological sort from sync save path (#11093)
  • tasking: optional lower bound on task list due times (#10923)
  • Initialise <Popper> props once (1adff91a81)

Refactors 🛠️

  • medications: print medication labels from a dedicated frame (#10909)
  • mobile: Use TanStack query for servers, language options (#10907)
  • mobile: Drop redundant useCallback (5bab090c52)
  • mobile: Use React Navigator for tab state management (#11101)
  • mobile: Remove abuse of Effect (#11255)
  • test: migrate from jest to vitest for existing test suites (#10755)
  • web: TAM-7049: replace the redux patient store with a route-scoped PatientProvider (#10732)
  • Migrate <Button> to MUI v6 (#10893)

Repo 📖

  • llm: rule against unbounded queries and unjustified changelog scans (#10927)
  • shared: report the reporting schema version to canopy (#10948)
  • Update TSConfigs to reflect actual targets (#10776)

Revert ⏪

  • medications: stop suggesting drugs that have no reference drug record (#11108)
  • web: revert encounter pane read-only gating (#10873)
  • web: revert encounter pane read-only gating (#10873)

Testing 🧪

  • DHIS2: TAM-3990: Mark DHIS2 data sets as complete when posted (#10454)
  • agents: F3: add Draft release notes skill (#10780)
  • facility: make the idempotency binding test deterministic (#11066)
  • fhir: TAM-6998: stop rematerialising FHIR resources on reference data changes (#10461)
  • medication: Q7: cover MAR give-dose popper when a drug has no dosing unit (#10956)
  • Fix discharge form E2E test (#10806)

Tweaks ⚖️

  • db: dollar-quote the changelog autovacuum guard (#11172)
  • discharge: A8: hide the discharge draft workflow pending product design (#10982)
  • discharge: A8: hide the discharge draft workflow pending product design (#10981)
  • fhir: TAM-6998: stop rematerialising FHIR resources on reference data changes (#10461)
  • mobile: Remove flashing overflow indicator (#10942)
  • mobile: Remove redundant uppercasing (#11099)
  • mobile: Drop react-native-flash-message for native toasts (#11100)
  • mobile: TAM-7125: use native Alert for ’Exit form?’ confirmation (#11082)
  • mobile: TAM-7125: use native Alert for ’Remove tagged location?’ confirmation (#11083)
  • mobile: TAM-7125: use native Alert for patient sync modals (#11084)
  • mobile: TAM-7125: use native Alert for ’Update required’ and password reset modals (#11085)
  • mobile: TAM-7125: use native Alert for ’Remove reminder contact?’ confirmation (#11086)
  • mobile: TAM-7125: use native Alert for vaccination warning dialog (#11087)
  • mobile: TAM-7125: use native Alert vaccination warning dialog (bb961ec069)
  • mobile: TAM-7125: use native Alert for ’Something went wrong’ dialog (#11088)
  • mobile: Narrow types in <UploadPhoto> (#11089)
  • mobile: TAM-7125: use native Alert for ‘Can’t submit photo’ dialog (9794884bd4)
  • settings: Avoid default import from es-toolkit/compat (#10870)
  • web: Collapse ‘Medication administration schedule’ by default in medication form (#10869)
  • Disable rather than hide (1adff91a81)
Copied to clipboard!