OHIF Viewer v3.12
February 2026

New Features
Freehand Tool
The freehand segmentation tool allows precision region placement with built-in nudge editing for quick manual fine tuning without needing to switch tools.

Spline Tool
The spline contour segmentation tool allows you to create smooth contours with configurable spline types for detailed control.

Livewire Tool
The livewire contour tool automatically detects and snaps to region borders as you trace, making it easier to accurately outline.

Sculptor Tool
We have a brand new sculptor tool with a dynamic brush size that automatically detects and adjusts to the region border, allowing intuitive editing. The dynamic brush can be placed inside the region to expand it, or outside the region to erase.

Combine & Modify Multiple Contours
In addition to the drawing and editing tools, we've added powerful new logical operation functionality to take contour manipulation to the next level. Using the new combine tool, overlapping segments can be joined, intersect, or subtracted from each other, with the option to create a new segment from the result.
With the simplify contours tool, filling holes or removing small islands in a region is as simple as a click. If a generated contour needs to be refined, there are also now one click tools to smooth all edges and remove extraneous points from contours.
And of course, all the logical operation tools are compatible with undo/redo!

Unified Segmentation Panel
With the addition of new contour tools, we needed a unified approach to the segmentation panel, allowing seamless switching between labelmap and contour workflows. Our new segmentation panel uses a tab design to deliver the full suite of contour and labelmap tools with one click to switch between them.

OHIF Governance
After many revisions, input from key stakeholders, and community feedback, OHIF's official governance framework is now effective. Governance is a critical component of any open source project, and OHIF is no exception. With the new framework in place, we aim to provide clear, consistent project guidelines that ensure the bond between contributors and maintainers remains strong and sustainable long term.
The OHIF team will regularly publish updates to the public documentation and maintain historical versioning for the community to reference in a new dedicated repo. Check out the OHIF governance here and feel free to drop us a line if you have any feedback!

All Changes
- feat(metadata): metadata access improvement (PR#5292)
- feat(notification): add custom notification component support (PR#5605)
- feat: tooltips for tool settings (PR#5586)
- feat(jpeg2000): Add 16-bit RGB support to JPEG2000 decoder (PR#5519)
- feat(segmentation): Add contour tools and utilities in a side panel (PR#5517)
- feat(segmentation): Added the LabelMapEditWithContourTool (PR#5441)
- feat(segmentation): Added various contour utility operations (PR#5439)
- feat: Add inherit from basic/longitudinal modes (PR#5435)
- feat(segmentation): Added four contour tools (PR#5425)
- feat(MeasurementService): add rendering of unmapped measurements (PR#5416)
- feat(segmentation): Separate segmentation utilities from the segmentation tools (PR#5410)
- feat(Segmentation): Segmentation highlight animation function selection (PR#5401)
- feat(segmentation): Separate Contours and Label Map in UI (PR#5391)
- feat(ErrorBoundary): Fixing console errors and Improving error logging for better developer experience (PR#5378)
- feat(orientationMarkers): improved the orientation markers with a simplified version (PR#5328)
- feat: Jump to measurement moves the camera if it is not in the viewport (PR#5023)
- feat: Add WSI bulk data annotations support (ANN) (PR#4972)
- fix(security): Ignore CVE-2026-23745, CVE-2026-23950 and CVE-2024-28863 because they are limited to build/dev environments (PR#5733)
- fix: the null value check issue in image spacing calculation (PR#5726)
- fix: Navigate to contour should work (PR#5718)
- fix(window-level-action-menu): Window level menu no longer needs two clicks to open after it is used (PR#5711)
- fix(microscopy): Update microscope to 0.48.17 to fix a measurement exception (PR#5710)
- fix(segmentation): Update cornerstone dependencies to fix a segmentation exception after capture (PR#5701)
- fix(segmentation): List surface representations in the segmentation table for 3D views (PR#5700)
- fix(DicomTagBrowser): Check for null metadata (PR#5696)
- fix(segmentation): Use active segmentation for navigation (PR#5692)
- fix(capture): Ensure download filename has the correct extension (PR#5691)
- fix(security): update qs package to fix vulnerability CVE-2025-15284 (PR#5686)
- fix: pass metadata to viewport orientation matching (PR#5667)
- fix: NM multiframe with TimeSlotVector (PR#5666)
- fix(segmentation): Update cornerstone dependencies to fix segment visibility issue (PR#5664)
- fix(segmentation): When setting the segmentation style and the representation type is not provided, apply the style to all representation types (PR#5662)
- fix: preclinical mode not working (PR#5631)
- fix: prevent annotation from appearing in active viewport when switching series with different Frame of Reference UID (PR#5630)
- fix(routes): display 404 feedback page for unmatched URLs (PR#5627)
- fix(DataSource): migrate configuration dialog to ui-next components (PR#5626)
- fix(seg-viewport): add guard for missing reference display set handler to prevent viewport crash (PR#5618)
- fix/RTStructInlineBinaryContourData (PR#5611)
- fix(clipboard): Adds tooltip clipboard icon feedback when copy fails (PR#5609)
- fix: Console error on loading SR report (PR#5600)
- fix: skip VOI sync for empty viewports (PR#5599)
- fix: sculptor tool fixes (PR#5595)
- fix(docs): Correct grammar in README.md for clarity (PR#5584)
- fix(docs): Empty commit as an attempt to fix the docs build (PR#5582)
- fix(DicomUpload): Switch to use ui-next components and colors (PR#5576)
- fix: seg sync for data without FOR (PR#5565)
- fix(SegmentationStyle): Fix inactive contour visibility and styling (PR#5563)
- fix(segmentation): Allow for manually added label map and contour segmentations to be used as viewport data overlays (PR#5562)
- fix(interpolation): Auto accept interpolation when the interpolation process is completed (PR#5555)
- fix(segmentation): When synchronizing a segmentation representation, use the type of the source viewport segmentation to determine the type of the target viewport segmentations (PR#5546)
- fix: Contour annotations RTSS saving (PR#5545)
- fix: Problems related to measurement operation undo (PR#5541)
- fix(security): Exact versioning and docs dependabot alerts (PR#5536)
- fix(SegmentationTools): Changes of brush/eraser radius with hotkey do not reflect on segmentation tool (PR#5535)
- fix(dev): update webpack proxy config syntax for Orthanc dev mode (PR#5531)
- fix(security): Addressed dependabot alert CVE-2025-59288 concerning playwright (PR#5527)
- fix(segmentation): Fixed the manual scrolling of the segments list and implemented automatic scrolling to the active segment (PR#5510)
- fix(rendering): Fix palette color LUT conversion causing black images (PR#5509)
- fix(security): For bun, enforce frozen lockfile. For yarn, strongly suggest using frozen lockfile (PR#5508)
- fix: Pass the correct sop uid + frame for rehydration to prevent associating rehydrated measurements with the wrong data (PR#5506)
- fix(3DSegmentation): The viewports become blank when loading the seg file in advanced layout after closing the seg file from any other advanced layout (PR#5505)
- fix(ErrorBoundary): Allow for details to be shown in production (PR#5504)
- fix(segmentation): Lock all rehydrated segmentation segments when panelSegmentation.disableEditing is true (PR#5503)
- fix(docker): Use bun version 1.2.23 for docker build (PR#5501)
- fix(docs): Set exact version for glob (PR#5497)
- fix(security): Run bun audit before bun install (PR#5496)
- fix(segmentationService): prevent no representation crash (PR#5495)
- fix(security): Use exact versioning for dependencies in package.json files (PR#5494)
- fix(bun): Use fixed bun version (PR#5493)
- fix: Remove dead code and fix rectangle roi rehydration (PR#5490)
- fix: Segmentation not displayed and unable to draw segments in volume viewport after converting Labelmap to Surface (PR#5488)
- fix(segmentation): Fixed contour spline interpolation (PR#5481)
- fix(segmentation): adds better active state clarity to DataRow (PR#5478)
- fix(segmentation): Remove label map export options for contour segmentations (PR#5477)
- fix(segmentation): Use multiple toolboxes and toolbars for the segmentation tools and utilities. Remove single segmentation panel (PR#5474)
- fix(toolbar): Wrap toolbar buttons properly using a flex layout (PR#5468)
- fix(DICOMJson): Images fail to load in OHIF Viewer v3.11 when Datasource is set to DICOM JSON (PR#5467)
- fix(Segmentation): Segmentation color resets after using toggleOneUp (PR#5465)
- fix: Viewport ready event firing logic (PR#5462)
- fix(router): opt in to React Router v7 future flags (PR#5461)
- fix(measurementTrackingMachine): remove unreachable states (PR#5460)
- fix: duplicate segmentation entries on layout switch (PR#5458)
- fix: study browser mode for multiple studies (PR#5457)
- fix(toolbar): prevent duplicate command execution on repeated interactions (PR#5456)
- fix(segmentation): Activate the segmentation when adding a new segment (PR#5455)
- fix(ToolSettings): Added Switch component to ToolSettings (PR#5452)
- fix(icons): updated the edit labelmap with contour tool icon (PR#5449)
- fix: Safely handle missing active viewport (PR#5448)
- fix(segmentation): Added missing tool config for labelmap and contour segmentation toolboxes (PR#5447)
- fix(segmentation): Restored segment label tool in longitudinal mode (PR#5443)
- fix(security): Removed dependency on tar-fs by removing dependencies on storybook and sharp (PR#5438)
- fix(segmentation): Segmentation not displayed and unable to draw segments when switching back to volume/stack viewport from 3D viewport (PR#5430)
- fix: Validation for Percentage of Max SUV input field in TMTV module (PR#5417)
- fix: Improve rt handling for bulkdata (PR#5415)
- fix(SegmentationService): _getSegmentCenter wrongly handling seg center availability (PR#5396)
- fix(i18n): Add and update i18n Translation for Toolbar Tool Names (PR#5392)
- fix(cornerstone-dicom-rt): adding caching usage to cornerstone-dicom-rt SOP Class Handler (PR#5387)
- fix(oidc): resolve navigation throttling and blank screen during sign-in/sign-out with Keycloak + dcm4chee + Traefik (PR#5373)
- fix/migration 3p11 (PR#5370)
- fix: docker deploy (PR#5359)
- fix: Docker build failure due to missing lerna command (PR#5357)
- fix: routerBasename declaration location (PR#5347)
- fix: header icon logic (PR#5339)
- fix: seg preview (PR#5338)
- fix: unexpected series list filter change from all to recent (PR#5337)
- fix: add back clear segmentation representations (PR#5336)
- fix: load 3dsr (PR#5335)
- fix: Add seriesInstanceUID fallback for callByRetrieveAETitle (PR#5332)
- fix: Guard series.instances in DicomJSONDataSource to prevent TypeError (PR#5312)
- fix: removal of accept header options in retrieve metadata (PR#5293)
- fix: local ModalitiesInStudy check (PR#5285)
- fix(studyBrowserCustomization): fix thumbnail menu item actions in study browser (PR#5283)
- fix: Initial sort not consistent (PR#5224)
- fix: Jump to measurement from measurement panel after rotating viewport (PR#5090)
- chore(deps): update CS3D to 4.15.9 to fix OHIF issues 5656 and 5639 (PR#5714)
- chore(deps): bump react-router from 6.30.1 to 6.30.3 (PR#5704)
- chore(deps): update cs3d dependencies (PR#5688)
- chore(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /platform/docs (PR#5602)
- chore(deps): bump node-forge from 1.3.1 to 1.3.2 in /platform/docs (PR#5592)
- chore(deps): bump glob from 10.4.5 to 10.5.0 (PR#5572)
- chore: update French i18n (PR#5561)
- chore(workflow): Run playwright tests for release branch PRs (PR#5515)
- chore: 3.11 Recovery 1 (PR#5514)
- chore(deps): Update cornerstone3D dependencies (PR#5479)
- chore(deps): Update Cornerstone 3D to 4.5.3 (PR#5473)
- chore(deps): Update cornerstone dependencies (PR#5470)
- chore(deps): Update cornerstone3D to 4.3.14 (PR#5450)
- chore(deps): update cornerstone to 4.3.10 (PR#5436)
- chore(tests): update screenshots (PR#5413)
- chore(deps): bump axios from 1.11.0 to 1.12.0 (PR#5412)
- chore(deps): bump axios from 1.11.0 to 1.12.0 (PR#5402)
- upgrade cs3d to 4.0 (PR#5371)
- chore(deps): bump sha.js from 2.4.11 to 2.4.12 (PR#5350)
- tests(Playwright): Full implementation of Page Object Models (POMs) to Playwright tests (PR#5608)
- tests(Playwright): Introduction of Page Object Models (POMs) to Playwright tests (PR#5557)
- test(CornerstoneUtils): Adding unit tests for most of Cornerstone Extension utilities (PR#5454)
- test(SegmentationService): Adding 98.63% of test line coverage to Segmentation Service through unit tests (PR#5421)
- Allow doc launch (PR#5670)
- docs: fix nav bar (PR#5322)
- fix/docs (PR#5321)
- ui(settings): Moved Segment Label Display from tools to settings panel (PR#5422)
- Fixed the tooltip text of the window button (was mistakenly written in Chinese in en-us json) (PR#5513)
- Fix grammar: change "it's" to "its" (PR#5451)
- Update Dockerfile (PR#5486)
- Update Dockerfile (PR#5484)
- Update Dockerfile (PR#5319)
- Replace individual system info fields with envinfo command in bug report template (PR#5368)
- Segmentation stats customization module (PR#5324)