Joe is away, so approving based on the code having the requested change, and otherwise looking good/passing tests.
* fix(sr-hydration): enable hydration and arrows navigation for 3D SR measurements
* test: add automated test for SR measurement navigation with arrows after hydration
* add cross-study warning in the 3D branch
* test: address reviewer feedback for the test
* fix: support 3D and 2D annotations for SR hydration
* test: improve navigation to first image
---------
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
* fix(window level): Set up listener for viewport availability such that the initial window level can be read and displayed.
* PR feedback.
* PR feedback.
---------
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
fix(Threshold tool): Added 'ThresholdCircularBrushDynamic' to the toolNames array so the evaluator correctly recognizes it as an active state for the Threshold button when Dynamic mode is selected.
* feat(ecg): add DICOM ECG waveform extension
Introduce @ohif/extension-dicom-ecg for rendering DICOM waveform (ECG)
data. Register the extension in the basic mode and pluginConfig.json,
and remove ECG from NON_IMAGE_MODALITIES so waveform display sets are
handled by the new viewport.
* refactor(ecg): move ECG support into cornerstone extension per review feedback
- Remove standalone dicom-ecg extension; fold all ECG functionality into
the cornerstone extension as requested by reviewer
- Add ECG SOP class handler (DicomEcgSopClassHandler) to the cornerstone
extension getSopClassHandlerModule, registering ECG waveform metadata
via genericMetadataProvider on display set creation
- Move ECG helpers (buildEcgModule, decodeInt16Multiplex, base64ToArrayBuffer)
into extensions/cornerstone/src/utils/ecgMetadata.ts
- Handle ECGViewport in CornerstoneViewportService._setDisplaySets by
detecting ECGViewport instanceof and calling setEcg(imageId) directly,
so OHIFCornerstoneViewport can be used without a custom ECG viewport component
- Add ECG support to getCornerstoneViewportType utility
- Update basic mode to reference the cornerstone extension's ECG SOP handler
and use the base cornerstone viewport for ECG display sets
- Migrate ecgMetadata and getCornerstoneViewportType tests
* chore: revert bun.lock to upstream origin/master
---------
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>
* fix capture not maintaining flip/rotate state
* fix capture not maintaining flip/rotate state
---------
Co-authored-by: silasshellenbarger <sdshe@Silas-Computer.localdomain>
* fix: Detect 16 bit when 8 declared
* Update bun lock with dcmjs changes
* PR comments
* Update package versions
* fix: Palette color lookup table data for dcmjs parsed data
* fix: Published version should match (#5813)
* fix: Published version should match
* Move version number update to package.json
* fix: Netlify version number update
* Try updating platform app vesion too
* PR comments
---------
Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
* Update latest cs3d
* formatting
* fix: Use 64k instead of 0 for number of entries
* fix: Revert CS3D version to see test issues
* Updated screenshots for ArrowAnnotate.spec.ts.
* Update CS3D version
* fix: Update cs3d 4.17.4
* Update bun lock
* Update bun
* Downgrade to CS3D 4.17.2 to try to release
---------
Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>
* chore(security): Update circleci config to only run bun audit for lockfile changes.
* Switched to eslint 9.39.3 for compatibility with .eslintrc.json.
* Disabled all dependabot pull requests for bun and npm version updates.
* fix: Published version should match
* Move version number update to package.json
* fix: Netlify version number update
* Try updating platform app vesion too
* PR comments
---------
Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
fix(security): CVE-2026-27212 patched.
Various dependency updates as a result of CVE-2026-26996.
Ultimately CVE-2026-26996 was ignored because it is only exposed in itk-wasm via CLI and OHIF's other use of minimatch is limited to build/dev environments.
- add segmentationExists check to getSopClassHandlerModule
- now firing SEGMENTATION_REMOVED and SEGMENTATION_REPRESENTATION_REMOVED events
- centralized segmentation removal in a listener
- when a segmentation is deleted (completely), remove it from all viewports it overlays
- when a segmentation is removed from a viewport, remove it as overlay from the viewport
---------
Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>
Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>