mirror of
https://github.com/logos-co/logos-verified-proxy-ui.git
synced 2026-08-27 13:11:13 +00:00
A ui_qml module — QML view over a small C++ backend, with the QML-facing surface declared as a QtRO .rep contract, matching storage-ui/wallet-ui/chat-ui. (QML-only was the other option and is rejected: an empty manifest `main` installs fine and then shows RETRY forever.) Three things are deliberate rather than incidental: * State is POLLED, not event-subscribed. A UI plugin's event subscription is one-shot and is refused if armed before the registry handshake, with no retry, so a panel built on subscriptions silently shows nothing when it loses that race. status() is cheap and never touches the proxy thread, so a 2s poll is both simpler and strictly more robust. * Every module call goes through the generated *AsyncResult twins. start() blocks in the module until the light client bootstraps — up to 120s — so a synchronous call would freeze the UI for that long. Consumer-side timeouts are set LONGER than the module's own (150s vs 120s for start, 45s vs 30s for calls) so the module's real error wins rather than a bare transport timeout. * The form constrains what can be typed. `network` is a dropdown of exactly the three the library supports, because any other value reaches a quit() inside Nim and takes the host process down — a text field here would be a footgun wired to the host's life. keepAlive never preselects "off" and warns when it is chosen, since without a heartbeat the verified head goes BACKWARDS. The view avoids Logos.Theme and every other optional import: one unresolved import takes down the WHOLE view, and the host routes that qWarning somewhere easy to miss, so the failure looks like an empty pane. Icon is generated at exactly 256x256 — the .lgx build enforces it — and the package round-trips with assets/icon.png staged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
772 B
JSON
29 lines
772 B
JSON
{
|
|
"name": "verified_proxy_ui",
|
|
"display_name": "Verified Proxy",
|
|
"version": "0.1.0",
|
|
"type": "ui_qml",
|
|
"interface": "universal",
|
|
"category": "wallet",
|
|
"description": "Configure and operate the light-client-verified Ethereum proxy",
|
|
"author": "Logos Core Team",
|
|
"main": "verified_proxy_ui_plugin",
|
|
"icon": "src/icons/verified-proxy.png",
|
|
"view": "qml/Main.qml",
|
|
"dependencies": ["verified_proxy_module"],
|
|
"codegen": {
|
|
"rep": "src/VerifiedProxyBackend.rep",
|
|
"backend_class": "VerifiedProxyBackend",
|
|
"backend_header": "VerifiedProxyBackend.h"
|
|
},
|
|
|
|
"nix": {
|
|
"packages": {
|
|
"build": [],
|
|
"runtime": ["qt6.qtdeclarative"]
|
|
},
|
|
"external_libraries": [],
|
|
"cmake": { "find_packages": [], "extra_sources": [] }
|
|
}
|
|
}
|