Commit ffda6bf
committed
Merge #7210: feat: modernize launch splash
3d45e61 qt: cache translated splash phase labels (UdjinM6)
80fa525 qt: simplify splash fallback progress state (UdjinM6)
b0013af qt: show real wallet rescan progress on startup (UdjinM6)
6a056f4 feat(qt): add phase-based progress bar to splash screen (pasta)
d8f33d2 feat(qt): modernize splash screen with rounded corners and refined layout (pasta)
Pull request description:
## Issue being fixed or feature implemented
- Modernize the splash screen visual design and add a progress bar so users have feedback on initialization progress instead of only a static status message.
### Old
<img width="426" height="506" alt="Screenshot 2026-03-11 at 23 24 23" src="https://github.com/user-attachments/assets/d028ad86-499c-445f-9a50-031cae2b54cb" />
### New
https://github.com/user-attachments/assets/aebe03dd-5484-445b-b4e4-0ffb7e57c26e
## What was done?
**Commit 1: Visual modernization**
- Replaced the flat rectangular splash with a modern card-style design featuring rounded corners and a translucent background
- Redesigned layout: smaller centered logo, refined typography (28pt title, 12pt version), subtle text opacity
- Replaced the rectangular network badge with a pill-shaped rounded badge
- Added canvas padding around the card for compositor-based visual separation
- Scoped `QPainter` lifetime to release the pixmap before timer/signal setup
**Commit 2: Phase-based progress bar**
- Added a thin progress bar at the bottom of the splash card that tracks init phases
- Built a phase weight table mapping init messages to progress ranges (e.g., "Loading block index…" = 3–75%)
- Phases with `ShowProgress` callbacks (block verification, replaying, rescanning) interpolate linearly within their range
- Phases without sub-progress use exponential time-based fill (slow curve for long phases like rescan)
- "Verifying wallet(s)…" and "Loading wallet…" are batched as a single bar (verify = 0–20%, load = 20–100%)
- "Rescanning…" resets the bar and uses a very slow exponential curve (tau=120s) appropriate for operations that can take hours
- Snaps to 100% on "Done loading" since the splash is destroyed immediately after
- Phase lookup translates keys via `_()` at runtime so matching works in all locales
- `messageColor` is `const` and captured by value in signal lambdas for thread-safe cross-thread callbacks
- Animation timer deferred until first message arrives to avoid idle repaints
## How Has This Been Tested?
- Manual testing on macOS: verified splash screen appearance, progress bar animation through full startup sequence including wallet verification and loading
- Verified progress bar behavior with `--rescan` flag (bar resets and uses slow curve)
- Confirmed "Done loading" snaps bar to 100% before splash dismissal
- Verified no regressions in testnet/devnet badge rendering
## Breaking Changes
None. Visual-only changes to the splash screen with no impact on consensus, RPC, or wallet behavior.
## Checklist:
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [ ] I have added or updated relevant unit/integration/functional/e2e tests
- [ ] I have made corresponding changes to the documentation
- [ ] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_
Top commit has no ACKs.
Tree-SHA512: d29656d57435f1ba166b0db458097d594a687775b47520abfa0bd221850feed3dc32cfcdb13941038c30e4b4a71cd4d2954fcc8f00814d749b7ffa4a9cd8a6b77 files changed
Lines changed: 338 additions & 83 deletions
File tree
- src
- interfaces
- qt
- wallet
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
410 | 415 | | |
411 | 416 | | |
412 | 417 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
| |||
40 | 42 | | |
41 | 43 | | |
42 | 44 | | |
43 | | - | |
44 | | - | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
45 | 50 | | |
46 | 51 | | |
47 | 52 | | |
| |||
53 | 58 | | |
54 | 59 | | |
55 | 60 | | |
| 61 | + | |
| 62 | + | |
56 | 63 | | |
57 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
58 | 68 | | |
59 | 69 | | |
60 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
61 | 81 | | |
62 | 82 | | |
63 | 83 | | |
64 | 84 | | |
65 | 85 | | |
66 | 86 | | |
67 | | - | |
| 87 | + | |
68 | 88 | | |
69 | 89 | | |
70 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
810 | 810 | | |
811 | 811 | | |
812 | 812 | | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
813 | 817 | | |
814 | 818 | | |
815 | 819 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
196 | 211 | | |
197 | 212 | | |
198 | 213 | | |
| |||
3282 | 3297 | | |
3283 | 3298 | | |
3284 | 3299 | | |
| 3300 | + | |
| 3301 | + | |
3285 | 3302 | | |
3286 | 3303 | | |
3287 | 3304 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
| 79 | + | |
79 | 80 | | |
| 81 | + | |
80 | 82 | | |
81 | 83 | | |
82 | 84 | | |
| |||
0 commit comments