Download Latest Version openemr-8.4.1.zip (214.9 MB) Google Add to Preferred Sources
Home / v8_3_0
Name Modified Size InfoDownloads / Week
Parent folder
changelog.md 2026-08-18 50.2 kB
openemr-8.3.0.tar.gz 2026-08-18 165.6 MB
openemr-8.3.0.tar.gz.md5 2026-08-18 55 Bytes
openemr-8.3.0.tar.gz.sha256 2026-08-18 87 Bytes
openemr-8.3.0.tar.gz.sha512 2026-08-18 151 Bytes
openemr-8.3.0.zip 2026-08-18 214.6 MB
openemr-8.3.0.zip.md5 2026-08-18 52 Bytes
openemr-8.3.0.zip.sha256 2026-08-18 84 Bytes
openemr-8.3.0.zip.sha512 2026-08-18 148 Bytes
OpenEMR 8.3.0 source code.tar.gz 2026-08-18 45.3 MB
OpenEMR 8.3.0 source code.zip 2026-08-18 50.4 MB
README.md 2026-08-18 50.2 kB
Totals: 12 Items   475.9 MB 0

8.3.0 - 2026-08-18

Minimum supported versions

  • PHP 8.3+
  • MariaDB 10.6+
  • MySQL 5.7+

See the tested CI matrix for all tested version combinations.

Security Fixes

  • [Critical] Authenticated arbitrary file read/write in oe-module-faxsms leading to potential RCE (GHSA-38jw-pwgq-9hpj)
  • [Critical] Authenticated SQL injection in the Fee Sheet inventory check (ORDER BY) (GHSA-cg8c-2v5q-29g7)
  • [Critical] openemr 8.2.0: authenticated arbitrary file read/write in the fax/sms module (disposeDocument) (GHSA-wf4w-mx2w-j4vv)
  • [High] Missing authorization (IDOR) in DICOM document-state AJAX library/ajax/upload.php — incomplete fix of GHSA-qj9f-x7v2-hrr7 (GHSA-7h7v-29jv-527v)
  • [High] Arbitrary file read and arbitrary-path write via file_path in FaxSMS RCFaxClient/SignalWireClient disposeDocument (GHSA-x2vr-jgg8-c57c)
  • [High] Arbitrary Patient Recall Deletion (GHSA-776r-c638-hw6j)
  • [High] Arbitrary Patient Recall Update (GHSA-j347-wp33-79q9)
  • [High] Authenticated arbitrary SQL execution via backup import in backup.php (GHSA-26g3-9466-c639)
  • [High] Broken Access Control in controller.php Enables Insurance Routing Credential Hijack and PHI Enumeration (GHSA-9rj4-fxmj-c4r7)
  • [High] Broken object authorization in SOAP note update API allows unauthorized overwrite of another patient’s SOAP note (GHSA-jf26-6rhx-xw6m)
  • [High] Classic document controller can lead to cross-patient document exfiltration and chart tampering (GHSA-89j2-7cg2-mm93)
  • [High] Cross-patient IDOR across many encounter-form viewers and save handlers (missing patient/encounter ownership check) (GHSA-3mg9-27fw-m9j6)
  • [High] Cross-patient PHI disclosure (IDOR) in patient portal via case-sensitive Pid parameter — bypass of the portal pid authorization guard (GHSA-39jh-r9hg-rwg7)
  • [High] CSRF Protection Bypass on IPPF Point-of-Sale Void and Regen Operations (GHSA-p8j4-vmx9-rfhj)
  • [High] eval() on Database-Sourced Data in Tree Construction (GHSA-4rj4-g6h7-wvfg)
  • [High] GET/POST /interface/main/messages/save.php Trust Attacker-Supplied pid, Allow Arbitrary Patient Demographics Read and Overwrite (GHSA-jwvx-828p-m5hq)
  • [High] High-Sensitivity Encounter Forms Bypass via Direct Loaders (GHSA-v58f-jcq4-pc4w)
  • [High] IDOR in portal/lib/persist.php (setting_patient) Allows Cross-Patient Settings Tamper / Notification Hijack (GHSA-jvhx-fg6j-8c9x)
  • [High] Missing ACL Checks on Portal Payment Page (GHSA-j2cx-3p5q-ppx5)
  • [High] Missing Authorization & IDOR in sl_eob_invoice.php Allows Any Authenticated User to Read & Modify Billing Data for Any Encounter (GHSA-55gc-5wj7-xxp7)
  • [High] Missing Authorization & IDOR in sl_eob_patient_note.php Allows Any Authenticated User to Read & Modify Any Patient's Billing Note (GHSA-74j7-7q95-rvxg)
  • [High] Missing authorization in DORN compendium_install.php — non-admin destructive lab-compendium reinstall (GHSA-jh2v-595q-h9vc)
  • [High] OpenEMR CAMOS Rx Print Stored XSS (GHSA-rc6m-6pq4-r69x)
  • [High] Path traversal in ERA/EOB processor (sl_eob_process.php eraname): arbitrary file write + arbitrary .edi read (GHSA-m6q6-5j87-3cmp)
  • [High] Patient portal onsite documents API can lead to cross-patient consent artifact disclosure (GHSA-v688-m84c-5h4v)
  • [High] Portal OnsitePortalActivity Update IDOR allows cross-patient audit data disclosure via PUT by id (GHSA-x8rm-m66w-qhh5)
  • [High] SQL injection vulnerability in standard REST API patient insurance/employer search (GHSA-fhc4-8f9p-8mcc)
  • [High] Stored XSS in CCDA/CCD clinical document preview via XSLT-preserved event-handler attributes (incomplete fix after CVE-2026-33932) (GHSA-rghp-vwvf-c2r9)
  • [High] Stored XSS in Eye Exam Document Notes (GHSA-xwjf-6q28-9vj7)
  • [High] Stored XSS via text() Misuse in Double-Quoted HTML Attribute (GHSA-pm2v-5p99-37p2)
  • [High] Unsanitized Deserialization of User-Controlled Request Parameter in Patient Matching Dialog (GHSA-r52j-mq9p-mh85)
  • [Medium] Unauthenticated Information Disclosure in admin.php Exposes Database Names and Versions (GHSA-q366-cv5v-83w8)
  • [Medium] /interface/billing/edih_main.php archrestore_sel Directory Traversal to File Enumeration (GHSA-gfwc-jg5p-jcp4)
  • [Medium] /library/dicom_frame.php web_path Cross-Site Request Forgery (GHSA-wffp-pj5h-xqwp)
  • [Medium] /portal/import_template.php template_files[] Stored Cross-Site Scripting (GHSA-5293-8q47-cf44)
  • [Medium] /portal/import_template.php templateHtml Reflected Cross-Site Scripting (GHSA-rmmr-8498-463g)
  • [Medium] Arbitrary Patient Recall and Contact Detail Read (GHSA-x6w3-3g4m-5m5v)
  • [Medium] BOLA in portal/report/portal_custom_report.php allows authenticated portal patients to read other patients' problem list entries (GHSA-xcrj-xc98-x8g6)
  • [Medium] Cross-patient IDOR in portal OnsiteDocument query (Pid_Equals mass-assignment) (GHSA-hvp7-q2hp-6j6g)
  • [Medium] IDOR - Portal Patient Settings Written for Arbitrary PID (GHSA-rrw3-g25h-x68h)
  • [Medium] IDOR in portal/lib/paylib.php (form_pid) Allows Cross-Patient Payment-Audit Write / Financial Fraud (GHSA-c9wg-vrr9-65wj)
  • [Medium] IDOR in patient portal allows an authenticated patient to read another patient's pending demographic change requests (GHSA-rw79-jfg7-fgpm)
  • [Medium] Insecure Direct Object Reference (IDOR) in OnsitePortalActivityController allows patients to modify other patients' portal activity records (GHSA-5hx3-92fw-6jm6)
  • [Medium] Missing authorization in payment patient-search AJAX leaks patient directory and dates of birth (GHSA-4269-grc6-qr62)
  • [Medium] Missing authorization in person-search AJAX leaks patient demographics (name, DOB, phone, email) (GHSA-xhfm-5pwg-3cxv)
  • [Medium] Missing Authorization on Document Template Download Endpoint Allows Any Authenticated User to Read Another Patient's PHI (GHSA-r3q3-p493-95x8)
  • [Medium] Missing authorization on QRDA Category I/III download endpoints (GHSA-6p9h-59cp-8hxj)
  • [Medium] Patient Data Search Without Sufficient ACL (GHSA-h5hw-xfj8-vgrv)
  • [Medium] Prior-Authorizations module: cross-patient PHI disclosure + cross-patient IDOR write (GHSA-9cgf-m88m-9cvx)
  • [Medium] Unauthenticated Open Redirect via OIDC End Session Endpoint (GHSA-5h9g-m7q2-pv45)
  • [Medium] Username Enumeration via Pre-Authentication User Settings Loading (GHSA-rr38-hpxq-wwff)
  • [Medium] Weno file_download.php: missing ACL/CSRF truncates the e-prescribing pharmacy directory (GHSA-xhv3-qr55-56h3)

Fixed

  • aclCheckCore false parameter (#12994)
  • adapt ExportState to escapeTableName() backtick contract from [#11297]. (#13061)
  • add ACL and typed input to recall handlers (#13343)
  • add explicit return type to session callback closures in EventAuditLoggerTest (#13322)
  • add several staff-write checks (#13353)
  • auto-accept alerts at driver level, drop wait dance in addPatientViaUi (#13355)
  • bump post-navigation content-render waits 30s to 60s in UiSeedingTrait (#13365)
  • CCDA to pass ONC USCDI V3 test scenarios. (#12765)
  • change int to float before rounding (#13125)
  • ChangelogMutator resolves prev release via manifest, not tag walk (#13015)
  • cherry-pick [#13496] mutator fix onto rel-830 to unblock [#13482] (#13503)
  • cherry-pick LOCAL_TAG + shopt fixes onto rel-830 to unblock branch-cut (#13489)
  • convert upload steps to single hyphenated composite flags (#13167)
  • correct invalid type annotations flagged as notFound in library and src (#13319)
  • correct malformed getAll return-type docblocks in FHIR REST controllers (#13316)
  • correct STC composite comparison and field indexing (#13155)
  • detect-mode falls back to build_locally=false on orphaned base SHA (#13346)
  • drop return statements from constructors (#12973)
  • echo nothing (#13008)
  • edit payment both grids emit dupe input names (#13468)
  • Ensure xl() doesn't leave hints when translation is disabled (#12842)
  • escape document note and rx content before rendering as HTML (#13404)
  • extend generate-app-token composite to rel-800/rel-704 for sync POST cleanup (#13326)
  • extract CHANGELOG section before peter-evans opens PR (#13004)
  • Fix rendering bug in authorize.net payments (#13422)
  • fix stylelint errors in interface/super folder (#13347)
  • fix stylelint errors in openemr_questionnaire (#13436)
  • fix stylelint errors in track_anything/style (#13437)
  • fix stylelint issues in contraception_products and forms/observation (#13432)
  • follow up refactor remit accounting test (#13150)
  • forbidden $_FILES access (#12985)
  • forbidden $_REQUEST in help.php (#12991)
  • general list template typo (#12972)
  • graceful-restart httpd in enable_coredumps so cores actually land (#13001)
  • handle null Provenance in createProvenanceResource() during bulk $export (#13060)
  • handle optional JWKS metadata during app registration. (#12919)
  • import Mpdf\MpdfException so custom_report catch blocks match (#13314)
  • inline $arr_files_php (#12979)
  • int cast return getNextSequenceNumber() (#13389)
  • invoke srcConfirmSave directly in addPatientViaUi, revert content-render wait bump (#13372)
  • iterate url search params for ajax save (#13335)
  • light text on dark background edit payments (#13421)
  • link add issue expose date (#13377)
  • linked documents update dashboard and encounters (#13296)
  • muzzle window.alert via CDP in UiSeedingTrait seeding helpers (#13358)
  • newpatient aclCheckCore call (#12997)
  • pass --from to sql_upgrade.php instead of sed-patching it (backport [#13583] to rel-830) (#13586)
  • pass GH_TOKEN to release-amendment mutator steps (#12999)
  • path typo in email readme (#13122)
  • point truncated Release body at rel branch + version anchor (#13040)
  • preserve executable bit when sync-byte-identical.sh copies files from master (#13237)
  • preserve persisted diagnosis ordering on save (#12133)
  • prevent {headerTemplate} from rendering the page header twice (#12569)
  • relax ChangelogGenerator noise filter — keep backports + release-scope PRs (#13005)
  • remove double escaping (#13152)
  • remove rel-checkout before master peter-evans to prevent submodule leak (#13007)
  • remove unused direct $_GET access (#12974)
  • replace $_GET (#13022)
  • replace sleep+click+wait with clickUntilAlertPresent helper (#13348)
  • reset STC status codes so they don't leak across segments (#13156)
  • resolve address verify fields (#13166)
  • resolve all 157 phpstan findings in fax_dispatch.php (#12986)
  • retry gh CLI on transient failures in GitHubApi (#13141)
  • Run fax dispatch through standard document handling (#12879)
  • scan non-autoloaded class dirs for stable type inference (#13020)
  • scope REST WRITE endpoints by patient/encounter (#13435)
  • server-status polling now terminates reliably (#12826)
  • simplify edih_format_percent, add return type (#13171)
  • skip audit logging on the status poll endpoint (#12831)
  • skip unshipped tags when deriving prev_release (#12769)
  • stop "Undefined array key 0" on appointment search (#12861)
  • strict equality ins count batch payments (#13393)
  • strict types string errors (#12652)
  • summary.php works with empty milestone; port missing checklist templates (#13126)
  • sync workflow filters add-paths by target rel branch (#12920)
  • sync workflow parses object-form manifest entries (#12916)
  • sync-byte-identical rename-sweep must skip main-loop-handled paths (#13100)
  • sync-byte-identical.yml materializes lib/glob-expand.sh alongside sync script (#12906)
  • truncate release-amendment body over 125K to link-only pointer (#13038)
  • trust manifest over annotated-tag filter for prev_release (#12771)
  • unblock dry-run build path (Phase 5.5 findings) (#13115)
  • unbreak release-mechanism workflows post-#13287 (blocks rel-830 cut) (#13480)
  • unify Controller::default_action() on string return (#13011)
  • use docker/* glob so docker/production/ actually ships in tarball (#12834)
  • use record provider_uuid for patient and social-history Observation performer (#13205)
  • version-check backup + smart dropdown default (#12840)
  • view document from clinical view past encounters (#11152)
  • waitFor poll selector loginForm (#13349)

Added

  • 3-PR ship-release + mode selector (Phase 3b) (#13098)
  • add DBAL query-audit middleware (#12810)
  • add internal deprecation utility (#12753)
  • add list and discover actions to zfc-module CLI (#12847)
  • add OpenEMR FHIR Questionnaire Runtime (#12880)
  • add release-amendment workflow (post-GHSA-publish CHANGELOG rerun) (#12996)
  • add release-mechanism surface to byte-identical.yml (12 new entries) (#12910)
  • Add view only mode to portal appointments (#12820)
  • build-release + build-release-on-tag + build-patch workflows (Phase 2 PR 2b) (#13087)
  • CompatibilityMutator + fix inject() idempotence (PR 8) (#12928)
  • copy PackageAssembler + PreflightChecker from openemr-devops (Phase 2 PR 1) (#13062)
  • dry-run mode builds real artifacts (Phase 3b-2) (#13099)
  • expand billing note textarea when editing, add collapse to view (#13405)
  • finalize job now updates release-finalize PR post-tag (#12889)
  • gate GitHub-releases publish on acceptance-package passing (Phase 7c, package side) (#13207)
  • glob-pattern support in byte-identical validator + sync scripts (#12904)
  • invert canonical/vendored for cross-repo contracts (Phase 5.1) (#13110)
  • make Install Code Set extensible and add a LOINC importer (#13466)
  • migrate ship-release orchestrator + workflow (Phase 3a) (#13096)
  • move ChangelogGenerator + friends from devops, wire ChangelogMutator (#12925)
  • openemr-tag dispatch now carries prev_release (#12887)
  • per-entry exclude-branches in byte-identical manifest (#12915)
  • Phase 1 InstallTest against openemr Docker artifact (#13149)
  • Phase 12 -- extend acceptance-gate to all rel-820+ branches (#13332)
  • Phase 2 workflow + UpgradeIntegrityTest + byte-identical wiring (#13159)
  • Phase 2.5 build-from-codebase for PR image validation (#13163)
  • Phase 3 acceptance-package workflow for tarball artifact (#13165)
  • Phase 3.5 — build-from-codebase tarball validation for PR CI (#13204)
  • Phase 3.6 slice 2 — upgrade-side ZIP coverage (#13262)
  • Phase 3.6 — ZIP acceptance coverage for fresh-install + wizard-install (#13261)
  • Phase 4a — FhirSmokeTest + LoginFlow extraction (#13193)
  • Phase 4a-2 — OAuth2SmokeTest (OIDC discovery + DCR) (#13194)
  • Phase 4a-3 (1/2) — API-enable bootstrap + OAuth2 successful-flow assertions (#13201)
  • Phase 4a-3 (2/2) — Bearer-authenticated /api/facility via full DCR+auth-code flow (#13203)
  • Phase 4b — Panther plumbing + E2eCriticalPathTest (#13196)
  • Phase 4c-1 — InstallWizardUiTest walks setup.php (#13198)
  • Phase 4c-2 — UpgradeWizardUiTest walks sql_upgrade.php (#13199)
  • Phase 7a-docker — release-prep.yml dispatches acceptance-docker alongside acceptance-package (#13210)
  • Phase 9 — acceptance-only re-run for release recovery (#13272)
  • retarget openemr-tag dispatch to openemr (Phase 2 PR 2c) (#13092)
  • retire CreateReleaseChangelogCommand (PR 7) (#12964)
  • skip transaction control statements (#13301)
  • Taskfile + bin scripts for build workflows (Phase 2 PR 2a) (#13079)
  • verify uploaded release assets byte-match local build output (Phase 7b) (#13217)

Backend Modernization Project

  • forbid direct access to the $_SESSION superglobal (#13224)

Changed

  • ACL improvements and misc to several staff endpoints (#13200)
  • add appointment endpoint tests (#12419)
  • add coverage for the patient document endpoints and validate the pid (#13409)
  • add coverage for version, product, and list endpoints (#12914)
  • add library/edihistory to scanDirectories (#13222)
  • add post-release GHSA amendment as Quick action 4 (#13438)
  • add Quick actions cheat sheet at top of the runbook (#13401)
  • add release-mechanism gaps + open questions doc (#12599)
  • add release-mechanism migration plan from openemr-devops (#12598)
  • add release-mechanism smoke test workflow (#13000)
  • add tests for FHIR Condition endpoints (#12808)
  • add Windows compatibility testing (#13049)
  • address review, type implode_funcs callables (#13019)
  • allowlist attributes in CCDA/CCD/QRDA preview stylesheets (#13195)
  • analyze all phpstan-covered paths (#13017)
  • apply UnnecessaryTernaryExpressionRector (#13012)
  • arm64 acceptance-docker always-on (was gated behind test_arm64 input) (#13264)
  • artifact acceptance testing plan (living doc) (#12811)
  • authenticated version.php pre-fetch + distinguish 404 from 429 (#12883)
  • autoload declaration-only library files and drop redundant requires (#13251)
  • Automatic Rector type coverage L5->L7 (#13320)
  • bake pcov coverage driver into dev-php-fpm images (#13085)
  • batch commit->PR resolution via /search/issues (#13146)
  • Bb -- add happy-path breadcrumb to modal-close recovery (#13396)
  • Bb -- modal-close recovery via isUserExist DB row oracle (#13397)
  • Bb -- modal-close recovery via users-table row oracle (#13391)
  • bump actions/checkout from 5 to 7 (#12781)
  • bump actions/download-artifact from 4 to 8 (#13184)
  • bump actions/setup-node from 6 to 7 (#13063)
  • bump actions/setup-node from 6 to 7 (#13182)
  • bump actions/setup-python from 6 to 7 (#13064)
  • bump actions/upload-artifact from 4 to 7 (#13179)
  • bump lewagon/wait-on-check-action from 1.8.0 to 1.8.1 (#12780)
  • bump lewagon/wait-on-check-action from 1.8.1 to 1.9.0 (#13213)
  • bump nanasess/setup-chromedriver from 2 to 3 (#13214)
  • capture third-exercise state — as-built for release-automation-plan.md (#12745)
  • carry forward coverage for flags (#13223)
  • CDP window.alert muzzle + yank dead unhandledPromptBehavior capability (#13398)
  • centralize encounter-form patient-ownership helper (#13333)
  • clarify setup wording (#12853)
  • CLI argument-shell coverage for 7 remaining bin scripts (#13132)
  • close Phase 3c gap references — docs PR auto-flip is live (#13108)
  • consolidate patient-context enforcement (#13472)
  • correct author + copyright on new-authorship files (#13144)
  • dead code (#13013)
  • Deprecate the non-setting-checked cryptography APIs (#13225)
  • direct $_SERVER access in gacl/admin/acl_test.php (#12954)
  • document Docker Hub tag model + slot promotion (#13357)
  • document finalize-on-master + changelog PRs in release process (#12863)
  • document GHSA "Patched versions" convention for CHANGELOG auto-inclusion (#12993)
  • drift-sweep release-mechanism docs - 8.1.1 history, announcement pipeline, ship-flow PR count (#13373)
  • drop leftover 8.1.0 refs from dispatch fixtures + goldens (#12893)
  • drop PHP 8.2 support; minimum is now PHP 8.3 (#13280)
  • drop rel-820 exclusion from acceptance surface + build-release.yml (unblocked by [#13227]) (#13233)
  • dual-tag 4e Small-tier ports for post-upgrade coverage (#13345)
  • eliminate PHPStan findings in the physical exam form (#13009)
  • exclude docker-build-release.yml from rel-800/rel-704 sync (#13244)
  • extract byte-identical manifest parsing into a shared script + BATS coverage (#12924)
  • extract edih_277 segment renderers into a testable class (#13153)
  • extract PantherAcceptanceTestCase + UiSeedingTrait from Small-tier ports (#13344)
  • extract release app-token generation into composite action (#13287)
  • failure diagnostics for redis-sentinel/apache e2e (#12438) (#13295)
  • Fix SignalWire fax support in oe-module-faxsms (#12526)
  • Fix weird variant type in legacy phreeze path (#12764)
  • fixture-based regression regenerating 8.2.0 CHANGELOG entry (PR 9) (#12969)
  • harden logout regression suite and tighten full-flow assertions (#13175)
  • incidental cleanups (#13232)
  • include docker/production/ in release tarball (#12776)
  • incorporate CSRF checks to several GET requests (#13197)
  • inline edih_round_cb as array_map callback (#13118)
  • Integrate OEGlobalsBag key deprecation tooling (#12763)
  • isolate ChangelogMutatorTest + CompatibilityMutatorTest from developer git config (#13053)
  • isolate csv_file_type's file-type alias table (#13151)
  • little clean ups (#13050)
  • make G10 trait suite-prefix helper deterministic (#13433)
  • Merge commit from fork (backport 069c4a7f52 to rel-830) (#13569)
  • Merge commit from fork (backport 31e13ee2d9 to rel-830) (#13566)
  • Merge commit from fork (backport 92d7240567 to rel-830) (#13567)
  • Merge commit from fork (backport e0c5962594 to rel-830) (#13565)
  • Merge commit from fork (backport ff59ad1ff6 to rel-830) (#13568)
  • move event subscriber out of zend_modules (#13302)
  • move event subscriber out of zend_modules (#13299)
  • move event subscribers out of zend_modules (#13297)
  • narrow release-prep trigger to version.php + gate on active dev cycle (#12868)
  • no empty (#12881)
  • note prev_release manifest derivation + docs PR shape updates (#12773)
  • only pass gate_with_acceptance when true (#13258)
  • per-test-instance seed identity in UiSeedingTrait (#13351)
  • Phase 10a — extract OCI-label verify to shared script (#13274)
  • Phase 10c — extract publish flows + automate Phase 9 recovery (#13279)
  • Phase 10d — extract shared ZIP-extract helper for boot-package + upgrade-package (#13286)
  • Phase 10e-2 -- extract acceptance-only source-run guardrails (#13294)
  • Phase 10e-3 -- extract Docker Hub tag-delete to shared script (#13293)
  • Phase 10e-4 -- extract acceptance-package detect-mode to script (#13306)
  • Phase 10e-5 -- extract create-release-tag to shared script (#13310)
  • Phase 10e-6 -- extract changelog section + release body (#13311)
  • Phase 10f — audit RELEASE_PROCESS recovery paragraphs post-Phase-9 + 10c (#13285)
  • Phase 11 -- native arm64 release builds (#13330)
  • Phase 14 -- skip-acceptance escape hatch for rerun workflows (#13394)
  • Phase 4e-1 -- port AaLoginTest scenarios to acceptance (#13336)
  • Phase 4e-2 -- port GgUserMenuLinks scenarios to acceptance (#13338)
  • Phase 4e-3 -- port FrontPaymentCssContrast to acceptance (#13340)
  • Phase 4e-4 -- port KkEncounterFormNavbarUrl to acceptance (#13341)
  • Phase 4f Medium Bb -- port BbCreateStaffTest (#13383)
  • Phase 4f Medium Dd -- port DdOpenPatientTest (#13354)
  • Phase 4f Medium Ff -- port FfOpenEncounterTest (#13382)
  • Phase 4g -- persist-through-upgrade flow tests (#13388)
  • Phase 7c-docker-latest-gate — acceptance-gate latest builds (#13239)
  • Phase 7d-1 — multi-arch ChromeDriver setup composite action (#13254)
  • Phase 7d-2 — PR-time build_locally arm64 coverage (#13259)
  • port [#13554] to rel-830 (PHP 8.6 non-blocking) — unblocks 8.3.0 release (#13557)
  • port [#13558] to rel-830 (ignore PHP 8.6 check) — companion to [#13557] (#13564)
  • pre-auth cleanups (#13133)
  • probe statuses:write (#13120)
  • quote mermaid arrow label containing dots to fix render (#13400)
  • raise guzzlehttp/psr7 floor to ^2.13 for Utils::asciiToUpper (#13315)
  • reflect Phase 7 acceptance-gate + byte-verify + arm64 + ZIP automation (#13269)
  • reflect workstream 7 Phase 2 migration in RELEASE_PROCESS.md (#13094)
  • Remove all remaining first-party use of eval (#13048)
  • remove commented-out csv_files_header (#13172)
  • remove dead code in edih_errseg_parse and segment renderers (#13170)
  • remove getUuid to ServiceContainer (#12953)
  • remove interface/main/backup.php and its menu entry (#13471)
  • remove redundant typecheck-as-test (#12888)
  • remove unused csv_array_flatten (#13127)
  • remove unused edih_997_sbmtfile (#13138)
  • remove unused edih_change_loop (#13131)
  • remove unused edih_csv_order (#13130)
  • remove unused php 7 polyfill (#13123)
  • rename byte-identical manifest + validator workflow to drop docker prefix (#12896)
  • replace manual transaction control with QueryUtils::inTransaction (#13321)
  • replace unknown param types in Log docblocks (#13318)
  • retarget devops->openemr for canonical ownership post-Phase-6 (#13137)
  • retire the vestigial form_exit_url global (#13252)
  • rewrite RELEASE_PROCESS.md for mutator-driven changelog flow (#12976)
  • Set up HTTP client in ServiceContainer and DI (#12987)
  • single dispatch surface + concurrency serialization for docker-build-release (#12862)
  • skip analysis of generated PHPFHIRParserMap.php (#13051)
  • skip CHANGELOG.md (auto-generated from historical PR titles) (#13043)
  • sync release-automation-plan with actual workflow list + fix TBD (#13356)
  • trigger docker-test-release on version.php bumps (#12778)
  • trigger on rel-* branches (#12774)
  • type params of 835 html helpers, drop runtime guards (#13173)
  • type the load_fee_sheet_options() signature (#13317)
  • update .stylelintignore file (#13375)
  • Update audit logger sql path to be DI-friendly (#12699)
  • update RELEASE_PROCESS.md for announcement migration (PR 5 of announcements slice) (#13055)
  • use attr() instead of text() in HTML attribute contexts (#13192)
  • use HTMLPurifier for document template content and drop dead GET branch (backport [#13541] to rel-830) (#13553)
  • use portable mktemp -d across 5 helper suites (Phase 10e slice 1) (#13292)
  • validate site_id and encapsulate (#12878)
  • yank the dead unhandledPromptBehavior grid capability (#13364)

PHP

  • bump claimrevolution/oe-module-claimrev-connect from 2.1.6 to 2.1.7 (#12945)
  • bump doctrine/dbal from 4.4.3 to 4.4.4 (#13186)
  • bump doctrine/orm from 3.6.7 to 3.6.8 (#13461)
  • bump dompdf/dompdf from 3.1.5 to 3.1.6 (#13136)
  • bump giggsey/libphonenumber-for-php from 9.0.33 to 9.0.34 (#12793)
  • bump giggsey/libphonenumber-for-php from 9.0.34 to 9.0.35 (#13072)
  • bump giggsey/libphonenumber-for-php from 9.0.35 to 9.0.36 (#13458)
  • bump google/apiclient from 2.19.3 to 2.19.4 (#12802)
  • bump guzzlehttp/guzzle from 7.12.3 to 7.13.2 (#12801)
  • bump guzzlehttp/guzzle from 7.13.2 to 7.14.1 (#12939)
  • bump guzzlehttp/guzzle from 7.14.1 to 7.14.2 (#13014)
  • bump guzzlehttp/guzzle from 7.14.2 to 7.15.1 (#13077)
  • bump guzzlehttp/guzzle from 7.15.1 to 7.15.3 (#13455)
  • bump guzzlehttp/psr7 from 2.12.3 to 2.12.5 (#12938)
  • bump guzzlehttp/psr7 from 2.12.5 to 2.13.0 (#13074)
  • bump knplabs/knp-snappy from 1.7.2 to 1.7.3 (#13371)
  • bump league/flysystem from 3.35.1 to 3.35.2 (#12934)
  • bump nikic/php-parser from 5.7.0 to 5.8.0 (#12794)
  • bump phpoffice/phpspreadsheet from 5.8.0 to 5.9.0 (#12944)
  • bump phpseclib/phpseclib from 3.0.55 to 3.0.56 (#13459)
  • bump psy/psysh from 0.12.23 to 0.12.24 (#12800)
  • bump slevomat/coding-standard from 8.30.1 to 8.31.0 (#13181)
  • bump slevomat/coding-standard from 8.31.0 to 8.31.1 (#13457)
  • bump smarty/smarty from 4.5.6 to 4.5.7 (#12796)
  • bump squizlabs/php_codesniffer from 4.0.1 to 4.0.2 (#13426)
  • bump squizlabs/php_codesniffer from 4.0.1 to 4.0.4 (#13453)
  • bump the development group across 1 directory with 6 updates (#13366)
  • bump the symfony group with 12 updates (#13368)
  • bump the symfony group with 5 updates (#13449)
  • bump twig/twig from 3.27.1 to 3.28.0 (#12799)
  • bump vlucas/phpdotenv from 5.6.3 to 5.6.4 (#12946)

javascript

  • bump autoprefixer from 10.5.2 to 10.5.4 (#13076)
  • bump body-parser from 1.20.5 to 1.20.6 in /ccdaservice (#12941)
  • bump dompurify from 3.4.11 to 3.4.12 (#12940)
  • bump eslint from 10.5.0 to 10.7.0 in /ccdaservice (#12942)
  • bump eslint from 9.39.4 to 9.39.5 in the build-tools group (#12935)
  • bump fast-uri from 3.1.2 to 3.1.4 (#13105)
  • bump fast-uri from 3.1.2 to 3.1.4 in /interface/modules/custom_modules/oe-module-comlink-telehealth/public/assets/js (#13104)
  • bump fast-uri from 3.1.4 to 3.1.5 (#13386)
  • bump fast-uri from 3.1.4 to 3.1.5 in /interface/modules/custom_modules/oe-module-comlink-telehealth/public/assets/js (#13385)
  • bump globals from 17.7.0 to 17.9.0 in /ccdaservice (#13452)
  • bump immutable from 5.1.5 to 5.1.9 (#13103)
  • bump interactjs from 1.10.27 to 1.10.28 (#13456)
  • bump ip-address from 10.2.0 to 10.4.0 in /ccdaservice (#13378)
  • bump mocha from 11.7.6 to 11.8.0 in /ccdaservice (#13454)
  • bump mongoose from 7.8.9 to 7.8.11 in /ccdaservice (#13169)
  • bump postcss from 8.5.16 to 8.5.18 (#12936)
  • bump postcss from 8.5.18 to 8.5.20 (#13075)
  • bump postcss from 8.5.20 to 8.5.25 (#13369)
  • bump postcss from 8.5.25 to 8.5.26 (#13451)
  • bump sass from 1.101.0 to 1.102.0 (#13187)
  • bump svgo from 4.0.1 to 4.0.2 (#13106)
  • bump tar from 7.5.16 to 7.5.20 in /ccdaservice (#13091)
  • bump tar from 7.5.20 to 7.5.22 in /ccdaservice (#13168)
  • bump webpack from 5.108.1 to 5.108.4 in the build-tools group (#12797)
  • bump webpack from 5.108.4 to 5.109.0 in the build-tools group (#13185)
  • bump webpack from 5.109.0 to 5.109.2 in the build-tools group (#13367)
  • bump ws from 8.20.1 to 8.21.0 (#12867)

phpstan

  • refresh RESERVED_WORD_SUPPLEMENT (#13448)

pre-commit

Source: README.md, updated 2026-08-18