Changelog
Core
Rendering & Display
- Implement multi-monitor layout (PR-6776)
- Add option for displaying vertical slice controller (PR-6712)
- Enable “Pickable” segment display property to allow disabling point picking (PR-6984)
- Introduce fractional addition to Add/Subtract Slice Compositing pipeline (PR-7002)
- Add flip and rotate buttons to Reformat module (PR-7078)
- Update Slicer Controller with Thick Slab Reconstruction option (PR-7021)
- Initialize global pause render state for newly created views (PR-6947)
- Display slab reconstruction thickness in slice view corner (PR-7177)
- Use column name as plot title when unspecified (PR-6682)
- Improve Volumes module display options and fix related issues (PR-6758)
- Add “Refocus camera” action to view context menu (PR-6916)
- Add alternative shortcut for view pan-zoom-rotate (PR-6916)
- Update crosshair cursor position on 3D view mouse move events (PR-6937)
- Fix issue allowing more than one rotation slider to be non-zero (PR-6759)
- Fix computation of offset direction label in slice view controller (PR-6781)
- Fix warning when changing window/level with mouse mode (PR-6897)
- Fix inability to change foreground volume window level with mouse mode (PR-6924)
- Fix dynamic update of transform visualization (PR-6956)
- Fix interaction handle visibility when changing displayed slice (PR-6992)
- Fix inability to change foreground W/L with mouse mode (PR-6996)
- Fix small shift in slice image in 3D views (MR-6959)
- Fix “Restore view layout” action in view context menu (PR-7097)
- Fix potential segfault during initialization of
qMRMLSliceWidget
(PR-7115) - Fix color legend visibility on non-standard slice views (PR-6836)
- Fix display issues with “Model,” “plane markups,” and “segmentation closed surface” slice intersections (PR-7102)
Application
- Enlarge error report box (PR-6769)
- Make ctk ErrorLogWidget dockable (PR-7059)
- Avoid superfluous error message (PR-6952)
- Enable saving and restoring SliceViewAnnotations display level (PR-7175)
- Re-export selected PNGs to fix “libpng warning: iCCP: CRC error” (PR-6807)
- Improve rendering of SaveDataDialog checkboxes in Dark Mode (PR-7098)
- Enhance Python scripted module detection for drag-and-drop (MR-6959)
- Synchronize DataProbe UI initialization and “Restore Defaults” action (PR-7174)
- Improve module finder filtering (PR-6844)
- Support import type annotation from Slicer during module load (PR-6847)
- Skip camera undo when undo is not enabled on
vtkMRMLCameraNode
(PR-7018) - Fix splash screen loading text visibility (PR-7023)
- Fix crash when adding
%s
specifier to color legend label (PR-6795) - Fix home shortcut behavior when Python console visible (PR-7167)
- Fix scene compatibility error message (PR-6755)
- Fix non-functional exit cross on “Save before exit” popup (PR-6906)
- Fix launching
.py
files in Slicer with-I
argument (MR-6959)
IO
- Enable process output retrieval during CLI execution (PR-6721)
- Support shallow and deep copy for scalar volume display node (PR-6857)
- Simplify loading of
.vtk
image files (PR-7117) - Update
vtkMRMLParser
to support custom types ending with “Node” (PR-6715) - Check file extension readers before inspecting content (PR-7139)
- Update MultiVolumeImporter to load as volume sequence by default (PR-7141)
- Load tables with default column type (PR-6775)
- Generate segment colors for raw NRRD files via storage node (MR-6959)
- Choose file reader/writer based on confidence level (PR-6998)
- Update
vtkMRMLWriteXMLMatrix4x4Macro
to separate values with a single space (PR-7039) - Fix error message in
vtkMRMLColorTableNode
(PR-6729) - Fix reading of vector fields from NIFTI files (PR-6791)
- Fix CLI module issue with reading output from initially empty nodes (MR-6959)
Extension
- Add API for downloading and installing extensions (PR-7145)
- Update ExtensionsManager install API to check for updates (PR-7151)
- Update server-based extension installation to return a boolean status (PR-7148)
- Fix blank Extensions Manager on Linux due to Chromium sandboxing (PR-6744)
- Fix
IsPluginInstalled()
behavior when the plugin is installed in the application build tree (PR-6970) - Fix color setting in
qSlicerExtensionsLocalWidget
status messages (PR-7147)
Scripting
- Add Parameter Node Wrapper for
vtkMRMLScriptedModuleNode
to provide typed member access (PR-6684, PR-6725, PR-6727, PR-6740, PR-6757, PR-6772, PR-6771, PR-6783, PR-6800, PR-6808, PR-6829, PR-6843, PR-6848, PR-6862, PR-6865, PR-6871, PR-6891) - Enable use of
pathlib.Path
objects for paths inslicer.util
(PR-6743) - Add array size hints for improved Python wrapping (PR-6765)
- Implement ParameterNodeWrapper default by assignment (PR-6871)
- Add module paths to the application via drag-and-drop (PR-6872)
- Allow setting a custom editor for
.py
files (PR-7074) - Add utility function to retrieve ROI box as
vtkPolyData
(PR-6958) - Add “Test” button to ScriptedLoadableModule UI (PR-7038)
- Add convenience methods for locating markup control points (MR-6959)
- Update
slicer.util.updateVolumeFromArray
to support 1D NumPy arrays (PR-7142) - Update DWMRIMultishellIOTests to remove nose function dependency (PR-7052)
- Improve error reporting in ScriptedFileReaderWriterTest (PR-7144)
- Register ParameterNodeWrapper plugins within corresponding modules (PR-6855)
- Apply miscellaneous scripted module fixes (PR-6993)
- Add Python utility functions for ITK image ↔ volume node conversion (PR-7094)
- Fix observer warning in scripted module template (PR-6720)
- Fix lost
setValue
function with nested parameter packs (PR-6851) - Fix Python wrapping for methods using enum arguments (PR-6935)
Internationalization/Localization
- Bundle Qt language tools (PR-6798)
- Ensure Qt language tools are bundled on macOS (PR-6904)
- Add translation function for Python scripted modules (PR-6917)
- Update CTK to the latest version for improved translations (PR-6926)
- Enable
update_translations.py
to create new translation components (PR-7107) - Mark additional text as translatable (PR-6921)
- Position literals after string format specifiers for translation (PR-6777)
- Make loadable module titles translatable (PR-6828)
- Fix application’s
applicationLocale
object (PR-7035) - Fix welcome module translation (PR-6810)
- Apply minor fixes to improve translations, remove warnings, and enhance Python wrapping (PR-6820)
- Mark translatable strings in various core components (Base/QTGUI, Base/QTCore, Base/QTApp, Base/QTCli) (PR-6704, PR-6768, PR-6784, PR-6793, PR-6821)
- Make all text in built-in CLI modules translatable (PR-6681)
- Mark translatable strings in DataProbe module (PR-6960)
- Mark translatable strings in Sequences module (PR-6977)
- Mark translatable strings in Markups module (PR-6962)
- Mark translatable strings in Segmentations module (PR-6948)
- Mark translatable strings in SegmentStatistics module (PR-6942)
- Mark translatable strings in Volume Rendering module (MR-6959)
- Mark translatable strings in Volumes module (PR-6655)
Improved Modules
DICOM
- Add DICOM patcher rules for character set and exposure fixes (PR-6940)
- Default to loading DICOM files using the DICOM module (PR-7077)
- Support special characters when saving scenes to DICOM SC (PR-6963)
- Add parsed parameters in
DICOMRequestHandler
(PR-6713) - Save DICOM instance UID in the image sequence plugin (PR-7096)
- Allow multiple DICOM plugins with the same confidence level for export (PR-6863)
- Fix regression in DICOM patcher (PR-6950)
- Fix user warning triggered by the default progress callback in
send()
(PR-6822) - Support color DICOM data series (PR-7089)
- Remove redundant “Warning:” prefix in DICOM popup messages (PR-7164)
- Import additional series information from DICOM images (PR-6877)
Markups
- Allow custom markup classes to store additional properties in the markups file as JSON (PR-6756)
- Add support for curve torsion measurement (PR-6774)
- Allow line/angle markups to remain visible even when control points are hidden (PR-6842)
- Support detaching the markups toolbar from the mouse mode toolbar (PR-6675)
- Fix reading of default markup active color (PR-6736)
- Fix markups curve measurements test (PR-6816)
- Add toggle action for markups in the Markups Place button menu (PR-6856)
- Improve example for exporting markup measurements (PR-6746)
- Increase robustness for loading legacy annotation fiducials, lines, and ROI nodes (PR-6814)
- Fix copying of curves using
CopyContent
(PR-6818) - Fix static control point measurements for closed curves (PR-6887)
- Fix potential NaN in torsion calculations for markup curves (PR-7122)
- Enable translation/rotation of unlocked points in a list (PR-7025)
Models
- Fix Models module name display issue (PR-6846)
Sample Data
- Fix sample dataset labels not appearing on large desktop monitors (PR-6731)
Sequences
- Restore synchronized visibility for sequence table headers (PR-6951)
- Fix warning in sequence browser seek widget (MR-6959)
- Improve sequence editing functionality and fix related issues (PR-6930)
- Fix consistency check in
vtkMRMLVolumeSequenceStorageNode
(PR-7069)
Segmentation
- Add soft edge option to Mask Volume Segment Editor effect (PR-6849)
- Add
vtkITKGrowCut
filter (PR-6946) - Use inclusive language for segmentation source representation (PR-6901)
- Create non-existing segments when importing a label map to segmentation node (PR-6835)
- Set segment “Pickable” display property to true if not specified (PR-7000)
- Fix behavior after invisible segment confirmation popup (PR-7084)
Subject Hierarchy
- Add option in Subject Hierarchy to set segment opacity (PR-6932)
- Add menu actions to hide or show selected items in the subject tree (PR-7028)
SurfaceToolbox
- Fix Dynamic Modeler layout in SurfaceToolbox module (PR-6938)
- Enable uniform remeshing in SurfaceToolbox for triangle strips (PR-6974)
Tables
- Fix initialization of non-string table cells to prevent random values (PR-6850)
- Preserve column order when reading tables from files (PR-6850)
Terminologies
- Fix handling of non-modified terminology types (PR-7009)
Volume Rendering
- Fix color synchronization inaccuracies in the Volume Rendering module (PR-7042)
- Prevent display of volume rendering if the volume is under a non-linear transform (PR-7065)
- Improve volume rendering presets (PR-6762)
WebServer
- Add Web Server examples using Three.js and ModelViewer (PR-6985)
- Add VolView link to WebServer examples (PR-6995)
- Fix
SlicerRequestHandler
return value when reader does not return any node ID (PR-6752) - Free notifier after request handling (PR-6824)
Removed Modules
Infrastructure
Packaging
- Change organization name and domain from NA-MIC to Slicer (PR-6750)
- Create a Windows Desktop shortcut during installation (PR-6761)
- Replace
lib
withCMAKE_INSTALL_LIBDIR
for standardized library installation path (PR-6760) - Fix issue with
CPACK_NSIS_INSTALL_SUBDIRECTORY
being overwritten (PR-7091) - Update organization name and domain to
slicer.org
(PR-6879) - Adjust package vendor setting for improved clarity (PR-6881)
- Fix Qt tools packaging (PR-6907)
Testing
- Fix
qMRMLLayoutManagerVisibilityTest
(PR-6797) - Fix
qSlicerMouseModeToolBarTest1
(PR-6802) - Update
SlicerOrientationSelectorTestTest
to accommodate widget rename (PR-7082) - Update
test_slicer_util_save
to use a non-deprecated method (PR-7022) - Fix failing
qMRMLLayoutManagerTest2
andpy_SubjectHierarchyGenericSelfTest
tests (PR-6755)
Continuous Integration (CI)
- Fix “Build Slicer” CI workflow for push events (PR-7064)
- Skip steps in required jobs instead of skipping entire workflows (PR-7062)
- Update
codespell
GitHub workflow to include additional exceptions (PR-6853) - Add Dependabot workflow to update GitHub Actions dependencies (PR-6888)
- Pin more GitHub actions to full-length commit SHA for consistency (PR-6898)
Build-System
- Update minimum supported macOS versions (PR-6695)
- Remove exposure of
ui_*.h
files from public header files (PR-6909) - Remove redundant includes (PR-7106)
- Fix timestamp warnings in external project download and extraction (PR-7138)
- Add missing include guards and remove unused header files (PR-7070)
- Prefer ITK Python wheels over building ITK Python from source (PR-7051)
- Fix various warnings (PR-6864, PR-7048)
- Apply lint fixes (PR-7076)
- Update
vtkMRMLSliceNode
to use MRML helper macros (PR-7039) - Fix build when OpenSSL support is disabled (PR-6747)
- Fix
vtkMarkupsAnnotationSceneTest
build with SceneViews module disabled (PR-6790) - Support
slicerFunctionAddPythonQtResources()
for extension modules (PR-6792) - Fix lint and spellchecker errors (PR-6949)
- Report error if an unsupported CMake version (3.25.0-3.25.2) is used (PR-6852)
- Speed up incremental builds on Linux (PR-6983, PR-7001)
- Support enforcing specific Slicer revision during extension build (PR-7040)
- Fix deprecation warnings by explicitly calling
vtkStdString::c_str()
(PR-7044) - Remove redundant
FindFontConfig
module (PR-6155) - Fix potentially invalid pointer in
vtkSlicerSegmentationsModuleLogic
(PR-7050) - Ensure consistent include guard definitions to match filenames (PR-7072)
- Replace deprecated Qt Script usage (PR-6710)
- Fix CMake 3.26 warning in
SlicerLinkerAsNeededFlagCheck
project (PR-7135) - Ensure disabling
Slicer_USE_PYTHONQT
also disablesSimpleITK
(PR-7146) - Fix Sphinx build warning in Python FAQ related to “txt” lexer (PR-7173)
- Fix Python-extension-manager-ssl-requirements build with
[crypto]
specifier (PR-7113) - Add missing
QSslConfiguration
include (PR-6884) - Validate application name in
slicerMacroBuildApplication
(PR-6880) - Fix
vtkMarkupsAnnotationSceneTest
build with SceneViews module disabled (part 2) (PR-6834) - Fix
-Wunused-parameter
warning invtkMRMLSliceLogic::VolumeWindowLevelEditable
(PR-6900) - Fix
-Wrange-loop-construct
warning in Markups module (PR-6902) - Fix Python linting issues (PR-6706)
- Remove unused
workaround_recommonmark_issue_191
custom Sphinx extension (PR-6714) - Update markdown files to use LF line-endings (PR-6734)
- Fix Python lint errors (PR-6817)
- Correct various typos (PR-7032, PR-7054)
- Ensure “#endif” guards do not include comments (PR-7071)
- Fix typos in header comments (PR-7073)
- Improve comment clarity (PR-7075)
- Remove duplicated include in
qSlicerPersistentCookieJar
(PR-7158) - Remove duplicated include in
vtkMRMLSequenceStorageNode.cxx
(PR-7162)
Dependencies
vtkAddon:
- Simplify wrapping of module logic and MRML libraries (PR-6885)
- Add support for Python module naming (PR-6841)
- Fix potential out-of-bounds issue in
vtkCurveGenerator
(PR-7043) - Remove redundant Markups MRML classes (PR-6883)
VTK:
- Backport OpenXR and OpenXRRemoting updates (PR-6780)
- Backport rendering changes for VR, OpenVR, and OpenXR (PR-6967)
- Upgrade VTK from 9.1.20220125 to 9.2.20230607 (PR-7010)
- Reintroduce OpenVR API to retrieve last pose (PR-6754)
- Ensure valid OpenVR pose retrieval (PR-6779)
- Restore complex gesture support in SlicerVirtualReality (PR-6805)
- Fix regression blocking older
.vtp
file loading (PR-7080) - Resolve regression in Dynamic Modeler curve cut (PR-7140)
- Address Windows build error related to
.pyi
file generation (PR-6903) - Fix packaging error due to missing
.pyi
files (PR-6905) - Support external build for RenderingOpenXRRemoting module (PR-6933)
- Workaround external project output error flagging (PR-7104)
CTK:
- Address warnings and miscellaneous issues (PR-7045)
- Fix crash when importing
ctk
orqt
in standalone Python (PR-6886) - Apply minor fixes in the latest version (PR-6939)
- Fix initial sizing of modules using
ctkFlowLayout
(PR-7111) - Resolve build issue for CTK DICOM Core library (PR-6908)
- Correct styling of
ctkRangeSlider
(PR-7116) - Remove code specific to Qt 4 (PR-7127)
- Ensure only required Qt components are included (PR-7129, PR-7133)
- Update general CTK components (PR-7110)
ITK:
- Fix read/write of displacement fields in NIFTI format (PR-6799)
- Backport fixes for gcc13 compatibility in ITK and VTK (PR-6971)
- Improve dependency analysis for Flatpak (PR-7019)
- Clarify
image_from_vtk_image
usage (PR-7168)
Other Dependencies:
- Update RapidJSON to 2023.05.09 to resolve warnings (PR-7047)
- Correct GitHub organization for
qRestAPI
external project (PR-7085) - Update Python packages to latest versions (PR-7046, PR-6803, PR-6859)
Documentation
Templates and Guides:
- Tweak “release” issue template (PR-6699)
- Tweak “patch-release” issue template (PR-6701)
- Improve “release” and “patch-release” issue templates (PR-6703)
- Add “Self Tests” developer documentation (PR-6742)
General Documentation Improvements:
- Fix typos and grammar in various documents (PR-7063, PR-7121)
- Update Debian distribution names in linux.md (PR-7020)
- Improve documentation on
slicer.util.pip_install
usage (PR-7172) - Fix typo in Troubleshooting guide (PR-6707)
- Correct link to ImageStacks tutorial in Volumes module documentation (PR-6718)
- Update parameter node documentation (PR-6873)
Scripting and API Documentation:
- Describe
pip_install
usage in modules (PR-6913) - Add Qt connection details to Python FAQ (PR-6737)
- Improve
slicer.util.to_bool
docstring (PR-6697) - Add Python FAQ improvements (PR-7014)
Code and Feature-Specific Documentation:
- Clarify volume computation in Segment statistics documentation (PR-6739)
- Document how to add volume rendering presets (PR-6763)
- Clarify
GetTransformBetweenNodes
PostMultiply mode (PR-6840) - Describe automatic resampling of binary labelmap representation (PR-7170)
- Improve “Interpolation order” parameter documentation (PR-7006)
- Add example for model point picking (PR-7026)
- Expand GUI documentation for Segment Editor module (PR-6955)
- Add limitations section to segmentations.md (PR-6978)
Platform-Specific Notes and Fixes:
- Add warning in linux.md about Debian’s OpenSSL (PR-7033)
- Add note in linux.md regarding Debian 12 and CMake (PR-7031)
- Update Windows build instructions (PR-7036)
- Confirm compatibility with newer CMake versions (PR-7053)
Example Code and Practical Usage:
- Add hanging protocol example to script repository (PR-6915)
- Update example usage in sequence browser documentation (PR-6854)
- Update segmenteditor.md with node reference info (PR-7134)
Syntax and Formatting Adjustments: