Skip to content

Add an About screen with the build version; drop the animated background - #20

Merged
satran004 merged 2 commits into
mainfrom
feat/about_version
Aug 22, 2026
Merged

satran004 merged 2 commits into
mainfrom
feat/about_version

Conversation

@satran004

@satran004 satran004 commented Aug 22, 2026 •

Copy link
Copy Markdown
Member

Two UI changes for pre5, both reviewed running locally.

1. About, as its own sidebar entry

The first question on any bug report is "which version?" — and there was no way to answer it. No window title, no menu, and a native binary that reports nothing. With four pre-releases out and casks installing a fifth, "the latest one" isn't an answer.

It sits after Settings in the sidebar rather than inside Settings, so it's findable without knowing that versions live under a settings page.

About

Version
  Yano Wallet 0.1.0-pre4
  Managed node: Yano 0.1.0-pre13
  Runtime: native image (no JVM)      ← or "Java 25 (…)"
  Platform: Mac OS X 15.x (aarch64)
  [ Copy version details ]

Project
  what the wallet is · repo link · MIT · test-networks-only warning

Not hardcoded. BuildInfo.java is generated from gradle.properties at build time by :wallet-ui:generateBuildInfo. A hand-edited constant is wrong the moment someone forgets to bump it — exactly when a version display does most harm, by confidently naming the wrong build. Verified it tracks its source:

gradle.properties generated constant
walletVersion = 9.9.9-test WALLET_VERSION = "9.9.9-test"
walletVersion = 0.1.0-pre4 WALLET_VERSION = "0.1.0-pre4"

Java source, not a properties resource — native-image only bundles resources that are explicitly registered, so a .properties file would work in the jar build and silently return null in the native one. Missing exactly where it's hardest to notice.

AboutScreen takes no WalletUiController, so it renders when the node is down or the wallet is locked — which is when someone is filing a bug. The runtime line says native image (no JVM) rather than inventing a Java version the native build doesn't have; several bugs this month reproduced only under native-image.

2. Animated live-chain background removed

It didn't look good. It was shipped opt-in and off by default (PREFS.getBoolean(KEY, false)), so removing it changes nothing anyone currently sees — the no-background path is the well-travelled one.

removed kept
the Appearance checkbox + its paragraph theme picker, untouched
LivePrefs — existed only for that key LiveChainModel, LiveBlocksView
the ambient LiveBlocksView behind every screen the Live page and its own view
syncAmbient() + change listener —

One behaviour change: liveNeeded() was ambientEnabled() || "Live".equals(active) and is now just the latter, so chain-tip polling runs only while the Live page is open. Strictly less work; identical where it's visible.

frame.setCenter(content) replaces the StackPane(ambient, content) wrapper; .shell paints -surface-0, so nothing behind the screens changed.

Deliberate non-change: LiveBlocksView keeps its now-unreachable ambient flag. Removing it means editing the drawing code the Live page depends on, for nothing a user can see — the class doc records why it survives. Worth doing later as its own change, with the Live page actually tested.

Checks

  • ./gradlew build green — compile + tests, including LiveChainModelTest
  • Both changes reviewed running the JVM build locally
  • Native build not re-run since these landed; Clipboard via Ui.copyToClipboard is an existing path the Receive screen already uses, so risk is low, but a dev-release native run before tagging pre5 would confirm it

🤖 Generated with Claude Code

satran004 and others added 2 commits August 22, 2026 10:07
The first question on any bug report is "which build?", and until now a user had
no way to answer it: no window title, no menu, and a native binary that reports
nothing. With four pre-releases out and casks installing a fifth, "the latest
one" is not an answer.

Settings now ends with an About card carrying the wallet version, the pinned
Yano node version, and the runtime, plus a button that copies all of it together
with the OS for pasting into an issue.

The values are GENERATED from gradle.properties at build time, never edited by
hand — a constant is wrong the moment someone forgets to bump it, which is
exactly when a version display does the most damage.

Generated as Java source rather than a properties resource: native-image
includes only resources that are explicitly registered, so a resource would work
in the jar build and silently come back null in the native one — missing where
it is hardest to notice.

The runtime line distinguishes a native image from a JVM instead of printing a
Java version the native build does not have. That distinction has already
mattered: several bugs this month reproduced only under native-image.

Verified the value tracks its source by building with walletVersion set to
9.9.9-test and back.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two changes to the same screens, both for pre5.

About moves out of Settings into its own sidebar entry after it. The version is
what a bug report asks for first, and someone answering that should not have to
guess it lives under Settings. The screen takes no controller — every value
comes from BuildInfo, generated at build time — so it still renders when the
node is down or the wallet is locked, which is exactly when someone is filing a
bug. It also now reports the platform, since "which build?" is only half an
answer without the machine, and reuses Ui.copyToClipboard/Ui.toast rather than
the hand-rolled clipboard handling it had.

The animated live-chain background is removed: it did not look good, and it had
already been shipped opt-in and off by default, so removing it changes nothing
anyone is currently seeing. Gone with it are LivePrefs, which existed only to
store that one key, the ambient LiveBlocksView behind every screen, and its
change listener. The Live page is untouched and keeps its own view.

One behaviour change falls out: chain-tip polling used to run whenever the
background was on OR the Live page was open, and now runs only for the Live
page. Strictly less work, same behaviour where it is visible.

LiveBlocksView keeps its now-unreachable ambient mode. Unpicking it means
editing the drawing code the Live page depends on, for nothing a user can see;
the class doc records why the flag survives.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@satran004 satran004 changed the title Show the build's version in Settings > About Add an About screen with the build version; drop the animated background Aug 22, 2026
@satran004
satran004 merged commit b0ad731 into main Aug 22, 2026
1 check passed
@satran004
satran004 deleted the feat/about_version branch August 22, 2026 02:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant