Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d03cc04
chore: bump rust-dashcore to the merged sync fixes, minus the sweep-e…
romchornyi Aug 26, 2026
7f6d429
test(dashmate): make ZeroSSL provider-change test deterministic (#4482)
QuantumExplorer Aug 26, 2026
d0bce9c
feat(platform)!: required document fields via contract updates (requi…
QuantumExplorer Aug 26, 2026
a98c6d7
ci(kotlin-sdk): run tests on dedicated self-hosted runner (#4468)
vivekgsharma Aug 26, 2026
cc8c3dd
fix(sdk): bound contested username loading
PastaPastaPasta Aug 26, 2026
00bd049
fix(platform): preserve tracked masternode ABI and persistence (#4473)
QuantumExplorer Aug 26, 2026
507192c
refactor(dpp): split document serialization formats into per-generati…
QuantumExplorer Aug 26, 2026
449ecca
fix(swift-sdk): preserve contest query lifetime
PastaPastaPasta Aug 26, 2026
a634f38
fix(swift-sdk): isolate blocking contest query
PastaPastaPasta Aug 26, 2026
7f75607
fix(swift-sdk)!: bound contested username loading (#4485)
PastaPastaPasta Aug 26, 2026
e46e77a
fix(platform-wallet): commit wallet events off the async runtime (#4370)
romchornyi Aug 26, 2026
558ac4b
feat(platform-wallet): secp256k1 primitives, identity-update parsing,…
romchornyi Aug 26, 2026
699d257
feat(kotlin-sdk): coinjoin-drain shielded funding binding + typed ass…
bfoss765 Aug 26, 2026
2f3cff1
feat(swift-sdk): add async off-main createWallet(mnemonic:) overload …
llbartekll Aug 26, 2026
31f5eec
feat(swift-sdk): add async off-main loadFromPersistor() overload (#4487)
llbartekll Aug 26, 2026
45dc3ca
feat!: add time-range indexes for trending/leaderboard queries (#3740)
QuantumExplorer Aug 26, 2026
c7ce712
feat(drive): support IN over pinned prefix properties in ranked and h…
QuantumExplorer Aug 26, 2026
e27738b
feat(drive)!: count credit inflows against the daily withdrawal limit…
QuantumExplorer Aug 26, 2026
ecdfda7
chore(release): update changelog and bump version to 4.2.0-dev.2 (#4490)
QuantumExplorer Aug 26, 2026
13f3720
docs(platform-wallet): error-code registry for the FFI result space (…
bfoss765 Aug 27, 2026
6d1159b
feat(dpp)!: add indexOnly document types with terminal index keys (#4…
QuantumExplorer Aug 27, 2026
aaab997
Merge branch 'v4.2-dev' into feat/platform-wallet-storage-rehydration
lklimek Aug 27, 2026
e250391
fix(platform-wallet-storage): close six read-path and verification ga…
lklimek Aug 27, 2026
a844aec
docs(platform-wallet-storage): correct the duplicate-slot load claim
lklimek Aug 27, 2026
1fc9b11
refactor(platform-wallet-storage)!: delete removed identities instead…
lklimek Aug 27, 2026
21484ce
Merge branch 'feat/platform-wallet-storage-rehydration' into chore/pw…
lklimek Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Custom labels carried by this repo's self-hosted runners. Without this,
# actionlint flags `runs-on: [self-hosted, rust-ci]` as an unknown label
# actionlint flags `runs-on: [self-hosted, <label>]` as an unknown label
# because it can't resolve it against the GitHub-hosted runner names.
#
# `rust-ci` must be applied to every runner allowed to take the Rust workspace
# test job (Settings -> Actions -> Runners -> <runner> -> Labels).
# test job, and `kotlin-ci` to every runner allowed to take the Kotlin SDK job
# (Settings -> Actions -> Runners -> <runner> -> Labels).
self-hosted-runner:
labels:
- rust-ci
- kotlin-ci
116 changes: 67 additions & 49 deletions .github/workflows/kotlin-sdk-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,52 +24,65 @@ on:
- 'scripts/tests/**'
- '.github/workflows/kotlin-sdk-build.yml'

permissions:
contents: read

concurrency:
group: kotlin-sdk-${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true

jobs:
kotlin-sdk-build:
name: Kotlin SDK build + tests (x86_64 emulator)
runs-on: ubuntu-latest
runs-on: [self-hosted, kotlin-ci]
# Fork PRs must not execute on a persistent runner. Keep this guard in sync
# with tests-rs-workspace.yml.
if: >-
github.event_name != 'pull_request'
|| github.event.pull_request.head.repo.full_name == github.repository
|| github.event.pull_request.head.repo.owner.login == 'thepastaclaw'
timeout-minutes: 120

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# Preserve target/ and other untracked build outputs between runs.
clean: false

- name: Ensure runner dependencies
run: |
set -euo pipefail

MISSING=()
for pkg in build-essential cmake curl jq libgmp-dev libpulse0 libssl-dev libx11-xcb1 pkg-config python3 unzip zip; do
dpkg -s "$pkg" >/dev/null 2>&1 || MISSING+=("$pkg")
done
if [ ${#MISSING[@]} -gt 0 ]; then
echo "Installing: ${MISSING[*]}"
sudo apt-get update -qq
sudo apt-get install -qq --yes "${MISSING[@]}"
fi

if [ ! -x "$HOME/.cargo/bin/rustup" ]; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --no-modify-path --default-toolchain none
fi
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"

- name: Validate executable SDK parity manifest
run: |
python3 scripts/check_sdk_parity_manifest.py
python3 -m unittest discover -s scripts/tests -p 'test_*.py'

- name: Free disk space
- name: Verify JDK 17
run: |
# The API-35 x86_64 system image + the shielded .so's cargo target
# dir (halo2/Orchard) + gradle outputs overflow the ~21 GB free on
# the runner root fs, surfacing as "No space left on device" during
# system-image install (the emulator then never boots). Reclaim the
# large preinstalled toolchains we don't use before building. None of
# these are needed by this job (JDK via setup-java, Android SDK via
# setup-android, Rust via rustup, NDK reinstalled below).
echo "Before:"; df -h /
sudo rm -rf \
/usr/share/dotnet \
/usr/local/.ghcup \
/opt/ghc \
/opt/hostedtoolcache/CodeQL \
/usr/local/lib/android/sdk/ndk \
/usr/local/share/powershell \
/usr/share/swift \
/opt/microsoft 2>/dev/null || true
sudo docker image prune --all --force 2>/dev/null || true
echo "After:"; df -h /

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
JAVA_HOME_RESOLVED=$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")
JAVA_VERSION_OUTPUT=$("$JAVA_HOME_RESOLVED/bin/java" -version 2>&1)
printf '%s\n' "$JAVA_VERSION_OUTPUT"
printf '%s\n' "$JAVA_VERSION_OUTPUT" | grep -Eq 'version "17([.]|\")'
echo "JAVA_HOME=$JAVA_HOME_RESOLVED" >> "$GITHUB_ENV"
echo "$JAVA_HOME_RESOLVED/bin" >> "$GITHUB_PATH"

- name: Set up Android SDK
uses: android-actions/setup-android@v3
Expand All @@ -85,25 +98,30 @@ jobs:
with:
targets: x86_64-linux-android

- name: Restore cargo cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: kotlin-sdk-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
kotlin-sdk-cargo-

- name: Install cargo-ndk
run: cargo install cargo-ndk --locked

- name: Install protoc v32.0 (repo-standard; apt's 3.21 breaks tenderdash-proto)
# Pinned: this runner is persistent, so an unpinned `cargo install`
# leaves whatever version happened to be current on the day it first ran,
# and every later job silently builds with it. Assert after installing so
# a drifted host fails here instead of somewhere in the NDK build.
- name: Ensure cargo-ndk v4.1.2 is installed
run: |
set -euo pipefail
if ! cargo ndk --version 2>/dev/null | grep -qx 'cargo-ndk 4.1.2'; then
cargo install cargo-ndk --version 4.1.2 --locked --force
fi
cargo ndk --version
cargo ndk --version | grep -qx 'cargo-ndk 4.1.2'

- name: Ensure protoc v32.0 is installed (repo-standard; apt's 3.21 breaks tenderdash-proto)
run: |
curl -fsSL -o /tmp/protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v32.0/protoc-32.0-linux-x86_64.zip
sudo unzip -o /tmp/protoc.zip -d /usr/local 'bin/protoc' 'include/*'
set -euo pipefail
if ! protoc --version 2>/dev/null | grep -qx 'libprotoc 32.0'; then
curl -fsSL -o /tmp/protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v32.0/protoc-32.0-linux-x86_64.zip
sudo unzip -o /tmp/protoc.zip -d /usr/local 'bin/protoc' 'include/*'
fi
protoc --version
# A stale protoc earlier on PATH would shadow the one just unpacked
# into /usr/local; catch that here rather than in a codegen failure.
protoc --version | grep -qx 'libprotoc 32.0'

- name: Build native library (x86_64, dev profile)
working-directory: packages/kotlin-sdk
Expand All @@ -126,12 +144,12 @@ jobs:
working-directory: packages/kotlin-sdk
run: ./gradlew :sdk:compileDebugAndroidTestKotlin --stacktrace

- name: Enable KVM for emulator
- name: Verify KVM access
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
test -c /dev/kvm
test -r /dev/kvm
test -w /dev/kvm
ls -l /dev/kvm

- name: Run instrumented FFI smoke test (API 35 emulator)
uses: reactivecircus/android-emulator-runner@v2
Expand Down
Loading
Loading