Slicer 5.4: Summary and Changelog

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 in slicer.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

  • Remove Annotations module (PR-6524)
  • Move ACPC Transform module to SlicerNeuro extension (PR-7005)

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 with CMAKE_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 and py_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 disables SimpleITK (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 in vtkMRMLSliceLogic::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 or qt 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:

1 Like