Skip to content

Release Notes

1.3.4 [2026-09-03]

Fixes:

  • Fixed incorrect url field in manifest.json to point to the correct GitLab repository path

1.3.3 [2026-08-26]

Enhancements:

  • Added output_configuration with enforce_file_version_match to the manifest
  • Added error handling in set_environment() for malformed or non-dict JSON environment files, logging a clear error and exiting cleanly instead of crashing

Maintenance:

  • Migrated base image from debian:bookworm-slim to flywheel/python:3.12-wolfi-build (Chainguard Wolfi)
  • Replaced apt system package installation with apk equivalents for the Wolfi runtime; vendored legacy libncurses.so.5 and libtinfo.so.5 from a Debian stage to satisfy MCR R2015b dependencies
  • Set GLIBC_TUNABLES=glibc.rtld.execstack=2 and MCR_CACHE_ROOT=/tmp/mcr_cache to ensure the MATLAB Compiler Runtime works correctly under Wolfi's newer glibc
  • Switched Python dependency installation from pip to uv pip install inside the image build
  • Fixed ENTRYPOINT from a single shell-string form to the correct exec-array form ["python3", "/flywheel/v0/run.py"]
  • Standardized manifest.json field ordering and updated description, label, and url
  • Added [tool.setuptools] py-modules = [] to pyproject.toml to suppress flat-layout auto-discovery errors in CI
  • Updated .gitignore to cover __pycache__/, *.py[cod], .pytest_cache/, and .idea/

1.3.2 [2025-12-17]

Maintenance:

  • Updated tomcat-catalina from 9.0.106 to 9.0.109

1.3.1 [2025-10-24]

Enhancements:

  • Added multi-stage build in Dockerfile to reduce final image size
  • Implemented non-root user (flywheel) for improved container security

Fixes:

  • Patched vulnerable Java libraries in MATLAB MCR installation including commons-beanutils, commons-collections, commons-io, dom4j, log4j-core, log4j-api, commons-compress, and multiple tomcat components
  • Replaced deprecated pydicom.read_file() with pydicom.dcmread() in utils/physio.py:559
  • Updated DICOM extraction to use gear_context.work_dir instead of hardcoded /tmp directory in run.py:154

Maintenance:

  • Upgraded base image from flywheel/python:3.9-debian to debian:bookworm-slim
  • Updated minimum Python version from 3.13 to 3.11 in pyproject.toml:7
  • Added explicit Python dependencies: flywheel-sdk==10.0.1, matplotlib>=3.10.7, numpy>=2.3.4, pydicom>=3.0.1, scipy>=1.16.2
  • Changed pip3 install to pip install --break-system-packages in Dockerfile:85
  • Re-enabled pyproject_export, linkcheck, and markdownlint hooks in .pre-commit-config.yaml
  • Added show-job: true, uid: 31337, and gid: 31337 configuration to manifest.json
  • Updated environment variables: PYTHON_VERSION to 3.9.24, COMMIT_SHA to be94c083

Documentation:

  • Reformatted README.md with improved line wrapping and readability
  • Updated BIDS specification URL from legacy format to current specification URL in README.md and utils/physio.py:535
  • Fixed relative image paths in README.md from GitHub URLs to local paths
  • Corrected shebang in run.py:1 from #!/usr/bin/env python3 to #!/usr/bin python3

1.3.0 [2025-03-31]

Enhancements:

  • Added CI/CD pipeline configuration with .gitlab-ci.yml for automated testing and Docker builds
  • Added pre-commit hooks configuration for code quality checks including ruff, gearcheck, hadolint, and yamllint
  • Added comprehensive QA visualization with plots showing physiological signals, trigger markers, and scan start/end indicators
  • Added support for multiple data processing strategies for handling missing samples: gap_fill, uniform, upsample, and none
  • Added configurable interpolation methods including linear, cubic, nearest, fill, and nan options
  • Added automatic file metadata classification for BIDS export with custom classifications for Physio, ECG, Trigger, and Info file types
  • Added BIDS-compliant output generation with .tsv.gz and .json files for physiological recordings

Documentation:

  • Added comprehensive README.md with gear functionality, configuration options, and QA validation examples
  • Added example QA images demonstrating good and problematic physiological data (signal clipping, dropout)

Maintenance:

  • Added .dockerignore to optimize Docker build context
  • Added .gitignore for Python cache files and temporary directories
  • Added Dockerfile with python 3.9 and MATLAB Compiler Runtime R2015b
  • Added pyproject.toml with project metadata and poetry-core build backend
  • Added manifest.json defining gear inputs, configuration options, and Flywheel metadata
  • Added CMRR physio extraction binary extractCMRRPhysio_b81371d
  • Added utility modules: Common.py, futils.py, physio.py, and physiotools.py
  • Added main gear execution script run.py with full processing pipeline