Commit Graph
17 Commits
Author SHA1 Message Date
matzmanandClaude Opus 5.5 b823ff321e Bundled builds: ship Qt WebEngine (helper process, resources)
When a bundled library is Qt WebEngine, the bundler also installs
QtWebEngineProcess (plus its libraries) to libexec/, the resources and
the en-US/de locales, and points qt.conf at them. The cross image unpacks
the arm64 QtWebEngineProcess (its package can't be co-installed with the
amd64 one). Experiment for DSH-1: the Frame's system WebEngine (6.7.0,
built against FFmpeg 6) can't be loaded.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:35:09 +02:00
matzmanandClaude Opus 5.5 15623acd09 deploy-to-frame.sh: don't exit silently without a bundled package
ls fails for the pattern that matches nothing; with pipefail and set -e
the script ended without a message.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:28:08 +02:00
matzmanandClaude Opus 5.5 873892c129 Log SteamVR-started instances to logs/<exe>.log
The manifest passes --log-file, so a settings error (CFG-2) ends up in a
log file in the install folder. Package README and docs updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:24:36 +02:00
matzmanandClaude Opus 5.5 179316db52 Document iteration 1: settings file, HA Dashboard tab, new hooks
README: settings file, --config, the new tab. ARCHITECTURE.md and
CLAUDE.md: prepare() hook, app command-line options, app code layout,
WebEngine notes, the moc raw-string pitfall. THIRD_PARTY_NOTICES: Qt
WebEngine. Ship config.example.json; the package README explains the
set-up. PROGRESS.md and DESIGN.md: phase 3 results and deviations.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:21:34 +02:00
matzmanandClaude Opus 5.5 0676998033 Build containers: add Qt WebEngine
qt6-webengine-dev and its QML module in the native and cross (arm64)
images, for the "HA Dashboard" tab.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:16:24 +02:00
matzmanandClaude Opus 5.5 60deb43d2e Add the "HA Dashboard" tab with HA's web UI (DSH-1)
A second dashboard surface shows a WebEngineView at homeassistant.url, or
a hint when none is set. HaWebUi (QML singleton owned by Dashboard) holds
the URL and a persistent WebEngine profile under
~/.local/share/frameassistant/webengine so the HA login survives restarts.
QtWebEngineQuick::initialize() runs in main() before the app object (D39).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:12:15 +02:00
matzmanandClaude Opus 5.5 a3ba712860 Load the settings file (configuration, --config)
Config parses and validates the JSON settings (D34): required device name
and broker host, defaults, type checks, device id from ha_unique_id or
derived from the name (D31), warnings for unknown keys and for a password
in a file others can read. Dashboard::prepare() loads it in overlay and
desktop mode; --config selects another file (D22). New static library
frameassistant_lib for app logic; tst_config covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:09:42 +02:00
matzmanandClaude Opus 5.5 4f47874a4b Platform: prepare() hook and app-specific command-line options
prepare() runs once mode and app key are known, before engine, surfaces
and SteamVR; returning false ends exec() with exit code 1 (D21). The base
constructor takes the app's own QCommandLineOptions, parses them with its
own and exposes them via isOptionSet()/optionValue() (D38).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 22:06:09 +02:00
matzmanandClaude Opus 5.5 6bdf0c2690 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>
2026-10-05 22:02:54 +02:00
matzmanandClaude Opus 5.5 6c93b8b905 Design: MVP details and implementation order
D31/D32: ids, topics, retain and availability for the HA MQTT interface,
MVP entity list. D33: MVP notification via the notify entity. D34:
configuration file format. D35: shipping libmosquitto. D36: NFR-3
measurement. D37: MVP implemented in four iterations, DSH-1 first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:55:41 +02:00
matzmanandClaude Opus 5.5 7e71b83c61 Design: threads and test strategy; high-level architecture done
D29: only the MQTT client runs in its own thread; OpenVR and the HA
layer stay in the main thread. D30: four-level test strategy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:36:22 +02:00
matzmanandClaude Opus 5.5 06de5cf184 Design: overlays, notification placement, DSH-1 in the MVP
D25: dashboard tabs and world overlays; premultiplied-alpha flag.
D26: one world overlay for all notifications. D27: MVP placement
"spawn in front, then stay". D28: DSH-1 (web UI out-of-the-box test)
joins the MVP, full dashboard becomes DSH-2. Add the research on
notification UI in VR (DESIGN.md, Appendix A).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:26:38 +02:00
matzmanandClaude Opus 5.5 3ec3029af6 Design: start-up hook, modes, entity types; add UI-1
D20: requirement UI-1 (status in the main tab). D21: failing start-up
hook prepare() in the platform. D22: modes incl. --desktop with optional
SteamVR, --desktop-novr, --config. D23: one class per HA entity type,
native types preferred, own JSON service only as fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:05:33 +02:00
matzmanandClaude Opus 5.5 f6c5de4fb9 Start the design document with the high-level architecture
DESIGN.md: one process with several threads (D16), three layers (D17),
HA-centric object classes (D18), injected configuration (D19). Design
decisions move from REQUIREMENTS.md to DESIGN.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 20:46:23 +02:00
matzmanandClaude Opus 5.5 ed8b2237bd Choose libmosquitto and an own HA discovery layer
D14: libmosquitto from Debian, shipped in the package (Qt MQTT needs the
exact Qt version; nothing on the Frame). D15: own device-based discovery
layer on Qt's JSON classes. Document the libraries per requirement and
what the Frame provides (Qt modules, OpenSSL 3.2.1, glibc 2.39).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 19:50:39 +02:00
matzmanandClaude Opus 5.5 ba6302a4c0 Add approved requirements and progress log
Requirements engineering for iteration 1 is finished (D13); phase 2
(planning and design) starts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 19:13:49 +02:00
matzmanandClaude Opus 5.5 4a5b09053e Initial FrameAssistant baseline from the vrdashboard template
Template stripped to the overlay platform (examples, demo UI and Frame
test package removed), renamed to FrameAssistant, and working rules for
the project recorded in CLAUDE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 00:06:58 +02:00