Blackbox Viewer#
The Viewer is a separate packaged desktop application that opens directly onto Ridgeport's semantic Plan. It lives in its own package with its own dependencies.
Before you start#
- A checkout of the repository.
- Node.js as for the main application.
- For native packaging, a working Tauri toolchain for your platform.
Run the Viewer in development#
cd blackbox-viewer
npm install
npm run dev
The browser preview is at http://127.0.0.1:1420.
What the preview actually shows#
The preview is a bounded local fixture, visibly labelled Preview data. It
is not a live world connection.
No live Viewer API, pairing or grant transport, or deployment exists. The Viewer is a working packaged fixture substrate. Do not present anything it displays as live world state.
When a live transport does arrive, the recorded initial design is conditional full-snapshot polling rather than streaming.
Package a native build#
npm run tauri build -- --bundles nsis
This produces an installer for Windows. The Viewer includes recovery handling for a destructive WebView2 browser-process failure, and its rendering has been exercised at 320px, 1080p and 4K.
The publication boundary#
What the server is willing to publish to a Viewer is governed by a deny-by-default scene schema, projector and publication boundary. In practice that means:
| Property | Effect |
|---|---|
| Deny by default | A field is not published unless it is explicitly allowed |
| Immutable policy and key snapshots | The audience policy in force is captured, not re-derived later |
| Safe keyed identifiers | Raw internal identifiers are not published |
| Truth provenance | Published values carry where they came from |
| Adversarial filtering | Secrets and raw identifiers are filtered as a distinct pass |
| Size cap | An exact 100 KiB limit on a published scene |
The size cap is a hard boundary, not a target. A scene that would exceed it is refused rather than truncated silently.
Verify#
- The development preview loads and is labelled
Preview data. - A packaged build installs and opens onto the Plan.
- Resizing between narrow and wide layouts does not break the Plan view.
If it does not work#
| Symptom | Check | Recovery |
|---|---|---|
| The preview shows no live data | It is a fixture by design | Expected; there is no live transport yet |
| The packaged build fails | The Tauri toolchain for your platform | Native packaging needs more than Node |
| The Viewer window goes blank | A WebView2 browser-process failure | The Viewer has recovery handling for this; reopen and report if it recurs |
| A scene fails to publish | Whether it exceeds 100 KiB | The cap is exact and refuses rather than truncates |