Skip to content

Sight 25.2.0

Latest

Choose a tag to compare

@fbridault fbridault released this 05 Jan 11:24
· 41 commits to dev since this release

✨ Added

  • Massive JPEG2000 DICOM decoding speedup (up to ×10) for encapsulated JPEG2000 data
    • Optimized path bypassing GDCM decoding
    • Especially effective for Enhanced US Volume
    • Includes additional io::bitmap performance improvements and direct buffer access
  • Modern switch button widget as an alternative to classic checkboxes in Qt settings (widget="switch_button").
  • Axis-aligned bounding box stored directly in sight::data::mesh, lazily computed and reusable for intersection tests.
  • Non-linear activity sequencer mode
    • Activities no longer forced into a linear workflow
    • go_to slot now accepts activity identifiers for programmatic navigation
  • Point splatting support in visualization pipeline.
  • Camera centering service for meshes (sight::module::filter::mesh::center).
  • RGBA image support in negatoscopes.
  • Mesh picking while dragging the mouse (continuous picking with pressed button).
  • Optional display of shape fiducials on all slices.
  • Doctest framework introduced for unit tests, with native VSCode integration.
  • Application-level QSS override support, loading .qss files directly from the application directory.

🛠 Changed

  • VCPKG updated (build, dependencies, toolchain refresh).
  • NSIS installer enhanced to support Windows long paths (>260 characters).
  • CI improvements
    • Controlled parallelism via variables
    • Ubuntu image updated to clang 20
    • Improved VSCode debugging for multi-project workspaces
  • Dispatcher refactor: lambda + variadic arguments support to reduce boilerplate.
  • Minizip updated with fast multithreaded compression.
  • Transparency handling fixed and improved for Ogre ≥ 14
    • Correct transparent queue assignment
    • Floating-point depth for OIT to avoid artifacts
  • Nearest-neighbor interpolation enforced for segmentation rendering.
  • Lazy update behavior introduced for negato adaptors requiring masks.

🐛 Fixed

  • Long-standing negato adaptor issues
    • RGB handling with transforms
    • Missing input validity checks
  • Timer cumulative time computation (now properly accumulated across runs).
  • Deferred services now correctly handle sub-objects accessed via dot operator.
  • Config manager parsing errors for property sub-objects.
  • Fullscreen and window recreation issues when no preferences are present.
  • Button bar styling inconsistencies when joystick is not configured.
  • Multiple ruler-related bugs
    • Random disappearance
    • Incorrect slice visibility
    • Broken fiducial slice range selector
  • Progress sound handling on Linux.
  • Avoid crashes when negato images are not yet available.

♻️ Refactored

  • New progress API (sight::core::progress) replacing the old job system
    • Clear separation: progress reporting only, no task execution
    • Automatic asynchronous execution via dedicated workers
    • Simplified and renamed signals/slots
  • All progress-reporting services migrated to the new API, including IO readers/writers.
  • Legacy DICOM job-based code removed, modern DICOM paths used instead.
  • Obsolete landmark data and related services removed.
  • Progress bar code split into a dedicated library.
  • CSpell dictionary moved into the repository for better IDE consistency.

🧪 Testing & Tooling

  • Gradual migration from CppUnit to Doctest.
  • Native test discovery in CTest and VSCode test panel.
  • Improved debugging workflow without launcher scripts.

👉 Sight 25.2.0 focuses on performance, robustness, and architectural cleanup:
faster DICOM IO, clearer progress reporting, better visualization correctness, and a more modern UI layer. Less legacy, fewer footguns, more predictable behavior.