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
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:
1 parent
ed8de06609
commit
5d5ed094a0
4 files changed
+28
-5
No files matched your search
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in new issue
Block a user