Repository navigation
Bridge & Live Logging
The first release that streams data. A session-scoped callback API delivers frames from a transport's worker thread, a mock transport generates them, and the Qt bridge carries them to a live frame log.
What's new
Core
- Frame callbacks per session:
qttune_register_frame_callbackandqttune_unregister_frame_callback, keyed by the(callback, user_data)pair. Duplicates are deduplicated, unregistering twice is safe, and dispatch runs from a snapshot of the list, so a callback can register or unregister itself without deadlocking. - A mock transport: a
mock://URI starts a worker thread that emits a synthetic 8-byte frame every 50 ms (20 frames a second).qttune_session_startbegins streaming, so creating a session and starting it are separate steps, andqttune_session_closestops and joins the worker before the session goes away.
Bridge and UI
QtTuneBridgemarshals each frame from the worker thread to the GUI thread through a queued call, into a frame model behind a sort proxy (newest or oldest first).- The Log page streams frames live, with the sort toggle, Clear and a dropped-frames count.
- A dark theme (a
Themesingleton), a Home page with a session status card and a Start session button, and themed buttons. The app uses Qt Quick Controls' Basic style, because the native Windows style discarded custom control backgrounds.
CI
- Every job builds on Qt 6.12.0 LTS. Qt 6.8 and earlier reference the AGL framework, which the Xcode 26 SDK removed, so the macOS build needed the upgrade.
- Windows installs Qt with aqtinstall from its master branch, because the 3.3.0 release mishandles Qt 6.11+'s Windows repository layout.
Tests
23 cases: 17 for the core (status strings, the version format, init and shutdown, argument checks, callback registration and deduplication, dispatch, mock delivery, the worker thread's identity, a callback unregistering itself mid-dispatch) and 6 for the bridge's frame path. CI builds and tests the core with no Qt installed on Ubuntu, and builds the full app on Windows and macOS; it was green on the tag commit (7dbdcec).
Known limitations
- Mock data only: there's no real transport yet, and nothing decodes frames into values.
- The per-frame GUI updates and the live sort keep up with the mock's 20 frames a second; faster buses will need coalesced updates.
- Oldest-first mode doesn't follow new frames yet.
- The session API expects one caller (the bridge).
- No Android or iOS build has been attempted, and CI doesn't build the app on Linux.
- Windows CI depends on the aqtinstall master pin until a release fixes the layout bug.
Full changelog: v0.1.0...v0.2.0