Repository navigation
Add an About screen with the build version; drop the animated background - #20
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
Not hardcoded.
BuildInfo.javais generated fromgradle.propertiesat 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.propertieswalletVersion = 9.9.9-testWALLET_VERSION = "9.9.9-test"walletVersion = 0.1.0-pre4WALLET_VERSION = "0.1.0-pre4"Java source, not a properties resource — native-image only bundles resources that are explicitly registered, so a
.propertiesfile would work in the jar build and silently returnnullin the native one. Missing exactly where it's hardest to notice.AboutScreentakes noWalletUiController, so it renders when the node is down or the wallet is locked — which is when someone is filing a bug. The runtime line saysnative 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.LivePrefs— existed only for that keyLiveChainModel,LiveBlocksViewLiveBlocksViewbehind every screensyncAmbient()+ change listenerOne behaviour change:
liveNeeded()wasambientEnabled() || "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 theStackPane(ambient, content)wrapper;.shellpaints-surface-0, so nothing behind the screens changed.Deliberate non-change:
LiveBlocksViewkeeps its now-unreachableambientflag. 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 buildgreen — compile + tests, includingLiveChainModelTestClipboardviaUi.copyToClipboardis an existing path the Receive screen already uses, so risk is low, but adev-releasenative run before tagging pre5 would confirm it🤖 Generated with Claude Code