Release Notes
4.0.0 [2026-10-09]
Enhancements:
- Added JupyterLab workspace export and import (
workspacesconfig option withNONE,UPDATE,SKIP_EXISTING, andREPLACE_ALLmodes) - Added dry run mode (
dry_runconfig option) that previews all changes without modifying the destination project - Replaced boolean
permissions,gear_rules,data_views, andproject_infoconfig options with string enum options supportingNONE,UPDATE,SKIP_EXISTING,APPEND, andREPLACE_ALLmerge strategies - Added
permissions_sourceconfig option to apply group permissions template instead of source project permissions - Added
gear_rules_sourceconfig option to apply site template gear rules instead of source project rules - Added
new_projectconfig option replacingapply_to_existing_projectto control whether to create or update the destination project - Added access check requiring the gear to be run by a user (not a gear rule) who is a site admin or admin on the destination project
- Added
workspacesfile input for importing previously exported workspace archives
Fixes:
- Fixed session templates export to read raw project record, preserving fields the SDK model drops (e.g.
regexadded in Flywheel 22.5) - Fixed session templates import to handle schema differences between Flywheel versions: removes legacy fields on 22.5+ sites and converts exact-match templates to equivalent regexes on pre-22.5 sites
- Fixed
form_idreferences in session templates that point to forms unavailable on the destination project, clearing them before import - Fixed gear rule fixed input uploads to check that all fixed inputs are present before changing any rules, preventing partial rule updates
- Fixed data view export to include
group_byandfilterfields dropped by the SDK model - Fixed project settings export to use raw API response, preserving form definition keys (
key,name,display,config,settings) that the typed SDK model silently drops - Added retry logic for transient errors on all POST operations (gear rules, permissions, views, workspaces, file uploads)
- Fixed
project_infoimport to supportUPDATEandSKIP_EXISTINGstrategies instead of always replacing all info
Maintenance:
- Replaced monolithic
utils.pywith per-feature modules underfw_gear_project_settings/features/ - Replaced
parse_config()returning a dict with aGearArgsdataclass - Updated
pytestfrom>=7.4.2,<8to>=9.1.1 - Updated
pytest-covfrom>=4.1.0,<5to>=7.1.0 - Updated
pytest-mockfrom>=3.11.1,<4to>=3.16.0 - Changed
Dockerfileto run as user31337instead of named userflywheel - Replaced
test_utils.pywith per-module test files and a sharedconftest.pywith fake Flywheel SDK client and project fixtures
Documentation:
- Rewrote
README.mdwith updated config reference, use cases for all five workflows (export, new project, existing project, cross-site import, dry run), logging format reference, and updated workflow diagram
Breaking Changes:
- Removed
default_group_permissions,apply_to_existing_project, andexisting_rulesconfig options; replaced bypermissions_source,new_project, andgear_rules_actionrespectively - Changed
permissions,gear_rules,data_views, andproject_infofrom boolean config options to string enums; existing boolean values will not be accepted - Gear must now be run by a user with admin access; runs triggered by gear rules or devices will exit with an error
3.0.3 [2026-08-24]
Maintenance:
- Updated
manifest.jsonauthor field fromFlywheel SSEtoFlywheeland addedcitefield for manifest standardization - Expanded gear description to accurately reflect all supported operations including data views, project settings, attachments, and session templates
3.0.2 [2026-08-19]
Fixes:
- Fixed form definitions being partially copied during project settings export; the typed
FormDefinitionSDK model silently dropped form keys (key,name,display,description,config,settings), so export now fetches raw JSON directly from the API to preserve all fields.
3.0.1 [2026-08-03]
Maintenance:
- Updated
flywheel-sdkto22.3.0
3.0.0 [2026-06-12]
Enhancements:
- Changed default values for
data_views,project_settings,session_templates,project_info, andproject_attachmentsconfiguration options fromfalsetotrue, so all settings are copied by default unless explicitly unchecked.
Maintenance:
- Updated
flywheel-sdkdependency from>=17.4.0,<18to>=22.0. - Added
.gitignorefile.
Documentation:
- Updated
README.mdto reflect new default values for configuration options.
Breaking Changes:
- All copy settings (
data_views,project_settings,session_templates,project_info,project_attachments) now default totrueinstead offalse; existing workflows that relied on these being disabled by default must now explicitly set them tofalse.
2.3.0 [2026-06-03]
Enhancements:
- Added support for exporting and importing project settings (
project_settingsconfig option), includingforms,deid_profile,viewer_apps, andworkspaces. - Added support for exporting and importing session and acquisition templates (
session_templatesconfig option). - Added support for exporting and importing project custom metadata (
project_infoconfig option). - Added support for exporting and uploading project attachment files (
project_attachmentsconfig option andattachmentsfile input).
Fixes:
- Fixed a typo in
README.md("to be assist" → "to assist"). - Fixed a syntax error in the
generate_project_templatedocstring (missing colon after"views").
Maintenance:
- Refactored
Dockerfileto use a multi-stage build withbase,build,dev, and final production stages usingflywheel/python:3.12-wolfi-build. - Added
requirements-dev.txtto.dockerignoreallowlist to support thedevbuild stage. - Extended
save_templateJSON serializer to handle Flywheel model objects with ato_dictmethod. - Added tests for
project_settings,session_templates,project_info, andproject_attachmentsexport and import functionality.
Documentation:
- Updated
README.mdto document the newproject_settings,session_templates,project_info, andproject_attachmentsconfiguration options. - Updated
README.mdto document the newattachmentsfile input and output. - Updated
README.mddescription and use case sections to reflect the expanded set of exportable/importable project attributes.
2.2.9 [2025-10-23]
Enhancements:
- Added
classificationmetadata fields (function,modality,organ,species,therapeutic_area) to gear manifest - Enabled
show-jobsetting in gear manifest
Fixes:
- Added
USER flywheeldirective to Dockerfile for improved security
Maintenance:
- Migrated from
poetrytouvfor dependency management - Migrated from
flywheel-gear-toolkittofw-gear==0.3.2library - Updated
pythonfrom3.12.8to3.12.12 - Set
PYVERto3.12in CI configuration - Updated
glob2version constraint from^0.7to>=0.7,<0.8 - Updated
pyproject.tomlto use PEP 621 format withhatchlingbuild backend - Added
PLR0913,PLR0912, andPLR0915lint exceptions for functions with many parameters/branches/statements - Refactored string formatting to use f-strings instead of
.format() - Removed unnecessary
import zipfilestatement
Documentation:
- Updated
CONTRIBUTING.mdwithuv-based workflow instructions - Updated pre-commit hook documentation to reflect configuration changes
2.2.8 [2025-02-06]
Fixes:
- Fixed bug where fixed input file version mismatch between origin and destination projects caused the gear to fail by removing version specifications from gear rules
- Fixed bug where the gear expected permission to have
idinstead of_id(now accepts either field)
Documentation:
- Updated
README.mdformatting to ensure all lines are 88 characters or less - Added clarification in
README.mdabout gear rule fixed input versioning behavior - Fixed typo in
manifest.jsonconfig description changingapply_group_permissionstodefault_group_permissions
Maintenance:
- Updated
pythonfrom3.12.7to3.12.8
2.2.6 [2024-12-10]
Enhancements:
- Added
.dockerignorefile to optimize Docker build context and reduce image build time
Maintenance:
- Added CI/CD pipeline configuration with
.gitlab-ci.ymlfor automated testing and deployment - Added pre-commit hooks configuration for code quality checks including
ruff,pytest,hadolint, and linting tools - Added comprehensive test suite with
pytestcovering main functionality, parser, and utility functions - Added
Dockerfilebased onflywheel/python:3.12-alpineimage - Added project documentation including
README.md,CONTRIBUTING.md,FAQ.md, andLICENSE - Added
fw_gear_project_settingspackage with modular architecture separating main logic, parsing, and utilities - Migrated to
pyproject.tomlfor dependency management withpoetry - Updated
pythonto3.12andflywheel-sdkto^17.4.0 - Added
glob2andflywheel-gear-toolkitdependencies - Added release notes documentation in
docs/release_notes.md