Skip to content

fix(security): Bump tar to 7.5.9 and lerna to 9.0.4 to fix CVE-2026-26960 - #2618

Merged
jbocce merged 2 commits into
cornerstonejs:mainfrom
jbocce:fix/tar-linear-advisory
Feb 18, 2026
Merged

jbocce merged 2 commits into
cornerstonejs:mainfrom
jbocce:fix/tar-linear-advisory

Conversation

@jbocce

@jbocce jbocce commented Feb 18, 2026

Copy link
Copy Markdown
Collaborator

Context

GHSA-83g3-92jg-28cx

Changes & Results

Bump tar to 7.5.9 and lerna to 9.0.4

Testing

Run automated tests. npm publish must work.

Checklist

PR

  • My Pull Request title is descriptive, accurate and follows the
    semantic-release format and guidelines.

Code

  • My code has been well-documented (function documentation, inline comments,
    etc.)

Public Documentation Updates

  • The documentation page has been updated as necessary for any public API
    additions or removals.

@jbocce
jbocce requested a review from wayfarer3130 February 18, 2026 15:24

@wayfarer3130 wayfarer3130 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That is a lot of dependency changes - I'm ok with these changes, but not sure what all we want to look at in addition to the basic changes.

@jbocce
jbocce merged commit 811c326 into cornerstonejs:main Feb 18, 2026
10 checks passed
@jbocce

jbocce commented Feb 18, 2026

Copy link
Copy Markdown
Collaborator Author

That is a lot of dependency changes - I'm ok with these changes, but not sure what all we want to look at in addition to the basic changes.

Yes the lerna upgrade brought in lots of dependency changes. The security audit passes. This type of change is difficult to control, but I think the audit check passing means a lot.

@jbocce
jbocce deleted the fix/tar-linear-advisory branch February 28, 2026 13:06
wayfarer3130 added a commit that referenced this pull request Jul 9, 2026
…2611)

* fix: Use the image loader for dicom-seg to allow compressed images

* chore(deps-dev): bump lodash from 4.17.21 to 4.17.23 (#2572)

* fix(security): Update lodash to 4.17.23 using a resolution to address CVE-2025-13465.

* Removed lodash from the dev dependencies since it is in the resolutions now.

* Update lodash to 4.17.23 in the docs package.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>

* chore(version): version.json [skip ci]

* chore(version): Update package versions [skip ci]

* chore: update generated version file [skip ci]

* feat(MPR): add reformat orientation (#2540)

* refactor: replace string literals with OrientationAxis enums for better type safety and clarity in BaseVolumeViewport and getCameraVectors

* feat(rendering): Add function to calculate acquisition plane reformat orientation based on image orientation patient values

* feat: enhance reformat orientation handling in VolumeViewport and BaseVolumeViewport, allowing for specific axial, sagittal, and coronal reformats while maintaining base orientation references

* feat: add buttons for setting viewport orientations to non-reformat, reformat, and acquisition types, enhancing user control over viewport display

* fix: suppress events during camera reset in VolumeViewport to prevent premature rendering

* fix(getCameraVectors): import OrientationVectors type

* fix(tests): update button text in MPR Reformat visual tests

* fix(tests): update MPR Reformat screenshots for Chromium and WebKit

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): version.json [skip ci]

* chore(version): Update package versions [skip ci]

* chore: update generated version file [skip ci]

* fix: CS3D version commits to single version (#2612)

* chore(version): Update package versions to 4.16.1 [skip ci]

* chore(deps-dev): bump webpack from 5.81.0 to 5.105.0 (#2603)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>

* chore(version): Update package versions to 4.16.2 [skip ci]

* fix palette color image loading (#2610)

* refactor the solution given

* fix fetch color tables

* important refactors to optimize worker functionality

* refactor fetch palette data

* fix clearly wrong test values

* refactor as reviewer suggestions

* fix: Convert 16 bit declared as 8 palette color data

* fix: or condition on setting 16 bit palette data

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.16.3 [skip ci]

* fix(security): Bump tar to 7.5.9 and lerna to 9.0.4 to fix CVE-2026-26960 (#2618)

* chore(version): Update package versions to 4.16.4 [skip ci]

* feat(tools): implement orthogonalT and lineSegment modes for PlanarFreehandROI open U-shape contours (#2615)

* feat(tools): implement orthogonalT and lineSegment modes for PlanarFreehandROI open U-shape contours

Add two new rendering modes for the open U-shaped contour T-overlay:

- 'orthogonalT': computes the T-line endpoint as the perpendicular
  ray-contour intersection from the chord midpoint, instead of the
  farthest point. Useful for LA cardiac workflows where the T must be
  perpendicular to the chord.

- 'lineSegment': draws only the dashed chord connecting endpoints
  without any T-line, closing the contour visually.

Also adds optional shaded fill for the enclosed region (contour + chord)
when fillOpacity > 0, and centralizes variant dispatch into a single
resolveVectorToPeak function to eliminate duplicated branching across
drawLoop, openContourEditLoop, and renderMethods.

* fix(tools): address PR review for PlanarFreehandROI U-shape modes

- Use vec2.sub instead of create+set for chord vector
- Replace double-loop ray intersection with single-pass dot-product
  approach for orthogonalT peak finding
- Return null with console.warn instead of falling back to farthestT
  when no orthogonal intersection is found
- Add 'none' option to U-shape dropdown to remove U-shape rendering
- Auto-apply U-shape mode on dropdown change, remove separate button
- Apply configured U-shape mode to newly drawn open contours
- Add fill opacity dropdown using tool configuration
- Read fillOpacity from tool config in renderMethods

* refactor(tools): use vec2.dot for orthogonal T dot product calculation

* Move open u shaped to utils helper

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.17.0 [skip ci]

* fix(security): Changes in response to CVE-2026-26996 (#2622)

* fix(security): Various dependency updates as a result of CVE-2026-26996.
Ultimately the vulnerability was ignored because it is only exposed in itk-wasm via CLI and it is limited to build/dev environments.

* chore(version): Update package versions to 4.17.1 [skip ci]

* fix: annotations text box limitations (#2617)

* refactor: update getTextBoxCoordsCanvas function to accept element and textLines parameters for improved textbox placement across multiple annotation tools

* fix: correct bounding box calculations in _drawTextGroup function to accurately reflect text box position and size

* feat: implement text box overlap management with registry for improved placement accuracy

- Added a text box overlap registry to track rendered text box positions.
- Integrated overlap avoidance logic in getTextBoxCoordsCanvas to prevent occlusion of existing text boxes.
- Updated draw and drawTextBox functions to clear and register text boxes during rendering.

* refactor: enhance overlap detection in getTextBoxCoordsCanvas using AABB intersection

- Replaced the previous rectangle overlap logic with a more accurate AABB intersection method.
- Introduced a new utility function to convert text box rectangles to AABB format, allowing for better handling of overlap checks.
- Updated the overlap detection functions to utilize the new intersection logic for improved accuracy in text box placement.

* test: add unit tests for getTextBoxCoordsCanvas to validate positioning logic

- Introduced a new test suite for getTextBoxCoordsCanvas to ensure correct coordinate calculations for text boxes.
- Added tests for default positioning, overlap handling, and fallback mechanisms when space is limited.
- Utilized a mock viewport element to simulate various scenarios for accurate testing.

* style: format getTextBoxCoordsCanvas test cases for improved readability

- Reformatted the test cases in getTextBoxCoordsCanvas.spec.ts to enhance code clarity.
- Adjusted the indentation and line breaks for better visual structure without altering functionality.

* refactor: update type assertions in getTextBoxCoordsCanvas tests for better type safety

- Changed type assertions from any to unknown in getTextBoxCoordsCanvas test cases to enhance type safety and maintain code quality.
- Ensured consistency in type handling across the test suite without altering existing functionality.

* refactor: remove unnecessary type assertions in getTextBoxCoordsCanvas tests

- Updated test cases in getTextBoxCoordsCanvas.spec.ts to eliminate type assertions from unknown to the actual type for annotationPoints and related variables.
- Improved code clarity and type safety without changing the existing functionality of the tests.

* chore: update tsconfig.json to exclude test files from compilation

- Added an "exclude" property to tsconfig.json to prevent test files from being included in the TypeScript compilation process.
- This change helps streamline the build process by omitting unnecessary test files.

* refactor: integrate getTextBoxCoordsCanvas into ArrowAnnotateTool for improved text box positioning

- Replaced direct canvas coordinate assignment with a call to getTextBoxCoordsCanvas to enhance the accuracy of text box placement.
- This change ensures that text box coordinates are calculated based on the current canvas state and element, improving overall annotation functionality.

* refactor: streamline text box rendering across annotation tools

- Replaced direct text box rendering logic with a unified renderLinkedTextBoxAnnotation method in multiple annotation tools.
- This change enhances code maintainability and consistency in text box visibility and positioning logic.
- Improved handling of text box state and coordinates, ensuring better integration with existing annotation functionalities.

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.17.2 [skip ci]

* fix: Continuous flicker on viewer redraw (#2626)

* fix: Continuous flicker on viewer redraw

* fix: Comment on size 0

* chore(version): Update package versions to 4.17.3 [skip ci]

* chore(security): Update circleci config to only run bun audit for lockfile changes. (#2629)

Disabled all dependabot pull requests for bun and npm version updates.

* chore(version): Update package versions to 4.17.4 [skip ci]

* fix: move crosshairs implementation to absolute camera instead of delta (#2627)

* chore(version): Update package versions to 4.17.5 [skip ci]

* feat(core): add ECGViewport for DICOM waveform rendering (#2621)

* feat(core): add ECGViewport for DICOM waveform rendering

Add a new ECG viewport type that renders 12-lead ECG traces from DICOM
Waveform data using a canvas-based custom rendering pipeline (same pattern
as VideoViewport and WSIViewport).

- ECGViewport class with grid, trace, and label rendering
- Pan (left-drag) and Zoom (right-drag) tool support
- Per-channel trace visibility toggle
- Supports InlineBinary, BulkDataURI, and retrieveBulkData data sources
- Typed WaveformSequenceInput interface for the setEcg() API
- Interactive example with 12-lead ECG demo data

* Added tools

* Add default ultrasound directional tool

* feat(ecg): add ECG metadata provider, refactor viewport, and add tests

Extract waveform parsing logic from ECGViewport into ECGHelpers in
dicomImageLoader with proper metadata provider integration. Simplify
the viewport to consume parsed metadata instead of raw DICOM JSON.
Add unit tests for both ECGViewport and ECGHelpers.

* fix: Measurements

* fix(tools): restrict ECG Region calibration to physicalUnitsYDirection === -1

* fix(ecg): use correct viewportType key in karma test setup

The ECG viewport karma tests were failing with 'viewport.setEcg is not
a function' because createViewports() destructures viewportType (not
type), causing the viewport to be created as a StackViewport by default.

* fix(ecg): resolve TypeScript errors in ECGHelpers after WADORSMetaDataElement type tightening

The main merge introduced stricter typing on WADORSMetaDataElement, causing
build errors where Record<string, unknown> was used for InlineBinary/BulkDataURI
values and channel definition sequence items.

* fix(probe): restore voxelManager value lookup for non-ECG/US modalities

When adding ECG branch to ProbeTool, the default value assignment
(voxelManager.getAtIJKPoint) was removed from the common path and only
kept inside the US branch, leaving CT/MR/etc. without a value → undefined.

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.18.0 [skip ci]

* fix(tools): prevent ANNOTATION_COMPLETED re-firing on PlanarFreehandROI text click (#2631)

Add a movingTextBox guard in completeDrawOpenContour and
completeDrawClosedContour so we do not fire triggerContourAnnotationCompleted when the user only clicked the text box.

* chore(version): Update package versions to 4.18.1 [skip ci]

* fix: Centralize aspect ratio handling for flicker removal (#2634)

* chore(version): Update package versions to 4.18.2 [skip ci]

* fix(RectangleROI Adapter): Assume that ConceptNameCodeSequence is a single element array. (#2636)

* chore(version): Update package versions to 4.18.3 [skip ci]

* Feature/ rotate clipping planes in volume cropping tool (#2547)

* feat(rendering): Add function to calculate acquisition plane reformat orientation based on image orientation patient values

* feat(volumeCropping): Enhance volume cropping tool with clipping plane functionality and UI improvements

- Updated the volume cropping tool to include toggles for clipping planes and handles.
- Improved instructions for user interaction with clipping planes.
- Added new utility functions for handling clipping planes, including copying and calculating adaptive sphere radius.
- Introduced constants for clipping plane indices and tolerances.
- Enhanced the tool's ability to handle rotated volumes and maintain proper clipping plane orientation.
- Added new utility functions for line intersection and color conversion.
- Refactored existing code for better clarity and maintainability.

* refactor(getCameraVectors): Remove unused getAcquisitionPlaneReformatOrientation function and its documentation

* refactor(volumeCroppingTool): Remove commented-out code and improve clarity in clipping plane updates

* Removed 'virtual' annotations from control tool -remnamnts from the crosshair tool

* refactor(volumeCroppingTool): Remove commented-out code for clarity in toggle button functionality

* refactor(volumeCroppingControlTool): Remove unused methods and variables

* refactor(volumeCroppingTool): Simplify sphere and clipping plane updates

- Removed redundant code for updating sphere positions and clipping planes.
- Introduced utility methods for better clarity and maintainability.
- Enhanced error handling by using a consistent error variable naming convention.
- Improved the organization of the code related to corner and face sphere calculations.

* refactor(volumeCroppingControlTool): Manage event listeners for tool state changes

- Added event listener for VOLUMECROPPING_TOOL_CHANGED when the tool is enabled.
- Removed event listener to prevent memory leaks when the tool is disabled.
- Cleaned up commented-out code for better clarity in viewport initialization and tool selection logic.

* refactor(volumeCroppingTool): Enhance code structure for clipping plane management

- Introduced utility methods for retrieving volume actors and mappers.
- Simplified clipping plane application logic by consolidating related functionality.
- Improved error handling in viewport retrieval and ensured safe access to viewports info.
- Cleaned up redundant code for better maintainability and clarity.

* refactor(volumeCroppingControlTool): Clean up commented code and improve clarity

- Removed unnecessary comments throughout the code to enhance readability.
- Streamlined the logic for handling annotations and viewport updates.
- Improved organization of event listener management for tool state changes.

* Applied Agents.md

* Use existing ImageToWorld

* refactor(VolumeCroppingTool): Simplify diagonal calculation using vec3.distance

* refactor(VolumeCroppingTool): Replace manual normalization with vec3.normalize for direction vectors

* refactor(VolumeCroppingTool): Remove calculateNewCornerPosition function and simplify corner position calculation

* refactor(VolumeCroppingTool): Optimize line extension calculation using vec3.scaleAndAdd

* refactor(VolumeCroppingTool): Enhance orientation detection by utilizing vec3.dot for improved accuracy

* refactor(VolumeCroppingTool): Modularize 3D drawing utilities by adding addLine3DBetweenPoints and calculateAdaptiveSphereRadius functions

* feat(colorUtilities): Add convertColorArrayToRgbString utility and integrate it into core package

* feat(volumeCroppingTool): Add shift-drag to ratate the clipping planes

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.18.4 [skip ci]

* Feat/orientation control tool (#2586)

* feat(rendering): Add function to calculate acquisition plane reformat orientation based on image orientation patient values

* feat(orientation): Introduce OrientationControlTool for interactive volume reorientation in 3D viewports

* feat(orientation): Add surface labels and logging for clicked surfaces in OrientationControlTool

* feat(orientation): Refactor camera orientation calculation in OrientationControlTool using quaternion for improved stability

* feat(orientation): Simplify marker orientation in OrientationControlTool to maintain world alignment

* refactor(orientation): Update viewUp vectors for edge orientations in OrientationControlTool for improved clarity and consistency

* feat(orientation): Enhance OrientationControlTool with camera animation for smoother transitions and update viewport corner for orientation marker

* feat(orientation): Optimize quaternion handling in OrientationControlTool to prevent unnecessary rotations and ensure smoother transitions

* refactor(orientation): Update viewUp vectors for bottom and top edge orientations in OrientationControlTool to fix inversion issues and maintain correct orientation

* fix(orientation): Adjust opacity and edge colors in OrientationControlTool for improved visibility and consistency

* feat(orientation): Implement gray color toggle for OrientationControlTool based on URL parameter and enhance drag detection for improved user interaction

* feat(orientation): Refactor color configuration in OrientationControlTool to use structured overlayConfiguration for improved clarity and customization

* feat(orientation): Update color scheme handling in volumeCroppingTool and OrientationControlTool to support multiple color configurations from URL parameters

* feat(orientation): Integrate vtkAnnotatedCubeActor into OrientationControlTool for enhanced visual representation of main axes and refactor geometry handling for corners and edges

* feat(orientation): Add color scheme support in OrientationControlTool with helper method for dynamic face colors based on configuration

* feat(orientation): Add "Keep orientation up" toggle to volumeCroppingTool and enhance OrientationControlTool to maintain world-aligned marker orientation

* feat(orientation): Add URL parameter support for "Keep orientation up" in volumeCroppingTool and enhance OrientationControlTool to utilize this setting for improved marker alignment

* feat(orientation): Introduce OrientationController tool for enhanced 3D orientation control with interactive markers and customizable appearance

* refactor(orientation): Update OrientationController to handle multiple actors per viewport and enhance actor creation with improved color handling and visibility settings

* refactor(orientation): Remove console logs from OrientationController and AnnotatedRhombicuboctahedronActor for cleaner code and improved performance

* feat(orientation): Implement face highlighting in OrientationController for enhanced visual feedback during interactions

* feat(texture): Enhance AnnotatedRhombicuboctahedronActor with texture atlas support for main faces and update mesh creation to include texture coordinates

* fix(orientation): Adjust global cellId calculation in OrientationController to correctly handle clicks on edge and corner faces for accurate orientation retrieval

* fix(orientation): Update viewport rendering in OrientationController after successful initial positioning and correct viewUp vector for top orientation

* feat(toolbar): Enhance volumeCroppingTool with a responsive toolbar layout, adding left and right containers for better organization of controls

* feat(orientation): Add 'keepOrientationUp' configuration to OrientationController for improved viewUp handling during orientation adjustments

* fix(orientation): Update default color scheme in OrientationController to 'marker' and adjust related logic in volumeCroppingTool for consistency

* fix(orientation): Refactor face highlighting logic in OrientationController to prevent redundant highlighting and improve hover interactions; adjust volumeCroppingTool layout for better responsiveness

* feat(orientation): Add letter color scheme configuration to OrientationController and volumeCroppingTool, allowing users to customize letter colors via URL parameters

* feat(orientation): Refactor OrientationController to utilize vtkOrientationControllerWidget for improved actor management and interaction handling; streamline actor creation, positioning, and event handling for enhanced performance and maintainability

* fix(orientation): Update marker size calculation in OrientationControllerWidget to maintain consistent screen size across zoom levels; refactor getOrientationForFace method to improve organization and accessibility of orientation data

* fix(orientation): Update letter color scheme to 'mixed' for improved customization; add backward compatibility for legacy color schemes and implement marker recreation on configuration change

* refactor(orientation): Rename OrientationController to OrientationControllerTool for consistency; implement new OrientationControllerTool class with enhanced functionality and improved actor management, while removing the deprecated OrientationControlTool

* fix(orientation): Update viewport handling in vtkOrientationControllerWidget to ensure correct type casting; add double-click event handler for improved interaction and cleanup logic for event listeners

* refactor(orientation): Simplify actor management in vtkOrientationControllerWidget by removing overlay renderer logic and enhancing viewport integration for improved performance and maintainability

* fix(orientation): Update color schemes in volumeCroppingTool and OrientationControllerTool to use 'rgy' and 'mixed' for improved consistency and customization; adjust related logic for backward compatibility

* feat(orientation): Enhance OrientationControllerTool with improved viewport handling and marker management; introduce configurable position and size settings, and add event listener for viewport removal

* feat(orientation): Add slider for orientation marker size in volumeCroppingTool; update title and description to reflect new functionality

* chore(orientation): Import OrientationVectors type in getCameraVectors helper for improved type safety and clarity

* sync with main

* sync with main

* feat(rendering): Add function to calculate acquisition plane reformat orientation based on image orientation patient values

* feat(orientation): Introduce OrientationControlTool for interactive volume reorientation in 3D viewports

* feat(orientation): Add surface labels and logging for clicked surfaces in OrientationControlTool

* feat(orientation): Refactor camera orientation calculation in OrientationControlTool using quaternion for improved stability

* feat(orientation): Simplify marker orientation in OrientationControlTool to maintain world alignment

* refactor(orientation): Update viewUp vectors for edge orientations in OrientationControlTool for improved clarity and consistency

* feat(orientation): Enhance OrientationControlTool with camera animation for smoother transitions and update viewport corner for orientation marker

* feat(orientation): Optimize quaternion handling in OrientationControlTool to prevent unnecessary rotations and ensure smoother transitions

* refactor(orientation): Update viewUp vectors for bottom and top edge orientations in OrientationControlTool to fix inversion issues and maintain correct orientation

* fix(orientation): Adjust opacity and edge colors in OrientationControlTool for improved visibility and consistency

* feat(orientation): Implement gray color toggle for OrientationControlTool based on URL parameter and enhance drag detection for improved user interaction

* feat(orientation): Refactor color configuration in OrientationControlTool to use structured overlayConfiguration for improved clarity and customization

* feat(orientation): Update color scheme handling in volumeCroppingTool and OrientationControlTool to support multiple color configurations from URL parameters

* feat(orientation): Integrate vtkAnnotatedCubeActor into OrientationControlTool for enhanced visual representation of main axes and refactor geometry handling for corners and edges

* feat(orientation): Add color scheme support in OrientationControlTool with helper method for dynamic face colors based on configuration

* feat(orientation): Add "Keep orientation up" toggle to volumeCroppingTool and enhance OrientationControlTool to maintain world-aligned marker orientation

* feat(orientation): Add URL parameter support for "Keep orientation up" in volumeCroppingTool and enhance OrientationControlTool to utilize this setting for improved marker alignment

* feat(orientation): Introduce OrientationController tool for enhanced 3D orientation control with interactive markers and customizable appearance

* refactor(orientation): Update OrientationController to handle multiple actors per viewport and enhance actor creation with improved color handling and visibility settings

* refactor(orientation): Remove console logs from OrientationController and AnnotatedRhombicuboctahedronActor for cleaner code and improved performance

* feat(orientation): Implement face highlighting in OrientationController for enhanced visual feedback during interactions

* feat(texture): Enhance AnnotatedRhombicuboctahedronActor with texture atlas support for main faces and update mesh creation to include texture coordinates

* fix(orientation): Adjust global cellId calculation in OrientationController to correctly handle clicks on edge and corner faces for accurate orientation retrieval

* fix(orientation): Update viewport rendering in OrientationController after successful initial positioning and correct viewUp vector for top orientation

* feat(toolbar): Enhance volumeCroppingTool with a responsive toolbar layout, adding left and right containers for better organization of controls

* feat(orientation): Add 'keepOrientationUp' configuration to OrientationController for improved viewUp handling during orientation adjustments

* fix(orientation): Update default color scheme in OrientationController to 'marker' and adjust related logic in volumeCroppingTool for consistency

* fix(orientation): Refactor face highlighting logic in OrientationController to prevent redundant highlighting and improve hover interactions; adjust volumeCroppingTool layout for better responsiveness

* feat(orientation): Add letter color scheme configuration to OrientationController and volumeCroppingTool, allowing users to customize letter colors via URL parameters

* feat(orientation): Refactor OrientationController to utilize vtkOrientationControllerWidget for improved actor management and interaction handling; streamline actor creation, positioning, and event handling for enhanced performance and maintainability

* fix(orientation): Update marker size calculation in OrientationControllerWidget to maintain consistent screen size across zoom levels; refactor getOrientationForFace method to improve organization and accessibility of orientation data

* fix(orientation): Update letter color scheme to 'mixed' for improved customization; add backward compatibility for legacy color schemes and implement marker recreation on configuration change

* refactor(orientation): Rename OrientationController to OrientationControllerTool for consistency; implement new OrientationControllerTool class with enhanced functionality and improved actor management, while removing the deprecated OrientationControlTool

* fix(orientation): Update viewport handling in vtkOrientationControllerWidget to ensure correct type casting; add double-click event handler for improved interaction and cleanup logic for event listeners

* refactor(orientation): Simplify actor management in vtkOrientationControllerWidget by removing overlay renderer logic and enhancing viewport integration for improved performance and maintainability

* fix(orientation): Update color schemes in volumeCroppingTool and OrientationControllerTool to use 'rgy' and 'mixed' for improved consistency and customization; adjust related logic for backward compatibility

* feat(orientation): Enhance OrientationControllerTool with improved viewport handling and marker management; introduce configurable position and size settings, and add event listener for viewport removal

* feat(orientation): Add slider for orientation marker size in volumeCroppingTool; update title and description to reflect new functionality

* chore(orientation): Import OrientationVectors type in getCameraVectors helper for improved type safety and clarity

* sync with main

* sync with main

* refactor(orientation): Simplify matrix creation in OrientationControllerTool by using mat4.fromValues for improved readability and maintainability

* refactor(orientation): Replace targetForward with targetViewPlaneNormal in OrientationControllerTool for improved clarity and consistency in vector projections

* refactor(orientation): Simplify currentUp vector normalization in OrientationControllerTool for improved clarity and efficiency

* refactor(orientation): Streamline quaternion creation in OrientationControllerTool for improved performance and readability

* refactor(orientation): Optimize quaternion negation in OrientationControllerTool for enhanced performance and code clarity

* refactor(orientation): Use Point3 type for viewPlaneNormal and viewUp

* refactor(orientation): Extract camera reset options into a constant

* refactor(orientation): Simplify vector extraction from interpolatedMatrix in OrientationControllerTool for improved readability

* refactor(vtkjs): Simplify hex color conversion in AnnotatedRhombicuboctahedronActor for improved readability

* refactor(orientation): Update letter color scheme handling in OrientationControllerTool and volumeCroppingTool for improved consistency and clarity

* refactor(orientation): Enhance orientation change handling in Viewport and OrientationControllerTool

* Enhance volume cropping tool instructions and UI elements

- Updated instructions to clarify user interactions with clipping planes and added guidance for the orientation widget.
- Improved the toggle button title for better readability.
- Adjusted mouse bindings for clipping plane rotation.

* Added orientation control widget to the 3 ortho volume viewports

* Added note on URL parameters usagebelow Basic Controls

* Remove changes to cropping tool

* Enhance volume cropping tool UI and instructions

- Updated the label for the orthographic viewports dropdown for consistency.
- Improved the instructions to clarify user interactions with clipping planes.
- Added a new label for cropping functionality in the UI.
- Refined the toggle button title for better readability.
- Removed commented-out code to improve clarity and maintainability.

* Widget does not display in some brwosers:  position issue

- Updated canvas width and height calculations to account for device pixel ratio and client dimensions.
- Adjusted corner offset based on viewport type for better UI consistency.

* Remove unnecssary page relaods

- Updated URL manipulation to use `window.history.replaceState` for better user experience.
- Integrated color scheme updates for orientation controller tool based on user selection.
- Improved tool state management by enabling and disabling the orientation controller tool after configuration changes.

* Refactor volume cropping tool to simplify URL parameter handling

- Removed unused functions for retrieving color schemes and orientation settings from the URL.
- Updated instructions to reflect the removal of URL parameters for color schemes and orientation.
- Set default values for color schemes and orientation directly in the code for improved clarity and maintainability.
- Enhanced dropdown functionality for color scheme selection without relying on URL updates.

* chore(version): Update package versions to 4.18.5 [skip ci]

* feat(segmentation): Added fallbackLabel to various segmentation state types. (#2652)

* chore(version): Update package versions to 4.19.0 [skip ci]

* fix(adapters): Added adapters as subtypes of PlanarFreehandROI for LivewireContour and SplineROI. (#2642)

* fix: dicomsrvalidator warnings

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.19.1 [skip ci]

* chore(release): Empty commit to trigger a release. (#2656)

* chore(version): Update package versions to 4.19.2 [skip ci]

* fix(security): various security patches (#2658)

* chore(version): Update package versions to 4.19.3 [skip ci]

* chore(docs): update package.json to use yarn install instead of yarn install --frozen-lockfile (#2659)

* chore(version): Update package versions to 4.19.4 [skip ci]

* feat(ohif-downstream): Add CI workflow and scripts for OHIF downstream validation and testing (#2657)

* feat(ohif-downstream): Add CI workflow and scripts for OHIF downstream validation and testing

- Introduced a GitHub Actions workflow for validating OHIF builds against pull requests.
- Added scripts for local setup, building, and testing of OHIF with linked Cornerstone packages.
- Updated .gitignore to exclude the new OHIF downstream directory.

* bug

* feat(ohif-downstream): Enhance CI workflow for OHIF downstream testing

- Renamed job to ohif-downstream for clarity.
- Increased timeout for builds from 90 to 180 minutes.
- Added unit tests, Playwright browser installation, and end-to-end tests to the workflow.
- Implemented artifact upload for Playwright test results and reports.

* remove build

* some

* Add unlink script

* Move link script to general scripts, not ci specific

* Log commit to demonstrate update

* Add docs

* Try using fixed OHIF tests for ohif-downstream

* docs: About wait time

* Try updating branch name

* fix ohif-downstream with loggin

* fix: Use master for release

* Undo console change for release

---------

Co-authored-by: Bill Wallace <wayfarer3130@gmail.com>

* chore(version): Update package versions to 4.20.0 [skip ci]

* fix(htmlSetup): Uncomment form creation and append to content in setup function (#2681)

* chore(version): Update package versions to 4.20.1 [skip ci]

* fix(tools): no active segmentation error toast when hovering over viewport without segmentation (#2683)

* chore(version): Update package versions to 4.20.2 [skip ci]

* fix(annotation): Enhance getTextBoxCoordsCanvas to use all annotation points for default textbox position and improve corner determination logic (#2686)

* chore(version): Update package versions to 4.20.3 [skip ci]

* fix(security): update dependencies to fix security vulnerabilities (#2687)

* chore(version): Update package versions to 4.20.4 [skip ci]

* feat: Crosshairs minimal mode and add jump on click with modifier key (#2673)

* fix: move crosshairs implementation to absolute camera instead of delta

* refactor(CrosshairsTool): remove unused methods and streamline viewport listener management

* refactor(CrosshairsTool): consolidate viewport listener management and deprecate unused methods

* refactor(CrosshairsTool): simplify viewport iteration using forEach and improve early returns

* feat: crosshairs minimal mode

* feat(crosshairs): add passive mouse down callback for modifier-aware clicks

* feat(crosshairs): enhance dropdown options and streamline configuration management

* feat(crosshairs): add crosshairs binding modes example and update CrosshairsTool configuration

* chore(version): Update package versions to 4.21.0 [skip ci]

* fix: Minimal changes to get linking to work for ohif-downstream (#2689)

ohif-downstream is now running AND passing

* fix: Minimal changes to get linking to work for ohif-downstream

* Update to use specific ohif branch for ohif-downstream

* Temp change to add log to test that cs3d build works correctly

* Lock update

* Try newer node/bun version and lower timeout

* Update build

* Axios fix

* fix: Yaml syntax

* Timeout 120 minutes to try to load libraries

* chore(version): Update package versions to 4.21.1 [skip ci]

* fix: add auth json to gitignore (#2694)

* chore(version): Update package versions to 4.21.2 [skip ci]

* lock

* Use correct downstream ohif for testing

* fix: Labelmap missing functions

* feat: Add RLE encoded labelmap segmentation store/load

* fix: Build issue

* dcmjs 0.51.1

* 1 bit support

* fix 1 bit rle decode

* fix: Frame loading

* Load/save stability and correctness fixes

* fix(adapters/seg): address SEG adapter PR review feedback

- Rename createFromDICOMSegBuffer -> createFromDicomSegImageId. The 2nd arg is
  a SEG instance imageId, not a Part 10 ArrayBuffer; renaming turns a silent
  contract break into an obvious one (no same-name/different-contract trap).
  Update the example to use the buffer-path createLabelmapsFromDICOMBuffer.
  Documented in the 5.x migration guide.
- getReferencedSourceImageSequenceItem: derive ReferencedFrameNumber via the
  metadata provider's frame extraction (falling back to utilities.FrameRange)
  instead of a one-off /[?&]frame=/ regex that silently dropped the wadors
  /frames/N form, so multi-frame source references are preserved.
- normalizeDecodedPixelData: collapse the duplicated Uint16Array ternary and
  document that non-16-bit frames are promoted by VALUE (segment indices),
  not byte-reinterpreted.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: segmentation encode/decode issues

* PR comments

* Add transfer syntaxes object in metadata

* PR comments

* audit high undici

* Add legacy version back in as call to the new seg loader

* Update docs

* fix: Segmentation failures

* perf(seg): parallelize SEG frame fetch/decode with bounded concurrency

Loading a multiframe SEG awaited each frame's fetch/decode before issuing
the next, so only one request was ever in flight. For 800+ frame SEGs this
serialized hundreds of round trips and made the imageLoader-based load slow.

Decode frames through a bounded-concurrency worker pool (default N=16),
preserving frame order and fail-fast behavior. Concurrency is configurable
via the new `concurrency` option on createLabelmapsFromSegImageIds.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* perf(seg): forward concurrency option through createFromDicomSegImageId

createFromDicomSegImageId dropped the concurrency option, so callers could
not control SEG frame fetch/decode parallelism. Thread it through to
createLabelmapsFromSegImageIds (defaults to the loader's own default when
omitted).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Add a prefetch using part 10 for performance

* Fix for detecting applicability of segmentation

* PR review comment fixes

* Phase 3 PR fixes

* Phase 4 fixes

* Final set of fixes based on the PR comments

* Fix bug introduced by changes where seg wasn't displaying on volume

* fix: Allocation issue on load

* fix OOM on save

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joe Boccanfuso <joe.boccanfuso@radicalimaging.com>
Co-authored-by: ohif-bot <contact@ohif.org>
Co-authored-by: Martin Bellehumeur, M. Eng. <23396581+mbellehumeur@users.noreply.github.com>
Co-authored-by: rodrigobasilio2022 <114958722+rodrigobasilio2022@users.noreply.github.com>
Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
Co-authored-by: TFRadicalImaging <115191433+TFRadicalImaging@users.noreply.github.com>
Co-authored-by: Alireza <ar.sedghi@gmail.com>
Co-authored-by: Ghadeer Albattarni <165973963+GhadeerAlbattarni@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

2 participants