Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
9101e11
fix(wallet): surface unresolved Platform funding transfers
lklimek Sep 25, 2026
78722f0
fix(ci): lint transfer tests and avoid duplicate doctests
lklimek Sep 25, 2026
16480db
fix(wallet): integrate funding records into Core transaction rows
lklimek Sep 25, 2026
c80e248
Merge branch 'v1.0-dev' into fix/orphaned-tx
lklimek Sep 25, 2026
bd67085
fix(wallet): align history actions and reuse wallet refresh
lklimek Sep 25, 2026
7fdcd08
fix(wallet): remove redundant transfer summary
lklimek Sep 25, 2026
fbc2762
feat(wallet): group advanced actions and add full Core resync
lklimek Sep 25, 2026
88de32a
fix(wallet): block on full resync with sync progress overlay
lklimek Sep 25, 2026
4cbda84
fix: pin platform to updated wallet snapshot PR
lklimek Sep 25, 2026
b3a3586
fix: clear wallet history when requesting full resync
lklimek Sep 25, 2026
db9edeb
fix(wallet): reject known spent inputs before signing payments
lklimek Sep 25, 2026
03c34b4
fix(deps): pin platform to spent-outpoint replay PR head
lklimek Sep 25, 2026
28e023e
Merge remote-tracking branch 'origin/v1.0-dev' into fix/orphaned-tx
lklimek Sep 28, 2026
b2a8c0b
fix(deps): pin platform to transaction accounting fix
lklimek Sep 28, 2026
491073f
fix(deps): update platform accounting fix pin
lklimek Sep 28, 2026
230955e
fix(test): give backend e2e wallets unique aliases
lklimek Sep 29, 2026
96138ef
fix(deps): refresh platform accounting branch pin
lklimek Sep 29, 2026
2383a0a
fix(deps): pin confirmed spend restoration on wallet reload
lklimek Sep 29, 2026
0757c49
fix(tests): wait for final funding and track exact asset locks
lklimek Sep 29, 2026
83ad4c2
chore: merge v1.0-dev into fix/orphaned-tx
lklimek Sep 30, 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
12 changes: 2 additions & 10 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,9 @@ jobs:
env:
PROTOC: /usr/local/bin/protoc

- name: Run tests
uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --workspace
- name: Run tests (including doc tests)
run: cargo test --all-features --workspace

- name: Run doc tests
uses: actions-rs/cargo@v1
with:
command: test
args: --doc --all-features --workspace
# TODO: Re-enable after backend E2E tests are updated for TaskError migration
# - name: Run backend E2E tests
# run: cargo test --test backend-e2e --all-features -- --ignored --nocapture --test-threads=1
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ On every **non-draft** PR that touches Rust code, and on pushes to `v*-dev`, Git

| Workflow | Runs |
|---|---|
| `tests.yml` | `cargo test --all-features --workspace` and `cargo test --doc --all-features --workspace` |
| `tests.yml` | `cargo test --all-features --workspace` (includes doc tests) |
| `clippy.yml` | `cargo fmt --all -- --check` and `cargo clippy --all-features --all-targets -- -D warnings` |

The workflows are path-filtered independently, each on `**/*.rs` (which includes `build.rs`), `**/Cargo.toml`, `Cargo.lock`, `.cargo/config.toml`, and its own workflow file. `tests.yml` additionally watches `tests/backend-e2e/**`, so a documentation-only change under that directory (e.g. `tests/backend-e2e/README.md`) still triggers the test workflow. It also watches the migration-fixture files its tests embed at compile time (`tests/migration-fixtures/manifest.json` and the `v0.9.3-public-identities` `data.sql` / `expected.json`); other documentation-only changes run neither workflow.
Expand All @@ -66,7 +66,7 @@ Because CI always runs the full sweep, locally you should:

Two gaps where CI will **not** cover you:

- **Draft PRs run no automatic CI.** Both workflows are gated on `github.event.pull_request.draft != true`, so a draft PR's `pull_request` runs are suppressed. Neither workflow declares a `workflow_dispatch` trigger, so there is no way to run them by hand against a draft branch — mark the PR ready for review (`ready_for_review` triggers the full run) to get CI coverage.
- **Draft PRs run no automatic CI.** Both workflows are gated on `github.event.pull_request.draft != true`, so a draft PR's `pull_request` runs are suppressed. Use their `workflow_dispatch` triggers to test the branch head manually, or mark the PR ready for review (`ready_for_review` triggers the full run against the PR merge commit).
- **Backend E2E tests are not in CI.** The step is commented out in `tests.yml`, and the tests are `#[ignore]`d. If a change touches backend behaviour that only `tests/backend-e2e/` covers, run those locally; CI will not.

A green CI run is only meaningful if it actually executed your tests. `cargo test <filter>` exits 0 and prints `test result: ok` even when the filter matches nothing — when checking a run, confirm your new test names appear in the log **with a pass status**, not merely present. A `#[ignore]`d test (e.g. `core_max_send_with_single_utxo_builds_without_change` in `src/wallet_backend/payments.rs`) can appear in the log as `ignored` without having actually run — the "full non-ignored-test gate" above intentionally excludes these; they stay a manual check.
Expand Down
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### Added

- Platform dependencies track `fix/pr-5126` at `c0425f7b`, which restores
confirmed spends and finality on wallet load and reconciles persisted Core
transaction accounting. DET retains its pre-send history check.

- Core payments and new asset locks are blocked before signing when persisted
confirmed history shows that the wallet still offers already-spent inputs.
This consistency check remains active after Full resync clears visible history.
- Core-to-Platform funding appears inside Dash Core Transactions with row
details and recorded payment conflicts. Pending transactions appear first;
recovered historical funding is not labelled as an unfinished transfer. Local
records reload through Advanced → Refresh; row buttons share the final Actions column. Cancellation
remains unavailable until the wallet backend supports safe reconciliation.
- Wallet maintenance actions are grouped under Advanced: Import key, Refresh,
Full resync, which rescans the selected HD wallet’s Core history from genesis,
and Get test DASH on Testnet. Full resync uses the blocking initial-sync
progress window until the wallet scan completes.

- **Add wallet-created identity keys**: for identities loaded from a wallet on
this device, the Add Key screen defaults to "Create from wallet", which
creates an ECDSA_SECP256K1 or ECDSA_HASH160 key from that wallet so it can be
Expand Down Expand Up @@ -147,6 +164,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### Fixed

- Backend E2E funding waits for final, unreserved asset-lock inputs and recovers
leftover test funds before checking the suite budget. Asset-lock tests select
the newly broadcast transaction in duffs; shielded tests wait for balance
propagation and use a withdrawal amount above the protocol minimum.

- Backend E2E funded test wallets use unique names so successive tests can
register wallets in the shared persistent database.

- CI runs documentation tests once as part of the main test suite and uses
Cargo directly instead of the retired Cargo action.

- **Identity keys added by hand no longer disappear**: unlocking a wallet,
starting the app or loading an identity from a wallet refreshed the identity
with only the keys the wallet can recreate, so keys you had pasted or
Expand Down Expand Up @@ -563,6 +591,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

### Changed

- Full resync clears the selected wallet’s displayed Core history across restarts
and rebuilds it from observed blocks, retaining spend accounting and reservations.

- Wallet registries and live names now share one WalletContext across the UI,
MCP tools and password prompts. Metadata writes are serialized while wallet
names and password prompts continue to use the last committed snapshot.
Expand Down
Loading
Loading