Template
- `params.max_multiqc_email_size` is no longer required ([2273](https://github.com/nf-core/tools/pull/2273))
- Remove `cleanup = true` from `test_full.config` in pipeline template ([2279](https://github.com/nf-core/tools/pull/2279))
- Fix usage docs for specifying `params.yaml` ([2279](https://github.com/nf-core/tools/pull/2279))
- Added stub in modules template ([2277](https://github.com/nf-core/tools/pull/2277)) [Contributed by nvnieuwk]
- Move registry definitions out of profile scope ([2286])(https://github.com/nf-core/tools/pull/2286)
- Remove `aws_tower` profile ([2287])(https://github.com/nf-core/tools/pull/2287)
- Fixed the Slack report to include the pipeline name ([2291](https://github.com/nf-core/tools/pull/2291))
- Fix link in the MultiQC report to point to exact version of output docs ([2298](https://github.com/nf-core/tools/pull/2298))
- Updates seqeralabs/action-tower-launch to v2.0.0 ([2301](https://github.com/nf-core/tools/pull/2301))
- Remove schema validation from `lib` folder and use Nextflow [nf-validation plugin](https://nextflow-io.github.io/nf-validation/) instead ([#1771](https://github.com/nf-core/tools/pull/1771/))
- Fix parsing of container directive when it is not typical nf-core format ([2306](https://github.com/nf-core/tools/pull/2306))
- Add ability to specify custom registry for linting modules, defaults to quay.io ([2313](https://github.com/nf-core/tools/pull/2313))
- Add `singularity.registry = 'quay.io'` in pipeline template ([2305](https://github.com/nf-core/tools/pull/2305))
- Add `apptainer.registry = 'quay.io'` in pipeline template ([2352](https://github.com/nf-core/tools/pull/2352))
- Bump minimum required NF version in pipeline template from `22.10.1` -> `23.04.0` ([2305](https://github.com/nf-core/tools/pull/2305))
- Add ability to interpret `docker.registry` from `nextflow.config` file. If not found defaults to quay.io. ([2318](https://github.com/nf-core/tools/pull/2318))
- Add functions to dynamically include pipeline tool citations in MultiQC methods description section for better reporting. ([2326](https://github.com/nf-core/tools/pull/2326))
- Remove `--tracedir` parameter ([2290](https://github.com/nf-core/tools/pull/2290))
- Incorrect config parameter warnings when customising pipeline template ([2333](https://github.com/nf-core/tools/pull/2333))
- Use markdown syntax in the description for the meta map channels ([2358](https://github.com/nf-core/tools/pull/2358))
Download
- Introduce a `--tower` flag for `nf-core download` to obtain pipelines in an offline format suited for [seqeralabs® Nextflow Tower](https://cloud.tower.nf/) ([#2247](https://github.com/nf-core/tools/pull/2247)).
- Refactored the CLI for `--singularity-cache` in `nf-core download` from a flag to an argument. The prior options were renamed to `amend` (container images are only saved in the `$NXF_SINGULARITY_CACHEDIR`) and `copy` (a copy of the image is saved with the download). `remote` was newly introduced and allows to provide a table of contents of a remote cache via an additional argument `--singularity-cache-index` ([2247](https://github.com/nf-core/tools/pull/2247)).
- Refactored the CLI parameters related to container images. Although downloading other images than those of the Singularity/Apptainer container system is not supported for the time being, a generic name for the parameters seemed preferable. So the new parameter `--singularity-cache-index` introduced in [2247](https://github.com/nf-core/tools/pull/2247) has been renamed to `--container-cache-index` prior to release ([#2336](https://github.com/nf-core/tools/pull/2336)).
- To address issue [2311](https://github.com/nf-core/tools/issues/2311), a new parameter `--container-library` was created allowing to specify the container library (registry) from which container images in OCI format (Docker) should be pulled ([#2336](https://github.com/nf-core/tools/pull/2336)).
- Container detection in configs was improved. This allows for DSL2-like container definitions inside the container parameter value provided to process scopes [2346](https://github.com/nf-core/tools/pull/2346).
- Add apptainer to the list of false positive container strings ([2353](https://github.com/nf-core/tools/pull/2353)).
Updated CLI parameters
| Old parameter | New parameter |
| --------------------- | ---------------------------------------------- |
| new parameter | `-d` / `--download-configuration` |
| new parameter | `-t` / `--tower` |
| `-c`/ `--container` | `-s` / `--container-system <VALUE>` |
| new parameter | `-l` / `--container-library <VALUE>` |
| `--singularity-cache` | `-u` / `--container-cache-utilisation <VALUE>` |
| new parameter | `-i` / `--container-cache-index <VALUE>` |
_In addition, `-r` / `--revision` has been changed to a parameter that can be provided multiple times so several revisions can be downloaded at once._
Linting
- Warn if container access is denied ([2270](https://github.com/nf-core/tools/pull/2270))
- Error if module container specification has quay.io as prefix when it shouldn't have ([2278](https://github.com/nf-core/tools/pull/2278/files)
- Detect if container is 'simple name' and try to contact quay.io server by default ([2281](https://github.com/nf-core/tools/pull/2281))
- Warn about null/None/empty default values in `nextflow_schema.json` ([3328](https://github.com/nf-core/tools/pull/2328))
- Fix linting when creating a pipeline skipping some parts of the template and add CI test ([2330](https://github.com/nf-core/tools/pull/2330))
Modules
- Don't update `modules_json` object if a module is not updated ([2323](https://github.com/nf-core/tools/pull/2323))
Subworkflows
General
- GitPod base image: Always self-update to the latest version of Nextflow. Add [pre-commit](https://pre-commit.com/) dependency.
- GitPod configs: Update Nextflow as an init task, init pre-commit in pipeline config.
- Refgenie: Create `nxf_home/nf-core/refgenie_genomes.config` path if it doesn't exist ([2312](https://github.com/nf-core/tools/pull/2312))
- Add CI tests to test running a pipeline when it's created from a template skipping different areas