From 65e14aa458713f9cc5cbc3c8501b87852ca708d5 Mon Sep 17 00:00:00 2001 From: "M.Hoffmann" Date: Wed, 21 Oct 2026 00:30:51 -0300 Subject: [PATCH 1/3] chore: v0.2.0 version DOI; tools on ureq 3, toml 1, zip 9, base64 0.23 Zenodo minted 10.5281/zenodo.23524112 for v0.2.0. The README now gives each version DOI next to the concept DOI. The MIT line pointed at the concept DOI, which now resolves to the AGPL v0.2.0 release, so it points at v0.1.1's own DOI (23311209) instead. Both lockfiles were already at the newest semver-compatible versions, so the upgrades are the four major bumps in tools/. zenodo moves from ureq 2 to ureq 3 (social already used 3), so the workspace builds one HTTP stack. toml 1 gates Value and from_str behind the serde and std features. labs/ptbr-pdf was already current. Tested: nix flake check --no-update-lock-file in tools/ (tests, clippy, fmt) passed; nixpkgs-fmt --check clean; nix run ./tools#citation -- --check passed. zenodo's ureq 3 path was not run against the live API. Co-Authored-By: Claude Opus 5.5 --- README.md | 8 +- tools/Cargo.lock | 423 ++++++------------------------------- tools/render/Cargo.toml | 2 +- tools/sharingan/Cargo.toml | 2 +- tools/social/Cargo.toml | 2 +- tools/zenodo/Cargo.toml | 2 +- tools/zenodo/src/main.rs | 25 ++- 7 files changed, 89 insertions(+), 375 deletions(-) diff --git a/README.md b/README.md index 0ae6232..83d7df7 100644 --- a/README.md +++ b/README.md @@ -170,7 +170,9 @@ Each release from v0.1.1 is archived on [Zenodo](https://zenodo.org/), which giv the concept DOI, [10.5281/zenodo.23311208](https://doi.org/10.5281/zenodo.23311208), which always resolves to the latest version. GitHub's **Cite this repository** button exports APA and BibTeX from [`CITATION.cff`](CITATION.cff). `just citation` makes that file and the block below from -[`.zenodo.json`](.zenodo.json). +[`.zenodo.json`](.zenodo.json). Each version also has its own DOI: v0.2.0 is +[10.5281/zenodo.23524112](https://doi.org/10.5281/zenodo.23524112), v0.1.1 is +[10.5281/zenodo.23311209](https://doi.org/10.5281/zenodo.23311209). @@ -247,9 +249,9 @@ picasso uses the same licences as the [ouroboric-dev](https://github.com/ourobor [`REUSE.toml`](REUSE.toml) says which licence and which copyright holder apply to each file, so no file carries a header; [`LICENSES/`](LICENSES) has every licence text, and CI runs `reuse lint`. -Releases up to and including v0.1.1 ([10.5281/zenodo.23311208](https://doi.org/10.5281/zenodo.23311208)) +Releases up to and including v0.1.1 ([10.5281/zenodo.23311209](https://doi.org/10.5281/zenodo.23311209)) were published under MIT, and those copies stay under MIT. The AGPL-3.0 and CC BY 4.0 terms apply -from the next release. What is not mine, and under which terms: +from v0.2.0 ([10.5281/zenodo.23524112](https://doi.org/10.5281/zenodo.23524112)). What is not mine, and under which terms: | What | Whose | Terms | |---|---|---| diff --git a/tools/Cargo.lock b/tools/Cargo.lock index 0885d9f..851108a 100644 --- a/tools/Cargo.lock +++ b/tools/Cargo.lock @@ -17,26 +17,17 @@ dependencies = [ "memchr", ] -[[package]] -name = "arbitrary" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bc62ac97cc33321f50863d514c3bc38a453947a8f9e781137e47c7401020aed" -dependencies = [ - "derive_arbitrary", -] - [[package]] name = "base64" -version = "0.22.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" [[package]] -name = "base64" -version = "0.23.1" +name = "bitflags" +version = "2.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" +checksum = "3ded4057c258ba199e2d26386d3af3780957ecaee6c4ef4041c6b4b8b97c0b06" [[package]] name = "bumpalo" @@ -66,6 +57,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" +[[package]] +name = "cfg_aliases" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" + [[package]] name = "citation" version = "0.1.0" @@ -83,34 +80,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6" - -[[package]] -name = "derive_arbitrary" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b034bd7d5f032402a2479444dcc6f74e36a03f31854d41680fb240ef682a1ac" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "displaydoc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "equivalent" version = "1.0.3" @@ -140,15 +109,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - [[package]] name = "getrandom" version = "0.2.17" @@ -182,110 +142,6 @@ version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" -[[package]] -name = "icu_collections" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" - -[[package]] -name = "icu_properties" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" - -[[package]] -name = "icu_provider" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "indexmap" version = "2.14.2" @@ -308,12 +164,6 @@ version = "0.2.191" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a" -[[package]] -name = "litemap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" - [[package]] name = "log" version = "0.4.34" @@ -336,6 +186,18 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -348,15 +210,6 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "potential_utf" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" -dependencies = [ - "zerovec", -] - [[package]] name = "proc-macro2" version = "1.0.107" @@ -408,7 +261,7 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" name = "render" version = "0.1.0" dependencies = [ - "base64 0.22.1", + "base64", "serde_json", ] @@ -508,11 +361,11 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -553,12 +406,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "smallvec" -version = "1.16.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b" - [[package]] name = "social" version = "0.1.0" @@ -566,16 +413,10 @@ dependencies = [ "regex", "serde", "serde_json", - "ureq 3.4.2", + "ureq", "zip", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - [[package]] name = "subtle" version = "2.6.1" @@ -594,59 +435,49 @@ dependencies = [ ] [[package]] -name = "synstructure" -version = "0.14.0" +name = "toml" +version = "1.1.8+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +checksum = "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d" dependencies = [ - "proc-macro2", - "quote", - "syn", + "indexmap", + "serde_core", + "serde_spanned", + "toml_datetime", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] -name = "tinystr" -version = "0.8.4" +name = "toml_datetime" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" +checksum = "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053" dependencies = [ - "displaydoc", - "zerovec", + "serde_core", ] [[package]] -name = "toml" -version = "0.8.23" +name = "toml_parser" +version = "1.1.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c" dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", + "winnow", ] [[package]] -name = "toml_datetime" -version = "0.6.11" +name = "toml_writer" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] +checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770" [[package]] -name = "toml_edit" -version = "0.22.27" +name = "typed-path" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] +checksum = "54ec2755506471f54baf5e4bb5499d8e510cc1caf271270e778a736bd2d7336c" [[package]] name = "unicode-ident" @@ -660,36 +491,21 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "ureq" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" -dependencies = [ - "base64 0.22.1", - "flate2", - "log", - "once_cell", - "rustls", - "rustls-pki-types", - "url", - "webpki-roots 0.26.11", -] - [[package]] name = "ureq" version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a7ac20be9b7726e0bbdbf974c059676d9acb1cd414961f570a4e8231cacd7fc" dependencies = [ - "base64 0.23.1", + "base64", + "flate2", "log", "percent-encoding", "rustls", "rustls-pki-types", "ureq-proto", "utf8-zero", - "webpki-roots 1.0.10", + "webpki-roots", ] [[package]] @@ -698,51 +514,24 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841583fc36089d7d59419568ae157f43a5a03a2e5a81ba87c77d1596ef46e922" dependencies = [ - "base64 0.23.1", + "base64", "http", "httparse", "log", ] -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - [[package]] name = "utf8-zero" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.10", -] - [[package]] name = "webpki-roots" version = "1.0.10" @@ -827,69 +616,16 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" -dependencies = [ - "memchr", -] - -[[package]] -name = "writeable" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" - -[[package]] -name = "yoke" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.4" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" [[package]] name = "zenodo" version = "0.1.0" dependencies = [ "serde_json", - "ureq 2.12.1", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f75b4683f6c7f45248d4d64056a24298c6281e0993356d7d1b4a1a962ef10d4a" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "ureq", ] [[package]] @@ -898,51 +634,18 @@ version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e13084392c5e4bc371903e2935a5eaeed24905a7511356b883835e18a78f6879" -[[package]] -name = "zerotrie" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "zip" -version = "2.6.1" +version = "9.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dcb24d0152526ae49b9b96c1dcf71850ca1e0b882e4e28ed898a93c41334744" +checksum = "6e04976da629d3b04204ba8105b396a193af8ad2583b2c79bfb3ab8af580a11e" dependencies = [ - "arbitrary", "crc32fast", - "crossbeam-utils", "flate2", "indexmap", "memchr", + "nix", + "typed-path", "zopfli", ] diff --git a/tools/render/Cargo.toml b/tools/render/Cargo.toml index 91f80c6..ca57a95 100644 --- a/tools/render/Cargo.toml +++ b/tools/render/Cargo.toml @@ -5,5 +5,5 @@ edition = "2024" description = "Prints an HTML page to a PDF with headless Chromium (DevTools over a pipe), with a footer." [dependencies] -base64 = "0.22" +base64 = "0.23" serde_json = "1" diff --git a/tools/sharingan/Cargo.toml b/tools/sharingan/Cargo.toml index 7481586..088819a 100644 --- a/tools/sharingan/Cargo.toml +++ b/tools/sharingan/Cargo.toml @@ -9,4 +9,4 @@ description = "ouroboric-sharingan's licence scanner and benchmark runner" regex = "1" serde = "1" serde_json = { version = "1", features = ["preserve_order"] } -toml = { version = "0.8", default-features = false, features = ["parse"] } +toml = { version = "1", default-features = false, features = ["parse", "serde", "std"] } diff --git a/tools/social/Cargo.toml b/tools/social/Cargo.toml index 5573cb6..1307089 100644 --- a/tools/social/Cargo.toml +++ b/tools/social/Cargo.toml @@ -11,4 +11,4 @@ regex = "1" serde = "1" serde_json = { version = "1", features = ["preserve_order"] } ureq = { version = "3", default-features = false, features = ["rustls"] } -zip = { version = "2", default-features = false, features = ["deflate"] } +zip = { version = "9", default-features = false, features = ["deflate"] } diff --git a/tools/zenodo/Cargo.toml b/tools/zenodo/Cargo.toml index 3017974..c49a46f 100644 --- a/tools/zenodo/Cargo.toml +++ b/tools/zenodo/Cargo.toml @@ -7,4 +7,4 @@ license = "AGPL-3.0-only" [dependencies] serde_json = "1" -ureq = "2" +ureq = "3" diff --git a/tools/zenodo/src/main.rs b/tools/zenodo/src/main.rs index 0fbe6ec..31aab94 100644 --- a/tools/zenodo/src/main.rs +++ b/tools/zenodo/src/main.rs @@ -28,21 +28,30 @@ fn api( body: Option, raw: Option>, ) -> Result { - let req = ureq::request(method, &format!("{base}{path}")) - .set("Authorization", &format!("Bearer {token}")); + let req = ureq::http::Request::builder() + .method(method) + .uri(format!("{base}{path}")) + .header("Authorization", format!("Bearer {token}")); let res = match (raw, body) { (Some(bytes), _) => req - .set("Content-Type", "application/octet-stream") - .send_bytes(&bytes), + .header("Content-Type", "application/octet-stream") + .body(bytes) + .map(ureq::run), (None, Some(b)) => req - .set("Content-Type", "application/json") - .send_string(&b.to_string()), - (None, None) => req.set("Content-Type", "application/json").call(), + .header("Content-Type", "application/json") + .body(b.to_string()) + .map(ureq::run), + (None, None) => req + .header("Content-Type", "application/json") + .body(()) + .map(ureq::run), }; // the error text never includes the request headers, so the token stays out of the logs let text = res .map_err(|e| e.to_string())? - .into_string() + .map_err(|e| e.to_string())? + .into_body() + .read_to_string() .map_err(|e| e.to_string())?; if text.trim().is_empty() { Ok(json!({})) From 5e4a2aa8f31c1f694d6b6fd97d72596e85eb052e Mon Sep 17 00:00:00 2001 From: "M.Hoffmann" Date: Wed, 21 Oct 2026 00:33:26 -0300 Subject: [PATCH 2/3] ci: no runs on pull requests; labs/ptbr-pdf only on workflow_dispatch To save runner time and avoid needless load, ci.yml and citation.yml no longer run on pull_request. The gate runs after the merge, on a push to main, and the local gate in AGENTS.md is still the definition of done before a PR. labs/ptbr-pdf compiles Typst and its fonts into one Rust binary, so the labs matrix leaves it out on a push and adds it only on workflow_dispatch. profile-activity.yml stays as it is: it runs on a merged PR, which is after the merge. Tested: nix run nixpkgs#actionlint passed with no findings. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 8 ++++++-- .github/workflows/citation.yml | 2 -- README.md | 6 ++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53ca1a2..00eb9e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,12 +8,14 @@ # smoke test: Fortran + MPI + NetCDF-4 compiled and run in the sandbox), nixpkgs-fmt, # statix, deadnix, shellcheck, justfile parse, and the scripts' own self-tests. devShells # are evaluated, not built, so ai-jail (a Rust compile) and ParMETIS never build here. +# +# No run on pull requests, to save runner time: the gate runs after the merge, on main. +# labs/ptbr-pdf compiles Typst from source, so it runs only on workflow_dispatch. name: ci on: push: branches: [main] - pull_request: workflow_dispatch: concurrency: @@ -39,7 +41,9 @@ jobs: strategy: fail-fast: false matrix: - lab: [pratico, publisher, ptbr-pdf, lint, paper, gleam-website, agentic, cuda, present, viz] + lab: ${{ fromJSON(github.event_name == 'workflow_dispatch' + && '["pratico", "publisher", "ptbr-pdf", "lint", "paper", "gleam-website", "agentic", "cuda", "present", "viz"]' + || '["pratico", "publisher", "lint", "paper", "gleam-website", "agentic", "cuda", "present", "viz"]') }} defaults: run: working-directory: labs/${{ matrix.lab }} diff --git a/.github/workflows/citation.yml b/.github/workflows/citation.yml index 5b17156..d534319 100644 --- a/.github/workflows/citation.yml +++ b/.github/workflows/citation.yml @@ -4,8 +4,6 @@ name: citation on: - pull_request: - paths: [CITATION.cff, .zenodo.json, tools/citation/**] push: branches: [main] paths: [CITATION.cff, .zenodo.json, tools/citation/**] diff --git a/README.md b/README.md index 83d7df7..0eb3f25 100644 --- a/README.md +++ b/README.md @@ -122,8 +122,10 @@ without a major bump (a minor bump before 1.0.0): the consumers break on their n ## CI -GitHub-hosted runners only. [`ci.yml`](.github/workflows/ci.yml) checks that the legacy root -evaluates; builds every lab (`nix flake check` with the lock required current, every `checks.*` +GitHub-hosted runners only. [`ci.yml`](.github/workflows/ci.yml) runs on a push to `main` and on +`workflow_dispatch`, not on pull requests: run the gate locally before a PR. It checks that the +legacy root evaluates; builds every lab (`ptbr-pdf` only on `workflow_dispatch`, because it compiles +Typst) (`nix flake check` with the lock required current, every `checks.*` output built) and lints it (`nixpkgs-fmt`, `statix`, `deadnix`, `shellcheck`, justfile parse, self-tests); runs the site rules (`just ci` in `site/`: format, tests, build and `site-check`); parses every justfile with Ubuntu 24.04's `just` 1.21; runs `reuse lint`, `actionlint` and the From b02ea0d86fb751482e04abb3825febedf07113ac Mon Sep 17 00:00:00 2001 From: "M.Hoffmann" Date: Wed, 21 Oct 2026 00:33:37 -0300 Subject: [PATCH 3/3] docs: one clause for the ptbr-pdf CI exception MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested: n/a — documentation Co-Authored-By: Claude Opus 5.5 --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0eb3f25..712eb16 100644 --- a/README.md +++ b/README.md @@ -124,9 +124,8 @@ without a major bump (a minor bump before 1.0.0): the consumers break on their n GitHub-hosted runners only. [`ci.yml`](.github/workflows/ci.yml) runs on a push to `main` and on `workflow_dispatch`, not on pull requests: run the gate locally before a PR. It checks that the -legacy root evaluates; builds every lab (`ptbr-pdf` only on `workflow_dispatch`, because it compiles -Typst) (`nix flake check` with the lock required current, every `checks.*` -output built) and lints it (`nixpkgs-fmt`, `statix`, `deadnix`, `shellcheck`, justfile parse, +legacy root evaluates; builds every lab (`nix flake check` with the lock required current, every +`checks.*` output built; `ptbr-pdf`, which compiles Typst, only on `workflow_dispatch`) and lints it (`nixpkgs-fmt`, `statix`, `deadnix`, `shellcheck`, justfile parse, self-tests); runs the site rules (`just ci` in `site/`: format, tests, build and `site-check`); parses every justfile with Ubuntu 24.04's `just` 1.21; runs `reuse lint`, `actionlint` and the `citation` check. [`release.yml`](.github/workflows/release.yml) and