chore: release 1.2.0
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Test (windows-latest) (push) Canceled after 0s
CI / Fuzz smoke (address) (push) Canceled after 0s
CI / Fuzz smoke (bip39) (push) Canceled after 0s
CI / Fuzz smoke (coinamount) (push) Canceled after 0s
CI / Fuzz smoke (encfile) (push) Canceled after 0s
CI / Fuzz smoke (header) (push) Canceled after 0s
CI / Fuzz smoke (merkle) (push) Canceled after 0s
CI / Fuzz smoke (peers) (push) Canceled after 0s
CI / Fuzz smoke (slip132) (push) Canceled after 0s
CI / Fuzz smoke (walletdoc) (push) Canceled after 0s
CI / Docs checks (push) Canceled after 0s

Bump version to 1.2.0 (Android versionCode 5) and write the 1.2.0 changelog.
This commit is contained in:
davide committed 2026-11-03 21:54:03 +01:00
1 parent ed8de06609
commit 5d5ed094a0
4 files changed
+28 -5

No files matched your search

+1
View File
@@ -51,6 +51,7 @@ jobs:
--logger "trx;LogFileName=test-results.trx" --logger "trx;LogFileName=test-results.trx"
--collect:"XPlat Code Coverage" --collect:"XPlat Code Coverage"
--results-directory TestResults --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 # 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. # thresholds. App and Cli are reported but not gated yet.
+24 -2
View File
@@ -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 by subsystem rather than strictly by date, since `0.9.0` is the first
release and covers the full history from the initial commit. 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 ### 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 - README: the multi-network claim now states that the GUI is mainnet-only and that testnet/regtest
(CLI only) need an explicit `--server`. (CLI only) need an explicit `--server`.
### Added ### 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 - 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 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 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 ### 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 - 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 (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 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` - 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 roundtrip, derivation edge cases, corrupted config), concurrency tests (in-flight cap, disposal
under load, wallet-lock contention). 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` - Test seams: `MainWindowViewModel.UpdateCheck` and `MainWindowViewModel.ProfileOverride`
(internal) so ViewModel tests never reach GitHub or a real indexing server. (internal) so ViewModel tests never reach GitHub or a real indexing server.
@@ -8,8 +8,8 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ApplicationId>io.github.davide3011.palladiumwallet</ApplicationId> <ApplicationId>io.github.davide3011.palladiumwallet</ApplicationId>
<!-- ApplicationVersion = versionCode (intero), ApplicationDisplayVersion = versionName --> <!-- ApplicationVersion = versionCode (intero), ApplicationDisplayVersion = versionName -->
<ApplicationVersion>4</ApplicationVersion> <ApplicationVersion>5</ApplicationVersion>
<ApplicationDisplayVersion>1.1.0</ApplicationDisplayVersion> <ApplicationDisplayVersion>1.2.0</ApplicationDisplayVersion>
<AndroidPackageFormat>apk</AndroidPackageFormat> <AndroidPackageFormat>apk</AndroidPackageFormat>
<!-- Includi le assembly .NET DENTRO l'apk: senza, in Debug si usa il Fast <!-- Includi le assembly .NET DENTRO l'apk: senza, in Debug si usa il Fast
Deployment (assembly spinte via adb da `dotnet run`) e un apk installato Deployment (assembly spinte via adb da `dotnet run`) e un apk installato
+1 -1
View File
@@ -6,7 +6,7 @@
<TargetFramework>net10.0</TargetFramework> <TargetFramework>net10.0</TargetFramework>
<!-- Versione dell'applicazione: unico punto da modificare. Compare nel <!-- Versione dell'applicazione: unico punto da modificare. Compare nel
titolo della finestra ed è incisa nei binari pubblicati. --> titolo della finestra ed è incisa nei binari pubblicati. -->
<Version>1.1.0</Version> <Version>1.2.0</Version>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault> <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup> </PropertyGroup>