diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index d2b1f93..be65720 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -234,6 +234,27 @@ Keep them dependency-light and runnable with a plain `python3`. They are diagnostics, and a diagnostic that needs its own environment before it can tell you anything tends not to get run. +## Releasing + +A release is one pull request and one tag: + +1. Set the new version in `Cargo.toml` and run `cargo build` so `Cargo.lock` + follows. +2. Turn `## [Unreleased]` in `CHANGELOG.md` into `## [X.Y.Z] - YYYY-MM-DD`, + keep an empty `## [Unreleased]` above it, and add the link line at the + bottom. +3. Set `version` and `date-released` in `CITATION.cff`. +4. Regenerate the example report with the commands in + [docs/about/contributing.md](../docs/about/contributing.md), so the website + shows the new version. +5. Merge, then push the tag `vX.Y.Z`. The release workflow builds the four + binaries and publishes the release, and Zenodo archives it with a DOI. + +`tools/check_site.py` fails while `Cargo.toml`, `CITATION.cff`, the CHANGELOG +and the example report disagree on the version. The release workflow also runs +on any pull request that changes it, without publishing, so a broken build +shows up before the tag. + ## Documentation The website is plain HTML in `docs/` (`index.html`, `how-it-works.html`, diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yml b/.github/DISCUSSION_TEMPLATE/q-a.yml index e13df9f..2923702 100644 --- a/.github/DISCUSSION_TEMPLATE/q-a.yml +++ b/.github/DISCUSSION_TEMPLATE/q-a.yml @@ -41,7 +41,7 @@ body: attributes: label: Version description: The output of `recore --version`, plus the commit if you built from a branch. - placeholder: recore 0.2.0 + placeholder: recore 1.0.0 validations: required: true diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index ce7da84..6d953aa 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -36,9 +36,9 @@ body: label: Recore version description: >- The output of `recore --version`. If you built from a branch rather than - a tag, add the commit too: there is one tag so far and `main` moves, so - the version string alone does not identify the code you ran. - placeholder: recore 0.2.0 (main, 4f9a1c2) + a release, add the commit too: `main` moves, so the version string alone + does not identify the code you ran. + placeholder: recore 1.0.0 (main, 4f9a1c2) validations: required: true diff --git a/.github/SECURITY.md b/.github/SECURITY.md index b24b12c..262b9e7 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -34,13 +34,12 @@ you in the release notes unless you would rather stay anonymous. | Version | Status | |---------|--------| -| `main` (0.2.0 development line) | supported, fixes land here first | -| `v0.1.0` | the only tagged release so far | +| `1.0.x` | supported, fixes land here first | +| older than 1.0 | not supported: upgrade to the newest release | -Recore has exactly one tag today, so there is deliberately no "previous stable" -row in that table and no backport branch: there is nothing to backport to. A -security fix goes onto the development line and out in the next tag, and the -answer to "which version should I run" is the newest one. +There is deliberately no backport branch. A security fix goes onto `main` and +out in the next release, and the answer to "which version should I run" is the +newest one. Nothing else is supported. In particular there is no Bioconda package, no container image and no third-party build maintained by this project, so a binary diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d3d8f9e..70aa7fa 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -27,6 +27,10 @@ on: - "docs/**" - "README.md" - "assets/**" + - "LICENSE" + - "CITATION.cff" + - "CHANGELOG.md" + - ".github/CONTRIBUTING.md" - "src/**" - "Cargo.toml" - "Cargo.lock" @@ -39,6 +43,10 @@ on: - "docs/**" - "README.md" - "assets/**" + - "LICENSE" + - "CITATION.cff" + - "CHANGELOG.md" + - ".github/CONTRIBUTING.md" - "src/**" - "Cargo.toml" - "Cargo.lock" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 984db40..5af6cbe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +1,18 @@ name: Build & Release +# A v* tag builds the four binaries and publishes the release. A pull request +# that changes this file, or a run by hand, builds them without publishing, so +# a broken build shows up before release day instead of on it. on: push: tags: ["v*"] + pull_request: + paths: + - ".github/workflows/release.yml" + workflow_dispatch: permissions: - contents: write + contents: read jobs: build: @@ -57,7 +64,10 @@ jobs: release: needs: build + if: startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest + permissions: + contents: write timeout-minutes: 15 steps: - uses: actions/download-artifact@v8 diff --git a/CHANGELOG.md b/CHANGELOG.md index c0f4d55..9ee9b9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,14 @@ and Recore uses semantic versioning. ## [Unreleased] +## [1.0.0] - 2026-10-18 + +The first public release, under the GNU Affero General Public License v3.0. +Since 0.2.0, Recore also reads PPanGGOLiN, PanTA and PIRATE, needs five to seven +times less memory per genome, marks the cells it never searched instead of +calling them absent, and comes with a website and a report that explain every +decision. Every change, in detail: + ### Fixed - Memory no longer grows by megabytes with every genome. Each genome's @@ -100,6 +108,11 @@ and Recore uses semantic versioning. documentation. `tools/label_example_report.py` adds the note after the report is regenerated, and `tools/check_site.py` fails on a report or a link without it. +- The release workflow builds the four binaries on a pull request that changes + it, and by hand, without publishing anything; only a `v*` tag publishes, and + only that job can write to the repository. `tools/check_site.py` fails if + `Cargo.toml`, `CITATION.cff`, the CHANGELOG and the example report disagree + on the version. - `benchmarks/performance_benchmark.py` times Recore on any pangenome, given the same inputs as Recore, with an optional tree to keep a subset of genomes and a cluster limit for a quick run. It replaces a benchmark that only ran on @@ -722,6 +735,7 @@ and Recore uses semantic versioning. preset, thread count, and output directory. - CI and release workflow scaffolding. -[Unreleased]: https://github.com/PathoGenOmics-Lab/recore/compare/0.2.0...HEAD -[0.2.0]: https://github.com/PathoGenOmics-Lab/recore/compare/v0.1.0...0.2.0 +[Unreleased]: https://github.com/PathoGenOmics-Lab/recore/compare/v1.0.0...HEAD +[1.0.0]: https://github.com/PathoGenOmics-Lab/recore/compare/v0.2.0...v1.0.0 +[0.2.0]: https://github.com/PathoGenOmics-Lab/recore/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/PathoGenOmics-Lab/recore/releases/tag/v0.1.0 diff --git a/CITATION.cff b/CITATION.cff index 8dd4c38..963944f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -15,6 +15,8 @@ authors: affiliation: "I2SysBio, University of Valencia-CSIC, FISABIO Joint Research Unit Infection and Public Health, Valencia, Spain" repository-code: "https://github.com/PathoGenOmics-Lab/recore" url: "https://pathogenomics-lab.github.io/recore/" +version: 1.0.0 +date-released: "2026-10-18" license: AGPL-3.0-only keywords: - pangenome diff --git a/Cargo.lock b/Cargo.lock index 1ddf00a..1177206 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -496,7 +496,7 @@ dependencies = [ [[package]] name = "recore" -version = "0.2.0" +version = "1.0.0" dependencies = [ "ahash", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 77e660b..aa1b989 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "recore" -version = "0.2.0" +version = "1.0.0" edition = "2021" rust-version = "1.85" authors = ["Paula Ruiz-Rodriguez ", "Mireia Coscolla"] diff --git a/docs/assets/example-report.html b/docs/assets/example-report.html index 30aeb44..0bb75bd 100644 --- a/docs/assets/example-report.html +++ b/docs/assets/example-report.html @@ -1,4 +1,4 @@ -Recore run report