Releases: Kitware/VolView
VolView 4.4
VolView Changelog
🎨 Paint/Segmentation Tools
- Brush Size Control: Added Ctrl+scroll wheel brush size control with customizable modifier key (#765 - @TomTonroe)
- Segment Locking: Prevent painting on locked segments segments (#760 - @TomTonroe)
- Gaussian Smoothing: Added Gaussian smoothing for segment groups (#757 - @PaulHax)
- Paint Thresholding: Added thresholding support for paint tools (#755 - @floryst)
- Fill Between Interpolation: Added slice interpolation for fill between tool (#726 - @PaulHax)
- Process Architecture: Unified process architecture for advanced paint operations (@PaulHax)
🔧 User Interface & Experience
- View Maximization: Double-click to maximize a view (#754 - @PaulHax)
- Keyboard Navigation: Use keyboard arrows to change slices (#679 - @lchauvin)
- Scalar Probe Tool: Added scalar probe tool with sidebar display (#715 - @PaulHax)
- Crosshairs Toggle: Added hold-key for temporary crosshairs tool (#743 - @PaulHax)
- Image Title: Current image name displayed in document title (#708 - @PaulHax)
- Shortcut Tooltips: Keyboard shortcuts shown in tool tooltips (#709 - @PaulHax)
- Delete Shortcut: Added keyboard shortcut to delete current image and clear scene (#713 - @lchauvin)
📊 Data Loading & Streaming
- Incremental Volume Loading: Progressive image loading with streaming support (#606 - @floryst)
- DICOM Stream Handler: Enhanced DICOM loading with streaming capabilities (@floryst)
- Multi-frame Support: Improved support for DICOM images with NumberOfFrames (#745 - @floryst)
- SEG DICOM Loading: Fixed loading of SEG DICOM modality files (#751 - @PaulHax)
- Error Messages: Improved error messages for file loading failures (#735 - @PaulHax)
🎯 Visualization & Rendering
- Windowing Improvements: (#739, #749, #750 - @PaulHax, @floryst)
- Fixed auto window/level behavior
- Better range handling for images with 0 range or multiple components
- Default to black images instead of white flash
- Optimized histogram calculation in worker threads
- Camera Controls: Fixed automatic camera reset behavior (@PaulHax)
- Colormap Changes: Changed default layer colormap to 2hot-opaque (#746 - @PaulHax)
- Polygon Rasterization: Added ability to rasterize polygons as segments (#747 - @floryst)
🔐 Authentication & Deployment
- Token Support: Added support for token and tokenUrl in URL parameters (#692 - @floryst)
- DICOM Web Headers: Added global headers support for DICOM Web requests (@PaulHax)
- CORS Documentation: Added CORS notes for token URL usage (#698 - @floryst)
- Deployment Docs: Added initial deployment documentation (@floryst)
🏗️ Technical Improvements
- State Management: Bumped state file manifest to 5.0.0, better reactive updates (@floryst, @PaulHax)
- Performance: Optimized chunk image reactivity, better histogram calculation (#731 - @floryst)
- Dependencies:
- Testing: Switched to happy-dom, updated GitHub Actions (#727 - @floryst)
🐛 Bug Fixes
- Layout & Views: Fixed clipping planes reset, avoid maximizing during annotation (#742, #741 - @PaulHax)
- Paint Tools: Fixed widget states and segment group handling (@PaulHax)
- DICOM Loading: Fixed tag reading, Content-Range headers, 1-bit image support (#737, #736 - @floryst, @PaulHax)
- Streaming: Fixed double downloads, better error messages (#732 - @floryst)
- UI Components: Fixed scalar probe warnings, component issues (#723 - @1isten)
📚 Documentation & Maintenance
- Documentation: Fixed URL typo, updated auth docs (#691 - @Gabsha)
- Build System: Made base path relative, updated CI (#694, #697 - @PaulHax)
🙏 Contributors
Special thanks to all contributors to this release:
- @TomTonroe - Paint tool enhancements
- @lchauvin - Keyboard navigation and shortcuts
- @floryst - Streaming, authentication, and core improvements
- @PaulHax - Major features and bug fixes
- @1isten - Scalar probe fixes
- @Gabsha - Documentation improvements
- @Jackie733 - Bug fixes
VolView 4.2
The blog post:
https://www.kitware.com/volview-4-2-release-notes/
What's Changed
- DICOMWeb deep addresses by @PaulHax in #327
- Document layers and rectangle tool by @PaulHax in #329
- Doc formatting by @PaulHax in #331
- AboutBox: Add link to discourse category for community support by @aylward in #333
- refactor: file loading by @floryst in #319
- feat(vue3): upgrade to vue 3 by @floryst in #303
- fix(SaveSession): loading state and no refresh by @floryst in #335
- Labels for annotation tools by @PaulHax in #323
- fix(VtkTwoView): conditionally mount tool components by @PaulHax in #342
- Label Controls on Annotation tab by @PaulHax in #340
- Fixes for tool widget manager life-cycle and SVG tool resize update by @PaulHax in #344
- feat: add axial-only view layout by @PaulHax in #345
- Sentry by @PaulHax in #346
- Migrate to vite by @floryst in #348
- Add vitest by @floryst in #350
- chore(vite): dev server on port 8080 by @floryst in #354
- Vite migration tweeks by @PaulHax in #356
- fix : modify slot name in ViewOverlayGrid by @YeonHoJeong in #352
- Tool Labels: Add, Edit, Delete by @PaulHax in #358
- docs: update URLs to volview.kitware.app by @floryst in #360
- Miscellaneous tool fixes by @floryst in #361
- feat(LabelEditor): styles and enter to close by @floryst in #362
- More label fixes by @floryst in #366
- fix(WindowLevelTool): finicky window width update by @PaulHax in #370
- Avoids error adding PET modality image as layer by @PaulHax in #372
- Closeable dialogs by @floryst in #368
- Data privacy and security handling updates by @floryst in #367
- Close dialog on save by @PaulHax in #377
- feat(DataBrowser): hide Sample Data if configured by @PaulHax in #381
- Polygon Tool by @PaulHax in #376
- UX DICOMWeb fixes by @PaulHax in #382
- DICOMWeb fixes by @PaulHax in #387
- feat(polygon): add enter and double click to finish shortcuts by @PaulHax in #391
- Add E2E testing by @floryst in #357
- doc(config): rename to .cjs extension by @floryst in #393
- Add user feedback button by @floryst in #369
- refactor(itk-wasm): update version to 1.0.0-b.130 by @PaulHax in #385
- chore: bump chromedriver to 116 by @floryst in #399
- Polygon Tool: Add + Delete Points by @PaulHax in #396
- Configure layout from JSON by @PaulHax in #400
- Annotation Tool Visibility Button by @PaulHax in #403
- fix(vite): generically resolve module path by @floryst in #402
- fix(AboutBox): spelling error by @floryst in #408
- refactor: drops @src alias by @floryst in #409
- chore(github): no E2E testing on windows by @floryst in #412
- Batch actions for MeasurementToolList by @PaulHax in #406
- Current image provider by @floryst in #410
- fix(PaintControls): when clicking transparent eraser palette swatch by @PaulHax in #415
- refactor(onVTKEvent): easier event interface by @floryst in #413
- Revert CurrentImageProvider by @floryst in #418
- feat(useAnnotationTool): use labels from config JSON over session manifest by @PaulHax in #416
- Python server demo by @floryst in #272
- Annotation Tool Hover by @PaulHax in #404
- Simplify tool code by @floryst in #421
- Tool Fixes by @PaulHax in #423
- Fix widgets not rendering after relayout by @floryst in #425
- Some refactors and cleanups by @floryst in #426
- refactor: drop tool-specific ID types by @floryst in #427
- fix(build): Use import type instead of import by @lchauvin in #431
- fix(polygon): fix shift clicking on polygon locks camera pan by @PaulHax in #432
- feat(MeasurementsToolList): add selected annotation count by @PaulHax in #434
- doc(contributing): Update CONTRIBUTING.md for VTK.js development by @tbirdso in #439
- feat(WindowLevelTool): Add an option to reset window/level values by @bnmajor in #437
- Paint and Polygon Tool fixes by @PaulHax in #440
- feat(coloring): support config defaults by @floryst in #445
- feat(annotation-tool): add strokeWidth as label prop by @PaulHax in #435
- Keyboard Shortcuts / Hotkeys by @PaulHax in #441
- fix(CloseableDialog): stop key event bubbling to shortcuts by @PaulHax in #450
- Annotation Tool Selection by @floryst in #428
- fix(annotation-tools): handle radius too small with devicePixelRatio by @PaulHax in #451
- Keyboard shortcuts cheat-sheet by @PaulHax in #452
- Fix state file backwards compatibility and Keyboard shortcut config docs by @PaulHax in #453
- feat(vtk.js): upgrade to v28 by @floryst in #458
- fix(crop): bad crop planes from negative spacing by @floryst in #465
- Windowing from dicom tags by @bnmajor in #442
- chore(deps): bump @babel/traverse from 7.20.1 to 7.23.2 by @dependabot in #467
- fix(VtkTwoView): layer opacity has uniform 1 opacity transfer function by @PaulHax in #449
- New Feature: Multiplanar Oblique Views by @jadh4v in #359
- fix(ruler): avoid error when manipulator returns no worldCoords by @PaulHax in #474
- fix(layers): fix initialization bugs when less than all views mounted by @PaulHax in #476
- Label loading fix by @PaulHax in #466
- chore(deps): bump postcss from 8.4.24 to 8.4.31 by @dependabot in #472
- chore(deps): bump fast-xml-parser and @aws-sdk/client-s3 by @dependabot in #471
- chore(deps): bump aiohttp from 3.8.4 to 3.8.5 in /server by @dependabot in #469
- chore(deps): bump zod from 3.19.1 to 3.22.3 by @dependabot in #468
- fix(dataset-dicom): throw error if passed file but no volume results by @PaulHax in #480
- fix(WindowLevelTool): Do not reset the auto/preset selection by @bnmajor in #483
- fix(cinematicRendering): fix copy-and-paste error by @bruyeret in #487
- fix(LayerProperties): handle long layer names by @PaulHax in #479
- feat(layers): use opacity transfer function except for PT by @PaulHax in #482
- refactor: rename labelmaps to segment groups by @floryst in #494
- Welcome page loading indicator by @floryst in #497
- Generate notification error when up bad URL in remoteManfest.json files by @PaulHax in #489
- Miscellaneous fixes by @floryst in #502
- fix(mimeTypes): handle windows zip mime type by @floryst in #503
- fix(WelcomePage): remove black borders by @floryst in #504
- Drop whatwg-url by @floryst in #411
- Add functionality to convert images to labelmaps b...
VolView 4.3
Blog post highlighting some features:
https://www.kitware.com/volview-4-3-release/
What's Changed
- fix(CrosshairsWidget2D): avoid error when changing layout by @PaulHax in #523
- fix(sidebar): show toggle sidebar button by default by @jadh4v in #520
- Migrate session.volview.zip state files from 2.1.0 to 3.0.0 by @PaulHax in #524
- Convert a loaded image to segment group by @jadh4v in #528
- Segment group file format selection for serialization by @PaulHax in #527
- chore(deps): bump follow-redirects from 1.15.2 to 1.15.4 by @dependabot in #540
- chore(deps-dev): bump vite from 4.3.9 to 4.5.2 by @dependabot in #543
- feat(AboutBox): add investigation-use only banner by @floryst in #545
- chore(deps): bump aiohttp from 3.8.5 to 3.9.2 in /server by @dependabot in #546
- Refactoring the App component for customization by @floryst in #547
- Support overriding the current image by @floryst in #548
- fix(urlParams): empty save param issue by @jadh4v in #549
- Refactoring to enable better customizability by @floryst in #550
- fix(useCurrentImage): return defaults/null by @floryst in #551
- feat(config): add default layout name by @floryst in #552
- feat(config): specify layout component name by @floryst in #553
- Export segment group GUI by @PaulHax in #539
- Label name uniqueness tweeks by @PaulHax in #535
- fix(App): keep query params on save url query param by @PaulHax in #556
- chore(deps-dev): bump ip from 1.1.8 to 1.1.9 by @dependabot in #554
- Fix adding DICOM dataset as layer by @PaulHax in #560
- chore(deps): bump follow-redirects from 1.15.4 to 1.15.6 by @dependabot in #562
- Prefer some DICOMs modalities as primary selection and layer a PET on a CT if it exists by @PaulHax in #568
- Switch away from proxies by @floryst in #565
- CI fixes by @PaulHax in #585
- fix(windowing): more robust loading of multi-component DICOMs by @PaulHax in #578
- Automatically convert SEG DICOMs to Segment Groups by @PaulHax in #576
- Auto Segment Group by name by @PaulHax in #588
- Freehand point dropping for Polygon Tool by @PaulHax in #589
- fix: apply reset views button to slices and volume views by @PaulHax in #592
- feat: unify data IDs by @floryst in #594
- chore: remove canvas and msedgedriver by @floryst in #609
- docs: migrate site to vitepress by @floryst in #613
- feat(ControlStrip): Moved menu button to ControlStrip by @lchauvin in #605
- docs(vitepress): fix base url by @floryst in #616
- Fixes to docs and build process by @floryst in #619
- Merge polygons by @PaulHax in #617
- fix(EditableChipList): typo by @Jackie733 in #628
- fix(useKeyboardShortcuts): allow for shift key plus special characters by @PaulHax in #629
- chore(vite): remove extra package-lock check by @floryst in #631
- Upgrade itk-wasm by @floryst in #630
- fix(dicom): handle missing w/l tags by @floryst in #634
- fix(annotationTool): remove duplicate slashes by @Jackie733 in #645
- docs: fix image's error relative path by @KazooTTT in #646
- Segment Groups: opacity slider and visibility toggle button by @PaulHax in #654
- fix(VolumeRendering): on switching dataset, ensure CTF preset valid by @PaulHax in #656
- feat(camera): Add option to disable camera auto reset by @lchauvin in #648
- Update @itk-wasm/dicom for new SEG pipeline by @PaulHax in #653
- Synchronize cameras images by @lchauvin in #652
- fix(crop): wait for DICOM image load by @floryst in #658
- Segments: opacity slider and visibile toggle by @PaulHax in #669
- fix(updateFileMimeType): overwrite mimetype by @floryst in #664
- fix: vtk.js version not showing up by @floryst in #665
- fix(PatientStudyVolumeBrowser): show modality if thumbnail fails by @PaulHax in #668
- feat(global.css): increase tooltip background opacity by @PaulHax in #671
- feat(segmentGroups): add more default segment colors by @PaulHax in #667
- chore(ci): increase timeouts for flakey e2e tests by @PaulHax in #674
- feat(segmentGroups): support overlapping segments in SEG files by @PaulHax in #673
- Use DICOM series number to match with image seg files by @PaulHax in #678
- Outline segment group rendering by @PaulHax in #670
- fix(LayerProperties): don't show slider until view loads layer by @PaulHax in #681
- feat(windowing): add forced window/level to JSON config by @PaulHax in #682
- feat(WindowLevelControls): show CT presets for images by @PaulHax in #684
- feat(View): Save active view id by @lchauvin in #676
- feat(ControlsModal): list mouse view controls by @PaulHax in #685
- Default to Segment Groups under Annotations and Simpify CT Presets by @PaulHax in #686
New Contributors
- @Jackie733 made their first contribution in #628
- @KazooTTT made their first contribution in #646
Full Changelog: v4.2.0...v4.3.0
VolView 4.1
VolView 4.1 is now available! We have made several enhancements, with features big and small; and we have made several bug fixes to provide a great user experience and rock-solid stability. There are new features designed to help load your data from various sources, new visualization options for examining your data, and major improvements to our cinematic volume rendering module to provide you with the highest quality rendering possible on the web.
The following lists notable features that are in the VolView 4.1 release. You can find more information on our release blog post.
- DICOM Web Support: You can now point VolView at your DICOM Web server in order to browse and visualize your images and scans!
- Image Layers: Want to visualize a layered PET-CT, PET-MRI, or any other layered modalities? The Image Layers functionality gives you a quick and easy way to layer any given image on top of the current image.
- Cinematic Volume Rendering Enhancements: We’ve greatly improved the volume rendering options and visualizations. You now have a powerful yet simple control for adjusting the quality of your 3D rendering, ranging from low-quality settings for lower-end hardware to incredibly high-quality rendering for powerful hardware.
-Tools: We’ve added a new Rectangle tool and made improvements to the ruler tool. More tools will be made available in a future release, so keep an eye out for those! - Google Cloud Storage and Amazon S3: VolView now supports loading datasets from publicly available Google Cloud Storage and Amazon S3 buckets! You can supply your
gs://ors3://URLs and VolView will recursively pull your images and datasets. Find more information on how to do this in our docs.
Full Changelog: v4.0.0...v4.1.1
VolView 4.0
We are proud to officially release the new VolView v4.0! You can view this application live at the following URL: https://volview.netlify.app/
Why v4.0? This release is a continuation of VolView 3.0, a desktop app geared towards quickly visualizing your medical datasets. With the discontinuation of the desktop application, v4.0 is a re-vitalization of the core concepts and goals of VolView 3.0, bringing cutting-edge 2D and 3D visualizations straight to your web browser. Features include:
- Cinematic volume rendering, for high-quality 3D rendering of your scans
- Purely-local DICOM reading, for visualizing your DICOM data without ever uploading it to a server
- A plethora of transfer functions, for creating the right 3D visualization for your dataset
- Annotations, measurements, and more!
First alpha release
This is meant to be an alpha release. Expect bugs.