From dee1930e270011307072a9fac68a6147ba9acae4 Mon Sep 17 00:00:00 2001 From: Paula Ruiz-Rodriguez <50167687+Paururo@users.noreply.github.com> Date: Sun, 18 Oct 2026 09:38:31 +0200 Subject: [PATCH] release: 1.0.0 The version moves to 1.0.0 in Cargo.toml, CITATION.cff, the CHANGELOG, SECURITY.md and the issue templates, and the example report is regenerated so the website shows it. The release workflow can now build its four binaries on a pull request or by hand without publishing, and check_site.py fails while those files disagree on the version. --- .github/CONTRIBUTING.md | 21 ++++++++++++++++++++ .github/DISCUSSION_TEMPLATE/q-a.yml | 2 +- .github/ISSUE_TEMPLATE/bug_report.yml | 6 +++--- .github/SECURITY.md | 11 +++++------ .github/workflows/docs.yml | 8 ++++++++ .github/workflows/release.yml | 12 +++++++++++- CHANGELOG.md | 18 +++++++++++++++-- CITATION.cff | 2 ++ Cargo.lock | 2 +- Cargo.toml | 2 +- docs/assets/example-report.html | 6 +++--- tools/check_site.py | 28 +++++++++++++++++++++++++-- 12 files changed, 98 insertions(+), 20 deletions(-) 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