Testing commit signing

This commit is contained in:
NeilClack
2026-08-13 20:07:05 -05:00
parent 7c74198d4f
commit ac69c7d694
+12 -11
View File
@@ -8,7 +8,7 @@ and manages WiFi/provisioning on a headless Linux kiosk.
**Build:** CMake + Ninja (local) or Nix (flake)
**Graphics:** SDL3
**Audio:** SDL3_mixer
**Target:** Linux kiosk (Wayland/X11); developed on macOS
**Target:** Linux kiosk (Wayland); developed on macOS
---
@@ -257,7 +257,7 @@ code --install-extension vadimcn.vscode-lldb
Tasks are preconfigured in `.vscode/tasks.json`:
| Task | Shortcut | What it does |
|------|----------|-------------|
| ------ | ---------- | ------------- |
| `build-debug` | `Cmd+Shift+B` | Configure + build debug |
| `build-release` | — | Configure + build release |
| `build-tests` | — | Build test target only |
@@ -327,7 +327,7 @@ TEST(my_new_test)
RUN_ALL_TESTS()
```
3. Add the file to the `tests` target in `CMakeLists.txt`:
1. Add the file to the `tests` target in `CMakeLists.txt`:
```cmake
add_executable(tests
@@ -338,7 +338,7 @@ add_executable(tests
)
```
4. Rebuild and run:
1. Rebuild and run:
```sh
cmake --build build --target tests
@@ -364,7 +364,7 @@ The app uses SDL3's callback system (`SDL_MAIN_USE_CALLBACKS`) instead of a
manual event loop. SDL calls these functions for you:
| Callback | Runs | Purpose |
|----------|------|---------|
| ---------- | ------ | --------- |
| `SDL_AppInit` | Once at startup | Init SDL, create window + renderer, push first page |
| `SDL_AppEvent` | Per event | Forward events to the active page |
| `SDL_AppIterate` | Per frame | Update + render the active page |
@@ -448,7 +448,7 @@ settings sub-pages (e.g., Settings → AudioOptions → DevicePicker).
## Pages
| Page | Purpose | Status |
|------|---------|--------|
| ------ | --------- | -------- |
| Home | Logo, menu selection (Play, Settings) | Done |
| Settings | Title-only settings stub | Done |
| ScrollerPage | Main screen: scrolling text with shaders + audio | — |
@@ -468,7 +468,7 @@ settings sub-pages (e.g., Settings → AudioOptions → DevicePicker).
Global keybinds, active from any screen:
| Key | Action |
|-----|--------|
| ----- | -------- |
| TAB | Return to Home screen |
| UP Arrow | Move selection up (wraps) |
| DOWN Arrow | Move selection down (wraps) |
@@ -490,7 +490,7 @@ Decouples layout from display size.
### Shaders
| Shader | Purpose |
|--------|---------|
| -------- | --------- |
| scroller.vert/frag | Text with font texture; uniform `u_textColor` |
| text.vert/frag | Non-scrolling text elements |
| solid_color.vert/frag | Flat color (backgrounds, UI) |
@@ -511,7 +511,7 @@ Decouples layout from display size.
SQLite at `~/.local/share/radiantwave/database.sqlite` (WAL mode).
| Table | Purpose |
|-------|---------|
| ------- | --------- |
| app_config | Key-value store: license, email, audio device, volume |
| logs | Application logs |
| proclamations | Synced proclamation text |
@@ -524,6 +524,7 @@ SQLite at `~/.local/share/radiantwave/database.sqlite` (WAL mode).
## Network
D-Bus integration via sdbus-c++:
- Async WiFi scan
- WPA/WPA2 connection
- Captive portal detection
@@ -531,7 +532,7 @@ D-Bus integration via sdbus-c++:
### Remote APIs
| Endpoint | Purpose |
|----------|---------|
| ---------- | --------- |
| `portal.radiantwavetech.com/api/v2/proclamations` | Sync proclamations |
| `files.radiantwavetech.com/files/` | Audio file downloads |
| HTTP API | License validation |
@@ -595,7 +596,7 @@ status to decide which page to show.
## Rebuild Progress
| Component | Status |
|-----------|--------|
| ----------- | -------- |
| Entry / Event Loop | Done |
| Window + Renderer | Done |
| Page System | Done |