Remove the HA Dashboard tab and the Qt WebEngine dependency (D40)
DSH-1 ended with a negative result: the Frame's system WebEngine can't be loaded, and bundling our own failed (no sandbox, ICU resources, Vulkan abort, empty page). Reverts the tab (60deb43), the container packages (0676998) and the bundler's WebEngine support (b823ff3,e2cfa8e), and updates the docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,7 +30,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
it reports headset/environment sensors to Home Assistant, offers services Home Assistant can
|
||||
call (e.g. notifications in the headset), and shows a Home Assistant dashboard as a SteamVR
|
||||
dashboard tab. Status: the overlay platform works; the Home Assistant parts are being built
|
||||
(implementation iteration 1: settings file and the "HA Dashboard" web UI tab).
|
||||
(implementation iteration 1: settings file; the web UI tab was dropped, see REQUIREMENTS.md D40).
|
||||
|
||||
**Start every session by reading `docs/PROGRESS.md`** (current state, next steps, log).
|
||||
|
||||
@@ -61,7 +61,7 @@ cmake --preset native-debug && cmake --build --preset native-debug # system Qt
|
||||
ctest --preset native-debug # all tests
|
||||
build/native-debug/bin/tst_inputbridge clickUsesGlCoordinates # one QtTest function
|
||||
build/native-debug/bin/frame-assistant --desktop # UI preview in a window, no SteamVR
|
||||
build/native-debug/bin/frame-assistant --snapshot x.png # x-0.png (main tab), x-dashboard.png
|
||||
build/native-debug/bin/frame-assistant --snapshot x.png # one frame via the real offscreen path
|
||||
scripts/container-build.sh cross # x86_64 → aarch64 against the Frame's system Qt (default)
|
||||
scripts/container-build.sh native # same for the host arch (use on the Frame)
|
||||
scripts/container-build.sh cross-bundle # fallback: self-contained, Qt bundled (also native-bundle)
|
||||
@@ -72,9 +72,8 @@ build/native-debug/bin/frame-assistant --graphics-api vulkan --benchmark 600 #
|
||||
```
|
||||
|
||||
- Use `--snapshot` and then read the PNGs to check UI or rendering changes without a headset.
|
||||
With several surfaces it writes `<name>-<id>.png` per surface (`-0` for the main tab's
|
||||
empty id). Snapshot and benchmark don't load the settings, so the "HA Dashboard" tab shows
|
||||
its "no URL" hint there.
|
||||
With several surfaces it writes `<name>-<id>.png` per surface (`-0` for an empty id).
|
||||
Snapshot and benchmark don't load the settings.
|
||||
- Overlay and desktop mode need a settings file; pass a test one with `--config <path>`.
|
||||
- `tst_render` runs once per backend (`VRDASH_TEST_API`, separate CTest entries, because the
|
||||
Qt graphics API is process-global). It QSKIPs without a GPU context or when Vulkan isn't
|
||||
@@ -198,16 +197,16 @@ into Qt events.
|
||||
`create()` (e.g. give the constructor a required `QObject* parent` and init it `{nullptr}`).
|
||||
- **App code layout:** logic without SteamVR or rendering goes into the static library
|
||||
`frameassistant_lib` (`src/config/`, …), which the app and its tests link. QML types
|
||||
(`QML_ELEMENT`, e.g. `src/ha/HaWebUi`) go into `QML_SOURCES` of `vrdash_add_dashboard()`:
|
||||
(`QML_ELEMENT`) go into `QML_SOURCES` of `vrdash_add_dashboard()`:
|
||||
they must be part of the QML module. The generated type registration includes their
|
||||
headers by file name only, so their directory is on the app's include path.
|
||||
- **Settings** (`src/config/Config`) are loaded once in `Dashboard::prepare()` (overlay and
|
||||
desktop mode) and passed on as an immutable value (DESIGN.md, D19).
|
||||
- **Qt WebEngine** ("HA Dashboard" tab): `QtWebEngineQuick::initialize()` runs in `main()`
|
||||
before the app object, because it must precede the `QGuiApplication`. `HaWebUi` creates a
|
||||
persistent profile under `~/.local/share/frameassistant/webengine` with the Qt 6.8 API
|
||||
(setters on `QQuickWebEngineProfile`). Qt ≥ 6.9 logs a hint to use
|
||||
`WebEngineProfilePrototype` instead, which the Frame's Qt 6.8 doesn't have.
|
||||
- **No Qt WebEngine** (REQUIREMENTS.md, D40): the Frame's system WebEngine can't be loaded, and bundling our own
|
||||
failed (STEAM-FRAME.md). Don't link it: the whole app would fail to start on the Frame.
|
||||
- **Check Frame libraries by loading, not by file:** before relying on a system library, check
|
||||
`ldd <lib> | grep "not found"` and that its package version matches the rest of Qt
|
||||
(`pacman -Q | grep qt6-`).
|
||||
- **moc and raw string literals:** a raw string containing `//` (e.g. a URL) makes moc treat
|
||||
the rest as a comment; it then misses `Q_OBJECT` classes in that file (link error "vtable
|
||||
for …"). In moc'ed files, write such text as normal string literals (`tst_config` uses
|
||||
@@ -333,5 +332,3 @@ Check these when testing on the device, and update this list:
|
||||
- The restructured app code (base class `DashboardApplication`, `Surface`, `Overlay` base,
|
||||
active-surface navigation) has only been tested off the device so far.
|
||||
- Several dashboard tabs from one process (works in `tst_surfaces`, not tried in SteamVR).
|
||||
- Qt WebEngine in the off-screen renderer (Vulkan and OpenGL), the SteamVR keyboard in web
|
||||
page input fields, and the persistent login ("HA Dashboard" tab, DSH-1).
|
||||
|
||||
Reference in New Issue
Block a user