Staging Initial Foundational commits - #871
Open
johnny9 wants to merge 8 commits into
Open
Conversation
johnny9
force-pushed
the
qml-foundation-staging
branch
from
August 19, 2026 04:05
a18e63e to
fa61bd4
Compare
Build qtdeclarative and qtshadertools for the target and host. Keep qlalr available and link Xau for static XCB builds.
johnny9
force-pushed
the
qml-foundation-staging
branch
from
August 19, 2026 04:07
fa61bd4 to
d8c3e4e
Compare
johnny9
marked this pull request as ready for review
August 20, 2026 16:09
hebasto
reviewed
Aug 24, 2026
Comment on lines
+42
to
+45
| #ifdef WIN32 | ||
| common::WinCmdLineArgs win_args; | ||
| std::tie(argc, argv) = win_args.get(); | ||
| #endif |
Member
There was a problem hiding this comment.
This won't compile on Windows after bitcoin/bitcoin#32380.
Collaborator
Author
There was a problem hiding this comment.
good reminder. i need to do a check on windows myself to ensure we are windows compatible in this branch from the very begining.
Member
There was a problem hiding this comment.
It supposed to be done by the CI, no?
Add the optional bitcoin-qml executable with a minimal Qt Quick window. Build its backend and QML resources in a static library under src/qml. Co-authored-by: Matthew Zipkin <pinheadmz@pm.me> Co-authored-by: Jarol Rodriguez <jarolrod@tutanota.com>
Add Qt Test and Qt Quick Test runners. Load the production MainWindow resource in the Qt Quick smoke test. Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
Add an optional local-socket bridge for functional tests. Limit command size, client count, JSON depth, and object traversal. Co-authored-by: epicleafies <lukelpollard@gmail.com>
Add QML driver and process harness modules to the functional test framework. Expose bitcoin-qml capability checks and process management through BitcoinTestFramework and TestShell. Add an interface test for the application window and automation bridge.
Initialize and shut down the node on a worker thread. Expose lifecycle state and block progress through NodeModel, and stop cleanly when the window closes. Co-authored-by: johnny9 <johnny9dev@pm.me> Co-authored-by: João Barbosa <joao.paulo.barbosa@gmail.com> Co-authored-by: Jarol Rodriguez <jarolrod@tutanota.com>
Run BitcoinQmlApplication against a real in-process regtest node. Add an integration suite to the shared test_bitcoin-qt binary and run it in Windows cross CI.
johnny9
force-pushed
the
qml-foundation-staging
branch
from
August 27, 2026 04:48
d8c3e4e to
ceddd88
Compare
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.
This is the first in a series of staging PRs for the new QML-based Bitcoin Core GUI.
This PR adds the minimum application, build, lifecycle, and test foundation needed by later PRs. The UI is limited to a small window that shows node status.
Main decisions
BUILD_GUIbuilds QML asbitcoin-qt. With IPC enabled, it also buildsbitcoin-guiusing QML.BUILD_GUI_LEGACYbuilds the Widgets GUI asbitcoin-qt-legacyandbitcoin-gui-legacy. It will be removed near the end of the staging series.BUILD_GUI_TESTSbuilds the QMLtest_bitcoin-qt. Legacy tests useBUILD_GUI_LEGACY_TESTSandtest_bitcoin-qt-legacy.src/qml. This includes the application, models, resources, UI, and tests.BitcoinQmlApplicationclass.NodeModelexposes node state and block progress to QML.Test frameworks and coverage
The PR uses three test frameworks across four test levels.
C++ unit tests
Qt Test checks individual C++ classes. These tests are fast and make failures easy to locate. Every cpp module should have a QtTest module to go with it. Mocks/fakes are used at the boundaries.
QML component tests
QML is Qt's language for defining UI components and their behavior. Qt Quick Test checks those components without starting the full application. These should verify the components signals/slots, state changes, input validations, etc. Any QML warnings should cause the tests to fail.
Current coverage:
MainWindow.qml.Application integration tests
These tests run the application code and a regtest node in the same process.
This level:
Current coverage:
BitcoinQmlApplication.NodeModelto enter the running state.getblockchaininfoand checks the regtest chain.End-to-end functional tests
The Python functional-test framework starts the real GUI executable as separate processes. These will target key user flows
This level tests:
Current coverage:
bitcoin-qtand, when IPC is enabled,bitcoin-gui.The functional test suite checks that the internal application parts work together. The functional suite checks the complete application across real process and operating-system boundaries.
Test runner
The first three levels use one
test_bitcoin-qtexecutable: