👁️ User-visible changes
* Drop support for Python <3.10
* Command-line interface parameter names consisting of multiple words are now separated by `-` and not `_` anymore; for example, `target-dir` instead of previously `target_dir`. This is consistent with other command-line tools, by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/131
* Better command-line interface by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/131
* Improve documentation of the `include` parameter by adam2392 in https://github.com/hoechenberger/openneuro-py/pull/108
* Identify as `openneuro-py` by sending a `User-Agent` header to the server by effigies in https://github.com/hoechenberger/openneuro-py/pull/124
⛑️ Code health
* Test on Python 3.12 by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/112
* Add `.gitarchival` to allow retrieval of version number when installing from a Git archive by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/113
* Switch build backend to hatchling by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/116
* Remove "Linter" GitHub Action workflow, as we're now using pre-commit.ci to run style checks and linting by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/117
* Move to `src/` layout by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/118
* Use ruff formatter by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/120
* Bump actions/setup-python from 4 to 5 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/121
* Update API token for testing dataset by wmvanvliet in https://github.com/hoechenberger/openneuro-py/pull/122
* Clean up public namespaces and CLI setup by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/126
* Add more type hints, drop support for Python <3.10, and sort imports via `ruff` by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/125
* Clean up imports in tests by hoechenberger in https://github.com/hoechenberger/openneuro-py/pull/130
🤖 Automated infrastructure updates
* Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.8 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/103
* Bump pypa/gh-action-pypi-publish from 1.8.8 to 1.8.10 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/104
* Bump actions/checkout from 3 to 4 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/105
* Bump pypa/gh-action-pypi-publish from 1.8.10 to 1.8.11 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/110
* Bump github/codeql-action from 2 to 3 by dependabot in https://github.com/hoechenberger/openneuro-py/pull/128
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/hoechenberger/openneuro-py/pull/119
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/hoechenberger/openneuro-py/pull/127
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/hoechenberger/openneuro-py/pull/129
* [pre-commit.ci] pre-commit autoupdate by pre-commit-ci in https://github.com/hoechenberger/openneuro-py/pull/132
👩💻 New Contributors
* adam2392 made their first contribution in https://github.com/hoechenberger/openneuro-py/pull/108
* pre-commit-ci made their first contribution in https://github.com/hoechenberger/openneuro-py/pull/119
* effigies made their first contribution in https://github.com/hoechenberger/openneuro-py/pull/124
**Full Changelog**: https://github.com/hoechenberger/openneuro-py/compare/v2023.1.0...v2024.1.0