Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
4c27bd8
Starting new subxt crate; configs implemented
jsdw Nov 25, 2025
fbde20c
WIP: Backends added, Archive backend created
jsdw Nov 28, 2025
b216240
WIP more backend work
jsdw Nov 28, 2025
a338120
WIP: Combined backend done, client in progress
jsdw Dec 1, 2025
6616c69
Get OnlineClientAtBlock working
jsdw Dec 1, 2025
a6a384c
Merge branch 'master' into jsdw-subxt-new
jsdw Dec 2, 2025
e4028e5
Add ability to stream blocks and tidy errors
jsdw Dec 2, 2025
03fd050
WIP: Add support in config for transaction creation and begin porting…
jsdw Dec 2, 2025
0a617eb
Add metadata types to our legacy type registry too
jsdw Dec 3, 2025
c1ebceb
add onlineclient.at_block_hash_and_number for the event that you know…
jsdw Dec 3, 2025
b85a412
Impl most transaction APIs. TxProgress and Events next
jsdw Dec 3, 2025
60d8ce7
Merge branch 'master' into jsdw-subxt-new
jsdw Dec 3, 2025
535a132
Finish first draft of transactions, extrinsics (blocks) and events
jsdw Dec 4, 2025
5456c18
Storage APIs added and compiling
jsdw Dec 9, 2025
e0f4630
Simplify storage APIs
jsdw Dec 9, 2025
4d2b4a6
First pass adding back the main APIs
jsdw Dec 9, 2025
744a513
make offline event and extrinsic ops possible
jsdw Dec 9, 2025
b75ce69
Everything has lifetime from ClientAtBlock
jsdw Dec 9, 2025
15a7534
Merge branch 'master' into jsdw-subxt-new
jsdw Dec 9, 2025
02d0c12
Move subxt-new to be the new subxt, and get first example working
jsdw Dec 11, 2025
6215b15
Add a method to return the block header at a given block
jsdw Dec 11, 2025
37d4cf7
Get workspace compiling via 'cargo check'
jsdw Dec 12, 2025
34eeea2
More examples and get compiling with deny(missing_docs)
jsdw Dec 15, 2025
ae820a2
Add a basic book and fix broken docs
jsdw Dec 15, 2025
dfabd66
DecodeAsEvent and DecodeAsExtrinsic; make easier to implement by remo…
jsdw Dec 15, 2025
4d47acd
Add ability to iterate and visit event fields and storage values
jsdw Dec 15, 2025
8537325
Simplify paths to extrinsic and storage types needed for .find
jsdw Dec 15, 2025
82590b1
Remove unused deps
jsdw Dec 15, 2025
e9bb756
More exampels and ensure light client things work. Remove unstable fr…
jsdw Dec 16, 2025
c1d30da
Fix clippy bits
jsdw Dec 16, 2025
4819b00
Get WASM example compiling via 'trunk serve'
jsdw Dec 16, 2025
2602ccb
fmt
jsdw Dec 17, 2025
5b393c4
Update the changelog for 0.50 release
jsdw Dec 17, 2025
eed17ad
Get basic integration tests passing, and misc tweaks to APIs to suppo…
jsdw Jan 6, 2026
654ad32
Get tests compiling and change features to make it clearer which test…
jsdw Jan 6, 2026
bdedd6e
space
jsdw Jan 6, 2026
8324455
fmt
jsdw Jan 6, 2026
866b5c6
Fix archive backend storage streaming; integration tests all pass now
jsdw Jan 7, 2026
2f81df6
Update CI to run matrix of integration-test features
jsdw Jan 7, 2026
8311b05
remove id failure() to avoid needing loads of CI re-runs to fix things
jsdw Jan 7, 2026
1604d48
fmt
jsdw Jan 7, 2026
6597795
Address clippy and doc check issues
jsdw Jan 7, 2026
fea8c29
Fix naming in CI workflows
jsdw Jan 7, 2026
0cca070
tweak the changelog and fix a new doc thing
jsdw Jan 7, 2026
f4849af
Remove and fix broken docs
jsdw Jan 7, 2026
0c54d08
Tweak subxt-signer and CI so that we can test it properly
jsdw Jan 7, 2026
5709fe6
Update nostd tests to remove no-longer-nostd bits
jsdw Jan 7, 2026
95ea365
fmt
jsdw Jan 7, 2026
75cc37c
Fix signer polkadot-js-compat issue
jsdw Jan 8, 2026
c5cf5ff
Actually fix polkadot-js-compat thing
jsdw Jan 8, 2026
3e52b7f
Fix RetrySubscription fn being polled again after error
jsdw Jan 8, 2026
ab7213a
fix wasm-rpc-tests and wasm-lightclient-tests
jsdw Jan 8, 2026
0c16dda
break up light client tests to help find issues
jsdw Jan 8, 2026
533f209
Fix UI tests and re-export test utils again properly
jsdw Jan 8, 2026
6d2fc66
Fix unused warning
jsdw Jan 8, 2026
d1ce82b
Fix tipping with asset IDs via .tip_of()
jsdw Jan 8, 2026
468e07e
fmt
jsdw Jan 8, 2026
1a1d0d1
Unit test tip_of and tip param setting
jsdw Jan 8, 2026
87fbc7f
Fix comment
jsdw Jan 8, 2026
667158d
Update artifacts
niklasad1 Jan 5, 2026
3d5afe3
Update artifacts
jsdw Jan 9, 2026
e7459f3
Add rpc serialize error to avoid wrong use of Deserialize variant
jsdw Jan 9, 2026
0d0265a
Attempt to fix light_client_works test
jsdw Jan 9, 2026
8967111
Improve test comment and fix signer wasm test lockfile
jsdw Jan 9, 2026
c6d29fa
Simplify/speed up wasm lightclient tests hopefully
jsdw Jan 9, 2026
4852945
Update configuration; _with_config methods to provide ocnfig, else de…
jsdw Jan 12, 2026
3a01e70
Update code/tests to no longer create configuration when default will do
jsdw Jan 12, 2026
8599405
Remove in-progress comment
jsdw Jan 12, 2026
4219958
Fix parachain example, no config needed
jsdw Jan 12, 2026
3747e6e
from_backend shouldn't accept config, use from_backend_with_config fo…
jsdw Jan 12, 2026
1641179
Fix a couple of typos, Mutex->RwLock in SubstrateConfig, re-add subxt…
jsdw Jan 12, 2026
2e7be93
Split out flaky lightclient tests for now and test more backends with…
jsdw Jan 12, 2026
754e5db
Less time for flaky lightclient tests; they either succeed quickly or…
jsdw Jan 12, 2026
2fefd11
Update RELEASING.md
jsdw Jan 12, 2026
db7417a
subxt-signer needs native flag to work with default features and RELE…
jsdw Jan 12, 2026
bdc9a9f
fix: support legacy V14 metadata outer enum naming (#2154)
TarikGul Jan 13, 2026
1e5117f
fmt
jsdw Jan 13, 2026
f7b0a79
Fix a couple of issues (type names and old core_version format) to wo…
jsdw Jan 13, 2026
3b81f4d
Address clippy lint
jsdw Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 82 additions & 128 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,10 @@ jobs:
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Cargo fmt
uses: actions-rs/[email protected]
with:
command: fmt
args: --all -- --check

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
run: cargo fmt --all -- --check

machete:
name: "Check unused dependencies"
name: Check unused dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout sources
Expand All @@ -78,12 +72,7 @@ jobs:
run: cargo install cargo-machete

- name: Check unused dependencies
uses: actions-rs/[email protected]
with:
command: machete

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
run: cargo machete

clippy:
name: Cargo clippy
Expand All @@ -109,13 +98,10 @@ jobs:

- name: Run clippy
run: |
cargo clippy --all-targets --features unstable-light-client -- -D warnings
cargo clippy --all-targets --features light-client -- -D warnings
cargo clippy -p subxt-lightclient --no-default-features --features web -- -D warnings
cargo clippy -p subxt --no-default-features --features web -- -D warnings
cargo clippy -p subxt --no-default-features --features web,unstable-light-client -- -D warnings

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
cargo clippy -p subxt --no-default-features --features web,light-client -- -D warnings

wasm_clippy:
name: Cargo clippy (WASM)
Expand All @@ -141,13 +127,7 @@ jobs:
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Run clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: -p subxt --no-default-features --features web,unstable-light-client,jsonrpsee --target wasm32-unknown-unknown -- -D warnings

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
run: cargo clippy -p subxt --no-default-features --features web,light-client,jsonrpsee --target wasm32-unknown-unknown -- -D warnings

check:
name: Cargo check
Expand Down Expand Up @@ -187,35 +167,28 @@ jobs:
- name: Cargo hack; check each subxt feature
run: cargo hack -p subxt --each-feature check --exclude-features web --features native

# Same with subxt-historic
- name: Cargo hack; check each subxt feature
run: cargo hack -p subxt-historic --each-feature check --exclude-features web --features native

# And with subxt-rpcs
- name: Cargo hack; check each subxt-rpcs feature
run: cargo hack -p subxt-rpcs --each-feature check --exclude-features web --features native

# And with subxt-signer (seems to work with a more basic check here; disable web if it becomes an issue).
# And with subxt-signer
- name: Cargo hack; check each subxt-signer feature
run: cargo hack -p subxt-signer --each-feature check
run: cargo hack -p subxt-signer --each-feature check --exclude-features web --features native

# And for subxt-lightclient.
- name: Cargo check subxt-lightclient
run: cargo hack -p subxt-lightclient --each-feature check --exclude-features web --features native

# Next, check all other crates.
- name: Cargo hack; check each feature/crate on its own
run: cargo hack --exclude subxt --exclude subxt-historic --exclude subxt-signer --exclude subxt-lightclient --exclude subxt-rpcs --exclude-all-features --each-feature check --workspace
run: cargo hack --exclude subxt --exclude subxt-signer --exclude subxt-lightclient --exclude subxt-rpcs --exclude-all-features --each-feature check --workspace

# Check the full examples, which aren't a part of the workspace so are otherwise ignored.
- name: Cargo check parachain-example
run: cargo check --manifest-path examples/parachain-example/Cargo.toml
- name: Cargo check ffi-example
run: cargo check --manifest-path examples/ffi-example/Cargo.toml

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5

ffi_example:
name: Run FFI Example
runs-on: ubuntu-latest
Expand Down Expand Up @@ -296,9 +269,6 @@ jobs:
run: |
cargo check --manifest-path examples/wasm-example/Cargo.toml --target wasm32-unknown-unknown

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5

docs:
name: Check documentation and run doc tests
runs-on: parity-large
Expand All @@ -325,16 +295,10 @@ jobs:
run: RUSTDOCFLAGS="--deny rustdoc::broken_intra_doc_links" cargo doc --workspace --no-deps --document-private-items

- name: Run cargo test on documentation
uses: actions-rs/[email protected]
with:
command: test
args: --doc --features reconnecting-rpc-client
run: cargo test --doc --features reconnecting-rpc-client

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5

tests:
name: "Test (Native)"
basic_tests:
name: Cargo test
runs-on: parity-large
needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 45
Expand All @@ -352,66 +316,25 @@ jobs:
toolchain: stable
override: true

- name: Rust Cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Install cargo-nextest
run: cargo install cargo-nextest

- name: Run subxt-signer no-std tests
uses: actions-rs/[email protected]
with:
command: test
working-directory: signer/tests/no-std
run: cargo test --manifest-path signer/tests/no-std/Cargo.toml

- name: Run tests
uses: actions-rs/[email protected]
with:
command: nextest
args: run --workspace --features reconnecting-rpc-client

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
- name: Run crate tests
run: cargo test --workspace --exclude integration-tests

unstable_backend_tests:
name: "Test chainhead backend"
integration_tests:
name: "Integration tests"
runs-on: parity-large
needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 30
steps:
- name: Checkout sources
uses: actions/checkout@v6

- name: Use substrate and polkadot node binaries
uses: ./.github/workflows/actions/use-nodes

- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- name: Rust Cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Install cargo-nextest
run: cargo install cargo-nextest

- name: Run tests
uses: actions-rs/[email protected]
with:
command: nextest
args: run --workspace --features chainhead-backend

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5

light_client_tests:
name: "Test (Light Client)"
runs-on: ubuntu-latest
needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 15
timeout-minutes: 45
strategy:
matrix:
# Test each of these features in our integration tests:
feature:
- default
- reconnecting-rpc
- legacy-backend
- chainhead-backend
steps:
- name: Checkout sources
uses: actions/checkout@v6
Expand All @@ -426,17 +349,8 @@ jobs:
toolchain: stable
override: true

- name: Rust Cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Run tests
uses: actions-rs/[email protected]
with:
command: test
args: --release --package integration-tests --features unstable-light-client

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
- name: Run crate tests
run: cargo test -p integration-tests --features ${{ matrix.feature }}

wasm_tests:
name: Test (WASM)
Expand Down Expand Up @@ -475,26 +389,69 @@ jobs:
pkill substrate-node
working-directory: testing/wasm-rpc-tests

- name: Run subxt-lightclient WASM tests
- name: Run subxt-signer WASM tests
run: |
# `listen-addr` is used to configure p2p to accept websocket connections instead of TCP.
# `node-key` provides a deterministic p2p address.
substrate-node --dev --node-key 0000000000000000000000000000000000000000000000000000000000000001 --listen-addr /ip4/0.0.0.0/tcp/30333/ws > /dev/null 2>&1 &
wasm-pack test --headless --firefox
wasm-pack test --headless --chrome
pkill substrate-node
working-directory: testing/wasm-lightclient-tests
working-directory: signer/tests/wasm

- name: Run subxt-signer WASM tests
flaky_lightclient_wasm_tests:
name: Flaky lightclient WASM tests
continue-on-error: true
runs-on: ubuntu-latest
needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 10
env:
# Set timeout for wasm tests to be much bigger than the default 20 secs.
WASM_BINDGEN_TEST_TIMEOUT: 300

steps:
- uses: actions/checkout@v6

- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

- name: Rust Cache
uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1

- name: Run subxt-lightclient WASM tests
run: |
# These tests connext to RPC nodes and so don't need a local node running.
wasm-pack test --headless --firefox
wasm-pack test --headless --chrome
working-directory: signer/tests/wasm
working-directory: testing/wasm-lightclient-tests

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
flaky_lightclient_integration_tests:
name: "Flaky lightclient integration tests"
continue-on-error: true
runs-on: parity-large
needs: [clippy, wasm_clippy, check, wasm_check, docs]
timeout-minutes: 10
strategy:
matrix:
# Test each of the backends with the light client.
feature:
- default
- legacy-backend
- chainhead-backend
steps:
- name: Checkout sources
uses: actions/checkout@v6

no-std-tests:
- name: Use substrate and polkadot node binaries
uses: ./.github/workflows/actions/use-nodes

- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true

- name: Run crate tests
run: cargo test -p integration-tests --features light-client-rpc,${{ matrix.feature }}

nostd_tests:
name: "Test (no_std)"
runs-on: ubuntu-latest
needs: [machete, docs]
Expand Down Expand Up @@ -524,6 +481,3 @@ jobs:
- name: Compile `no-std-tests` crate to `thumbv7em-none-eabi` target.
run: cargo build --target thumbv7em-none-eabi
working-directory: testing/no-std-tests

- if: "failure()"
uses: "andymckay/cancel-action@a955d435292c0d409d104b57d8e78435a93a6ef1" # v0.5
Loading
Loading