From 4d588a87efe85dbe75aa8533923580951efcd31d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 19 Jan 2026 13:46:20 +0000 Subject: [PATCH 01/40] add semver validator action --- .github/workflows/publish-crates-io-dry-run.yml | 7 +++++++ .github/workflows/publish-crates-io.yml | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 2025df7bc48..5bce3d38db2 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -25,6 +25,13 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi + - name: Bump versions (local only) run: | cargo workspaces version ${{ inputs.version }} \ diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 68a0cd064ce..917eee7f0d7 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -25,10 +25,12 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - # - name: Configure git - # run: | - # git config user.name "github-actions[bot]" - # git config user.email "github-actions[bot]@users.noreply.github.com" + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi - name: Bump versions run: | From a4a59c213805429a036469d859b84485dd69dd62 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 19 Jan 2026 13:53:07 +0000 Subject: [PATCH 02/40] update runner --- .github/workflows/publish-crates-io-dry-run.yml | 2 +- .github/workflows/publish-crates-io.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 5bce3d38db2..368d8cc78d6 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -10,7 +10,7 @@ on: jobs: publish-dry-run: - runs-on: arc-ubuntu-22.04-dind + runs-on: arc-linux-latest steps: - name: Checkout repo uses: actions/checkout@v6 diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 917eee7f0d7..45ca03e6041 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -10,7 +10,7 @@ on: jobs: publish: - runs-on: arc-ubuntu-22.04-dind + runs-on: arc-linux-latest steps: - name: Checkout repo uses: actions/checkout@v6 From 20bc24c89e39a150e39b1476d4253c3a6c213235 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 19 Jan 2026 14:52:03 +0000 Subject: [PATCH 03/40] Release 1.20.2 nym-api-requests@1.20.2 nym-async-file-watcher@1.20.2 nym-authenticator-requests@1.20.2 nym-bandwidth-controller@1.20.2 nym-bin-common@1.20.2 nym-cache@1.20.2 nym-cli-commands@1.20.2 nym-client-core@1.20.2 nym-client-core-config-types@1.20.2 nym-client-core-gateways-storage@1.20.2 nym-client-core-surb-storage@1.20.2 nym-client-websocket-requests@1.20.2 nym-coconut-dkg-common@1.20.2 nym-common@1.20.2 nym-compact-ecash@1.20.2 nym-config@1.20.2 nym-contracts-common@1.20.2 nym-contracts-common-testing@1.20.2 nym-cpp-ffi@1.20.2 nym-credential-proxy-lib@1.20.2 nym-credential-proxy-requests@1.20.2 nym-credential-storage@1.20.2 nym-credential-utils@1.20.2 nym-credential-verification@1.20.2 nym-credentials@1.20.2 nym-credentials-interface@1.20.2 nym-crypto@1.20.2 nym-dkg@1.20.2 nym-ecash-contract-common@1.20.2 nym-ecash-signer-check@1.20.2 nym-ecash-signer-check-types@1.20.2 nym-ecash-time@1.20.2 nym-exit-policy@1.20.2 nym-ffi-shared@1.20.2 nym-gateway-client@1.20.2 nym-gateway-requests@1.20.2 nym-gateway-stats-storage@1.20.2 nym-gateway-storage@1.20.2 nym-go-ffi@1.20.2 nym-group-contract-common@1.20.2 nym-http-api-client@1.20.2 nym-http-api-client-macro@1.20.2 nym-http-api-common@1.20.2 nym-id@1.20.2 nym-inclusion-probability@1.20.2 nym-ip-packet-client@1.20.2 nym-ip-packet-requests@1.20.2 nym-kcp@1.20.2 nym-metrics@1.20.2 nym-mixnet-client@1.20.2 nym-mixnet-contract-common@1.20.2 nym-mixnode-common@1.20.2 nym-multisig-contract-common@1.20.2 nym-network-defaults@1.20.2 nym-node-metrics@1.20.2 nym-node-requests@1.20.2 nym-node-tester-utils@1.20.2 nym-noise@1.20.2 nym-noise-keys@1.20.2 nym-nonexhaustive-delayqueue@1.20.2 nym-ordered-buffer@1.20.2 nym-outfox@1.20.2 nym-pemstore@1.20.2 nym-performance-contract-common@1.20.2 nym-pool-contract-common@1.20.2 nym-registration-common@1.20.2 nym-sdk@1.20.2 nym-serde-helpers@1.20.2 nym-service-provider-requests-common@1.20.2 nym-service-providers-common@1.20.2 nym-socks5-client-core@1.20.2 nym-socks5-proxy-helpers@1.20.2 nym-socks5-requests@1.20.2 nym-sphinx@1.20.2 nym-sphinx-acknowledgements@1.20.2 nym-sphinx-addressing@1.20.2 nym-sphinx-anonymous-replies@1.20.2 nym-sphinx-chunking@1.20.2 nym-sphinx-cover@1.20.2 nym-sphinx-forwarding@1.20.2 nym-sphinx-framing@1.20.2 nym-sphinx-params@1.20.2 nym-sphinx-routing@1.20.2 nym-sphinx-types@1.20.2 nym-sqlx-pool-guard@1.20.2 nym-statistics-common@1.20.2 nym-store-cipher@1.20.2 nym-task@1.20.2 nym-test-utils@1.20.2 nym-ticketbooks-merkle@1.20.2 nym-topology@1.20.2 nym-tun@1.20.2 nym-types@1.20.2 nym-upgrade-mode-check@1.20.2 nym-validator-client@1.20.2 nym-verloc@1.20.2 nym-vesting-contract-common@1.20.2 nym-wasm-client-core@1.20.2 nym-wasm-storage@1.20.2 nym-wasm-utils@1.20.2 nym-wireguard@1.20.2 nym-wireguard-private-metadata-client@1.20.2 nym-wireguard-private-metadata-server@1.20.2 nym-wireguard-private-metadata-shared@1.20.2 nym-wireguard-private-metadata-tests@1.20.2 nym-wireguard-types@1.20.2 nyxd-scraper-shared@1.20.2 Generated by cargo-workspaces --- Cargo.lock | 234 +++++++++++++++++++------------------- Cargo.toml | 2 +- common/nym-kcp/Cargo.toml | 2 +- 3 files changed, 119 insertions(+), 119 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 30db56699bd..05dfc8547db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2440,7 +2440,7 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "easy-addr" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-std", "quote", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -5400,7 +5400,7 @@ dependencies = [ [[package]] name = "nym-api-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bs58", "cosmrs", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "nym-async-file-watcher" -version = "1.20.1" +version = "1.20.2" dependencies = [ "futures", "log", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "nym-authenticator-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "futures", @@ -5470,7 +5470,7 @@ dependencies = [ [[package]] name = "nym-authenticator-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "base64 0.22.1", "bincode", @@ -5494,7 +5494,7 @@ dependencies = [ [[package]] name = "nym-bandwidth-controller" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "log", @@ -5511,7 +5511,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "clap", "clap_complete", @@ -5550,7 +5550,7 @@ dependencies = [ [[package]] name = "nym-cache" -version = "1.20.1" +version = "1.20.2" dependencies = [ "tokio", ] @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "nym-cli-commands" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "base64 0.22.1", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "base64 0.22.1", @@ -5738,7 +5738,7 @@ dependencies = [ [[package]] name = "nym-client-core-config-types" -version = "1.20.1" +version = "1.20.2" dependencies = [ "humantime-serde", "nym-config", @@ -5753,7 +5753,7 @@ dependencies = [ [[package]] name = "nym-client-core-gateways-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "nym-client-core-surb-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -5818,7 +5818,7 @@ dependencies = [ [[package]] name = "nym-client-websocket-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-sphinx", "serde", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "nym-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "tracing", "tracing-test", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "nym-compact-ecash" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "bs58", @@ -5872,7 +5872,7 @@ dependencies = [ [[package]] name = "nym-config" -version = "1.20.1" +version = "1.20.2" dependencies = [ "dirs", "handlebars", @@ -5904,7 +5904,7 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "bs58", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "cosmwasm-std", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "nym-cpp-ffi" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "bs58", @@ -5998,7 +5998,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-lib" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "axum", @@ -6036,7 +6036,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "nym-credentials", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "nym-credential-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -6083,7 +6083,7 @@ dependencies = [ [[package]] name = "nym-credential-utils" -version = "1.20.1" +version = "1.20.2" dependencies = [ "log", "nym-bandwidth-controller", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "nym-credential-verification" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "bs58", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "nym-credentials" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "cosmrs", @@ -6153,7 +6153,7 @@ dependencies = [ [[package]] name = "nym-credentials-interface" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-bls12_381-fork", "nym-compact-ecash", @@ -6171,7 +6171,7 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.1" +version = "1.20.2" dependencies = [ "aead", "aes 0.8.4", @@ -6243,7 +6243,7 @@ dependencies = [ [[package]] name = "nym-dkg" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bitvec", "bs58", @@ -6265,7 +6265,7 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bs58", "cosmwasm-schema", @@ -6279,7 +6279,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check" -version = "1.20.1" +version = "1.20.2" dependencies = [ "futures", "nym-ecash-signer-check-types", @@ -6295,7 +6295,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check-types" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-coconut-dkg-common", "nym-crypto", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "nym-ecash-time" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-compact-ecash", "time", @@ -6318,7 +6318,7 @@ dependencies = [ [[package]] name = "nym-exit-policy" -version = "1.20.1" +version = "1.20.2" dependencies = [ "reqwest 0.12.28", "serde", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "nym-ffi-shared" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "bs58", @@ -6406,7 +6406,7 @@ dependencies = [ [[package]] name = "nym-gateway-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "futures", "getrandom 0.2.16", @@ -6497,7 +6497,7 @@ dependencies = [ [[package]] name = "nym-gateway-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "bs58", @@ -6529,7 +6529,7 @@ dependencies = [ [[package]] name = "nym-gateway-stats-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "nym-node-metrics", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "nym-gateway-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -6564,7 +6564,7 @@ dependencies = [ [[package]] name = "nym-go-ffi" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "lazy_static", @@ -6581,7 +6581,7 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -6592,7 +6592,7 @@ dependencies = [ [[package]] name = "nym-http-api-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "bincode", @@ -6624,7 +6624,7 @@ dependencies = [ [[package]] name = "nym-http-api-client-macro" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-http-api-client", "proc-macro-crate", @@ -6637,7 +6637,7 @@ dependencies = [ [[package]] name = "nym-http-api-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "axum", "axum-client-ip", @@ -6659,7 +6659,7 @@ dependencies = [ [[package]] name = "nym-id" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-credential-storage", "nym-credentials", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "nym-inclusion-probability" -version = "1.20.1" +version = "1.20.2" dependencies = [ "log", "rand 0.8.5", @@ -6694,7 +6694,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "bytes", @@ -6709,7 +6709,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "bytes", @@ -6727,7 +6727,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-router" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -6771,7 +6771,7 @@ dependencies = [ [[package]] name = "nym-kcp" -version = "0.1.0" +version = "1.20.2" dependencies = [ "ansi_term", "bytes", @@ -6803,7 +6803,7 @@ dependencies = [ [[package]] name = "nym-ledger" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bip32", "k256", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "nym-metrics" -version = "1.20.1" +version = "1.20.2" dependencies = [ "dashmap", "lazy_static", @@ -6899,7 +6899,7 @@ dependencies = [ [[package]] name = "nym-mixnet-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "dashmap", "futures", @@ -6916,7 +6916,7 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bs58", "cosmwasm-schema", @@ -6939,7 +6939,7 @@ dependencies = [ [[package]] name = "nym-mixnode-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bytes", "futures", @@ -6966,7 +6966,7 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -6981,7 +6981,7 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cargo_metadata 0.19.2", "dotenvy", @@ -7166,7 +7166,7 @@ dependencies = [ [[package]] name = "nym-node-metrics" -version = "1.20.1" +version = "1.20.2" dependencies = [ "dashmap", "futures", @@ -7180,7 +7180,7 @@ dependencies = [ [[package]] name = "nym-node-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "celes", @@ -7300,7 +7300,7 @@ dependencies = [ [[package]] name = "nym-node-tester-utils" -version = "1.20.1" +version = "1.20.2" dependencies = [ "futures", "log", @@ -7340,7 +7340,7 @@ dependencies = [ [[package]] name = "nym-noise" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "arc-swap", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "nym-noise-keys" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-crypto", "schemars 0.8.22", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "nym-nonexhaustive-delayqueue" -version = "1.20.1" +version = "1.20.2" dependencies = [ "tokio", "tokio-stream", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "nym-ordered-buffer" -version = "1.20.1" +version = "1.20.2" dependencies = [ "log", "thiserror 2.0.17", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "nym-outfox" -version = "1.20.1" +version = "1.20.2" dependencies = [ "blake3", "chacha20", @@ -7426,7 +7426,7 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.1" +version = "1.20.2" dependencies = [ "pem", "tracing", @@ -7435,7 +7435,7 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7448,7 +7448,7 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7461,7 +7461,7 @@ dependencies = [ [[package]] name = "nym-registration-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bytes", "futures", @@ -7488,7 +7488,7 @@ dependencies = [ [[package]] name = "nym-registration-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "nym-authenticator-requests", @@ -7504,7 +7504,7 @@ dependencies = [ [[package]] name = "nym-sdk" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -7563,7 +7563,7 @@ dependencies = [ [[package]] name = "nym-serde-helpers" -version = "1.20.1" +version = "1.20.2" dependencies = [ "base64 0.22.1", "bs58", @@ -7574,7 +7574,7 @@ dependencies = [ [[package]] name = "nym-service-provider-requests-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "serde", @@ -7583,7 +7583,7 @@ dependencies = [ [[package]] name = "nym-service-providers-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -7653,7 +7653,7 @@ dependencies = [ [[package]] name = "nym-socks5-client-core" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "dirs", @@ -7685,7 +7685,7 @@ dependencies = [ [[package]] name = "nym-socks5-proxy-helpers" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bytes", "futures", @@ -7700,7 +7700,7 @@ dependencies = [ [[package]] name = "nym-socks5-requests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "log", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "nym-sphinx" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-crypto", "nym-metrics", @@ -7741,7 +7741,7 @@ dependencies = [ [[package]] name = "nym-sphinx-acknowledgements" -version = "1.20.1" +version = "1.20.2" dependencies = [ "generic-array 0.14.7", "nym-crypto", @@ -7759,7 +7759,7 @@ dependencies = [ [[package]] name = "nym-sphinx-addressing" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bincode", "nym-crypto", @@ -7772,7 +7772,7 @@ dependencies = [ [[package]] name = "nym-sphinx-anonymous-replies" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bs58", "nym-crypto", @@ -7790,7 +7790,7 @@ dependencies = [ [[package]] name = "nym-sphinx-chunking" -version = "1.20.1" +version = "1.20.2" dependencies = [ "dashmap", "log", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "nym-sphinx-cover" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-crypto", "nym-sphinx-acknowledgements", @@ -7825,7 +7825,7 @@ dependencies = [ [[package]] name = "nym-sphinx-forwarding" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-anonymous-replies", @@ -7836,7 +7836,7 @@ dependencies = [ [[package]] name = "nym-sphinx-framing" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bytes", "cfg-if", @@ -7853,7 +7853,7 @@ dependencies = [ [[package]] name = "nym-sphinx-params" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-crypto", "nym-sphinx-types", @@ -7863,7 +7863,7 @@ dependencies = [ [[package]] name = "nym-sphinx-routing" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-types", @@ -7872,7 +7872,7 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-outfox", "sphinx-packet", @@ -7881,7 +7881,7 @@ dependencies = [ [[package]] name = "nym-sqlx-pool-guard" -version = "1.20.1" +version = "1.20.2" dependencies = [ "proc_pidinfo", "sqlx", @@ -7924,7 +7924,7 @@ dependencies = [ [[package]] name = "nym-statistics-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "futures", "log", @@ -7949,7 +7949,7 @@ dependencies = [ [[package]] name = "nym-store-cipher" -version = "1.20.1" +version = "1.20.2" dependencies = [ "aes-gcm", "argon2", @@ -7964,7 +7964,7 @@ dependencies = [ [[package]] name = "nym-task" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "cfg-if", @@ -7982,7 +7982,7 @@ dependencies = [ [[package]] name = "nym-test-utils" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "futures", @@ -7994,7 +7994,7 @@ dependencies = [ [[package]] name = "nym-ticketbooks-merkle" -version = "1.20.1" +version = "1.20.2" dependencies = [ "nym-credentials-interface", "nym-serde-helpers", @@ -8011,7 +8011,7 @@ dependencies = [ [[package]] name = "nym-topology" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "nym-api-requests", @@ -8033,7 +8033,7 @@ dependencies = [ [[package]] name = "nym-tun" -version = "1.20.1" +version = "1.20.2" dependencies = [ "etherparse", "log", @@ -8045,7 +8045,7 @@ dependencies = [ [[package]] name = "nym-types" -version = "1.20.1" +version = "1.20.2" dependencies = [ "base64 0.22.1", "cosmrs", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "nym-upgrade-mode-check" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "jwt-simple", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "nym-validator-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -8188,7 +8188,7 @@ dependencies = [ [[package]] name = "nym-verloc" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bytes", "futures", @@ -8209,7 +8209,7 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.1" +version = "1.20.2" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "nym-vpn-api-lib-wasm" -version = "1.20.1" +version = "1.20.2" dependencies = [ "bs58", "getrandom 0.2.16", @@ -8268,7 +8268,7 @@ dependencies = [ [[package]] name = "nym-wasm-client-core" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "console_error_panic_hook", @@ -8302,7 +8302,7 @@ dependencies = [ [[package]] name = "nym-wasm-storage" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "getrandom 0.2.16", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "nym-wasm-utils" -version = "1.20.1" +version = "1.20.2" dependencies = [ "console_error_panic_hook", "futures", @@ -8334,7 +8334,7 @@ dependencies = [ [[package]] name = "nym-wireguard" -version = "1.20.1" +version = "1.20.2" dependencies = [ "base64 0.22.1", "defguard_wireguard_rs", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "nym-http-api-client", @@ -8371,7 +8371,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-server" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -8391,7 +8391,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-shared" -version = "1.20.1" +version = "1.20.2" dependencies = [ "axum", "bincode", @@ -8404,7 +8404,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-tests" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "axum", @@ -8428,7 +8428,7 @@ dependencies = [ [[package]] name = "nym-wireguard-types" -version = "1.20.1" +version = "1.20.2" dependencies = [ "base64 0.22.1", "nym-crypto", @@ -8440,7 +8440,7 @@ dependencies = [ [[package]] name = "nymvisor" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "bytes", @@ -8518,7 +8518,7 @@ dependencies = [ [[package]] name = "nyxd-scraper-shared" -version = "1.20.1" +version = "1.20.2" dependencies = [ "async-trait", "base64 0.22.1", @@ -13891,7 +13891,7 @@ dependencies = [ [[package]] name = "zknym-lib" -version = "1.20.1" +version = "1.20.2" dependencies = [ "anyhow", "async-trait", @@ -13964,7 +13964,7 @@ dependencies = [ [[package]] name = "zulip-client" -version = "1.20.1" +version = "1.20.2" dependencies = [ "itertools 0.14.0", "nym-bin-common", diff --git a/Cargo.toml b/Cargo.toml index 7cf7fbe6d2a..682927a6704 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -206,7 +206,7 @@ edition = "2024" license = "Apache-2.0" rust-version = "1.85" readme = "README.md" -version = "1.20.1" +version = "1.20.2" [workspace.dependencies] addr = "0.15.6" diff --git a/common/nym-kcp/Cargo.toml b/common/nym-kcp/Cargo.toml index 488c9fff8a6..27b174b25b0 100644 --- a/common/nym-kcp/Cargo.toml +++ b/common/nym-kcp/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym-kcp" -version = "0.1.0" +version = "1.20.2" description = "KCP protocol implementation for Nym" edition = { workspace = true } authors = { workspace = true } From eb35e3e31b4d7d401c5d8c64d6411c9131f1b7d4 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 19 Jan 2026 16:43:25 +0000 Subject: [PATCH 04/40] update runner with sed for old version in CI --- .github/workflows/publish-crates-io-dry-run.yml | 10 ++++++++++ .github/workflows/publish-crates-io.yml | 12 +++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 368d8cc78d6..851d02b4437 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -32,6 +32,12 @@ jobs: exit 1 fi + - name: Get current version + id: current_version + run: | + VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Bump versions (local only) run: | cargo workspaces version ${{ inputs.version }} \ @@ -40,6 +46,10 @@ jobs: --no-git-push \ --yes + - name: Update workspace dependencies + run: | + sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + # Note: Dry run may show cascading dependency errors because packages # aren't actually uploaded. Check if the missing dependency has an # "aborting upload due to dry run" message earlier in the output - if so, diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 45ca03e6041..577400f60e0 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -32,6 +32,12 @@ jobs: exit 1 fi + - name: Get current version + id: current_version + run: | + VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Bump versions run: | cargo workspaces version ${{ inputs.version }} \ @@ -39,10 +45,14 @@ jobs: --no-git-tag \ --yes + - name: Update workspace dependencies + run: | + sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --from-git --no-git-commit + run: cargo workspaces publish --from-git --no-git-commit --allow-dirty # - name: Push version commit # run: | From 53a6ba9d700419c574fbb78353a39803388433ce Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Mon, 19 Jan 2026 16:45:49 +0000 Subject: [PATCH 05/40] Add no commit to publish for the moment --- .github/workflows/publish-crates-io.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 577400f60e0..86e2d5ff685 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -41,6 +41,7 @@ jobs: - name: Bump versions run: | cargo workspaces version ${{ inputs.version }} \ + --no-git-commit \ --no-git-push \ --no-git-tag \ --yes From 4462d6f90fadda1bd40db7ed4065ba2f671c1d1e Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 10:14:14 +0000 Subject: [PATCH 06/40] try switch to gh runner --- .github/workflows/publish-crates-io-dry-run.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 851d02b4437..4878068c635 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -10,7 +10,7 @@ on: jobs: publish-dry-run: - runs-on: arc-linux-latest + runs-on: arc-ubuntu-22.04 # arc-linux-latest steps: - name: Checkout repo uses: actions/checkout@v6 From eb1d952d8e903d65aa7ae8073da8826e9fce8948 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 10:22:49 +0000 Subject: [PATCH 07/40] switch runner back --- .github/workflows/publish-crates-io-dry-run.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 4878068c635..b167ff76cf0 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -10,7 +10,9 @@ on: jobs: publish-dry-run: - runs-on: arc-ubuntu-22.04 # arc-linux-latest + runs-on: arc-linux-latest + env: + RUSTUP_PERMIT_COPY_RENAME: 1 steps: - name: Checkout repo uses: actions/checkout@v6 From 49444c574e452b738fafe0724086b5958c57beeb Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 10:45:10 +0000 Subject: [PATCH 08/40] get rid of npx for the moment --- .github/workflows/publish-crates-io-dry-run.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index b167ff76cf0..a20bcfa1597 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -11,8 +11,8 @@ on: jobs: publish-dry-run: runs-on: arc-linux-latest - env: - RUSTUP_PERMIT_COPY_RENAME: 1 + # env: + # RUSTUP_PERMIT_COPY_RENAME: 1 steps: - name: Checkout repo uses: actions/checkout@v6 @@ -27,12 +27,12 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - - name: Validate version format - run: | - if ! npx semver "${{ inputs.version }}"; then - echo "Error: '${{ inputs.version }}' is not valid semver" - exit 1 - fi + # - name: Validate version format + # run: | + # if ! npx semver "${{ inputs.version }}"; then + # echo "Error: '${{ inputs.version }}' is not valid semver" + # exit 1 + # fi - name: Get current version id: current_version From a0bb2945349e52eb17e539f6eb5df6cce963d63e Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 10:47:58 +0000 Subject: [PATCH 09/40] tweak version command --- .github/workflows/publish-crates-io-dry-run.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index a20bcfa1597..200f5c66a56 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -43,7 +43,6 @@ jobs: - name: Bump versions (local only) run: | cargo workspaces version ${{ inputs.version }} \ - --no-git-commit \ --no-git-tag \ --no-git-push \ --yes From 3d3ef89bc08acad90c92137a2381412063e691be Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 12:00:55 +0000 Subject: [PATCH 10/40] fix version bump command --- .github/workflows/publish-crates-io-dry-run.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 200f5c66a56..eeac4b22fe6 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -42,7 +42,8 @@ jobs: - name: Bump versions (local only) run: | - cargo workspaces version ${{ inputs.version }} \ + cargo workspaces version custom ${{ inputs.version }} \ + --allow-branch ${{ github.ref_name }} \ --no-git-tag \ --no-git-push \ --yes From 6964d898f2baf879e608f91794aa13bc85247b3e Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 12:13:50 +0000 Subject: [PATCH 11/40] configure git bot --- .github/workflows/publish-crates-io-dry-run.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index eeac4b22fe6..483ca5b4af0 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -8,6 +8,10 @@ on: required: true type: string +env: + CI_BOT_AUTHOR: "Nym bot" + CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" + jobs: publish-dry-run: runs-on: arc-linux-latest @@ -17,6 +21,11 @@ jobs: - name: Checkout repo uses: actions/checkout@v6 + - name: Configure git identity + run: | + git config --global user.name "${{ env.CI_BOT_AUTHOR }}" + git config --global user.email "${{ env.CI_BOT_EMAIL }}" + - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: From 151514b3216dfdae47ef38cc0048ef5cf5e4e3f3 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 12:31:31 +0000 Subject: [PATCH 12/40] error check --- .../workflows/publish-crates-io-dry-run.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 483ca5b4af0..3a3108c65a7 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -61,11 +61,16 @@ jobs: run: | sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - # Note: Dry run may show cascading dependency errors because packages - # aren't actually uploaded. Check if the missing dependency has an - # "aborting upload due to dry run" message earlier in the output - if so, - # it would succeed in a real publish since cargo-workspaces publishes in - # dependency order. cargo-workspaces doesn't fail on err, so there isn't - # a good way to check this at the moment. + # Note: Dry run shows cascading dependency errors because packages aren't + # actually uploaded - these are expected and ignored. We check for real + # errors like packaging failures, missing metadata, or invalid Cargo.toml. - name: Publish (dry run) - run: cargo workspaces publish --from-git --dry-run --allow-dirty + run: | + output=$(cargo workspaces publish --from-git --dry-run --allow-dirty 2>&1) || true + echo "$output" + + # Check for real errors (not cascading dependency errors) + if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then + echo "::error::Real publishing errors detected" + exit 1 + fi From 0e844935f5b42f6575b20ab7fbc51ec0ee22b05d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 12:36:19 +0000 Subject: [PATCH 13/40] remove `--from-git` --- .github/workflows/publish-crates-io-dry-run.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 3a3108c65a7..8ad343906be 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -66,7 +66,7 @@ jobs: # errors like packaging failures, missing metadata, or invalid Cargo.toml. - name: Publish (dry run) run: | - output=$(cargo workspaces publish --from-git --dry-run --allow-dirty 2>&1) || true + output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true echo "$output" # Check for real errors (not cascading dependency errors) From 986e1949bd3789cd05b3699bcf9411204531abaa Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 12:50:24 +0000 Subject: [PATCH 14/40] make dryrun less opaque --- .../workflows/publish-crates-io-dry-run.yml | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 8ad343906be..555cd561e9a 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -64,13 +64,16 @@ jobs: # Note: Dry run shows cascading dependency errors because packages aren't # actually uploaded - these are expected and ignored. We check for real # errors like packaging failures, missing metadata, or invalid Cargo.toml. - - name: Publish (dry run) - run: | - output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true - echo "$output" + # - name: Publish (dry run) + # run: | + # output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true + # echo "$output" + + # # Check for real errors (not cascading dependency errors) + # if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then + # echo "::error::Real publishing errors detected" + # exit 1 + # fi - # Check for real errors (not cascading dependency errors) - if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then - echo "::error::Real publishing errors detected" - exit 1 - fi + - name: Publish (dry run with logging) + run: cargo workspaces publish --dry-run --allow-dirty From a32548fa0532432d6e67e0aebb72f8170f87e4ac Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 13:10:37 +0000 Subject: [PATCH 15/40] Reintroduce error check - keep logging dryrun in for debug (commented out) --- .../workflows/publish-crates-io-dry-run.yml | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 555cd561e9a..9602d7d1579 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -61,19 +61,20 @@ jobs: run: | sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - # Note: Dry run shows cascading dependency errors because packages aren't + # Dry run may show cascading dependency errors because packages aren't # actually uploaded - these are expected and ignored. We check for real # errors like packaging failures, missing metadata, or invalid Cargo.toml. - # - name: Publish (dry run) - # run: | - # output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true - # echo "$output" + - name: Publish (dry run) + run: | + output=$(cargo workspaces publish --dry-run --allow-dirty 2>&1) || true + echo "$output" - # # Check for real errors (not cascading dependency errors) - # if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then - # echo "::error::Real publishing errors detected" - # exit 1 - # fi + # Check for real errors (not cascading dependency errors) + if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then + echo "::error::Real publishing errors detected" + exit 1 + fi - - name: Publish (dry run with logging) - run: cargo workspaces publish --dry-run --allow-dirty + # This is left in so if we see hanging or something, we can debug + # - name: Publish (dry run with logging) + # run: cargo workspaces publish --dry-run --allow-dirty From 40b5b1c9df2239b069204c050ba8f06eed7ddf00 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 14:25:42 +0000 Subject: [PATCH 16/40] fix grep check --- .github/workflows/publish-crates-io-dry-run.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 9602d7d1579..977f533b6ee 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -70,10 +70,8 @@ jobs: echo "$output" # Check for real errors (not cascading dependency errors) - if echo "$output" | grep -E "error: failed to prepare|error: missing|error: cannot publish" | grep -v "dependency"; then - echo "::error::Real publishing errors detected" - exit 1 - fi + # Cascading errors mention "crates.io index", real errors mention "Cargo.toml" + echo "$output" | grep -i "Cargo.toml" && exit 1 || true # This is left in so if we see hanging or something, we can debug # - name: Publish (dry run with logging) From 3ae1817c64893c9adedb1b8b7cd654f3e2be382e Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 16:38:02 +0000 Subject: [PATCH 17/40] bring non-dry-run to parity --- .../workflows/publish-crates-io-dry-run.yml | 14 +++--- .github/workflows/publish-crates-io.yml | 43 +++++++++++-------- 2 files changed, 31 insertions(+), 26 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 977f533b6ee..15ac9676d51 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -49,6 +49,10 @@ jobs: VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Update workspace dependencies + run: | + sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + - name: Bump versions (local only) run: | cargo workspaces version custom ${{ inputs.version }} \ @@ -57,10 +61,6 @@ jobs: --no-git-push \ --yes - - name: Update workspace dependencies - run: | - sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - # Dry run may show cascading dependency errors because packages aren't # actually uploaded - these are expected and ignored. We check for real # errors like packaging failures, missing metadata, or invalid Cargo.toml. @@ -73,6 +73,6 @@ jobs: # Cascading errors mention "crates.io index", real errors mention "Cargo.toml" echo "$output" | grep -i "Cargo.toml" && exit 1 || true - # This is left in so if we see hanging or something, we can debug - # - name: Publish (dry run with logging) - # run: cargo workspaces publish --dry-run --allow-dirty + # Show the list of packages published + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 86e2d5ff685..517629b337b 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -8,13 +8,24 @@ on: required: true type: string +env: + CI_BOT_AUTHOR: "Nym bot" + CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" + jobs: publish: runs-on: arc-linux-latest + permissions: + contents: write steps: - name: Checkout repo uses: actions/checkout@v6 + - name: Configure git identity + run: | + git config --global user.name "${{ env.CI_BOT_AUTHOR }}" + git config --global user.email "${{ env.CI_BOT_EMAIL }}" + - name: Install rust toolchain uses: actions-rs/toolchain@v1 with: @@ -25,12 +36,12 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - - name: Validate version format - run: | - if ! npx semver "${{ inputs.version }}"; then - echo "Error: '${{ inputs.version }}' is not valid semver" - exit 1 - fi + # - name: Validate version format + # run: | + # if ! npx semver "${{ inputs.version }}"; then + # echo "Error: '${{ inputs.version }}' is not valid semver" + # exit 1 + # fi - name: Get current version id: current_version @@ -38,23 +49,17 @@ jobs: VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) echo "version=$VERSION" >> $GITHUB_OUTPUT - - name: Bump versions - run: | - cargo workspaces version ${{ inputs.version }} \ - --no-git-commit \ - --no-git-push \ - --no-git-tag \ - --yes - - name: Update workspace dependencies run: | sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + - name: Bump versions and push + run: | + cargo workspaces version custom ${{ inputs.version }} \ + --no-git-tag \ + --yes + - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --from-git --no-git-commit --allow-dirty - - # - name: Push version commit - # run: | - # git push origin HEAD + run: cargo workspaces publish --no-git-commit --allow-dirty --publish-interval 600 From b033900eec748afa2ecaee4724be90e5a0bb56d9 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 17:05:20 +0000 Subject: [PATCH 18/40] add node for npx semver check to action --- .github/workflows/publish-crates-io-dry-run.yml | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 15ac9676d51..4a58b794b98 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -36,12 +36,17 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - # - name: Validate version format - # run: | - # if ! npx semver "${{ inputs.version }}"; then - # echo "Error: '${{ inputs.version }}' is not valid semver" - # exit 1 - # fi + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi - name: Get current version id: current_version From 80e7cdfc50b2fd8c02e18ad7497d48b0917b86cf Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 17:14:24 +0000 Subject: [PATCH 19/40] updated sed command --- .github/workflows/publish-crates-io-dry-run.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index 4a58b794b98..afcf9734cd6 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -39,7 +39,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '20' + node-version: "20" - name: Validate version format run: | @@ -56,15 +56,13 @@ jobs: - name: Update workspace dependencies run: | - sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - name: Bump versions (local only) run: | cargo workspaces version custom ${{ inputs.version }} \ --allow-branch ${{ github.ref_name }} \ - --no-git-tag \ - --no-git-push \ - --yes + --no-git-commit \ # Dry run may show cascading dependency errors because packages aren't # actually uploaded - these are expected and ignored. We check for real From 4175de54afa8c82aed44a027b0414071cc79593b Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 17:48:59 +0000 Subject: [PATCH 20/40] revert erroneous version bump --- common/nym-kcp/Cargo.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/nym-kcp/Cargo.toml b/common/nym-kcp/Cargo.toml index 27b174b25b0..3f435e94e54 100644 --- a/common/nym-kcp/Cargo.toml +++ b/common/nym-kcp/Cargo.toml @@ -1,11 +1,12 @@ [package] name = "nym-kcp" -version = "1.20.2" +version = "0.1.0" description = "KCP protocol implementation for Nym" edition = { workspace = true } authors = { workspace = true } license = { workspace = true } repository = { workspace = true } +publish = false [lib] name = "nym_kcp" From 293456e11a37658572e6a05e22bd659ff526dfdb Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 17:49:25 +0000 Subject: [PATCH 21/40] added semver check to publish workflow --- .../workflows/publish-crates-io-dry-run.yml | 2 -- .github/workflows/publish-crates-io.yml | 29 ++++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/publish-crates-io-dry-run.yml index afcf9734cd6..f57efbe87ea 100644 --- a/.github/workflows/publish-crates-io-dry-run.yml +++ b/.github/workflows/publish-crates-io-dry-run.yml @@ -15,8 +15,6 @@ env: jobs: publish-dry-run: runs-on: arc-linux-latest - # env: - # RUSTUP_PERMIT_COPY_RENAME: 1 steps: - name: Checkout repo uses: actions/checkout@v6 diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 517629b337b..a53414cdee1 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -36,12 +36,17 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - # - name: Validate version format - # run: | - # if ! npx semver "${{ inputs.version }}"; then - # echo "Error: '${{ inputs.version }}' is not valid semver" - # exit 1 - # fi + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi - name: Get current version id: current_version @@ -51,7 +56,7 @@ jobs: - name: Update workspace dependencies run: | - sed -i 's/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - name: Bump versions and push run: | @@ -59,7 +64,15 @@ jobs: --no-git-tag \ --yes + # For the first publish, we have to run with this very long cooldown. That is due to the + # crates.io rate limiting. Once the initial publication is done, then this interval can + # be reduced to 60 seconds. + # See https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L228 for code comments about this. - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --no-git-commit --allow-dirty --publish-interval 600 + run: cargo workspaces publish --no-git-tag --allow-dirty --publish-interval 600 + + # Show the list of packages published + - name: Show package versions + run: cargo workspaces list --long From dd59779444fe39409111d062da19f2c2058779e7 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 21:45:45 +0000 Subject: [PATCH 22/40] allow from other branches --- .github/workflows/publish-crates-io.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index a53414cdee1..794d99613c1 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -61,6 +61,7 @@ jobs: - name: Bump versions and push run: | cargo workspaces version custom ${{ inputs.version }} \ + --allow-branch ${{ github.ref_name }} \ --no-git-tag \ --yes @@ -71,7 +72,7 @@ jobs: - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --no-git-tag --allow-dirty --publish-interval 600 + run: cargo workspaces publish --no-git-tag --publish-interval 600 # Show the list of packages published - name: Show package versions From bf6e8dec18f2f6ea3ff043752827ad85caa96a01 Mon Sep 17 00:00:00 2001 From: Nym bot Date: Tue, 20 Jan 2026 21:49:03 +0000 Subject: [PATCH 23/40] Release 1.20.2 nym-api-requests@1.20.2 nym-async-file-watcher@1.20.2 nym-authenticator-requests@1.20.2 nym-bandwidth-controller@1.20.2 nym-bin-common@1.20.2 nym-cache@1.20.2 nym-cli-commands@1.20.2 nym-client-core@1.20.2 nym-client-core-config-types@1.20.2 nym-client-core-gateways-storage@1.20.2 nym-client-core-surb-storage@1.20.2 nym-client-websocket-requests@1.20.2 nym-coconut-dkg-common@1.20.2 nym-common@1.20.2 nym-compact-ecash@1.20.2 nym-config@1.20.2 nym-contracts-common@1.20.2 nym-contracts-common-testing@1.20.2 nym-cpp-ffi@1.20.2 nym-credential-proxy-lib@1.20.2 nym-credential-proxy-requests@1.20.2 nym-credential-storage@1.20.2 nym-credential-utils@1.20.2 nym-credential-verification@1.20.2 nym-credentials@1.20.2 nym-credentials-interface@1.20.2 nym-crypto@1.20.2 nym-dkg@1.20.2 nym-ecash-contract-common@1.20.2 nym-ecash-signer-check@1.20.2 nym-ecash-signer-check-types@1.20.2 nym-ecash-time@1.20.2 nym-exit-policy@1.20.2 nym-ffi-shared@1.20.2 nym-gateway-client@1.20.2 nym-gateway-requests@1.20.2 nym-gateway-stats-storage@1.20.2 nym-gateway-storage@1.20.2 nym-go-ffi@1.20.2 nym-group-contract-common@1.20.2 nym-http-api-client@1.20.2 nym-http-api-client-macro@1.20.2 nym-http-api-common@1.20.2 nym-id@1.20.2 nym-inclusion-probability@1.20.2 nym-ip-packet-client@1.20.2 nym-ip-packet-requests@1.20.2 nym-metrics@1.20.2 nym-mixnet-client@1.20.2 nym-mixnet-contract-common@1.20.2 nym-mixnode-common@1.20.2 nym-multisig-contract-common@1.20.2 nym-network-defaults@1.20.2 nym-node-metrics@1.20.2 nym-node-requests@1.20.2 nym-node-tester-utils@1.20.2 nym-noise@1.20.2 nym-noise-keys@1.20.2 nym-nonexhaustive-delayqueue@1.20.2 nym-ordered-buffer@1.20.2 nym-outfox@1.20.2 nym-pemstore@1.20.2 nym-performance-contract-common@1.20.2 nym-pool-contract-common@1.20.2 nym-registration-common@1.20.2 nym-sdk@1.20.2 nym-serde-helpers@1.20.2 nym-service-provider-requests-common@1.20.2 nym-service-providers-common@1.20.2 nym-socks5-client-core@1.20.2 nym-socks5-proxy-helpers@1.20.2 nym-socks5-requests@1.20.2 nym-sphinx@1.20.2 nym-sphinx-acknowledgements@1.20.2 nym-sphinx-addressing@1.20.2 nym-sphinx-anonymous-replies@1.20.2 nym-sphinx-chunking@1.20.2 nym-sphinx-cover@1.20.2 nym-sphinx-forwarding@1.20.2 nym-sphinx-framing@1.20.2 nym-sphinx-params@1.20.2 nym-sphinx-routing@1.20.2 nym-sphinx-types@1.20.2 nym-sqlx-pool-guard@1.20.2 nym-statistics-common@1.20.2 nym-store-cipher@1.20.2 nym-task@1.20.2 nym-test-utils@1.20.2 nym-ticketbooks-merkle@1.20.2 nym-topology@1.20.2 nym-tun@1.20.2 nym-types@1.20.2 nym-upgrade-mode-check@1.20.2 nym-validator-client@1.20.2 nym-verloc@1.20.2 nym-vesting-contract-common@1.20.2 nym-wasm-client-core@1.20.2 nym-wasm-storage@1.20.2 nym-wasm-utils@1.20.2 nym-wireguard@1.20.2 nym-wireguard-private-metadata-client@1.20.2 nym-wireguard-private-metadata-server@1.20.2 nym-wireguard-private-metadata-shared@1.20.2 nym-wireguard-private-metadata-tests@1.20.2 nym-wireguard-types@1.20.2 nyxd-scraper-shared@1.20.2 Generated by cargo-workspaces --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 05dfc8547db..74a0ba358c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6771,7 +6771,7 @@ dependencies = [ [[package]] name = "nym-kcp" -version = "1.20.2" +version = "0.1.0" dependencies = [ "ansi_term", "bytes", From 30e9bed7d4c0cede23b2afffce1b0bb109201659 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 21:50:39 +0000 Subject: [PATCH 24/40] allow from other branches again --- .github/workflows/publish-crates-io.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 794d99613c1..3cfd831ac43 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -72,7 +72,10 @@ jobs: - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish --no-git-tag --publish-interval 600 + run: cargo workspaces publish + --allow-branch ${{ github.ref_name }} \ + --no-git-tag \ + --publish-interval 600 # Show the list of packages published - name: Show package versions From d12b129b38a203c3e98c0cacfce9bc91b41ab974 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 21:50:46 +0000 Subject: [PATCH 25/40] publishing guide --- crate-publishing.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/crate-publishing.md b/crate-publishing.md index 780194e8b73..b4ecfb58b87 100644 --- a/crate-publishing.md +++ b/crate-publishing.md @@ -9,14 +9,16 @@ This version is defined in the `[workspace.package]` section of the root monorep ## When Developing If you add a workspace dependency to the SDK when developing, make sure to add this to the workspace dependencies in the root monorepo `Cargo.toml`. -## Publishing +## Check local publication ``` # List crates to publish cargo workspaces list -# Dry run - check for compilation or other problems +# Dry run locally - check for compilation or other problems cargo workspaces publish --no-git-commit --dry-run - -# Publish -TODO ``` + +## CI +There are two workflows: +- `publish-crates-io-dry-run`: run this first! This is a remote dry-run on a runner. +- `publish-crates-io`: actually push to crates.io From fcf2b26151b44268296cdf7db22566ee235a4794 Mon Sep 17 00:00:00 2001 From: Nym bot Date: Tue, 20 Jan 2026 22:01:19 +0000 Subject: [PATCH 26/40] Release 1.20.3 nym-api-requests@1.20.3 nym-async-file-watcher@1.20.3 nym-authenticator-requests@1.20.3 nym-bandwidth-controller@1.20.3 nym-bin-common@1.20.3 nym-cache@1.20.3 nym-cli-commands@1.20.3 nym-client-core@1.20.3 nym-client-core-config-types@1.20.3 nym-client-core-gateways-storage@1.20.3 nym-client-core-surb-storage@1.20.3 nym-client-websocket-requests@1.20.3 nym-coconut-dkg-common@1.20.3 nym-common@1.20.3 nym-compact-ecash@1.20.3 nym-config@1.20.3 nym-contracts-common@1.20.3 nym-contracts-common-testing@1.20.3 nym-cpp-ffi@1.20.3 nym-credential-proxy-lib@1.20.3 nym-credential-proxy-requests@1.20.3 nym-credential-storage@1.20.3 nym-credential-utils@1.20.3 nym-credential-verification@1.20.3 nym-credentials@1.20.3 nym-credentials-interface@1.20.3 nym-crypto@1.20.3 nym-dkg@1.20.3 nym-ecash-contract-common@1.20.3 nym-ecash-signer-check@1.20.3 nym-ecash-signer-check-types@1.20.3 nym-ecash-time@1.20.3 nym-exit-policy@1.20.3 nym-ffi-shared@1.20.3 nym-gateway-client@1.20.3 nym-gateway-requests@1.20.3 nym-gateway-stats-storage@1.20.3 nym-gateway-storage@1.20.3 nym-go-ffi@1.20.3 nym-group-contract-common@1.20.3 nym-http-api-client@1.20.3 nym-http-api-client-macro@1.20.3 nym-http-api-common@1.20.3 nym-id@1.20.3 nym-inclusion-probability@1.20.3 nym-ip-packet-client@1.20.3 nym-ip-packet-requests@1.20.3 nym-metrics@1.20.3 nym-mixnet-client@1.20.3 nym-mixnet-contract-common@1.20.3 nym-mixnode-common@1.20.3 nym-multisig-contract-common@1.20.3 nym-network-defaults@1.20.3 nym-node-metrics@1.20.3 nym-node-requests@1.20.3 nym-node-tester-utils@1.20.3 nym-noise@1.20.3 nym-noise-keys@1.20.3 nym-nonexhaustive-delayqueue@1.20.3 nym-ordered-buffer@1.20.3 nym-outfox@1.20.3 nym-pemstore@1.20.3 nym-performance-contract-common@1.20.3 nym-pool-contract-common@1.20.3 nym-registration-common@1.20.3 nym-sdk@1.20.3 nym-serde-helpers@1.20.3 nym-service-provider-requests-common@1.20.3 nym-service-providers-common@1.20.3 nym-socks5-client-core@1.20.3 nym-socks5-proxy-helpers@1.20.3 nym-socks5-requests@1.20.3 nym-sphinx@1.20.3 nym-sphinx-acknowledgements@1.20.3 nym-sphinx-addressing@1.20.3 nym-sphinx-anonymous-replies@1.20.3 nym-sphinx-chunking@1.20.3 nym-sphinx-cover@1.20.3 nym-sphinx-forwarding@1.20.3 nym-sphinx-framing@1.20.3 nym-sphinx-params@1.20.3 nym-sphinx-routing@1.20.3 nym-sphinx-types@1.20.3 nym-sqlx-pool-guard@1.20.3 nym-statistics-common@1.20.3 nym-store-cipher@1.20.3 nym-task@1.20.3 nym-test-utils@1.20.3 nym-ticketbooks-merkle@1.20.3 nym-topology@1.20.3 nym-tun@1.20.3 nym-types@1.20.3 nym-upgrade-mode-check@1.20.3 nym-validator-client@1.20.3 nym-verloc@1.20.3 nym-vesting-contract-common@1.20.3 nym-wasm-client-core@1.20.3 nym-wasm-storage@1.20.3 nym-wasm-utils@1.20.3 nym-wireguard@1.20.3 nym-wireguard-private-metadata-client@1.20.3 nym-wireguard-private-metadata-server@1.20.3 nym-wireguard-private-metadata-shared@1.20.3 nym-wireguard-private-metadata-tests@1.20.3 nym-wireguard-types@1.20.3 nyxd-scraper-shared@1.20.3 Generated by cargo-workspaces --- Cargo.lock | 232 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 117 insertions(+), 117 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74a0ba358c4..171013b4d35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2440,7 +2440,7 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "easy-addr" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-std", "quote", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -5400,7 +5400,7 @@ dependencies = [ [[package]] name = "nym-api-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bs58", "cosmrs", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "nym-async-file-watcher" -version = "1.20.2" +version = "1.20.3" dependencies = [ "futures", "log", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "nym-authenticator-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "futures", @@ -5470,7 +5470,7 @@ dependencies = [ [[package]] name = "nym-authenticator-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "base64 0.22.1", "bincode", @@ -5494,7 +5494,7 @@ dependencies = [ [[package]] name = "nym-bandwidth-controller" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "log", @@ -5511,7 +5511,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "clap", "clap_complete", @@ -5550,7 +5550,7 @@ dependencies = [ [[package]] name = "nym-cache" -version = "1.20.2" +version = "1.20.3" dependencies = [ "tokio", ] @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "nym-cli-commands" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "base64 0.22.1", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "base64 0.22.1", @@ -5738,7 +5738,7 @@ dependencies = [ [[package]] name = "nym-client-core-config-types" -version = "1.20.2" +version = "1.20.3" dependencies = [ "humantime-serde", "nym-config", @@ -5753,7 +5753,7 @@ dependencies = [ [[package]] name = "nym-client-core-gateways-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "nym-client-core-surb-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -5818,7 +5818,7 @@ dependencies = [ [[package]] name = "nym-client-websocket-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-sphinx", "serde", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "nym-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "tracing", "tracing-test", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "nym-compact-ecash" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "bs58", @@ -5872,7 +5872,7 @@ dependencies = [ [[package]] name = "nym-config" -version = "1.20.2" +version = "1.20.3" dependencies = [ "dirs", "handlebars", @@ -5904,7 +5904,7 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "bs58", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "cosmwasm-std", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "nym-cpp-ffi" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "bs58", @@ -5998,7 +5998,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-lib" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "axum", @@ -6036,7 +6036,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "nym-credentials", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "nym-credential-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -6083,7 +6083,7 @@ dependencies = [ [[package]] name = "nym-credential-utils" -version = "1.20.2" +version = "1.20.3" dependencies = [ "log", "nym-bandwidth-controller", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "nym-credential-verification" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "bs58", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "nym-credentials" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "cosmrs", @@ -6153,7 +6153,7 @@ dependencies = [ [[package]] name = "nym-credentials-interface" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-bls12_381-fork", "nym-compact-ecash", @@ -6171,7 +6171,7 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.2" +version = "1.20.3" dependencies = [ "aead", "aes 0.8.4", @@ -6243,7 +6243,7 @@ dependencies = [ [[package]] name = "nym-dkg" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bitvec", "bs58", @@ -6265,7 +6265,7 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bs58", "cosmwasm-schema", @@ -6279,7 +6279,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check" -version = "1.20.2" +version = "1.20.3" dependencies = [ "futures", "nym-ecash-signer-check-types", @@ -6295,7 +6295,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check-types" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-coconut-dkg-common", "nym-crypto", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "nym-ecash-time" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-compact-ecash", "time", @@ -6318,7 +6318,7 @@ dependencies = [ [[package]] name = "nym-exit-policy" -version = "1.20.2" +version = "1.20.3" dependencies = [ "reqwest 0.12.28", "serde", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "nym-ffi-shared" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "bs58", @@ -6406,7 +6406,7 @@ dependencies = [ [[package]] name = "nym-gateway-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "futures", "getrandom 0.2.16", @@ -6497,7 +6497,7 @@ dependencies = [ [[package]] name = "nym-gateway-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "bs58", @@ -6529,7 +6529,7 @@ dependencies = [ [[package]] name = "nym-gateway-stats-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "nym-node-metrics", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "nym-gateway-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -6564,7 +6564,7 @@ dependencies = [ [[package]] name = "nym-go-ffi" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "lazy_static", @@ -6581,7 +6581,7 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -6592,7 +6592,7 @@ dependencies = [ [[package]] name = "nym-http-api-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "bincode", @@ -6624,7 +6624,7 @@ dependencies = [ [[package]] name = "nym-http-api-client-macro" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-http-api-client", "proc-macro-crate", @@ -6637,7 +6637,7 @@ dependencies = [ [[package]] name = "nym-http-api-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "axum", "axum-client-ip", @@ -6659,7 +6659,7 @@ dependencies = [ [[package]] name = "nym-id" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-credential-storage", "nym-credentials", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "nym-inclusion-probability" -version = "1.20.2" +version = "1.20.3" dependencies = [ "log", "rand 0.8.5", @@ -6694,7 +6694,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "bytes", @@ -6709,7 +6709,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "bytes", @@ -6727,7 +6727,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-router" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -6803,7 +6803,7 @@ dependencies = [ [[package]] name = "nym-ledger" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bip32", "k256", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "nym-metrics" -version = "1.20.2" +version = "1.20.3" dependencies = [ "dashmap", "lazy_static", @@ -6899,7 +6899,7 @@ dependencies = [ [[package]] name = "nym-mixnet-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "dashmap", "futures", @@ -6916,7 +6916,7 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bs58", "cosmwasm-schema", @@ -6939,7 +6939,7 @@ dependencies = [ [[package]] name = "nym-mixnode-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bytes", "futures", @@ -6966,7 +6966,7 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -6981,7 +6981,7 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cargo_metadata 0.19.2", "dotenvy", @@ -7166,7 +7166,7 @@ dependencies = [ [[package]] name = "nym-node-metrics" -version = "1.20.2" +version = "1.20.3" dependencies = [ "dashmap", "futures", @@ -7180,7 +7180,7 @@ dependencies = [ [[package]] name = "nym-node-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "celes", @@ -7300,7 +7300,7 @@ dependencies = [ [[package]] name = "nym-node-tester-utils" -version = "1.20.2" +version = "1.20.3" dependencies = [ "futures", "log", @@ -7340,7 +7340,7 @@ dependencies = [ [[package]] name = "nym-noise" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "arc-swap", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "nym-noise-keys" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-crypto", "schemars 0.8.22", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "nym-nonexhaustive-delayqueue" -version = "1.20.2" +version = "1.20.3" dependencies = [ "tokio", "tokio-stream", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "nym-ordered-buffer" -version = "1.20.2" +version = "1.20.3" dependencies = [ "log", "thiserror 2.0.17", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "nym-outfox" -version = "1.20.2" +version = "1.20.3" dependencies = [ "blake3", "chacha20", @@ -7426,7 +7426,7 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.2" +version = "1.20.3" dependencies = [ "pem", "tracing", @@ -7435,7 +7435,7 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7448,7 +7448,7 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7461,7 +7461,7 @@ dependencies = [ [[package]] name = "nym-registration-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bytes", "futures", @@ -7488,7 +7488,7 @@ dependencies = [ [[package]] name = "nym-registration-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "nym-authenticator-requests", @@ -7504,7 +7504,7 @@ dependencies = [ [[package]] name = "nym-sdk" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -7563,7 +7563,7 @@ dependencies = [ [[package]] name = "nym-serde-helpers" -version = "1.20.2" +version = "1.20.3" dependencies = [ "base64 0.22.1", "bs58", @@ -7574,7 +7574,7 @@ dependencies = [ [[package]] name = "nym-service-provider-requests-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "serde", @@ -7583,7 +7583,7 @@ dependencies = [ [[package]] name = "nym-service-providers-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -7653,7 +7653,7 @@ dependencies = [ [[package]] name = "nym-socks5-client-core" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "dirs", @@ -7685,7 +7685,7 @@ dependencies = [ [[package]] name = "nym-socks5-proxy-helpers" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bytes", "futures", @@ -7700,7 +7700,7 @@ dependencies = [ [[package]] name = "nym-socks5-requests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "log", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "nym-sphinx" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-crypto", "nym-metrics", @@ -7741,7 +7741,7 @@ dependencies = [ [[package]] name = "nym-sphinx-acknowledgements" -version = "1.20.2" +version = "1.20.3" dependencies = [ "generic-array 0.14.7", "nym-crypto", @@ -7759,7 +7759,7 @@ dependencies = [ [[package]] name = "nym-sphinx-addressing" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bincode", "nym-crypto", @@ -7772,7 +7772,7 @@ dependencies = [ [[package]] name = "nym-sphinx-anonymous-replies" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bs58", "nym-crypto", @@ -7790,7 +7790,7 @@ dependencies = [ [[package]] name = "nym-sphinx-chunking" -version = "1.20.2" +version = "1.20.3" dependencies = [ "dashmap", "log", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "nym-sphinx-cover" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-crypto", "nym-sphinx-acknowledgements", @@ -7825,7 +7825,7 @@ dependencies = [ [[package]] name = "nym-sphinx-forwarding" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-anonymous-replies", @@ -7836,7 +7836,7 @@ dependencies = [ [[package]] name = "nym-sphinx-framing" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bytes", "cfg-if", @@ -7853,7 +7853,7 @@ dependencies = [ [[package]] name = "nym-sphinx-params" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-crypto", "nym-sphinx-types", @@ -7863,7 +7863,7 @@ dependencies = [ [[package]] name = "nym-sphinx-routing" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-types", @@ -7872,7 +7872,7 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-outfox", "sphinx-packet", @@ -7881,7 +7881,7 @@ dependencies = [ [[package]] name = "nym-sqlx-pool-guard" -version = "1.20.2" +version = "1.20.3" dependencies = [ "proc_pidinfo", "sqlx", @@ -7924,7 +7924,7 @@ dependencies = [ [[package]] name = "nym-statistics-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "futures", "log", @@ -7949,7 +7949,7 @@ dependencies = [ [[package]] name = "nym-store-cipher" -version = "1.20.2" +version = "1.20.3" dependencies = [ "aes-gcm", "argon2", @@ -7964,7 +7964,7 @@ dependencies = [ [[package]] name = "nym-task" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "cfg-if", @@ -7982,7 +7982,7 @@ dependencies = [ [[package]] name = "nym-test-utils" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "futures", @@ -7994,7 +7994,7 @@ dependencies = [ [[package]] name = "nym-ticketbooks-merkle" -version = "1.20.2" +version = "1.20.3" dependencies = [ "nym-credentials-interface", "nym-serde-helpers", @@ -8011,7 +8011,7 @@ dependencies = [ [[package]] name = "nym-topology" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "nym-api-requests", @@ -8033,7 +8033,7 @@ dependencies = [ [[package]] name = "nym-tun" -version = "1.20.2" +version = "1.20.3" dependencies = [ "etherparse", "log", @@ -8045,7 +8045,7 @@ dependencies = [ [[package]] name = "nym-types" -version = "1.20.2" +version = "1.20.3" dependencies = [ "base64 0.22.1", "cosmrs", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "nym-upgrade-mode-check" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "jwt-simple", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "nym-validator-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -8188,7 +8188,7 @@ dependencies = [ [[package]] name = "nym-verloc" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bytes", "futures", @@ -8209,7 +8209,7 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.2" +version = "1.20.3" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "nym-vpn-api-lib-wasm" -version = "1.20.2" +version = "1.20.3" dependencies = [ "bs58", "getrandom 0.2.16", @@ -8268,7 +8268,7 @@ dependencies = [ [[package]] name = "nym-wasm-client-core" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "console_error_panic_hook", @@ -8302,7 +8302,7 @@ dependencies = [ [[package]] name = "nym-wasm-storage" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "getrandom 0.2.16", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "nym-wasm-utils" -version = "1.20.2" +version = "1.20.3" dependencies = [ "console_error_panic_hook", "futures", @@ -8334,7 +8334,7 @@ dependencies = [ [[package]] name = "nym-wireguard" -version = "1.20.2" +version = "1.20.3" dependencies = [ "base64 0.22.1", "defguard_wireguard_rs", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "nym-http-api-client", @@ -8371,7 +8371,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-server" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -8391,7 +8391,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-shared" -version = "1.20.2" +version = "1.20.3" dependencies = [ "axum", "bincode", @@ -8404,7 +8404,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-tests" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "axum", @@ -8428,7 +8428,7 @@ dependencies = [ [[package]] name = "nym-wireguard-types" -version = "1.20.2" +version = "1.20.3" dependencies = [ "base64 0.22.1", "nym-crypto", @@ -8440,7 +8440,7 @@ dependencies = [ [[package]] name = "nymvisor" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "bytes", @@ -8518,7 +8518,7 @@ dependencies = [ [[package]] name = "nyxd-scraper-shared" -version = "1.20.2" +version = "1.20.3" dependencies = [ "async-trait", "base64 0.22.1", @@ -13891,7 +13891,7 @@ dependencies = [ [[package]] name = "zknym-lib" -version = "1.20.2" +version = "1.20.3" dependencies = [ "anyhow", "async-trait", @@ -13964,7 +13964,7 @@ dependencies = [ [[package]] name = "zulip-client" -version = "1.20.2" +version = "1.20.3" dependencies = [ "itertools 0.14.0", "nym-bin-common", diff --git a/Cargo.toml b/Cargo.toml index 682927a6704..34b5e3b85b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -206,7 +206,7 @@ edition = "2024" license = "Apache-2.0" rust-version = "1.85" readme = "README.md" -version = "1.20.2" +version = "1.20.3" [workspace.dependencies] addr = "0.15.6" From 8126a0dd477377abbf1fe578bfc7b4930a48cb8d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 22:10:22 +0000 Subject: [PATCH 27/40] update publication runner --- .github/workflows/publish-crates-io.yml | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 3cfd831ac43..7191623027c 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -58,10 +58,11 @@ jobs: run: | sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - - name: Bump versions and push + - name: Bump versions run: | cargo workspaces version custom ${{ inputs.version }} \ --allow-branch ${{ github.ref_name }} \ + --no-git-commit \ --no-git-tag \ --yes @@ -69,13 +70,24 @@ jobs: # crates.io rate limiting. Once the initial publication is done, then this interval can # be reduced to 60 seconds. # See https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L228 for code comments about this. + # + # We need `--allow-dirty` as we have uncommitted version changes to files. + # The reason to not have `version` make a commit is to avoid having a situation in which publication fails, but a version bump commit has already been made to the branch. - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: cargo workspaces publish - --allow-branch ${{ github.ref_name }} \ - --no-git-tag \ - --publish-interval 600 + run: | + cargo workspaces publish \ + --allow-branch ${{ github.ref_name }} \ + --no-git-tag \ + --allow-dirty \ + --publish-interval 600 + + - name: Commit and push version bump + run: | + git add -A + git commit -m "crates release: bump version to ${{ inputs.version }}" + git push # Show the list of packages published - name: Show package versions From 82d26874135adc5de48469509bd5fa99f9af288e Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 22:29:54 +0000 Subject: [PATCH 28/40] remove --allow-branch ; no commit, doesn't need branch restrictions --- .github/workflows/publish-crates-io.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 7191623027c..15a9d10a378 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -61,7 +61,6 @@ jobs: - name: Bump versions run: | cargo workspaces version custom ${{ inputs.version }} \ - --allow-branch ${{ github.ref_name }} \ --no-git-commit \ --no-git-tag \ --yes From 5f04e39d31e8c7288e7a48aa456e1682229f119d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 22:36:04 +0000 Subject: [PATCH 29/40] remove another clashing flag --- .github/workflows/publish-crates-io.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 15a9d10a378..674b6dbfaa7 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -62,7 +62,6 @@ jobs: run: | cargo workspaces version custom ${{ inputs.version }} \ --no-git-commit \ - --no-git-tag \ --yes # For the first publish, we have to run with this very long cooldown. That is due to the From f5052b18d1cdf55f935ee73e2ce3ac875dfc8373 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 22:54:57 +0000 Subject: [PATCH 30/40] again --- .github/workflows/publish-crates-io.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 674b6dbfaa7..34a420d6eb7 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -76,8 +76,7 @@ jobs: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: | cargo workspaces publish \ - --allow-branch ${{ github.ref_name }} \ - --no-git-tag \ + --publish-as-is \ --allow-dirty \ --publish-interval 600 From 7f517d82dfe2334b6b4e4bd49952b662d1c310f5 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Tue, 20 Jan 2026 23:32:52 +0000 Subject: [PATCH 31/40] exclude build.rs from crate for crates.io --- common/network-defaults/Cargo.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/common/network-defaults/Cargo.toml b/common/network-defaults/Cargo.toml index 5c3a73e2793..a5d01e48fcc 100644 --- a/common/network-defaults/Cargo.toml +++ b/common/network-defaults/Cargo.toml @@ -6,6 +6,9 @@ edition.workspace = true authors.workspace = true license.workspace = true repository.workspace = true +# Exclude build.rs from published crate - it's only used for dev-time sync +# of env files and requires workspace context +exclude = ["build.rs"] [dependencies] dotenvy = { workspace = true, optional = true } From 796c2df895cdfbefa83bed91d58406922ccced0d Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 10:04:03 +0000 Subject: [PATCH 32/40] various in process scripts to pick up deployment where it left off --- .github/workflows/crates-publish-resume.yml | 58 ++++++ .github/workflows/crates-publish.yml | 41 ++++ .github/workflows/crates-version-bump.yml | 74 +++++++ .github/workflows/publish-crates-io.yml | 187 +++++++++--------- .../workflows/resume-publish-crates-io.yml | 41 ++++ add-crates-owners.sh | 13 ++ 6 files changed, 324 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/crates-publish-resume.yml create mode 100644 .github/workflows/crates-publish.yml create mode 100644 .github/workflows/crates-version-bump.yml create mode 100644 .github/workflows/resume-publish-crates-io.yml create mode 100755 add-crates-owners.sh diff --git a/.github/workflows/crates-publish-resume.yml b/.github/workflows/crates-publish-resume.yml new file mode 100644 index 00000000000..310faf4b3a3 --- /dev/null +++ b/.github/workflows/crates-publish-resume.yml @@ -0,0 +1,58 @@ +name: Resume crates.io publish + +on: + workflow_dispatch: + inputs: + resume_after: + description: "Last successfully published crate (will start from the next one)" + required: true + type: string + publish_interval: + description: "Seconds to wait between publishes" + required: false + default: "600" + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + # Get crates in publish order, skip up to and including resume_after + - name: Publish remaining crates + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + CRATES=$(cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2) + + if [ -z "$CRATES" ]; then + echo "Error: No crates found after '${{ inputs.resume_after }}'" + echo "Check the crate name matches exactly from 'cargo workspaces plan'" + exit 1 + fi + + echo "Will publish the following crates:" + echo "$CRATES" + echo "" + + echo "$CRATES" | while read crate; do + echo "Publishing $crate..." + cargo publish -p "$crate" --allow-dirty + echo "Waiting ${{ inputs.publish_interval }}s before next publish..." + sleep ${{ inputs.publish_interval }} + done + + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/crates-publish.yml b/.github/workflows/crates-publish.yml new file mode 100644 index 00000000000..53f55fb680c --- /dev/null +++ b/.github/workflows/crates-publish.yml @@ -0,0 +1,41 @@ +name: Publish crates to crates.io + +on: + workflow_dispatch: + inputs: + publish_interval: + description: "Seconds to wait between publishes (600 for first publish, 60 after)" + required: false + default: "600" + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + # We need `--allow-dirty` in case there are any untracked files. + # `--publish-as-is` skips version bumping since that's done separately. + - name: Publish + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + cargo workspaces publish \ + --publish-as-is \ + --allow-dirty \ + --publish-interval ${{ inputs.publish_interval }} + + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/crates-version-bump.yml b/.github/workflows/crates-version-bump.yml new file mode 100644 index 00000000000..790e2a062a7 --- /dev/null +++ b/.github/workflows/crates-version-bump.yml @@ -0,0 +1,74 @@ +name: Bump crate versions + +on: + workflow_dispatch: + inputs: + version: + description: "Version to set (e.g. 1.21.0)" + required: true + type: string + +env: + CI_BOT_AUTHOR: "Nym bot" + CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" + +jobs: + version-bump: + runs-on: arc-linux-latest + permissions: + contents: write + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Configure git identity + run: | + git config --global user.name "${{ env.CI_BOT_AUTHOR }}" + git config --global user.email "${{ env.CI_BOT_EMAIL }}" + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Validate version format + run: | + if ! npx semver "${{ inputs.version }}"; then + echo "Error: '${{ inputs.version }}' is not valid semver" + exit 1 + fi + + - name: Get current version + id: current_version + run: | + VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) + echo "version=$VERSION" >> $GITHUB_OUTPUT + + - name: Update workspace dependencies + run: | + sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml + + - name: Bump versions + run: | + cargo workspaces version custom ${{ inputs.version }} \ + --no-git-commit \ + --yes + + - name: Commit and push version bump + run: | + git add -A + git commit -m "crates release: bump version to ${{ inputs.version }}" + git push + + - name: Show package versions + run: cargo workspaces list --long diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 34a420d6eb7..26d47d8aa74 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -1,91 +1,98 @@ -name: Publish to crates.io +# DEPRECATED: This workflow has been split into: +# - crates-version-bump.yml (bump versions and commit) +# - crates-publish.yml (publish all crates) +# - crates-publish-resume.yml (resume from a specific crate) +# +# Keeping this file commented out for reference. -on: - workflow_dispatch: - inputs: - version: - description: "Version to publish (e.g. 1.21.0)" - required: true - type: string - -env: - CI_BOT_AUTHOR: "Nym bot" - CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" - -jobs: - publish: - runs-on: arc-linux-latest - permissions: - contents: write - steps: - - name: Checkout repo - uses: actions/checkout@v6 - - - name: Configure git identity - run: | - git config --global user.name "${{ env.CI_BOT_AUTHOR }}" - git config --global user.email "${{ env.CI_BOT_EMAIL }}" - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install cargo-workspaces - run: cargo install cargo-workspaces - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: "20" - - - name: Validate version format - run: | - if ! npx semver "${{ inputs.version }}"; then - echo "Error: '${{ inputs.version }}' is not valid semver" - exit 1 - fi - - - name: Get current version - id: current_version - run: | - VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) - echo "version=$VERSION" >> $GITHUB_OUTPUT - - - name: Update workspace dependencies - run: | - sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml - - - name: Bump versions - run: | - cargo workspaces version custom ${{ inputs.version }} \ - --no-git-commit \ - --yes - - # For the first publish, we have to run with this very long cooldown. That is due to the - # crates.io rate limiting. Once the initial publication is done, then this interval can - # be reduced to 60 seconds. - # See https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L228 for code comments about this. - # - # We need `--allow-dirty` as we have uncommitted version changes to files. - # The reason to not have `version` make a commit is to avoid having a situation in which publication fails, but a version bump commit has already been made to the branch. - - name: Publish - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: | - cargo workspaces publish \ - --publish-as-is \ - --allow-dirty \ - --publish-interval 600 - - - name: Commit and push version bump - run: | - git add -A - git commit -m "crates release: bump version to ${{ inputs.version }}" - git push - - # Show the list of packages published - - name: Show package versions - run: cargo workspaces list --long +# name: Publish to crates.io +# +# on: +# workflow_dispatch: +# inputs: +# version: +# description: "Version to publish (e.g. 1.21.0)" +# required: true +# type: string +# +# env: +# CI_BOT_AUTHOR: "Nym bot" +# CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" +# +# jobs: +# publish: +# runs-on: arc-linux-latest +# permissions: +# contents: write +# steps: +# - name: Checkout repo +# uses: actions/checkout@v6 +# +# - name: Configure git identity +# run: | +# git config --global user.name "${{ env.CI_BOT_AUTHOR }}" +# git config --global user.email "${{ env.CI_BOT_EMAIL }}" +# +# - name: Install rust toolchain +# uses: actions-rs/toolchain@v1 +# with: +# profile: minimal +# toolchain: stable +# override: true +# +# - name: Install cargo-workspaces +# run: cargo install cargo-workspaces +# +# - name: Setup Node.js +# uses: actions/setup-node@v4 +# with: +# node-version: "20" +# +# - name: Validate version format +# run: | +# if ! npx semver "${{ inputs.version }}"; then +# echo "Error: '${{ inputs.version }}' is not valid semver" +# exit 1 +# fi +# +# - name: Get current version +# id: current_version +# run: | +# VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) +# echo "version=$VERSION" >> $GITHUB_OUTPUT +# +# - name: Update workspace dependencies +# run: | +# sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml +# +# - name: Bump versions +# run: | +# cargo workspaces version custom ${{ inputs.version }} \ +# --no-git-commit \ +# --yes +# +# # For the first publish, we have to run with this very long cooldown. That is due to the +# # crates.io rate limiting. Once the initial publication is done, then this interval can +# # be reduced to 60 seconds. +# # See https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L228 for code comments about this. +# # +# # We need `--allow-dirty` as we have uncommitted version changes to files. +# # The reason to not have `version` make a commit is to avoid having a situation in which publication fails, but a version bump commit has already been made to the branch. +# - name: Publish +# env: +# CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} +# run: | +# cargo workspaces publish \ +# --publish-as-is \ +# --allow-dirty \ +# --publish-interval 600 +# +# - name: Commit and push version bump +# run: | +# git add -A +# git commit -m "crates release: bump version to ${{ inputs.version }}" +# git push +# +# # Show the list of packages published +# - name: Show package versions +# run: cargo workspaces list --long diff --git a/.github/workflows/resume-publish-crates-io.yml b/.github/workflows/resume-publish-crates-io.yml new file mode 100644 index 00000000000..ef322790d7c --- /dev/null +++ b/.github/workflows/resume-publish-crates-io.yml @@ -0,0 +1,41 @@ +name: Resume publish to crates.io + +on: + workflow_dispatch: + inputs: + resume_after: + description: "Last successfully published crate (will start from the next one)" + required: true + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + - name: Publish remaining crates + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + # Get crates in publish order, skip up to and including resume_after + cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2 | while read crate; do + echo "Publishing $crate..." + cargo publish -p "$crate" --allow-dirty + echo "Waiting 600s before next publish..." + sleep 600 + done + + - name: Show package versions + run: cargo workspaces list --long diff --git a/add-crates-owners.sh b/add-crates-owners.sh new file mode 100755 index 00000000000..b734bf5d77c --- /dev/null +++ b/add-crates-owners.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +TEAM="github:nymtech:core" + +echo "Adding $TEAM as owner to all workspace crates..." + +cargo workspaces list | while read crate; do + echo "Adding $TEAM as owner of $crate..." + cargo owner --add "$TEAM" "$crate" + sleep 2 +done + +echo "Done!" From 3141104b933a98c4b8c25929b1a01fa6a16bc7d2 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 10:12:55 +0000 Subject: [PATCH 33/40] rename workflows --- .../{crates-publish-resume.yml => ci-crates-publish-resume.yml} | 0 .github/workflows/{crates-publish.yml => ci-crates-publish.yml} | 0 .../{crates-version-bump.yml => ci-crates-version-bump.yml} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{crates-publish-resume.yml => ci-crates-publish-resume.yml} (100%) rename .github/workflows/{crates-publish.yml => ci-crates-publish.yml} (100%) rename .github/workflows/{crates-version-bump.yml => ci-crates-version-bump.yml} (100%) diff --git a/.github/workflows/crates-publish-resume.yml b/.github/workflows/ci-crates-publish-resume.yml similarity index 100% rename from .github/workflows/crates-publish-resume.yml rename to .github/workflows/ci-crates-publish-resume.yml diff --git a/.github/workflows/crates-publish.yml b/.github/workflows/ci-crates-publish.yml similarity index 100% rename from .github/workflows/crates-publish.yml rename to .github/workflows/ci-crates-publish.yml diff --git a/.github/workflows/crates-version-bump.yml b/.github/workflows/ci-crates-version-bump.yml similarity index 100% rename from .github/workflows/crates-version-bump.yml rename to .github/workflows/ci-crates-version-bump.yml From 0fe2a9f41e9715bbb4e9a8e5d764df8b7781f7d9 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 10:29:35 +0000 Subject: [PATCH 34/40] Version bump fix from borked publish run --- Cargo.lock | 232 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 198 ++++++++++++++++++++++----------------------- 2 files changed, 215 insertions(+), 215 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 171013b4d35..cfa037f87b1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2440,7 +2440,7 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "easy-addr" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-std", "quote", @@ -5317,7 +5317,7 @@ dependencies = [ [[package]] name = "nym-api" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5400,7 +5400,7 @@ dependencies = [ [[package]] name = "nym-api-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bs58", "cosmrs", @@ -5438,7 +5438,7 @@ dependencies = [ [[package]] name = "nym-async-file-watcher" -version = "1.20.3" +version = "1.20.4" dependencies = [ "futures", "log", @@ -5448,7 +5448,7 @@ dependencies = [ [[package]] name = "nym-authenticator-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "futures", @@ -5470,7 +5470,7 @@ dependencies = [ [[package]] name = "nym-authenticator-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "base64 0.22.1", "bincode", @@ -5494,7 +5494,7 @@ dependencies = [ [[package]] name = "nym-bandwidth-controller" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "log", @@ -5511,7 +5511,7 @@ dependencies = [ [[package]] name = "nym-bin-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "clap", "clap_complete", @@ -5550,7 +5550,7 @@ dependencies = [ [[package]] name = "nym-cache" -version = "1.20.3" +version = "1.20.4" dependencies = [ "tokio", ] @@ -5581,7 +5581,7 @@ dependencies = [ [[package]] name = "nym-cli-commands" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "base64 0.22.1", @@ -5677,7 +5677,7 @@ dependencies = [ [[package]] name = "nym-client-core" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "base64 0.22.1", @@ -5738,7 +5738,7 @@ dependencies = [ [[package]] name = "nym-client-core-config-types" -version = "1.20.3" +version = "1.20.4" dependencies = [ "humantime-serde", "nym-config", @@ -5753,7 +5753,7 @@ dependencies = [ [[package]] name = "nym-client-core-gateways-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5772,7 +5772,7 @@ dependencies = [ [[package]] name = "nym-client-core-surb-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -5818,7 +5818,7 @@ dependencies = [ [[package]] name = "nym-client-websocket-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-sphinx", "serde", @@ -5827,7 +5827,7 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -5840,7 +5840,7 @@ dependencies = [ [[package]] name = "nym-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "tracing", "tracing-test", @@ -5848,7 +5848,7 @@ dependencies = [ [[package]] name = "nym-compact-ecash" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "bs58", @@ -5872,7 +5872,7 @@ dependencies = [ [[package]] name = "nym-config" -version = "1.20.3" +version = "1.20.4" dependencies = [ "dirs", "handlebars", @@ -5904,7 +5904,7 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -5921,7 +5921,7 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "cosmwasm-std", @@ -5935,7 +5935,7 @@ dependencies = [ [[package]] name = "nym-cpp-ffi" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -5998,7 +5998,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-lib" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "axum", @@ -6036,7 +6036,7 @@ dependencies = [ [[package]] name = "nym-credential-proxy-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "nym-credentials", @@ -6060,7 +6060,7 @@ dependencies = [ [[package]] name = "nym-credential-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6083,7 +6083,7 @@ dependencies = [ [[package]] name = "nym-credential-utils" -version = "1.20.3" +version = "1.20.4" dependencies = [ "log", "nym-bandwidth-controller", @@ -6101,7 +6101,7 @@ dependencies = [ [[package]] name = "nym-credential-verification" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "bs58", @@ -6129,7 +6129,7 @@ dependencies = [ [[package]] name = "nym-credentials" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "cosmrs", @@ -6153,7 +6153,7 @@ dependencies = [ [[package]] name = "nym-credentials-interface" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-bls12_381-fork", "nym-compact-ecash", @@ -6171,7 +6171,7 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.3" +version = "1.20.4" dependencies = [ "aead", "aes 0.8.4", @@ -6243,7 +6243,7 @@ dependencies = [ [[package]] name = "nym-dkg" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bitvec", "bs58", @@ -6265,7 +6265,7 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bs58", "cosmwasm-schema", @@ -6279,7 +6279,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check" -version = "1.20.3" +version = "1.20.4" dependencies = [ "futures", "nym-ecash-signer-check-types", @@ -6295,7 +6295,7 @@ dependencies = [ [[package]] name = "nym-ecash-signer-check-types" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-coconut-dkg-common", "nym-crypto", @@ -6310,7 +6310,7 @@ dependencies = [ [[package]] name = "nym-ecash-time" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-compact-ecash", "time", @@ -6318,7 +6318,7 @@ dependencies = [ [[package]] name = "nym-exit-policy" -version = "1.20.3" +version = "1.20.4" dependencies = [ "reqwest 0.12.28", "serde", @@ -6330,7 +6330,7 @@ dependencies = [ [[package]] name = "nym-ffi-shared" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -6406,7 +6406,7 @@ dependencies = [ [[package]] name = "nym-gateway-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "futures", "getrandom 0.2.16", @@ -6497,7 +6497,7 @@ dependencies = [ [[package]] name = "nym-gateway-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "bs58", @@ -6529,7 +6529,7 @@ dependencies = [ [[package]] name = "nym-gateway-stats-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "nym-node-metrics", @@ -6545,7 +6545,7 @@ dependencies = [ [[package]] name = "nym-gateway-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6564,7 +6564,7 @@ dependencies = [ [[package]] name = "nym-go-ffi" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "lazy_static", @@ -6581,7 +6581,7 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -6592,7 +6592,7 @@ dependencies = [ [[package]] name = "nym-http-api-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "bincode", @@ -6624,7 +6624,7 @@ dependencies = [ [[package]] name = "nym-http-api-client-macro" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-http-api-client", "proc-macro-crate", @@ -6637,7 +6637,7 @@ dependencies = [ [[package]] name = "nym-http-api-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "axum", "axum-client-ip", @@ -6659,7 +6659,7 @@ dependencies = [ [[package]] name = "nym-id" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-credential-storage", "nym-credentials", @@ -6685,7 +6685,7 @@ dependencies = [ [[package]] name = "nym-inclusion-probability" -version = "1.20.3" +version = "1.20.4" dependencies = [ "log", "rand 0.8.5", @@ -6694,7 +6694,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "bytes", @@ -6709,7 +6709,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "bytes", @@ -6727,7 +6727,7 @@ dependencies = [ [[package]] name = "nym-ip-packet-router" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -6803,7 +6803,7 @@ dependencies = [ [[package]] name = "nym-ledger" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bip32", "k256", @@ -6889,7 +6889,7 @@ dependencies = [ [[package]] name = "nym-metrics" -version = "1.20.3" +version = "1.20.4" dependencies = [ "dashmap", "lazy_static", @@ -6899,7 +6899,7 @@ dependencies = [ [[package]] name = "nym-mixnet-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "dashmap", "futures", @@ -6916,7 +6916,7 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bs58", "cosmwasm-schema", @@ -6939,7 +6939,7 @@ dependencies = [ [[package]] name = "nym-mixnode-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -6966,7 +6966,7 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -6981,7 +6981,7 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cargo_metadata 0.19.2", "dotenvy", @@ -7166,7 +7166,7 @@ dependencies = [ [[package]] name = "nym-node-metrics" -version = "1.20.3" +version = "1.20.4" dependencies = [ "dashmap", "futures", @@ -7180,7 +7180,7 @@ dependencies = [ [[package]] name = "nym-node-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "celes", @@ -7300,7 +7300,7 @@ dependencies = [ [[package]] name = "nym-node-tester-utils" -version = "1.20.3" +version = "1.20.4" dependencies = [ "futures", "log", @@ -7340,7 +7340,7 @@ dependencies = [ [[package]] name = "nym-noise" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "arc-swap", @@ -7363,7 +7363,7 @@ dependencies = [ [[package]] name = "nym-noise-keys" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-crypto", "schemars 0.8.22", @@ -7373,7 +7373,7 @@ dependencies = [ [[package]] name = "nym-nonexhaustive-delayqueue" -version = "1.20.3" +version = "1.20.4" dependencies = [ "tokio", "tokio-stream", @@ -7399,7 +7399,7 @@ dependencies = [ [[package]] name = "nym-ordered-buffer" -version = "1.20.3" +version = "1.20.4" dependencies = [ "log", "thiserror 2.0.17", @@ -7407,7 +7407,7 @@ dependencies = [ [[package]] name = "nym-outfox" -version = "1.20.3" +version = "1.20.4" dependencies = [ "blake3", "chacha20", @@ -7426,7 +7426,7 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.3" +version = "1.20.4" dependencies = [ "pem", "tracing", @@ -7435,7 +7435,7 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7448,7 +7448,7 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -7461,7 +7461,7 @@ dependencies = [ [[package]] name = "nym-registration-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -7488,7 +7488,7 @@ dependencies = [ [[package]] name = "nym-registration-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "nym-authenticator-requests", @@ -7504,7 +7504,7 @@ dependencies = [ [[package]] name = "nym-sdk" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -7563,7 +7563,7 @@ dependencies = [ [[package]] name = "nym-serde-helpers" -version = "1.20.3" +version = "1.20.4" dependencies = [ "base64 0.22.1", "bs58", @@ -7574,7 +7574,7 @@ dependencies = [ [[package]] name = "nym-service-provider-requests-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "serde", @@ -7583,7 +7583,7 @@ dependencies = [ [[package]] name = "nym-service-providers-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -7653,7 +7653,7 @@ dependencies = [ [[package]] name = "nym-socks5-client-core" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "dirs", @@ -7685,7 +7685,7 @@ dependencies = [ [[package]] name = "nym-socks5-proxy-helpers" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -7700,7 +7700,7 @@ dependencies = [ [[package]] name = "nym-socks5-requests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "log", @@ -7715,7 +7715,7 @@ dependencies = [ [[package]] name = "nym-sphinx" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-metrics", @@ -7741,7 +7741,7 @@ dependencies = [ [[package]] name = "nym-sphinx-acknowledgements" -version = "1.20.3" +version = "1.20.4" dependencies = [ "generic-array 0.14.7", "nym-crypto", @@ -7759,7 +7759,7 @@ dependencies = [ [[package]] name = "nym-sphinx-addressing" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bincode", "nym-crypto", @@ -7772,7 +7772,7 @@ dependencies = [ [[package]] name = "nym-sphinx-anonymous-replies" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bs58", "nym-crypto", @@ -7790,7 +7790,7 @@ dependencies = [ [[package]] name = "nym-sphinx-chunking" -version = "1.20.3" +version = "1.20.4" dependencies = [ "dashmap", "log", @@ -7808,7 +7808,7 @@ dependencies = [ [[package]] name = "nym-sphinx-cover" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-sphinx-acknowledgements", @@ -7825,7 +7825,7 @@ dependencies = [ [[package]] name = "nym-sphinx-forwarding" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-anonymous-replies", @@ -7836,7 +7836,7 @@ dependencies = [ [[package]] name = "nym-sphinx-framing" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bytes", "cfg-if", @@ -7853,7 +7853,7 @@ dependencies = [ [[package]] name = "nym-sphinx-params" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-crypto", "nym-sphinx-types", @@ -7863,7 +7863,7 @@ dependencies = [ [[package]] name = "nym-sphinx-routing" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-sphinx-addressing", "nym-sphinx-types", @@ -7872,7 +7872,7 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-outfox", "sphinx-packet", @@ -7881,7 +7881,7 @@ dependencies = [ [[package]] name = "nym-sqlx-pool-guard" -version = "1.20.3" +version = "1.20.4" dependencies = [ "proc_pidinfo", "sqlx", @@ -7924,7 +7924,7 @@ dependencies = [ [[package]] name = "nym-statistics-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "futures", "log", @@ -7949,7 +7949,7 @@ dependencies = [ [[package]] name = "nym-store-cipher" -version = "1.20.3" +version = "1.20.4" dependencies = [ "aes-gcm", "argon2", @@ -7964,7 +7964,7 @@ dependencies = [ [[package]] name = "nym-task" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "cfg-if", @@ -7982,7 +7982,7 @@ dependencies = [ [[package]] name = "nym-test-utils" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "futures", @@ -7994,7 +7994,7 @@ dependencies = [ [[package]] name = "nym-ticketbooks-merkle" -version = "1.20.3" +version = "1.20.4" dependencies = [ "nym-credentials-interface", "nym-serde-helpers", @@ -8011,7 +8011,7 @@ dependencies = [ [[package]] name = "nym-topology" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "nym-api-requests", @@ -8033,7 +8033,7 @@ dependencies = [ [[package]] name = "nym-tun" -version = "1.20.3" +version = "1.20.4" dependencies = [ "etherparse", "log", @@ -8045,7 +8045,7 @@ dependencies = [ [[package]] name = "nym-types" -version = "1.20.3" +version = "1.20.4" dependencies = [ "base64 0.22.1", "cosmrs", @@ -8076,7 +8076,7 @@ dependencies = [ [[package]] name = "nym-upgrade-mode-check" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "jwt-simple", @@ -8094,7 +8094,7 @@ dependencies = [ [[package]] name = "nym-validator-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -8188,7 +8188,7 @@ dependencies = [ [[package]] name = "nym-verloc" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bytes", "futures", @@ -8209,7 +8209,7 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.3" +version = "1.20.4" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -8223,7 +8223,7 @@ dependencies = [ [[package]] name = "nym-vpn-api-lib-wasm" -version = "1.20.3" +version = "1.20.4" dependencies = [ "bs58", "getrandom 0.2.16", @@ -8268,7 +8268,7 @@ dependencies = [ [[package]] name = "nym-wasm-client-core" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "console_error_panic_hook", @@ -8302,7 +8302,7 @@ dependencies = [ [[package]] name = "nym-wasm-storage" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "getrandom 0.2.16", @@ -8318,7 +8318,7 @@ dependencies = [ [[package]] name = "nym-wasm-utils" -version = "1.20.3" +version = "1.20.4" dependencies = [ "console_error_panic_hook", "futures", @@ -8334,7 +8334,7 @@ dependencies = [ [[package]] name = "nym-wireguard" -version = "1.20.3" +version = "1.20.4" dependencies = [ "base64 0.22.1", "defguard_wireguard_rs", @@ -8361,7 +8361,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "nym-http-api-client", @@ -8371,7 +8371,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-server" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -8391,7 +8391,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-shared" -version = "1.20.3" +version = "1.20.4" dependencies = [ "axum", "bincode", @@ -8404,7 +8404,7 @@ dependencies = [ [[package]] name = "nym-wireguard-private-metadata-tests" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "axum", @@ -8428,7 +8428,7 @@ dependencies = [ [[package]] name = "nym-wireguard-types" -version = "1.20.3" +version = "1.20.4" dependencies = [ "base64 0.22.1", "nym-crypto", @@ -8440,7 +8440,7 @@ dependencies = [ [[package]] name = "nymvisor" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "bytes", @@ -8518,7 +8518,7 @@ dependencies = [ [[package]] name = "nyxd-scraper-shared" -version = "1.20.3" +version = "1.20.4" dependencies = [ "async-trait", "base64 0.22.1", @@ -13891,7 +13891,7 @@ dependencies = [ [[package]] name = "zknym-lib" -version = "1.20.3" +version = "1.20.4" dependencies = [ "anyhow", "async-trait", @@ -13964,7 +13964,7 @@ dependencies = [ [[package]] name = "zulip-client" -version = "1.20.3" +version = "1.20.4" dependencies = [ "itertools 0.14.0", "nym-bin-common", diff --git a/Cargo.toml b/Cargo.toml index 34b5e3b85b7..0964ee12cb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -206,7 +206,7 @@ edition = "2024" license = "Apache-2.0" rust-version = "1.85" readme = "README.md" -version = "1.20.3" +version = "1.20.4" [workspace.dependencies] addr = "0.15.6" @@ -391,105 +391,105 @@ zeroize = "1.7.0" prometheus = { version = "0.14.0" } # Workspace dep definitions required by crates.io publication - we need a workspace version since `cargo workspaces` doesn't work with path imports from crate manifests -nym-api-requests = { version = "1.20.1", path = "nym-api/nym-api-requests" } -nym-authenticator-requests = { version = "1.20.1", path = "common/authenticator-requests" } -nym-async-file-watcher = { version = "1.20.1", path = "common/async-file-watcher" } -nym-authenticator-client = { version = "1.20.1", path = "nym-authenticator-client" } -nym-bandwidth-controller = { version = "1.20.1", path = "common/bandwidth-controller" } -nym-bin-common = { version = "1.20.1", path = "common/bin-common" } -nym-cache = { version = "1.20.1", path = "common/nym-cache" } -nym-client-core = { version = "1.20.1", path = "common/client-core", default-features = false } -nym-client-core-config-types = { version = "1.20.1", path = "common/client-core/config-types" } -nym-client-core-gateways-storage = { version = "1.20.1", path = "common/client-core/gateways-storage" } -nym-client-core-surb-storage = { version = "1.20.1", path = "common/client-core/surb-storage" } -nym-client-websocket-requests = { version = "1.20.1", path = "clients/native/websocket-requests" } -nym-common = { version = "1.20.1", path = "common/nym-common" } -nym-compact-ecash = { version = "1.20.1", path = "common/nym_offline_compact_ecash" } -nym-config = { version = "1.20.1", path = "common/config" } -nym-contracts-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/contracts-common" } -nym-coconut-dkg-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/coconut-dkg" } -nym-credential-storage = { version = "1.20.1", path = "common/credential-storage" } -nym-credential-utils = { version = "1.20.1", path = "common/credential-utils" } -nym-credential-proxy-lib = { version = "1.20.1", path = "common/credential-proxy" } -nym-credentials = { version = "1.20.1", path = "common/credentials", default-features = false } -nym-credentials-interface = { version = "1.20.1", path = "common/credentials-interface" } -nym-credential-proxy-requests = { version = "1.20.1", path = "nym-credential-proxy/nym-credential-proxy-requests", default-features = false } -nym-credential-verification = { version = "1.20.1", path = "common/credential-verification" } -nym-crypto = { version = "1.20.1", path = "common/crypto", default-features = false } -nym-dkg = { version = "1.20.1", path = "common/dkg" } -nym-ecash-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/ecash-contract" } -nym-ecash-signer-check = { version = "1.20.1", path = "common/ecash-signer-check" } -nym-ecash-signer-check-types = { version = "1.20.1", path = "common/ecash-signer-check-types" } -nym-ecash-time = { version = "1.20.1", path = "common/ecash-time" } -nym-exit-policy = { version = "1.20.1", path = "common/exit-policy" } -nym-ffi-shared = { version = "1.20.1", path = "sdk/ffi/shared" } -nym-gateway-client = { version = "1.20.1", path = "common/client-libs/gateway-client", default-features = false } -nym-gateway-requests = { version = "1.20.1", path = "common/gateway-requests" } -nym-gateway-storage = { version = "1.20.1", path = "common/gateway-storage" } -nym-gateway-stats-storage = { version = "1.20.1", path = "common/gateway-stats-storage" } -nym-group-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/group-contract" } -nym-http-api-client = { version = "1.20.1", path = "common/http-api-client" } -nym-http-api-client-macro = { version = "1.20.1", path = "common/http-api-client-macro" } -nym-http-api-common = { version = "1.20.1", path = "common/http-api-common", default-features = false } -nym-id = { version = "1.20.1", path = "common/nym-id" } -nym-ip-packet-client = { version = "1.20.1", path = "nym-ip-packet-client" } -nym-ip-packet-requests = { version = "1.20.1", path = "common/ip-packet-requests" } -nym-metrics = { version = "1.20.1", path = "common/nym-metrics" } -nym-mixnet-client = { version = "1.20.1", path = "common/client-libs/mixnet-client" } -nym-mixnet-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/mixnet-contract" } -nym-multisig-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/multisig-contract" } -nym-network-defaults = { version = "1.20.1", path = "common/network-defaults" } -nym-node-tester-utils = { version = "1.20.1", path = "common/node-tester-utils" } -nym-noise = { version = "1.20.1", path = "common/nymnoise" } -nym-noise-keys = { version = "1.20.1", path = "common/nymnoise/keys" } -nym-nonexhaustive-delayqueue = { version = "1.20.1", path = "common/nonexhaustive-delayqueue" } -nym-node-requests = { version = "1.20.1", path = "nym-node/nym-node-requests", default-features = false } -nym-node-metrics = { version = "1.20.1", path = "nym-node/nym-node-metrics" } -nym-ordered-buffer = { version = "1.20.1", path = "common/socks5/ordered-buffer" } -nym-outfox = { version = "1.20.1", path = "nym-outfox" } -nym-registration-common = { version = "1.20.1", path = "common/registration" } -nym-pemstore = { version = "1.20.1", path = "common/pemstore" } -nym-performance-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/nym-performance-contract" } -nym-sdk = { version = "1.20.1", path = "sdk/rust/nym-sdk" } -nym-serde-helpers = { version = "1.20.1", path = "common/serde-helpers" } -nym-service-providers-common = { version = "1.20.1", path = "service-providers/common" } -nym-service-provider-requests-common = { version = "1.20.1", path = "common/service-provider-requests-common" } -nym-socks5-client-core = { version = "1.20.1", path = "common/socks5-client-core" } -nym-socks5-proxy-helpers = { version = "1.20.1", path = "common/socks5/proxy-helpers" } -nym-socks5-requests = { version = "1.20.1", path = "common/socks5/requests" } -nym-sphinx = { version = "1.20.1", path = "common/nymsphinx" } -nym-sphinx-acknowledgements = { version = "1.20.1", path = "common/nymsphinx/acknowledgements" } -nym-sphinx-addressing = { version = "1.20.1", path = "common/nymsphinx/addressing" } -nym-sphinx-anonymous-replies = { version = "1.20.1", path = "common/nymsphinx/anonymous-replies" } -nym-sphinx-chunking = { version = "1.20.1", path = "common/nymsphinx/chunking" } -nym-sphinx-cover = { version = "1.20.1", path = "common/nymsphinx/cover" } -nym-sphinx-forwarding = { version = "1.20.1", path = "common/nymsphinx/forwarding" } -nym-sphinx-framing = { version = "1.20.1", path = "common/nymsphinx/framing" } -nym-sphinx-params = { version = "1.20.1", path = "common/nymsphinx/params" } -nym-sphinx-routing = { version = "1.20.1", path = "common/nymsphinx/routing" } -nym-sphinx-types = { version = "1.20.1", path = "common/nymsphinx/types" } -nym-statistics-common = { version = "1.20.1", path = "common/statistics" } -nym-store-cipher = { version = "1.20.1", path = "common/store-cipher" } -nym-task = { version = "1.20.1", path = "common/task" } -nym-tun = { version = "1.20.1", path = "common/tun" } -nym-test-utils = { version = "1.20.1", path = "common/test-utils" } -nym-ticketbooks-merkle = { version = "1.20.1", path = "common/ticketbooks-merkle" } -nym-topology = { version = "1.20.1", path = "common/topology" } -nym-types = { version = "1.20.1", path = "common/types" } -nym-upgrade-mode-check = { version = "1.20.1", path = "common/upgrade-mode-check" } -nym-validator-client = { version = "1.20.1", path = "common/client-libs/validator-client", default-features = false } -nym-vesting-contract-common = { version = "1.20.1", path = "common/cosmwasm-smart-contracts/vesting-contract" } -nym-verloc = { version = "1.20.1", path = "common/verloc" } -nym-wireguard = { version = "1.20.1", path = "common/wireguard" } -nym-wireguard-types = { version = "1.20.1", path = "common/wireguard-types" } -nym-wireguard-private-metadata-shared = { version = "1.20.1", path = "common/wireguard-private-metadata/shared" } -nym-wireguard-private-metadata-client = { version = "1.20.1", path = "common/wireguard-private-metadata/client" } -nym-wireguard-private-metadata-server = { version = "1.20.1", path = "common/wireguard-private-metadata/server" } +nym-api-requests = { version = "1.20.4", path = "nym-api/nym-api-requests" } +nym-authenticator-requests = { version = "1.20.4", path = "common/authenticator-requests" } +nym-async-file-watcher = { version = "1.20.4", path = "common/async-file-watcher" } +nym-authenticator-client = { version = "1.20.4", path = "nym-authenticator-client" } +nym-bandwidth-controller = { version = "1.20.4", path = "common/bandwidth-controller" } +nym-bin-common = { version = "1.20.4", path = "common/bin-common" } +nym-cache = { version = "1.20.4", path = "common/nym-cache" } +nym-client-core = { version = "1.20.4", path = "common/client-core", default-features = false } +nym-client-core-config-types = { version = "1.20.4", path = "common/client-core/config-types" } +nym-client-core-gateways-storage = { version = "1.20.4", path = "common/client-core/gateways-storage" } +nym-client-core-surb-storage = { version = "1.20.4", path = "common/client-core/surb-storage" } +nym-client-websocket-requests = { version = "1.20.4", path = "clients/native/websocket-requests" } +nym-common = { version = "1.20.4", path = "common/nym-common" } +nym-compact-ecash = { version = "1.20.4", path = "common/nym_offline_compact_ecash" } +nym-config = { version = "1.20.4", path = "common/config" } +nym-contracts-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/contracts-common" } +nym-coconut-dkg-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/coconut-dkg" } +nym-credential-storage = { version = "1.20.4", path = "common/credential-storage" } +nym-credential-utils = { version = "1.20.4", path = "common/credential-utils" } +nym-credential-proxy-lib = { version = "1.20.4", path = "common/credential-proxy" } +nym-credentials = { version = "1.20.4", path = "common/credentials", default-features = false } +nym-credentials-interface = { version = "1.20.4", path = "common/credentials-interface" } +nym-credential-proxy-requests = { version = "1.20.4", path = "nym-credential-proxy/nym-credential-proxy-requests", default-features = false } +nym-credential-verification = { version = "1.20.4", path = "common/credential-verification" } +nym-crypto = { version = "1.20.4", path = "common/crypto", default-features = false } +nym-dkg = { version = "1.20.4", path = "common/dkg" } +nym-ecash-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/ecash-contract" } +nym-ecash-signer-check = { version = "1.20.4", path = "common/ecash-signer-check" } +nym-ecash-signer-check-types = { version = "1.20.4", path = "common/ecash-signer-check-types" } +nym-ecash-time = { version = "1.20.4", path = "common/ecash-time" } +nym-exit-policy = { version = "1.20.4", path = "common/exit-policy" } +nym-ffi-shared = { version = "1.20.4", path = "sdk/ffi/shared" } +nym-gateway-client = { version = "1.20.4", path = "common/client-libs/gateway-client", default-features = false } +nym-gateway-requests = { version = "1.20.4", path = "common/gateway-requests" } +nym-gateway-storage = { version = "1.20.4", path = "common/gateway-storage" } +nym-gateway-stats-storage = { version = "1.20.4", path = "common/gateway-stats-storage" } +nym-group-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/group-contract" } +nym-http-api-client = { version = "1.20.4", path = "common/http-api-client" } +nym-http-api-client-macro = { version = "1.20.4", path = "common/http-api-client-macro" } +nym-http-api-common = { version = "1.20.4", path = "common/http-api-common", default-features = false } +nym-id = { version = "1.20.4", path = "common/nym-id" } +nym-ip-packet-client = { version = "1.20.4", path = "nym-ip-packet-client" } +nym-ip-packet-requests = { version = "1.20.4", path = "common/ip-packet-requests" } +nym-metrics = { version = "1.20.4", path = "common/nym-metrics" } +nym-mixnet-client = { version = "1.20.4", path = "common/client-libs/mixnet-client" } +nym-mixnet-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/mixnet-contract" } +nym-multisig-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/multisig-contract" } +nym-network-defaults = { version = "1.20.4", path = "common/network-defaults" } +nym-node-tester-utils = { version = "1.20.4", path = "common/node-tester-utils" } +nym-noise = { version = "1.20.4", path = "common/nymnoise" } +nym-noise-keys = { version = "1.20.4", path = "common/nymnoise/keys" } +nym-nonexhaustive-delayqueue = { version = "1.20.4", path = "common/nonexhaustive-delayqueue" } +nym-node-requests = { version = "1.20.4", path = "nym-node/nym-node-requests", default-features = false } +nym-node-metrics = { version = "1.20.4", path = "nym-node/nym-node-metrics" } +nym-ordered-buffer = { version = "1.20.4", path = "common/socks5/ordered-buffer" } +nym-outfox = { version = "1.20.4", path = "nym-outfox" } +nym-registration-common = { version = "1.20.4", path = "common/registration" } +nym-pemstore = { version = "1.20.4", path = "common/pemstore" } +nym-performance-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/nym-performance-contract" } +nym-sdk = { version = "1.20.4", path = "sdk/rust/nym-sdk" } +nym-serde-helpers = { version = "1.20.4", path = "common/serde-helpers" } +nym-service-providers-common = { version = "1.20.4", path = "service-providers/common" } +nym-service-provider-requests-common = { version = "1.20.4", path = "common/service-provider-requests-common" } +nym-socks5-client-core = { version = "1.20.4", path = "common/socks5-client-core" } +nym-socks5-proxy-helpers = { version = "1.20.4", path = "common/socks5/proxy-helpers" } +nym-socks5-requests = { version = "1.20.4", path = "common/socks5/requests" } +nym-sphinx = { version = "1.20.4", path = "common/nymsphinx" } +nym-sphinx-acknowledgements = { version = "1.20.4", path = "common/nymsphinx/acknowledgements" } +nym-sphinx-addressing = { version = "1.20.4", path = "common/nymsphinx/addressing" } +nym-sphinx-anonymous-replies = { version = "1.20.4", path = "common/nymsphinx/anonymous-replies" } +nym-sphinx-chunking = { version = "1.20.4", path = "common/nymsphinx/chunking" } +nym-sphinx-cover = { version = "1.20.4", path = "common/nymsphinx/cover" } +nym-sphinx-forwarding = { version = "1.20.4", path = "common/nymsphinx/forwarding" } +nym-sphinx-framing = { version = "1.20.4", path = "common/nymsphinx/framing" } +nym-sphinx-params = { version = "1.20.4", path = "common/nymsphinx/params" } +nym-sphinx-routing = { version = "1.20.4", path = "common/nymsphinx/routing" } +nym-sphinx-types = { version = "1.20.4", path = "common/nymsphinx/types" } +nym-statistics-common = { version = "1.20.4", path = "common/statistics" } +nym-store-cipher = { version = "1.20.4", path = "common/store-cipher" } +nym-task = { version = "1.20.4", path = "common/task" } +nym-tun = { version = "1.20.4", path = "common/tun" } +nym-test-utils = { version = "1.20.4", path = "common/test-utils" } +nym-ticketbooks-merkle = { version = "1.20.4", path = "common/ticketbooks-merkle" } +nym-topology = { version = "1.20.4", path = "common/topology" } +nym-types = { version = "1.20.4", path = "common/types" } +nym-upgrade-mode-check = { version = "1.20.4", path = "common/upgrade-mode-check" } +nym-validator-client = { version = "1.20.4", path = "common/client-libs/validator-client", default-features = false } +nym-vesting-contract-common = { version = "1.20.4", path = "common/cosmwasm-smart-contracts/vesting-contract" } +nym-verloc = { version = "1.20.4", path = "common/verloc" } +nym-wireguard = { version = "1.20.4", path = "common/wireguard" } +nym-wireguard-types = { version = "1.20.4", path = "common/wireguard-types" } +nym-wireguard-private-metadata-shared = { version = "1.20.4", path = "common/wireguard-private-metadata/shared" } +nym-wireguard-private-metadata-client = { version = "1.20.4", path = "common/wireguard-private-metadata/client" } +nym-wireguard-private-metadata-server = { version = "1.20.4", path = "common/wireguard-private-metadata/server" } nym-sqlx-pool-guard = { version = "1.2.0", path = "nym-sqlx-pool-guard" } -nym-wasm-client-core = { version = "1.20.1", path = "common/wasm/client-core" } -nym-wasm-storage = { version = "1.20.1", path = "common/wasm/storage" } -nym-wasm-utils = { version = "1.20.1", path = "common/wasm/utils", default-features = false } -nyxd-scraper-shared = { version = "1.20.1", path = "common/nyxd-scraper-shared" } +nym-wasm-client-core = { version = "1.20.4", path = "common/wasm/client-core" } +nym-wasm-storage = { version = "1.20.4", path = "common/wasm/storage" } +nym-wasm-utils = { version = "1.20.4", path = "common/wasm/utils", default-features = false } +nyxd-scraper-shared = { version = "1.20.4", path = "common/nyxd-scraper-shared" } # coconut/DKG related # unfortunately until https://github.com/zkcrypto/nym-bls12_381-fork/issues/10 is resolved, we have to rely on the fork From bce949e89e75e4cf1dc9dfeef0b9268789534cac Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 11:04:47 +0000 Subject: [PATCH 35/40] temp push edit --- .github/workflows/publish-crates-io.yml | 65 +++++++++++++++++++++++-- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml index 26d47d8aa74..28a6f836aca 100644 --- a/.github/workflows/publish-crates-io.yml +++ b/.github/workflows/publish-crates-io.yml @@ -1,7 +1,66 @@ +name: Publish to crates.io +# temp edit of this file to get around having to merge PRs to get github to index a new CI job + +on: + workflow_dispatch: + inputs: + resume_after: + description: "Last successfully published crate (will start from the next one)" + required: true + type: string + publish_interval: + description: "Seconds to wait between publishes" + required: false + default: "600" + type: string + +jobs: + publish: + runs-on: arc-linux-latest + steps: + - name: Checkout repo + uses: actions/checkout@v6 + + - name: Install rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Install cargo-workspaces + run: cargo install cargo-workspaces + + # Get crates in publish order, skip up to and including resume_after + - name: Publish remaining crates + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + CRATES=$(cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2) + + if [ -z "$CRATES" ]; then + echo "Error: No crates found after '${{ inputs.resume_after }}'" + echo "Check the crate name matches exactly from 'cargo workspaces plan'" + exit 1 + fi + + echo "Will publish the following crates:" + echo "$CRATES" + echo "" + + echo "$CRATES" | while read crate; do + echo "Publishing $crate..." + cargo publish -p "$crate" --allow-dirty + echo "Waiting ${{ inputs.publish_interval }}s before next publish..." + sleep ${{ inputs.publish_interval }} + done + + - name: Show package versions + run: cargo workspaces list --long # DEPRECATED: This workflow has been split into: -# - crates-version-bump.yml (bump versions and commit) -# - crates-publish.yml (publish all crates) -# - crates-publish-resume.yml (resume from a specific crate) +# - ci-crates-version-bump.yml (bump versions and commit) +# - ci-crates-publish.yml (publish all crates) +# - ci-crates-publish-resume.yml (resume from a specific crate) # # Keeping this file commented out for reference. From 0b9bc243642f77025bcde05c012238e9190f81c8 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 13:03:47 +0000 Subject: [PATCH 36/40] add publishing doc + updated publish-resume ci --- .github/workflows/ci-crates-publish-resume.yml | 1 + crate-publishing.md | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-crates-publish-resume.yml b/.github/workflows/ci-crates-publish-resume.yml index 310faf4b3a3..e546be93552 100644 --- a/.github/workflows/ci-crates-publish-resume.yml +++ b/.github/workflows/ci-crates-publish-resume.yml @@ -1,4 +1,5 @@ name: Resume crates.io publish +# This is in case, for whatever reason, a publication run fails, and we need to restart halfway down the list, but don't want to have to wait. on: workflow_dispatch: diff --git a/crate-publishing.md b/crate-publishing.md index b4ecfb58b87..77da0305fd7 100644 --- a/crate-publishing.md +++ b/crate-publishing.md @@ -19,6 +19,7 @@ cargo workspaces publish --no-git-commit --dry-run ``` ## CI -There are two workflows: -- `publish-crates-io-dry-run`: run this first! This is a remote dry-run on a runner. -- `publish-crates-io`: actually push to crates.io +There are several workflows that should be run in the following order: +- `publish-crates-io-dry-run`: run this first! This is a remote dry-run on a runner. This greps for any errors that would be a problem when we're not dry-running. It doesn't catch all errors, as `dry-run` has a known issue where, assuming that 2 new crates are being uploaded, and crate B relies on crate A, if crate A isn't on crates.io (which it won't be, since you're dry-running publication), then since `cargo workspace publish` only checks for available versions on crates.io, it will error. We don't want the CI to fail in that case. +- `ci-crates-version-bump`: this bumps the versions of the workspace + dependencies to the passed version, and then commits the change. +- `ci-crates-publish`: this publishes the crates. So long as you're not uploading more than 5 new crates, pass `60` as the `--interval`. This is to get around [crates.io rate limiting](https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L24). From 3b7ff3fa98e3ed51db35604db580484ba4dd69af Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 19:14:58 +0000 Subject: [PATCH 37/40] move example from service-providers to sdk examples/ to remove circular dev dependency for cargo publication --- Cargo.lock | 4 ---- .../rust/nym-sdk}/examples/control_requests.rs | 0 service-providers/common/Cargo.toml | 7 ------- 3 files changed, 11 deletions(-) rename {service-providers/common => sdk/rust/nym-sdk}/examples/control_requests.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index cfa037f87b1..10195c74564 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7585,17 +7585,13 @@ dependencies = [ name = "nym-service-providers-common" version = "1.20.4" dependencies = [ - "anyhow", "async-trait", "log", "nym-bin-common", - "nym-sdk", - "nym-socks5-requests", "nym-sphinx-anonymous-replies", "serde", "serde_json", "thiserror 2.0.17", - "tokio", ] [[package]] diff --git a/service-providers/common/examples/control_requests.rs b/sdk/rust/nym-sdk/examples/control_requests.rs similarity index 100% rename from service-providers/common/examples/control_requests.rs rename to sdk/rust/nym-sdk/examples/control_requests.rs diff --git a/service-providers/common/Cargo.toml b/service-providers/common/Cargo.toml index ad8b2b7574b..93661af48fa 100644 --- a/service-providers/common/Cargo.toml +++ b/service-providers/common/Cargo.toml @@ -20,10 +20,3 @@ thiserror = { workspace = true } serde = { workspace = true, features = ["derive"]} serde_json = { workspace = true } -[dev-dependencies] -# for the control requests example -anyhow = { workspace = true } -tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } - -nym-sdk = { workspace = true } -nym-socks5-requests = { workspace = true } From dd4e60f9e1709fb62292c0f3214ec5d9c45deec2 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 21 Jan 2026 20:41:20 +0000 Subject: [PATCH 38/40] remove wildcard version import --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 0964ee12cb3..a0371959058 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -381,7 +381,7 @@ url = "2.5" utoipa = "5.2" utoipa-swagger-ui = "8.1" utoipauto = "0.2" -uuid = "*" +uuid = "1.19.0" vergen = { version = "=8.3.1", default-features = false } vergen-gitcl = { version = "1.0.8", default-features = false } walkdir = "2" From 46c738dbdc216d0f8f9a02093e3aa673b6203332 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Thu, 22 Jan 2026 10:35:45 +0000 Subject: [PATCH 39/40] Workflows and documentation for publication --- ...-run.yml => ci-crates-publish-dry-run.yml} | 0 .../workflows/ci-crates-publish-resume.yml | 2 +- .github/workflows/ci-crates-publish.yml | 51 +++++- .github/workflows/publish-crates-io.yml | 157 ------------------ add-crates-owners.sh | 13 -- crate-publishing.md | 15 +- scripts/add-crates-owners.sh | 21 +++ 7 files changed, 82 insertions(+), 177 deletions(-) rename .github/workflows/{publish-crates-io-dry-run.yml => ci-crates-publish-dry-run.yml} (100%) delete mode 100644 .github/workflows/publish-crates-io.yml delete mode 100755 add-crates-owners.sh create mode 100755 scripts/add-crates-owners.sh diff --git a/.github/workflows/publish-crates-io-dry-run.yml b/.github/workflows/ci-crates-publish-dry-run.yml similarity index 100% rename from .github/workflows/publish-crates-io-dry-run.yml rename to .github/workflows/ci-crates-publish-dry-run.yml diff --git a/.github/workflows/ci-crates-publish-resume.yml b/.github/workflows/ci-crates-publish-resume.yml index e546be93552..77f448a2b81 100644 --- a/.github/workflows/ci-crates-publish-resume.yml +++ b/.github/workflows/ci-crates-publish-resume.yml @@ -1,5 +1,5 @@ +# This is in case, for whatever reason, a publication run fails, and we need to restart halfway down the list, of unbumped/unpublished crates. name: Resume crates.io publish -# This is in case, for whatever reason, a publication run fails, and we need to restart halfway down the list, but don't want to have to wait. on: workflow_dispatch: diff --git a/.github/workflows/ci-crates-publish.yml b/.github/workflows/ci-crates-publish.yml index 53f55fb680c..3c7250d241c 100644 --- a/.github/workflows/ci-crates-publish.yml +++ b/.github/workflows/ci-crates-publish.yml @@ -8,6 +8,11 @@ on: required: false default: "600" type: string + backup_author: + description: "Second team member added as owner of the crate" + required: false + default: "jstuczyn" + type: string jobs: publish: @@ -26,16 +31,56 @@ jobs: - name: Install cargo-workspaces run: cargo install cargo-workspaces - # We need `--allow-dirty` in case there are any untracked files. - # `--publish-as-is` skips version bumping since that's done separately. + # `--publish-as-is` skips version bumping since that's done in a separate CI job. - name: Publish env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} run: | cargo workspaces publish \ --publish-as-is \ - --allow-dirty \ --publish-interval ${{ inputs.publish_interval }} - name: Show package versions run: cargo workspaces list --long + + - name: Add team as crate owners + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + TEAM="github:nymtech:core" + echo "Checking and adding $TEAM as owner to workspace crates..." + + cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM"; then + echo " $TEAM already owns $crate, skipping" + else + echo " Adding $TEAM as owner of $crate..." + cargo owner --add "$TEAM" "$crate" + sleep 2 + fi + done + + echo "Done!" + + - name: Add secondary member as crate owner + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + run: | + TEAM_MEMBER="${{ inputs.backup_author }}" + echo "Checking and adding $TEAM_MEMBER as owner to workspace crates..." + + cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM_MEMBER"; then + echo " $TEAM_MEMBER already owns $crate, skipping" + else + echo " Adding $TEAM_MEMBER as owner of $crate..." + cargo owner --add "$TEAM_MEMBER" "$crate" + sleep 2 + fi + done + + echo "Done!" diff --git a/.github/workflows/publish-crates-io.yml b/.github/workflows/publish-crates-io.yml deleted file mode 100644 index 28a6f836aca..00000000000 --- a/.github/workflows/publish-crates-io.yml +++ /dev/null @@ -1,157 +0,0 @@ -name: Publish to crates.io -# temp edit of this file to get around having to merge PRs to get github to index a new CI job - -on: - workflow_dispatch: - inputs: - resume_after: - description: "Last successfully published crate (will start from the next one)" - required: true - type: string - publish_interval: - description: "Seconds to wait between publishes" - required: false - default: "600" - type: string - -jobs: - publish: - runs-on: arc-linux-latest - steps: - - name: Checkout repo - uses: actions/checkout@v6 - - - name: Install rust toolchain - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - - name: Install cargo-workspaces - run: cargo install cargo-workspaces - - # Get crates in publish order, skip up to and including resume_after - - name: Publish remaining crates - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - run: | - CRATES=$(cargo workspaces plan 2>/dev/null | sed -n '/^${{ inputs.resume_after }}$/,$p' | tail -n +2) - - if [ -z "$CRATES" ]; then - echo "Error: No crates found after '${{ inputs.resume_after }}'" - echo "Check the crate name matches exactly from 'cargo workspaces plan'" - exit 1 - fi - - echo "Will publish the following crates:" - echo "$CRATES" - echo "" - - echo "$CRATES" | while read crate; do - echo "Publishing $crate..." - cargo publish -p "$crate" --allow-dirty - echo "Waiting ${{ inputs.publish_interval }}s before next publish..." - sleep ${{ inputs.publish_interval }} - done - - - name: Show package versions - run: cargo workspaces list --long -# DEPRECATED: This workflow has been split into: -# - ci-crates-version-bump.yml (bump versions and commit) -# - ci-crates-publish.yml (publish all crates) -# - ci-crates-publish-resume.yml (resume from a specific crate) -# -# Keeping this file commented out for reference. - -# name: Publish to crates.io -# -# on: -# workflow_dispatch: -# inputs: -# version: -# description: "Version to publish (e.g. 1.21.0)" -# required: true -# type: string -# -# env: -# CI_BOT_AUTHOR: "Nym bot" -# CI_BOT_EMAIL: "nym-bot@users.noreply.github.com" -# -# jobs: -# publish: -# runs-on: arc-linux-latest -# permissions: -# contents: write -# steps: -# - name: Checkout repo -# uses: actions/checkout@v6 -# -# - name: Configure git identity -# run: | -# git config --global user.name "${{ env.CI_BOT_AUTHOR }}" -# git config --global user.email "${{ env.CI_BOT_EMAIL }}" -# -# - name: Install rust toolchain -# uses: actions-rs/toolchain@v1 -# with: -# profile: minimal -# toolchain: stable -# override: true -# -# - name: Install cargo-workspaces -# run: cargo install cargo-workspaces -# -# - name: Setup Node.js -# uses: actions/setup-node@v4 -# with: -# node-version: "20" -# -# - name: Validate version format -# run: | -# if ! npx semver "${{ inputs.version }}"; then -# echo "Error: '${{ inputs.version }}' is not valid semver" -# exit 1 -# fi -# -# - name: Get current version -# id: current_version -# run: | -# VERSION=$(grep -oP '^\s*version\s*=\s*"\K[0-9]+\.[0-9]+\.[0-9]+' Cargo.toml | head -1) -# echo "version=$VERSION" >> $GITHUB_OUTPUT -# -# - name: Update workspace dependencies -# run: | -# sed -i '/path = /s/version = "${{ steps.current_version.outputs.version }}"/version = "${{ inputs.version }}"/g' Cargo.toml -# -# - name: Bump versions -# run: | -# cargo workspaces version custom ${{ inputs.version }} \ -# --no-git-commit \ -# --yes -# -# # For the first publish, we have to run with this very long cooldown. That is due to the -# # crates.io rate limiting. Once the initial publication is done, then this interval can -# # be reduced to 60 seconds. -# # See https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L228 for code comments about this. -# # -# # We need `--allow-dirty` as we have uncommitted version changes to files. -# # The reason to not have `version` make a commit is to avoid having a situation in which publication fails, but a version bump commit has already been made to the branch. -# - name: Publish -# env: -# CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} -# run: | -# cargo workspaces publish \ -# --publish-as-is \ -# --allow-dirty \ -# --publish-interval 600 -# -# - name: Commit and push version bump -# run: | -# git add -A -# git commit -m "crates release: bump version to ${{ inputs.version }}" -# git push -# -# # Show the list of packages published -# - name: Show package versions -# run: cargo workspaces list --long diff --git a/add-crates-owners.sh b/add-crates-owners.sh deleted file mode 100755 index b734bf5d77c..00000000000 --- a/add-crates-owners.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -TEAM="github:nymtech:core" - -echo "Adding $TEAM as owner to all workspace crates..." - -cargo workspaces list | while read crate; do - echo "Adding $TEAM as owner of $crate..." - cargo owner --add "$TEAM" "$crate" - sleep 2 -done - -echo "Done!" diff --git a/crate-publishing.md b/crate-publishing.md index 77da0305fd7..86dc0988d23 100644 --- a/crate-publishing.md +++ b/crate-publishing.md @@ -20,6 +20,15 @@ cargo workspaces publish --no-git-commit --dry-run ## CI There are several workflows that should be run in the following order: -- `publish-crates-io-dry-run`: run this first! This is a remote dry-run on a runner. This greps for any errors that would be a problem when we're not dry-running. It doesn't catch all errors, as `dry-run` has a known issue where, assuming that 2 new crates are being uploaded, and crate B relies on crate A, if crate A isn't on crates.io (which it won't be, since you're dry-running publication), then since `cargo workspace publish` only checks for available versions on crates.io, it will error. We don't want the CI to fail in that case. -- `ci-crates-version-bump`: this bumps the versions of the workspace + dependencies to the passed version, and then commits the change. -- `ci-crates-publish`: this publishes the crates. So long as you're not uploading more than 5 new crates, pass `60` as the `--interval`. This is to get around [crates.io rate limiting](https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L24). +- `ci-crates-publish-dry-run`: **run this first!** This is a remote dry-run on a runner. This greps for any errors that would be a problem when we're not dry-running. It doesn't catch all errors, as `dry-run` has a known issue where, assuming that 2 new crates are being uploaded, and crate B relies on crate A, if crate A isn't on crates.io (which it won't be, since you're dry-running publication), then since `cargo workspaces publish` only checks for available versions on crates.io, it will error. We don't want the CI to fail in that case. +- `ci-crates-version-bump`: this bumps the versions of the workspace + dependencies to the passed version, and then commits the change. This is its own CI job so that we don't get into sticky situations whereby the version bump + commit happens, but the publication step fails. +- `ci-crates-publish`: this publishes the crates. So long as you're not uploading more than 5 new crates, pass `60` as the `publish_interval`. This is to get around [crates.io rate limiting](https://github.com/rust-lang/crates.io/blob/ad7e58e1afd65b9137e58a7bca3e1fb7f5546682/src/rate_limiter.rs#L24). Pass the Github handle of whoever should be the backup author of the crate for security redundency (see the section below) as the second arg. + +> There is also `ci-crates-publish-resume` which is there in case a publication run fails and needs to be restarted part way through the list of unbumped/unpublished crates. Pass the previously bumped/published crate in the list output of `cargo workspaces list` + +## Crates.io Authors +Since Github teams have [limited ownership / mod rights](https://doc.rust-lang.org/cargo/reference/publishing.html#cargo-owner) of crates, and we cannot create a `CARGO_REGISTRY_TOKEN` on behalf of the Nym Github org. As such, we are currently using personal cargo tokens generated by team members (currently Max), and adding the Nym Github org as an owner in the CI job. + +However, since the Github org cannot add or modify owners, are also adding a second user author as a redundency, on the offchance that Max loses access to his Crates.io / Github account, gets struck by lightning, etc. This is the author passed as the second argument to the `ci-crates-publish` CI, and if none is passed, defaults to [https://github.com/jstuczyn](https://github.com/jstuczyn) since he is the Github org owner. + +Authors can also be changed by running `scripts/add-crates-owners.sh`. diff --git a/scripts/add-crates-owners.sh b/scripts/add-crates-owners.sh new file mode 100755 index 00000000000..813d2c96404 --- /dev/null +++ b/scripts/add-crates-owners.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# This is a local version of a script to add the nym github org as owners of a crate, aside from whoever's CI token is being used. +# If you want to add another team member as backup owner, comment out line 5 and use their github handle and they will be invited to be an owner on crates.io, e.g.: +# TEAM="jstuczyn" +TEAM="github:nymtech:core" + +echo "Checking and adding $TEAM as owner to workspace crates..." + +cargo workspaces list | while read crate; do + echo "Checking $crate..." + + if cargo owner --list "$crate" 2>/dev/null | grep -q "$TEAM"; then + echo " $TEAM already owns $crate, skipping" + else + echo " Adding $TEAM as owner of $crate..." + cargo owner --add "$TEAM" "$crate" + sleep 2 + fi +done + +echo "Done!" From 3a17e2f8b96013772e7dfc4402f73780c7927bf3 Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Thu, 22 Jan 2026 21:24:20 +0000 Subject: [PATCH 40/40] add contracts/ patch + imports --- contracts/Cargo.lock | 58 ++++++++++++++++++++++++++++++++------------ contracts/Cargo.toml | 45 +++++++++++++++------------------- 2 files changed, 63 insertions(+), 40 deletions(-) diff --git a/contracts/Cargo.lock b/contracts/Cargo.lock index 92d73ca89e6..f7f8f0ccfeb 100644 --- a/contracts/Cargo.lock +++ b/contracts/Cargo.lock @@ -825,7 +825,7 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "easy-addr" -version = "1.20.1" +version = "1.20.4" dependencies = [ "cosmwasm-std", "quote", @@ -1248,7 +1248,9 @@ dependencies = [ [[package]] name = "nym-coconut-dkg-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a95dc43ef8954a4f79846e3224434cf389d4a9c14b77f526dae3cfd2221c6141" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1261,7 +1263,9 @@ dependencies = [ [[package]] name = "nym-contracts-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47bb3e8427c193cd500c802274b11879086863c3643525b6ece3e9ab1c77bddc" dependencies = [ "bs58", "cosmwasm-schema", @@ -1275,7 +1279,9 @@ dependencies = [ [[package]] name = "nym-contracts-common-testing" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3628aac6715e844f3ab20e3b8ae8c4684f144ccb78e205f002c1c3ae375e956" dependencies = [ "anyhow", "cosmwasm-std", @@ -1289,7 +1295,9 @@ dependencies = [ [[package]] name = "nym-crypto" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b710addc28c9950dd961e7dd3837ef3b479492d2b21b5f2437eb7d2899403027" dependencies = [ "base64 0.22.1", "bs58", @@ -1335,7 +1343,9 @@ dependencies = [ [[package]] name = "nym-ecash-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022e85291bf51877fbbf4688bc3762c605fdaee3b98c6407414f7c358bc5610" dependencies = [ "bs58", "cosmwasm-schema", @@ -1349,7 +1359,9 @@ dependencies = [ [[package]] name = "nym-group-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb13102740426a4a2b683f54bbd6614fe9ecd745f5117bcf197c49c300b15edf" dependencies = [ "cosmwasm-schema", "cw-controllers", @@ -1384,7 +1396,9 @@ dependencies = [ [[package]] name = "nym-mixnet-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41c21bceb3bb8ee2789851b3f381fc035485af825bf7290b7c99a5af4e8f6ba1" dependencies = [ "bs58", "cosmwasm-schema", @@ -1404,7 +1418,9 @@ dependencies = [ [[package]] name = "nym-multisig-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a20b931ee849f6179ce2b387accd058720017f644ffbc8c2422f3e9ac3ff54" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1419,7 +1435,9 @@ dependencies = [ [[package]] name = "nym-network-defaults" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9834193b4641acdf9f360aea684a6bd841cad287930bc0d7c3241a133756464" dependencies = [ "cargo_metadata 0.19.2", "regex", @@ -1427,7 +1445,9 @@ dependencies = [ [[package]] name = "nym-pemstore" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03077f9ebeb40caf8aa8e6f7bf8728449f73733e7a246986e492fa34ad3e70ab" dependencies = [ "pem", "tracing", @@ -1455,7 +1475,9 @@ dependencies = [ [[package]] name = "nym-performance-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42129a72f4b0dc0304a48b0ca1769b27694d913687ace5692d4c6924ca9f2a13" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1483,7 +1505,9 @@ dependencies = [ [[package]] name = "nym-pool-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70239cc26beda3ad19289188c50d554522af29646d7d3f855bda6fc8ed332fe7" dependencies = [ "cosmwasm-schema", "cosmwasm-std", @@ -1495,7 +1519,9 @@ dependencies = [ [[package]] name = "nym-sphinx-types" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba662d39fd6da9e13166fa1162ff41c2cfaed78a77c70df72fbda6fef5eb4f5" dependencies = [ "sphinx-packet", "thiserror 2.0.12", @@ -1524,7 +1550,9 @@ dependencies = [ [[package]] name = "nym-vesting-contract-common" -version = "1.20.1" +version = "1.20.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "676c2793efbf9ccdf86bb788c903f778a2d5993a5174729303f9511a297f4ca8" dependencies = [ "cosmwasm-schema", "cosmwasm-std", diff --git a/contracts/Cargo.toml b/contracts/Cargo.toml index edcaf4b3355..6659cb88048 100644 --- a/contracts/Cargo.toml +++ b/contracts/Cargo.toml @@ -57,34 +57,25 @@ schemars = "0.8.16" thiserror = "2.0.11" -# Common crates from parent workspace (paths relative to contracts/) -# -# TODO: Once these crates are published to crates.io, switch from path dependencies -# to crates.io versions. -# -# TODO add a [patch.crates-io] section at the bottom for local development if you need to use a modded version of common import instead e.g.: -# -# [patch.crates-io] -# nym-contracts-common = { path = "../common/cosmwasm-smart-contracts/contracts-common" } -# easy-addr = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/easy_addr" } -nym-coconut-dkg-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/coconut-dkg" } -nym-contracts-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common" } -nym-contracts-common-testing = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common-testing" } -nym-crypto = { version = "1.20.1", path = "../common/crypto", default-features = false } -nym-ecash-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/ecash-contract" } -nym-group-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/group-contract" } -nym-mixnet-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/mixnet-contract" } -nym-multisig-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/multisig-contract" } -nym-network-defaults = { version = "1.20.1", path = "../common/network-defaults", default-features = false } -nym-performance-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/nym-performance-contract" } -nym-pool-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/nym-pool-contract" } -nym-vesting-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/vesting-contract" } +# For local development with modifications, add a [patch.crates-io] section (see bottom of file) +nym-coconut-dkg-common = "1.20.4" +nym-contracts-common = "1.20.4" +nym-contracts-common-testing = "1.20.4" +nym-crypto = { version = "1.20.4", default-features = false } +nym-ecash-contract-common = "1.20.4" +nym-group-contract-common = "1.20.4" +nym-mixnet-contract-common = "1.20.4" +nym-multisig-contract-common = "1.20.4" +nym-network-defaults = { version = "1.20.4", default-features = false } +nym-performance-contract-common = "1.20.4" +nym-pool-contract-common = "1.20.4" +nym-vesting-contract-common = "1.20.4" # Aliases for crates that some contracts import under different names -contracts-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/contracts-common", package = "nym-contracts-common" } -mixnet-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/mixnet-contract", package = "nym-mixnet-contract-common" } -vesting-contract-common = { version = "1.20.1", path = "../common/cosmwasm-smart-contracts/vesting-contract", package = "nym-vesting-contract-common" } +contracts-common = { version = "1.20.4", package = "nym-contracts-common" } +mixnet-contract-common = { version = "1.20.4", package = "nym-mixnet-contract-common" } +vesting-contract-common = { version = "1.20.4", package = "nym-vesting-contract-common" } # Internal contract workspace members (for cross-contract testing) cw3-flex-multisig = { version = "2.0.0", path = "multisig/cw3-flex-multisig" } @@ -101,3 +92,7 @@ exit = "deny" panic = "deny" unimplemented = "deny" unreachable = "deny" + +# For local development, import via path instead of crates.io, e.g. +# [patch.crates-io] +# nym-coconut-dkg-common = { path = "../common/cosmwasm-smart-contracts/coconut-dkg" }