Plan implementation iteration 1: DSH-1 and configuration

D38: app-specific command-line options in the platform. D39: WebEngine
initialisation in main.cpp, persistent profile, tab "HA Dashboard".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 22:02:54 +02:00
co-authored by Claude Opus 5.5
parent 6c93b8b905
commit 6bdf0c2690
2 changed files with 49 additions and 7 deletions
+45 -5
View File
@@ -5,9 +5,9 @@ CLAUDE.md ("Working rules").
## Current state
- **Iteration 1, phase 2 (planning and design).** Phase 1 is approved (D13);
[REQUIREMENTS.md](REQUIREMENTS.md) is the baseline. High-level architecture done
([DESIGN.md](DESIGN.md)); MVP details next.
- **Implementation iteration 1 (DSH-1 and configuration), phase 3 (implementation).**
Requirements (D13) and design ([DESIGN.md](DESIGN.md)) are approved; the plan below was
approved on 2026-10-05.
## Next steps
@@ -21,8 +21,46 @@ Requirements and design cover the whole MVP; it is **implemented in four small i
| 3 | OpenVR wrappers and the 13 sensor entities | `--desktop` with optional SteamVR (D22) | sensor values in HA on the Frame |
| 4 | notification manager, `notify` entity, world overlay | world overlay, premultiplied flag (D25) | notification from HA in VR, also in a game |
Next: the detailed plan for iteration 1 (files, classes, tests, order) for the user's
approval; that ends phase 2 for iteration 1.
### Plan for implementation iteration 1: DSH-1 and configuration
Goal: a second dashboard tab **"HA Dashboard"** shows HA's web UI at the URL from the
configuration; what works out of the box is tested and documented. The main tab stays
"Frame Assistant".
Platform (`vrdashboard_core`):
1. Start-up hook `prepare()` (D21).
2. App-specific command-line options (D38): the base constructor takes an optional list of
extra `QCommandLineOption`s, adds them to parsing and `--help`, and exposes their values.
App:
3. `QtWebEngineQuick::initialize()` in `main.cpp` before the app object (D39); no platform
change.
4. Configuration (`src/config/`): immutable value plus `load(path, &error)`, complete per D34;
path from `--config`, else `$XDG_CONFIG_HOME` or `~/.config/frameassistant/config.json`;
loaded in `Dashboard::prepare()` (overlay and desktop modes).
5. HA web UI (`src/ha/HaWebUi`, D18): holds the URL (injected), exposed to QML as a singleton
owned by `Dashboard`; a named, persistent WebEngine profile under
`~/.local/share/frameassistant/` so the HA login survives restarts (D39).
6. New surface `dashboard` ("HA Dashboard"), QML root `HaDashboard.qml` with a `WebEngineView`;
without a URL it shows a hint.
7. Build: `find_package(Qt6 … WebEngineQuick)`; `qt6-webengine-dev` (native and `:arm64`) in
the containers; a new static library for app logic (configuration, HaWebUi) that tests link.
Tests (D30):
8. `tst_config`: valid file, missing required fields, invalid JSON, wrong types, defaults,
derived and explicit `ha_unique_id`, unknown keys, `--config`.
9. Platform: `tst_surfaces` extended for `prepare()` (success/abort) and extra options.
10. Manual, results documented: host `--desktop`; Frame desktop mode over RDP; Frame in VR with
Vulkan and OpenGL: page loads, laser click, scrolling, SteamVR keyboard in the page's input
fields, login kept after restart; CPU/GPU while the tab is open.
11. `clang-format` clean, `ctest` green; `container-test.sh` only if Vulkan code is touched.
Docs:
12. README (configuration file, `--config`, new tab), ARCHITECTURE.md and CLAUDE.md (new hook,
app options), THIRD_PARTY_NOTICES (Qt WebEngine from the system), STEAM-FRAME.md (results),
PROGRESS.md.
Known limitation: the bundled-Qt package does not support WebEngine in this iteration.
## Log
@@ -39,6 +77,8 @@ approval; that ends phase 2 for iteration 1.
present (relevant for Q2/Q3).
- libmosquitto ABI check: Debian's 2.0.21 needs at most `OPENSSL_3.0.0`/`GLIBC_2.34`; the
Frame has OpenSSL 3.2.1 and glibc 2.39. No libcjson dependency. D14 holds.
- Plan for implementation iteration 1 approved; phase 3 started.
- Plan for implementation iteration 1 written; new tab "HA Dashboard" (D38, D39).
- MVP implemented in four iterations; DSH-1 first, at the user's wish (D37).
- NFR-3 measurement method, manual in the MVP (D36). MVP details done.
- Shipping libmosquitto (D35).