Skip to content

OpenO EMR 2026.1.0-RC1 Release#188

Merged
warrendennis merged 51 commits intoopen-osp:mainfrom
openo-beta:staging/01232026
Feb 20, 2026
Merged

OpenO EMR 2026.1.0-RC1 Release#188
warrendennis merged 51 commits intoopen-osp:mainfrom
openo-beta:staging/01232026

Conversation

@yingbull
Copy link
Copy Markdown
Contributor

OpenO EMR 2026.1.0-RC1 Release

Summary

This PR brings the openo-beta/Open-O staging branch (staging/01232026) changes to the upstream open-osp/Open-O main branch. Tagged as 2026.1.0-RC1, this release includes critical bug fixes for the oscarRx prescription module, security enhancements, Ocean eReferral integration fixes, extensive merge conflict resolutions with code quality improvements, and synchronization of missing upstream changes.

Statistics: 209 files changed, 23,873 insertions(+), 6,509 deletions(-)


Upstream PR Cross-References

This release builds upon and includes work from the following upstream PRs that have already been merged to open-osp/Open-O:

Upstream PR Title Merged
#187 Vigilance integration 2026-01-22
#185 Lab Format Generators, Flowsheet Enhancements, Security Fixes, and DevOps Improvements 2026-01-23
#184 Bugfix - normalize phone and fax search for pharmacy results 2026-01-23
#183 VG improvements - encoding fixes, Struts 404, allergy modifications 2026-01-16
#143 Scratch Pad security and performance improvements 2026-01-23
#144 Bug fixes, Playwright MCP, documentation improvements 2026-01-09

Key Changes

1. Merge Conflict Resolution & Code Quality Improvements (Critical)

When integrating upstream code from open-osp/Open-O main into openo-beta/Open-O develop, extensive merge conflicts were encountered and resolved. During this integration process, AI-assisted code review identified opportunities for additional security hardening and code quality improvements, which have been applied and are included in this package for upstream benefit.

Files with Merge Conflicts Resolved

The following files had merge conflicts that required careful resolution:

Java Source Files:

  • FavoriteDao.java, FavoriteDaoImpl.java - Favorites management
  • RxWriteScriptForm.java, RxWriteScriptAction.java - Prescription form handling
  • Allergy.java, Drug.java, Favorite.java - Model classes
  • RxDrugData.java, RxPrescriptionData.java - Prescription data handling
  • RxAddAllergyAction.java, RxSearchAllergyAction.java, RxChooseDrugAction.java, RxSearchDrugAction.java - Rx actions
  • PrescriptionMedicationManager.java, PHRMedication.java - Medication management
  • ImportDemographicDataAction4.java - Demographic import

JSP/CSS Files:

  • AddReaction.jsp, AddReaction2.jsp, ChooseAllergy2.jsp - Allergy UI
  • ListDrugs.jsp, SearchDrug3.jsp, ShowAllergies2.jsp - Drug search UI
  • ViewScript2.jsp, getAllergyData.jsp, prescribe.jsp - Prescription UI
  • allergies.css, styles.css - Stylesheets

Test Files:

  • ProgramDaoTest.java, OntarioMDSpec4DataTest.java

Issues Resolved During Integration

The following issues were identified and resolved during the merge integration process:

Issue File(s) Fix Applied
Double form merge error RxWriteScriptForm.java Removed duplicate form element caused by merge conflict
404 errors from missing JSON content type Multiple Actions Added proper response.setContentType("application/json") headers
Incorrectly merged database schema oscarinit.sql Reverted to correct schema version
Missing context path in URLs Multiple JSPs Added fully qualified URLs with ${pageContext.request.contextPath}
GCN_SEQNO type conversion errors Drug model, Actions Confirmed String type is correct for Vigilance enterprise database compatibility
Allergy modification regression RxSearchAllergyAction Fixed: modifying an allergy now correctly creates a new active replacement
Favorites duplication on page refresh useFav2 function Prevented duplicate medications when refreshing after loading a favorite
Null element errors in Ajax callbacks SideLinksEditFavorites2.jsp Moved renderRxStage() to Ajax onSuccess callback

Security & Code Quality Enhancements from PR Review

During the AI-assisted PR review of the integrated code (#1872), opportunities for additional security hardening and code quality improvements were identified and applied:

XSS Hardening Applied:

File Issue Fix
WriteScript.jsp Drug names unencoded in JS context Added Encode.forJavaScript()
ListDrugs.jsp Comment unencoded in TITLE attribute Added Encode.forHtmlAttribute()
StaticScript.jsp regionalIdentifier and cn unencoded Added Encode.forJavaScript()
PrintDrugProfile2.jsp Drug outline unencoded Added Encode.forHtml()
RenalDosing.jsp demographicNo unencoded in URL Added Encode.forUriComponent()

Code Quality Improvements:

File Issue Fix
RxPrescriptionData.java:460 String comparison using == Changed to .equals()
DrugDaoImpl.java:257 String comparison using == Changed to .equals()
RxDrugRef.java Incomplete error message (trailing #) Removed trailing character
allergies.css Invalid CSS comment syntax (HTML -->) Fixed comment format
Scratch2Action.java Log injection vulnerability Encode user-controlled values
Scratch2Action.java Missing null checks Added validation for id parameter
Scratch2Action.delete() Null pointer risk Added null result check

Related PRs: #1872


2. oscarRx Prescription Module Bug Fixes (Critical)

Problem: Multiple JavaScript errors and parsing issues were breaking core prescription functionality including allergy search, favorites handling, and drug filtering.

Fixes applied:

  • SearchDrug3.jsp: Removed orphan brace breaking JS parsing; prefixed AJAX URLs with context path for Longterm/Acute filters
  • ShowAllergies2.jsp: Added global toggleSection handler for AJAX-loaded content; removed conflicting jQuery click binding
  • SideLinksEditFavorites2.jsp: Added missing useFav2() function with OWASP-encoded favorite ID
  • StaticScript.jsp/StaticScript2.jsp/WriteScript.jsp: Added null checks for window.prompt() to prevent errors on cancel
  • SideLinksNoEditFavorites.jsp/2: Fixed invalid self-closing script tags
  • RxSearchAllergy2Form.java: Added @JsonIgnoreProperties(ignoreUnknown = true) to prevent JSON parsing failures
  • ChooseDrug.jsp: Guarded against null drugSearch for DrugRef unavailability
  • RxHideCpp2Action.java/RxReorder2Action.java: Return UTF-8 plain text responses to prevent XML parsing errors
  • ListDrugs.jsp: Guarded checkbox event binding against missing elements
  • AddReaction2.jsp: Fixed syntax issue (extra closing brace in if statement)

Related PRs: #1863, #1861


3. Ocean eReferral Integration Fix

Problem: When importing sent eReferrals from Ocean into EMR, an incorrect warning message was displayed: "Ocean has not received a confirmation...".

Root Cause: The demographic search REST endpoint was returning DOB in yyyy-mm-dd string format when Ocean expected epoch timestamp (number) format.

Solution: Added @JsonFormat(shape = JsonFormat.Shape.NUMBER) annotation to the dob field in DemographicSearchResult to restore Struts 1 legacy behavior.

Related PRs: #1860

Related Issues: #1830, #1831


4. Consultation Fax Account Fix

Problem: Duplicate HTML ID (letterheadFax) in consultation form fax account dropdown prevented proper fax functionality. JavaScript getElementById("faxAccount") calls failed, and fax account selection didn't persist.

Solution:

  • Changed select dropdown id="letterheadFax"id="faxAccount"
  • Changed select name="letterheadFax"name="faxAccount"
  • Reverted option values to use faxConfig.getFaxNumber() (as expected by backend)
  • Applied Encode.forHtmlAttribute() for XSS protection

Related PRs: #1874

Related Issues: #1873 (priority: high)


5. EForm Email Integration Enhancement

Feature: Pass eForm ID (fid) from eForm submission to email compose page for custom integration support.

Changes:

  • AddEForm2Action.java: Add fid parameter to email compose redirect URL with proper Encode.forUriComponent() encoding
  • EmailCompose2Action.java: Capture fid from request and forward to JSP with input validation
  • emailCompose.jsp: Add hidden field to preserve fid value
  • Added XSS prevention via OWASP encoding and log injection protection

Related PRs: #1902

Related Issues: #1901


6. Missing OpenOSP Changes Restoration

Several changes from the open-osp/Open-O main branch before the "dogfish" merge were missing in openo-beta. These have been restored:

openo-beta PR Original OpenOSP PR Description
#1850 #61 Show MRP in document view
#1851 #109 Bootstrap datatables for DisplayDemographicConsultationRequests.jsp
#1852 #124 Refactor Hibernate session handling for dashboard queries
#1853 #52 Remove demographic-specific EctSessionBean keys from Session
#1854 #68 Prevent document acknowledgments on behalf of another user
#1872 Sync Update main to match open-osp

Additional security improvements applied during restoration:

  • OWASP encoding for patient names and MRP in document views
  • Proper URL encoding for Split action links

7. Security Enhancements

  • XSS Prevention: Applied OWASP encoding to status and patient variables in prescription module
  • Log Injection Prevention: Sanitized fid parameter before logging in email compose
  • Input Validation: Added numeric validation for fid parameter
  • Null Safety: Added null validation for scratch pad variables in Scratch2Action

Related PRs: #1902, #1850, #1863


8. Documentation Improvements

  • RxPrescriptionData.java: Added comprehensive JavaDoc to GCN_SEQNO and drugPrescribed accessor methods
  • RxDrugRef.java: Added JavaDoc to verify() method
  • ScratchPadDao.java: Added comprehensive JavaDoc to interface
  • FavoriteDaoImpl.java: Added comprehensive JavaDoc to class and methods
  • CSS Cleanup: Removed duplicate vertical-align property in allergies.css

Complete openo-beta PR List

All PRs from openo-beta/Open-O included in this release (merged since 2026-01-17):

Bug Fixes

PR # Title Merged
#1902 Pass eform ID to email compose for custom integration 2026-01-23
#1874 Resolve duplicate letterheadFax ID in consultation fax dropdown 2026-01-23
#1863 Fix JavaScript/Java errors in oscarRx prescription module 2026-01-23
#1861 Fix syntax issue in AddReaction2.jsp 2026-01-22
#1860 Return DOB in epoch format for Ocean eReferral import 2026-01-22
#1657 Ensure nonDrug field is only checked when it exists 2026-01-17
#1659 Remove dead JS code and 404 JS imports 2026-01-17
#1620 Fix positional parameter indexing in TeleplanS25Dao 2026-01-17

Upstream Sync & Missing Changes

PR # Title Merged
#1872 OpenOSP main sync (includes merge conflict resolution & fixes) 2026-01-23
#1854 Missing: PR 68 - Prevent document acknowledgments on behalf of another user 2026-01-23
#1853 Missing: PR 52 - Remove demographic-specific EctSessionBean keys 2026-01-23
#1852 Missing: PR 124 - Refactor Hibernate session handling for dashboard 2026-01-23
#1851 Missing: PR 109 - Bootstrap datatables for consultation requests 2026-01-23
#1850 Missing: PR 61 - Show MRP in document view 2026-01-23
#1839 Update main to match open-osp 2026-01-20

Security

PR # Title Merged
#1829 Exclude old iText PDF vulnerability (use OpenPDF instead) 2026-01-19
#1822 Add missing deny rule for repos/*/settings API 2026-01-19
#1821 Add deny rules for git reset soft/mixed and cherry-pick abort 2026-01-19
#1820 Close git push permission gap with explicit deny rules 2026-01-19
#1819 Add authorization checks to claude-code-review workflow 2026-01-19
#1841 Add security validation hooks for Claude Code 2026-01-20

CI/CD & DevContainer

PR # Title Merged
#1837 Add additional foundational config for UI tests 2026-01-20
#1807 Fix test issues in workflows for modern and legacy tests 2026-01-18
#1806 Include my.cnf in mariadb-dev container hash calculation 2026-01-18
#1796 Add caching of container images and related features 2026-01-18
#1792 Workflow fixes and devcontainer realign for Playwright 2026-01-18
#1791 Fix GitHub Actions workflow test failures 2026-01-18
#1790 Fix git ownership warnings in GitHub Actions workflow 2026-01-18
#1677 Workflow fixes for testing 2026-01-17
#1669 Remove pre-reqs from Playwright install (already installed) 2026-01-17
#1668 Workflow branch update and CLAUDE.md cleanup 2026-01-17
#1664 UI tests Playwright setup 2026-01-17
#1665 Pin third-party GitHub Action to commit SHA 2026-01-17

Documentation

PR # Title Merged
#1838 JSP refactoring docs 2026-01-20
#1828 Add comprehensive JavaDoc to AbstractModel.java 2026-01-20
#1827 Extract test documentation from CLAUDE.md to dedicated guide 2026-01-20
#1815 Enhance Claude Code workflow permissions and documentation 2026-01-19
#1814 Enhance Claude Code workflow permissions and documentation 2026-01-19
#1810 Optimize CLAUDE.md by removing duplicate sections 2026-01-18
#1608 Add comprehensive JavaDoc to Client.java for HNR web service DTO 2026-01-17
#1606 Document EmailData.java with comprehensive JavaDoc 2026-01-17
#1605 Add comprehensive JavaDoc to FrmBCINRRecord.java 2026-01-17

Dependency Updates

PR # Title Merged
#1636 Upgrade Apache Axis2 from 1.8.0 to 1.8.2 2026-01-17
#1634 Upgrade HAPI FHIR 6.4.0 → 6.10.5 (pre-Jakarta) 2026-01-17
#1633 Upgrade JavaMelody 1.99.3 to 1.99.4 2026-01-17
#1631 Replace taglibs:standard 1.1.2 with Glassfish JSTL 1.2.5 2026-01-17

Related Issues

Issues addressed or referenced by commits in this release:

Fixed Issues

  • #1901 - Pass eform ID to email compose page for custom integration ✅
  • #1873 - Duplicate letterheadFax ID breaks fax account selection (priority: high) ✅
  • #1835 - Exclude Lowagie iText version security vulnerability ✅
  • #1831 - eReferral status not updated after Ocean Resubmit ✅
  • #1830 - Warning shown when importing sent eReferral from Ocean ✅
  • #1826 - Reduce CLAUDE.md file size ✅
  • #1809 - More Claude capability ✅
  • #1855 - Refactor AbstractQueryHandler to use parameterized queries ✅

Open Issues for Future Work

  • #1900 - isCustom() should handle legacy data with GCN_SEQNO="0"
  • #1899 - Address Claude's final recommendations from PR #1872
  • #1898 - Add CSRF token protection to POST forms in WriteScript.jsp
  • #1894 - Console error "popupStart is not defined"
  • #1893 - Manage Letters page issues
  • #1847 - Upgrade/exclude unused Apache CXF transitive dependencies
  • #1846 - Upgrade netty versions for security
  • #1845 - Upgrade HL7 versions for security

Test Plan

  • Build passes with make install --run-tests
  • All modern JUnit 5 tests pass
  • All legacy JUnit 4 tests pass
  • Prescription Module Testing
    • Test allergy search and toggle sections
    • Test favorites functionality (add/use favorites)
    • Test Longterm/Acute/Inactive/External filters
    • Test Hide from CPP toggle
    • Test drug reordering
  • Ocean eReferral Testing
    • Import sent eReferral from Ocean into EMR (no warning should appear)
    • Verify demographic search returns DOB in epoch format
  • Consultation Fax Testing
    • Select fax account in consultation form
    • Verify fax account selection persists to CoverPage.jsp
  • EForm Email Testing
    • Submit eForm and verify fid is passed to email compose
  • Document View Testing
    • Verify MRP displays correctly in document view
  • Security Verification
    • Verify OWASP encoding applied to patient names
    • Verify no XSS vulnerabilities in prescription module

Breaking Changes

None expected. All changes maintain backward compatibility.


Deployment Notes

  1. Database schema: No migration scripts required
  2. Configuration: No new properties required
  3. DrugRef Integration: If using Vigilance database, ensure DrugRef service is connected
  4. Ocean Integration: Verify eReferral import works correctly after deployment

Migration Notes from Upstream PRs

This release includes all changes from the following upstream PRs. If you have local customizations, review these for potential conflicts:


Summary for Upstream Maintainers

This work package from openo-beta/Open-O represents collaborative improvements including:

  1. Merge Conflict Resolution: Carefully resolved conflicts when integrating upstream changes to ensure clean future synchronization between repositories
  2. Security Hardening: Applied additional OWASP encoding and input validation throughout the codebase during AI-assisted review, providing defense-in-depth security improvements
  3. Code Quality Improvements: Addressed code quality items (String comparisons, CSS syntax, null safety) identified during integration review
  4. Missing Changes Restoration: Identified 5 PRs from OpenOSP main that were not included in the dogfish merge and restored them with additional security enhancements
  5. Critical Bug Fixes: Fixed prescription module JavaScript errors, Ocean eReferral integration, and consultation fax functionality
  6. New Features: EForm email integration enhancement

🤖 Generated with Claude Code

LiamStanziani and others added 30 commits January 21, 2026 11:43
- Use a single session attribute "EctSessionBean" for all demographics.
- Update all java and jsp files to reflect this change.
…Drug3, ShowAllergies2, StaticScript, SideLinks, RxSearchAllergy2Form)
…ute/Inactive/External, fixed undefined error when clicking Longterm/Acute/Inactive/External due to the element being checked before its checked to exist
- Change fax account dropdown from id="letterheadFax" to id="faxAccount"
- Update form field name from letterheadFax to faxAccount
- Change option value from faxNumber to ID to match backend logic
- Remove unnecessary span wrapper around select element

This fixes duplicate HTML IDs that were causing JavaScript and fax functionality issues. The faxAccount dropdown now correctly matches  the backend expectations (CoverPage.jsp compares account.id with  requestScope.faxAccount) and JavaScript references (getElementById).
…Exception'

Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
…ta.java

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ew Exact behaviour to match production and moved the new Exact as the first radio button option
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit fixes multiple security vulnerabilities and code quality issues
identified during PR #1872 review:

Security Fixes:
- Fix XSS vulnerabilities by adding OWASP encoding in JSP files
  - WriteScript.jsp: Use Encode.forJavaScript() for drug names in JS context
  - ListDrugs.jsp: Use Encode.forHtmlAttribute() for comment TITLE attribute
  - StaticScript.jsp: Use Encode.forJavaScript() for regionalIdentifier and cn
  - PrintDrugProfile2.jsp: Use Encode.forHtml() for drug outline display
  - RenalDosing.jsp: Use Encode.forUriComponent() for demographicNo in URL
- Fix log injection in Scratch2Action by encoding user-controlled values
- Add input validation for id parameter in Scratch2Action.showVersion()
- Fix null pointer risk in Scratch2Action.delete() by checking for null result

Code Quality Fixes:
- Fix String comparison using == instead of .equals() in:
  - RxPrescriptionData.java line 460
  - DrugDaoImpl.java line 257
- Fix incomplete error message in RxDrugRef.java (remove trailing #)
- Fix invalid CSS comment syntax in allergies.css (remove HTML --> marker)

Documentation:
- Add comprehensive JavaDoc to ScratchPadDao interface
- Add comprehensive JavaDoc to FavoriteDaoImpl class and methods
- Include @SInCE tags based on git history per CLAUDE.md guidelines

Reviewed Items (No Changes Needed):
- Drug.java GCN_SEQNO: Already correctly defined as String (intentional migration)
- ScratchPadDaoImpl.java JPQL: MySQL-specific functions are supported by custom OscarMySQL5Dialect

All fixes follow OpenO EMR security standards with OWASP encoding and proper
validation as required by CLAUDE.md guidelines.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
…java

Move inline comment '// not custom - safe GCN' from end of if statement
to its own line above the if statement, following Java coding guidelines
that discourage same-line comments.

Location: src/main/java/ca/openosp/openo/prescript/data/RxPrescriptionData.java:461-462
…nData

Add comprehensive JavaDoc documentation to getDrugPrescribed() and
setDrugPrescribed() methods in the Prescription inner class.

Documentation explains the purpose of the drugPrescribed field: tracking
the exact prescribed drug name for accurate prescription records, particularly
important for distinguishing between generic and brand name prescriptions.

Location: src/main/java/ca/openosp/openo/prescript/data/RxPrescriptionData.java:682-710
github-actions bot and others added 19 commits January 23, 2026 20:27
Added detailed JavaDoc documentation to the verify() method including:
- Method purpose and functionality description
- Complete @return documentation with Map keys and their meanings
- @throws documentation for service availability issues
- @SInCE tag with accurate date (2026-01-21)

The documentation clarifies that this method performs a health check
on the drug reference service and retrieves system metadata including
last update time, database identifier, and version information.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: LiamStanziani <liamstanziani@yahoo.com>
Add comprehensive null and format validation for variables in Scratch2Action:
- Validate h.get("text") is not null before calling trim()
- Validate h.get("id") is not null/empty before parsing
- Validate request parameter "id" is not null/empty before parsing
- Add NumberFormatException handling with proper error responses
- Set appropriate HTTP status codes (400/500) on validation failures
- Log errors without exposing PHI using OWASP encoding

Addresses CodeRabbit review comment on PR #1872 requesting null validation
for variables at lines 92-99.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Remove redundant 'vertical-align: text-top' declaration from
td#allergiesColumnTwoRowTwo selector. The second declaration
'vertical-align: top !important' was overriding it anyway,
causing potential confusion for maintainers.

Co-Authored-By: Liam Stanziani <liam@stanziani.ca>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Apply Encode.forJavaScriptAttribute() to drug.genericName on line 174
to prevent XSS vulnerability where malicious drug names could break out
of JavaScript string context and execute arbitrary code.

Fixes XSS vulnerability identified in PR review.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…escriptionData

Added complete JavaDoc documentation to getGCN_SEQNO() and setGCN_SEQNO(String)
methods in the Prescription inner class. Documentation includes:
- Description of GCN_SEQNO as drug reference system identifier
- @param tag for setter with type specification
- @return tag for getter with type specification
- @SInCE tag based on git history (2022-12-16)

This addresses CodeRabbit review feedback on PR #1872 regarding missing
JavaDoc for public accessor methods.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…changes

Resolve Missing changes from OpenOSP main before dogfish merge (PR 68: Bugfix - preventing acknowledments on documents on behalf of another user)
…changes

Resolve Missing changes from OpenOSP main before dogfish merge (PR 52: Remove demographic-specific EctSessionBean keys from Session)
…-changes

Resolve Missing changes from OpenOSP main before dogfish merge (PR 124: refactor hibernate session handling for dashboard queries)
…changes

Resolve Missing changes from OpenOSP main before dogfish merge (PR 61: Tweak - Show MRP in document view)
…ed td structure

- Add Encode.forHtmlAttribute() for status variable in class attributes (lines 283, 301)
- Add Encode.forHtml() for patient variable output (line 315)
- Fix invalid nested <td> HTML structure by properly closing service cell before opening specialist cell
- Addresses security vulnerabilities identified in code review

Co-authored-by: Michael Yingbull <yingbull@users.noreply.github.com>
…-changes

Resolve Missing changes from OpenOSP main before dogfish merge (PR 109: Use bootstrap datatables for DisplayDemographicConsultationRequests.jsp)
…sting

Fix: resolve JavaScript/Java errors in oscarRx prescription module (Search Drug3, ShowAllergies2, StaticScript, SideLinks, RxSearchAllergy2Form)
Copilot AI review requested due to automatic review settings January 23, 2026 22:51
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@warrendennis warrendennis merged commit 8aa7934 into open-osp:main Feb 20, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants