Another big release with lots of new features and bug fixes. Thanks to all contributors!
**Highlights**
- New `nf-core subworkflows` subcommand for creating, removing, testing, updating and finding subworkflows, see the [documentation](https://nf-co.re/tools/#subworkflows) for more information.
- Every pipeline has now it's own GitHub codespace template, which can be used to develop the pipeline directly in the browser.
- Improved handling of modules and subworkflows from other repos than nf-core/modules.
- Pre-commit is now installed as a dependency, which allows us, besides other things, to run prettier on the fly even if it is not manually installed.
- Shell completion for nf-core commands, more information [here](https://nf-co.re/tools#shell-completion).
Template
Features
- Ignore files in `bin/` directory when running prettier ([2080](https://github.com/nf-core/tools/pull/1957)).
- Add GitHub codespaces template ([1957](https://github.com/nf-core/tools/pull/1957))
- `nextflow run <pipeline> --version` will now print the workflow version from the manifest and exit ([1951](https://github.com/nf-core/tools/pull/1951)).
- Add profile for running `docker` with the ARM chips (including Apple silicon) ([1942](https://github.com/nf-core/tools/pull/1942) and [#2034](https://github.com/nf-core/tools/pull/2034)).
- Flip execution order of parameter summary printing and parameter validation to prevent 'hiding' of parameter errors ([2033](https://github.com/nf-core/tools/pull/2033)).
- Change colour of 'pipeline completed successfully, but some processes failed' from red to yellow ([2096](https://github.com/nf-core/tools/pull/2096)).
Bug fixes
- Fix lint warnings for `samplesheet_check.nf` module ([1875](https://github.com/nf-core/tools/pull/1875)).
- Check that the workflow name provided with a template doesn't contain dashes ([1822](https://github.com/nf-core/tools/pull/1822))
Linting
Features
- Add `--sort-by` option to linting which allows ordering module lint warnings/errors by either test name or module name ([2077](https://github.com/nf-core/tools/pull/2077)).
Bug fixes
- Don't lint pipeline name if `manifest.name` in `.nf-core.yml` ([2035](https://github.com/nf-core/tools/pull/2035))
- Don't check for `docker pull` commands in `actions_ci` lint test (leftover from DSL1) ([2055](https://github.com/nf-core/tools/pull/2055)).
General
Features
- Use pre-commit run prettier if prettier is not available ([1983](https://github.com/nf-core/tools/pull/1983)) and initialize pre-commit in gitpod and codespaces ([#1957](https://github.com/nf-core/tools/pull/1957)).
- Refactor CLI flag `--hide-progress` to be at the top-level group, like `--verbose` ([2016](https://github.com/nf-core/tools/pull/2016))
- `nf-core sync` now supports the template YAML file using `-t/--template-yaml` ([1880](https://github.com/nf-core/tools/pull/1880)).
- The default branch can now be specified when creating a new pipeline repo [1959](https://github.com/nf-core/tools/pull/1959).
- Only warn when checking that the pipeline directory contains a `main.nf` and a `nextflow.config` file if the pipeline is not an nf-core pipeline [1964](https://github.com/nf-core/tools/pull/1964)
- Bump promoted Python version from 3.7 to 3.8 ([1971](https://github.com/nf-core/tools/pull/1971)).
- Extended the chat notifications to Slack ([1829](https://github.com/nf-core/tools/pull/1829)).
- Don't print source file + line number on logging messages (except when verbose) ([2015](https://github.com/nf-core/tools/pull/2015))
- Automatically format `test.yml` content with Prettier ([2078](https://github.com/nf-core/tools/pull/2078))
- Automatically format `modules.json` content with Prettier ([2074](https://github.com/nf-core/tools/pull/2074))
- Add shell completion for nf-core tools commands([2070](https://github.com/nf-core/tools/pull/2070))
Bug fixes, maintenance and tests
- Fix error in tagging GitPod docker images during releases ([1874](https://github.com/nf-core/tools/pull/1874)).
- Fix bug when updating modules from old version in old folder structure ([1908](https://github.com/nf-core/tools/pull/1908)).
- Don't remove local copy of modules repo, only update it with fetch ([1881](https://github.com/nf-core/tools/pull/1881)).
- Improve test coverage of `sync.py` and `__main__.py` ([1936](https://github.com/nf-core/tools/pull/1936), [#1965](https://github.com/nf-core/tools/pull/1965)).
- Add file `versions.yml` when generating `test.yml` with `nf-core modules create-test-yml` but don't check for md5sum [1963](https://github.com/nf-core/tools/pull/1963).
- Mock biocontainers and anaconda api calls in modules and subworkflows tests [1967](https://github.com/nf-core/tools/pull/1967)
- Run tests with Python 3.11 ([1970](https://github.com/nf-core/tools/pull/1970)).
- Run test with a realistic version of git ([2043](https://github.com/nf-core/tools/pull/2043)).
- Fix incorrect file deletion in `nf-core launch` when `--params_in` has the same name as `--params_out` ([1986](https://github.com/nf-core/tools/pull/1986)).
- Updated GitHub actions ([1998](https://github.com/nf-core/tools/pull/1998), [#2001](https://github.com/nf-core/tools/pull/2001))
- Code maintenance ([1818](https://github.com/nf-core/tools/pull/1818), [#2032](https://github.com/nf-core/tools/pull/2032), [#2073](https://github.com/nf-core/tools/pull/2073)).
- Track from where modules and subworkflows are installed ([1999](https://github.com/nf-core/tools/pull/1999)).
- Substitute ModulesCommand and SubworkflowsCommand by ComponentsCommand ([2000](https://github.com/nf-core/tools/pull/2000)).
- Prevent installation with unsupported Python versions ([2075](https://github.com/nf-core/tools/pull/2075)).
- Allow other remote URLs not starting with `http` ([2061](https://github.com/nf-core/tools/pull/2061))
Modules
- Update patch file paths if the modules directory has the old structure ([1878](https://github.com/nf-core/tools/pull/1878)).
- Don't write to `modules.json` file when applying a patch file during `nf-core modules update` ([2017](https://github.com/nf-core/tools/pull/2017)).
Subworkflows
- Add subworkflow commands `create-test-yml`, `create` and `install` ([1897](https://github.com/nf-core/tools/pull/1897)).
- Update subworkflows install so it installs also imported modules and subworkflows ([1904](https://github.com/nf-core/tools/pull/1904)).
- `check_up_to_date()` function from `modules_json.py` also checks for subworkflows ([1934](https://github.com/nf-core/tools/pull/1934)).
- Add tests for `nf-core subworkflows install` command ([1996](https://github.com/nf-core/tools/pull/1996)).
- Function `create()` from `modules_json.py` adds also subworkflows to `modules.json` file ([2005](https://github.com/nf-core/tools/pull/2005)).
- Add `nf-core subworkflows update` command ([2019](https://github.com/nf-core/tools/pull/2019)).