Skip to content

Releases: astewartau/qsmbly

v0.9.2

04 Mar 03:14

Choose a tag to compare

  • Include wasm binaries in release for other tools to pull

v0.9.1

20 Feb 03:51

Choose a tag to compare

  • 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

19 Feb 11:23

Choose a tag to compare

  • Added CLEAR-SWI processing

v0.8.4

17 Feb 07:12

Choose a tag to compare

  • Fixed bugs

v0.8.3

17 Feb 05:04

Choose a tag to compare

  • Improved DICOM to NIfTI management; it is now possible to correct magnitude/phase assignments and clear unnecessary images

v0.8.2

16 Feb 16:16

Choose a tag to compare

  • Update to QSM.rs v0.2.1 (updated default parameters)

v0.8.1

16 Feb 05:01

Choose a tag to compare

  • Fix version display

v0.8.0

16 Feb 04:33

Choose a tag to compare

  • 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

15 Feb 09:15

Choose a tag to compare

  • Fix DICOM import on hosted site: The deployment workflow was missing the dcm2niix/ directory, causing DICOM-to-NIfTI conversion to fail with error loading dynamically imported module when 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

14 Feb 05:01

Choose a tag to compare

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.