Changelog
[1.2.0] - 2026-09-27
Added
- Introduce SliceView for 2D MPR views
- Add support for controlling various view settings: SliceView.blendingMode, SliceView.blendingFactor, and SliceView.interpolationMode.
- Add DisplayOptions2d.transferFunctionPresetNames() and DisplayOptions2d.applyTransferFunctionPreset(), with equivalent methods on DisplayOptions3d, for listing and applying transfer-function presets.
- Add support for creating, loading, editing, and displaying Graphs.
- Add support for creating, and modifying @imfusion/sdk!Mesh instances.
- Add Mesh.onChanged for listening for Mesh changes.
- Add SharedImageSet.imageInfo for querying DICOM information from images.
- Add support for querying and setting the matrix/matrices of Data instances. See for example Image.matrixFromWorld or Image.matrixToWorld
- Add an optional FileFormat argument to ImFusion.loadFile, ImFusion.loadFileFromUrl, ImFusion.loadBuffer, and DataModel.loadFile. These functions now attempt to detect a file format automatically based on content when no format is given and the filename has no recognized extension.
- ImFusion.loadFileFromUrl now takes the filename from the
filename*orfilenameparameter of the Content-Disposition header if present. - Add support for controlling ViewOverlay visibility, the type of the OrientationMeshOverlay and the display of the PatientInfoOverlay.
- Add support for rendering mesh contours in the Volume View.
Fixed
- Preserve dataset-provided 2D windowing when loading images.
Changed
- Breaking: Replace
DisplayOptions2d.transferFunctionandDisplayOptions3d.transferFunctionproperties with DisplayOptions2d.transferFunction() and DisplayOptions3d.transferFunction(), which return borrowed TransferFunction handles. TransferFunction now supports both keypoint and LUT modes and provides tissues(), lut(), setTissues(), and setLut() for accessing and updating either representation. - Breaking: Remove
TransferFunctionFactory. Use DisplayOptions2d.transferFunctionPresetNames() and DisplayOptions2d.applyTransferFunctionPreset(), or the corresponding DisplayOptions3d methods, instead.
[1.1.0] - 2026-08-13
Added
- Add support for controlling the VolumeView via VolumeView.setCamera (see Camera), VolumeView.setMatrix and VolumeView.reset
- Add Display.setBackgroundColor, View.setBackgroundColor, and View.setBorderColor.
- Add InitOptions.licenseToken.
Fixed
- Fix display update signal not firing when image display options change
Changed
[1.0.0] - 2026-06-30
Added
- Add a high-level TypeScript wrapper (see Getting Started guide).
- Add support for loading, displaying, and saving meshes.
- Add bindings for ImageDescriptor and ImageDescriptorWorld.
- Add DataModel.getImage and DataModel.getImages for retrieving SharedImageSets from the DataModel.
- Add DataModel.find to look up a dataset by name.
- Add DataModel.clear.
- Add DataModel.data.
- Add ImFusion.destroy to release browser-side resources.
- Add type-safe listener methods for event subscriptions:
- DataModel.onDataAdded, DataModel.onDataAboutToBeRemoved
- SharedImageSet.onSelectionChanged
- View.onVisibleDataChanged
- DisplayOptions2d.onChanged, DisplayOptions3d.onChanged
- DisplayAutoLayouter.onModeChanged, DisplayAutoLayouter.onViewHiddenChanged
- RadiologyViewGroup.onVisibleDataChanged
- Display.onUpdateRequested
- AnnotationModel.onAnnotationAdded, AnnotationModel.onAnnotationAboutToBeRemoved, AnnotationModel.onAnnotationEvent
- Add support for Custom Rendering.
- Add
@imfusion/sdk-reactpackage with react bindings for the SDK. - Add preloadWasm to allow running wasm compilation in parallel to other startup actions.
- Add prefetch and clearPrefetch.
- Add loadFolderFromUrls to fetch and load a folder.
- Add support for running Algorithms.
Fixed
- Fix enum runtime representation in release builds.
- Fix
display.onUpdateRequestednot firing when visible data changed.
Changed
- Breaking: Change
init()signature: The canvas element is now a separate first argument instead of a property in the options object.typescript// Before const imf = await init({ canvas: myCanvas, autoResize: true }); // After const imf = await init(myCanvas, { autoResize: true }); - Breaking: Move raw bindings to
@imfusion/sdk/bindings.typescript// Before import LoadImFusionLib from '@imfusion/sdk'; // After import LoadImFusionLib from '@imfusion/sdk/bindings'; - Breaking: Remove the
Handlepostfix from type names. Type aliases preserve backwards compatibility for type names and methods, but constructors must be updated (e.g., usenew sdk.SharedImageSet()instead ofnew sdk.SharedImageSetHandle()). - Breaking: Move SharedImageSet.minmaxIntensityOriginal, SharedImageSet.histogram, SharedImageSet.autoWindow, SharedImageSet.displayOptions2d, and SharedImageSet.displayOptions3d from
Datato SharedImageSet. Use DataModel.getImage to retrieve a SharedImageSet, then call the method. - Breaking: Redesign DataModel as an iterable collection.
- DataModel is iterable (
for...of, spread). - DataModel.get now takes an index instead of a name. Use DataModel.find for name lookup.
- DataModel.add returns
boolean. - DataModel.remove returns
boolean.
- DataModel is iterable (
- Breaking: Remove
DataListandAnnotationListfrom the API. All functions that previously accepted or returned these types now useData[]/ HandleArray<Data> and HandleArray<Annotation> instead. See Object Ownership and Aliasing. - Rename Display input handlers from
on...()tohandle...()(e.g.,onMouseDown()→ Display.handleMouseDown); old names are deprecated. - Change
state()return type fromObjecttoRecord<string, unknown>. - Deprecate the global event system (
addEventListener,removeEventListener,EventType,EventListener,Event) in favor of the new listener methods. - Breaking: Change return type of DataModel.getImages and getImages to HandleArray
[0.7.0] - 2025-12-03
Added
- Add Brush.radiusRangeMM to compute a reasonable brush radius range based on the input image.
- Add animation support.
- Add a global illumination volume renderer.
- Add parameter names and docstrings to the generated TypeScript definitions.
- Add TypeDoc-based documentation.
Fixed
- Fix missing render calls in context menu actions.
Changed
- Breaking: Change enum representations to string literal unions. Remove
.valuefrom enum comparisons.typescript// Before mode.value === 'Auto'; // After mode === 'Auto';
[0.6.3] - 2025-09-15
Added
- Add LabelConfig bindings.
- Add angle annotation.
- Add
AnnotationCreationModeChangedevent. - Add bindings for changing annotation visibility.
- Add
DatasetSelectionChangedevent.
Fixed
- Fix
VisibleDataChangedevent firing.
Changed
- Breaking: Simplify the Brush API from
setCurrentData()to Brush.setData.
[0.6.2] - 2025-08-19
Added
- Add brush
setCurrentData()binding for setting image and labelmap.
Changed
- Move brush initialization to global scope.
[0.6.1] - 2025-08-18
Added
- Add bindings to reset views in
ViewGroup.
Fixed
- Fix rectangle annotation rendering in some MPR views.
[0.6.0] - 2025-08-12
Added
- Add
LayoutModeChangedandViewHiddenChangedevents. - Add bindings for adding and removing view overlays.
- Add brush bindings.
- Add support for saving to
.imffiles. - Add screenshot functionality for views.
Changed
- Make view overlays visible by default.
[0.5.0] - 2025-07-07
Added
- Add support for loading
.imffiles. - Add interfaces for adding and removing data from the data model.
- Add interfaces for adding and removing images from
SharedImageSet. - Add shared ownership semantics for
Image,SharedImageSet, andData.
Fixed
- Fix display of 2D images with rotation on the x or y axes.
- Fix JS signals when adding or removing data from the data model.
Changed
- Change the Philips Ultrasound Data Handler to load only Cartesian volume by default.
[0.4.1] - 2025-06-24
Added
- Add scan-line conversion for 3D ultrasound data.
- Add an interface for hiding individual views in the display layouter.
- Add data kind and modality bindings.
- Add support for loading zip archives.
[0.3.0] - 2025-06-12
Added
- Add support for JPEG2000-encoded files.
- Add PNG thumbnail generation for
SharedImageSet.
Changed
- Increase the maximum WebAssembly memory size to 4 GB.
[0.2.5] - 2025-05-21
Added
- Add context menu event handling in
Display. - Add
SharedImagebindings.
Fixed
- Fix documentation for extended types.
Changed
- Make
autoWindow()run on all loaded data by default.
[0.2.4] - 2025-05-08
Added
- Add Philips scan line dataset handler.
- Add
SharedImageSetbindings, including changing the focus frame in multi-frame data. - Add
clear()andcontains()forDataHandleList. - Add
setVisibleData()forRadiologyViewGroupHandle. - Add
AnnotationHandleandAnnotationHandleList.
Changed
- Change
AnnotationModelto useDataHandleandAnnotationHandleinstead of IDs.