Releases: astewartau/qsmbly
Releases · astewartau/qsmbly
v0.9.2
v0.9.1
- Fix hole-filling algorithm crashing Chrome — The 3D hole-filling algorithm used
Array.shift()for its BFS queue, which is O(n) per call. On large volumes (16M+ voxels) this caused O(n²) behavior that crashed Chrome. Replaced with an O(1) index pointer. - Fix mask shift/flip when entering drawing mode — Mask data was copied linearly to NiiVue's draw bitmap, ignoring the permRAS orientation transform. Now uses NiiVue's loadDrawingFromUrl pipeline on entry and applies the inverse permRAS transform on exit.
- Fix DICOM drag-and-drop in Chrome only loading one directory — Chrome invalidates the DataTransferItemList after an async yield, so only the first dropped directory was processed. All entries are now collected synchronously before any async traversal.
- Fix duplicate files on repeated DICOM uploads — DicomController accumulated results internally and also passed them to a callback that accumulated again, causing duplicates. Made the controller stateless — it now returns only the current batch.
v0.9.0
- Added CLEAR-SWI processing
v0.8.4
- Fixed bugs
v0.8.3
- Improved DICOM to NIfTI management; it is now possible to correct magnitude/phase assignments and clear unnecessary images
v0.8.2
- Update to QSM.rs v0.2.1 (updated default parameters)
v0.8.1
- Fix version display
v0.8.0
- QSM.rs integration -- All Rust algorithm code has been extracted to the https://github.com/astewartau/QSM.rs library. QSMbly now ships only a thin WASM binding layer, removing ~17,300 lines of bundled Rust code. All 59 WASM exports are preserved with identical behaviour.
- Reorganised inputs -- The input panel now defaults to DICOM mode, with NIfTI inputs nested under a separate tab containing Mag+Phase, Total Field, and Local Field sub-tabs.
- About modal -- New About dialog accessible from the header, showing QSMbly and QSM.rs versions with links to both repositories.
v0.7.1
- Fix DICOM import on hosted site: The deployment workflow was missing the
dcm2niix/directory, causing DICOM-to-NIfTI conversion to fail witherror loading dynamically imported modulewhen accessed via qsmbly.neurodesk.org. Local development was unaffected. - Fix dicompare validation on hosted site: The
schemas/directory was also missing from the deployment, which would cause dicompare validation against the QSM Consensus Guidelines to fail.
v0.7.0
dicompare integration
QSMbly now integrates https://github.com/astewartau/dicompare to validate uploaded DICOM files against the QSM Consensus
Guidelines schema (https://doi.org/10.1002/mrm.30006).
When using DICOM input mode, a dicompare Report button appears in the sidebar. Clicking it will:
- Load a Python runtime (Pyodide) in a background Web Worker
- Install the dicompare package and analyze the uploaded DICOM files
- Validate acquisition parameters against the QSM Consensus Guidelines, including:
- 3D multi-echo GRE acquisition type
- Echo count, uniform echo spacing, and first echo time
- Echo times relative to tissue T2* values
- Magnitude/phase image pairing and slice count matching
- Readout bandwidth, Ernst flip angle, isotropic voxels, and voxel size
- Display a compliance report in a modal with field checks, validation rule results, and a collapsible list of fields in the
data not covered by the schema - Cache results so the report reopens instantly without re-running validation
The report can be printed via a Print Report button that opens a standalone, print-ready page.