diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ee27c5e..b6a0083 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -51,6 +51,7 @@ jobs:
--logger "trx;LogFileName=test-results.trx"
--collect:"XPlat Code Coverage"
--results-directory TestResults
+ --blame-hang-timeout 5m --blame-hang-dump-type none
# Coverage gate (Ubuntu only, one report is enough): fails the job if Core drops below the
# thresholds. App and Cli are reported but not gated yet.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e3f693..45f8228 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,15 +5,29 @@ Technical changelog for PalladiumWallet. Format loosely follows
by subsystem rather than strictly by date, since `0.9.0` is the first
release and covers the full history from the initial commit.
-## [Unreleased]
+## [1.2.0] — 2026-11-03
+
+Hardens SPV verification (header anchoring fix, recent-block witness cross-check, chain identity
+check on connect), makes the network layer fail fast on dead or hostile servers, adds server fee
+presets and safer CLI password handling, and fixes a Windows-visible sync race. Also adds a
+linux-arm64 build target, CI on GitHub Actions and a much larger automated test suite.
### Documentation
+- Docs-as-code process: `docs/` with one ADR per feature, checked by `docs/check-docs.sh`;
+ the extended test strategy is documented.
+
- README: the multi-network claim now states that the GUI is mainnet-only and that testnet/regtest
(CLI only) need an explicit `--server`.
### Added
+- `linux-arm64` reproducible desktop build target (`./docker/build.sh linux-arm64`), cross-published
+ from the x64 image, for Raspberry Pi and other 64-bit ARM boards.
+- CI on GitHub Actions (ADR 0032): offline test suite on Ubuntu and Windows, fuzz smoke per parser
+ target and docs checks, on every push to `main` and every PR.
+- `tests/PalladiumWallet.ServerProbe`: read-only conformance/health check for real
+ Electrum/Fulcrum/ElectrumX servers, also runnable from `dotnet test` via environment variables.
- Recent blocks (above the newest checkpoint, which cannot be anchored) are now cross-checked with
a second server: the header at the same height must be identical. The witness is taken only from
the hardcoded bootstrap servers, one extra pinned connection opened on demand. A disagreement at
@@ -64,6 +78,12 @@ release and covers the full history from the initial commit.
### Fixed
+- **Sync result overwritten by a stale partial snapshot.** At the end of a sync the final verified
+ snapshot was applied only after `await`ing the wallet save; a partial (not yet verified)
+ snapshot still queued on the UI thread could run during that await, replace the cache and be
+ displayed instead, leaving transactions shown as unverified after a completed sync. The run is
+ now finalised and applied before the save. Deterministically visible on Windows, where the save
+ really yields.
- Adding a contact now validates the address for the wallet's network and rejects duplicates
(case-insensitive); whitespace and line breaks in a pasted address are removed. Before, any
string was saved and the error only appeared at send time. Contacts already stored with an
@@ -101,7 +121,9 @@ release and covers the full history from the initial commit.
- Error-path tests for `Core` (empty header range during anchoring, send-all limits, `SyncCache`
roundtrip, derivation edge cases, corrupted config), concurrency tests (in-flight cap, disposal
under load, wallet-lock contention).
-- Coverage settings (`tests/coverage.runsettings`) and a coverage gate in CI.
+- Coverage settings (`tests/coverage.runsettings`) and a coverage gate in CI (`Core`: 95% lines /
+ 88% branches); thread pool minimum raised in tests to avoid starvation; async UI test bodies are
+ now driven to completion (they previously passed vacuously).
- Test seams: `MainWindowViewModel.UpdateCheck` and `MainWindowViewModel.ProfileOverride`
(internal) so ViewModel tests never reach GitHub or a real indexing server.
diff --git a/src/App.Android/PalladiumWallet.App.Android.csproj b/src/App.Android/PalladiumWallet.App.Android.csproj
index caf2976..4513989 100644
--- a/src/App.Android/PalladiumWallet.App.Android.csproj
+++ b/src/App.Android/PalladiumWallet.App.Android.csproj
@@ -8,8 +8,8 @@
enable
io.github.davide3011.palladiumwallet
- 4
- 1.1.0
+ 5
+ 1.2.0
apk
- 1.1.0
+ 1.2.0
enable
true