update the deploy-method ledger: Tauri is built-not-shot, not aspirational

Five places across three docs still said method 5 was aspirational / not yet
scaffolded / a deferred POC. All were true this morning and all are now false:
tauri.conf.json, src-tauri/ and check:tauri exist.

The honest-ledger table moves from 2 proven / 2 built-not-shot / 1 aspirational
to 2 / 3 / 0, and its closing sentence is corrected - with nothing aspirational
left, 'the two lower states' no longer described the table.

Status is deliberately BUILT, NOT SHOT and never 'proven': proven is reserved
for methods 1 and 3, which have live artifacts. No desktop binary has been
emitted here. Section 3 now carries the runnable contract command, the
one-build-four-consumers framing, and the token/CORS caveat up front.
This commit is contained in:
doxa-maps-88655c70 2026-09-21 21:07:35 +00:00
parent cad913bc6f
commit 679dfc47d6
3 changed files with 40 additions and 14 deletions

View file

@ -28,7 +28,7 @@ This README is a **show, don't tell** index. Skim the three tables, then jump to
| 2 | **Mobile app** (Android / Capacitor) | required | [§2](#deploy-2--mobile-app) |
| 3 | **Direct-JS / research dashboard** (props + events + SRI) | required | [§2](#deploy-3--research-dashboard-direct-js) |
| 4 | **WordPress** (PHP plugin: shortcode + Gutenberg block) | built, not yet shot | [§3](#3-cli-commands--installs-per-deploy-method) |
| 5 | **Desktop** (Tauri) | aspirational (no code yet) | [§3](#3-cli-commands--installs-per-deploy-method) |
| 5 | **Desktop** (Tauri) | built, not shot (`tauri.conf.json` + `src-tauri/`) | [§3](#3-cli-commands--installs-per-deploy-method) |
### CLI commands + what to install
@ -176,7 +176,7 @@ Quick reference:
| 2 | **Mobile (Android)** | Bun alone for `check:mobile`; Android SDK + `adb` + JDK 17 for the APK | `bun run check:mobile` (contract check, no toolchain) → `bun run phone` (full APK path) |
| 3 | **Direct-JS / dashboard** | Bun | `bun run build`, then paste the `<script src> + integrity` snippet from `manifest.json`. *Proven same-root AND on a foreign host page: the snippet now carries `assetsBase` + the `MAP_APP_API_URL` global; fill the `YOUR_*` placeholders* |
| 4 | **WordPress** | Bun | `bun run build`, then install the `wordpress/doxa-maps-embed/` PHP plugin (shortcode + Gutenberg block) *(built + contract-proven via `bun run check:wp-embed`; not yet shot on a live WP install)* |
| 5 | **Desktop (Tauri)** | Rust + Tauri CLI *(not yet scaffolded)* | *aspirational — no Tauri code exists yet* |
| 5 | **Desktop (Tauri)** | Rust toolchain + Tauri CLI | `bun run check:tauri` (contract check, no toolchain needed) · `cargo tauri build` for the binary *(built, not shot — no binary emitted here)* |
Every build writes `public/doxa-maps/manifest.json` — a machine-readable index carrying the ready-to-paste
**iframe** and **`<script src>` + SRI** embed snippet for every map.
@ -258,10 +258,11 @@ This README does not over-claim. Per the verified ledger (2026-09-19):
| Count | State | Methods |
|-------|-------|---------|
| 2 | **proven live** | iframe embed · direct-JS embed |
| 2 | **built, not yet shot** | mobile (Capacitor scaffolded, APK never emitted) · WordPress (`wordpress/doxa-maps-embed/*.php` written, install never captured) |
| 1 | **aspirational** | Tauri desktop (no code exists yet) |
| 3 | **built, not yet shot** | mobile (Capacitor scaffolded, APK never emitted) · WordPress (`wordpress/doxa-maps-embed/*.php` written, install never captured) · desktop (`tauri.conf.json` + `src-tauri/` scaffolded, no binary emitted) |
| 0 | **aspirational** | — none. Method 5 moved to built-not-shot on 2026-09-21. |
All **5 capabilities** are proven by a built bundle. Only the deploy *methods* carry the two lower states.
All **5 capabilities** are proven by a built bundle. Every deploy *method* is now at least scaffolded; three are
not yet shot (no APK, no live WP install, no desktop binary).
---

View file

@ -47,7 +47,7 @@ The scripts these commands are grounded in (from this branch's `package.json`):
| 2 | **Mobile app (Android)** | Bun ALONE for `check:mobile`; + Android SDK · `adb` on PATH · JDK 17 (Gradle) for the APK | `bun run check:mobile` (sync + webDir assertion, NO toolchain needed) · `bun run phone` (= `apk:debug` + `apk:install` to a device/emulator) |
| 3 | **Direct-JS / dashboard** | Bun | `bun run build`, then paste the `<script src> + integrity` (SRI) snippet from `manifest.json`. *Proven same-root AND foreign-host (verified 2026-09-20: gl + attribution, 0 errors, 0 404s). Fill the `YOUR_*` placeholders the snippet ships with* |
| 4 | **WordPress** | Bun (+ `php` CLI to run the contract gate) | `bun run build`, then either paste the iframe/script snippet into a **Custom HTML** block, **or** install `wordpress/doxa-maps-embed/` (shortcode + Gutenberg block). `bun run check:wp-embed` verifies the emitted markup. *(Contract-proven; not yet shot on a live WP install.)* |
| 5 | **Desktop (Tauri)** | Rust toolchain + Tauri CLI *(not yet scaffolded)* | **Deferred POC** — no command exists on this branch yet. |
| 5 | **Desktop (Tauri)** | Bun ALONE for `check:tauri`; + Rust toolchain · Tauri CLI · system webview libs for the binary | `bun run check:tauri` (config contract, NO toolchain needed) · `cargo tauri build` (needs the toolchain). *(Built, not shot — no binary emitted here.)* |
---
@ -201,11 +201,36 @@ the correct markup, repeatably and in CI. What is *not*: that WordPress renders
that the block editor registers it, or that a browser executes the result. Those still need
a real WP install (`wp-env start` — see `wordpress/doxa-maps-embed/HOW-TO-TEST.md`).
### 5. Desktop — Tauri *(deferred POC)*
### 5. Desktop — Tauri *(built + contract-proven; no binary emitted)*
**Intended prereqs:** the Rust toolchain (`rustup`) + the Tauri CLI, wrapping the same
`bun run build` web output as a native desktop shell.
**Install:** Bun ALONE for the contract check. For the binary: the Rust toolchain (`rustup`),
the Tauri CLI (`cargo install tauri-cli`), and the platform's system webview libs.
**Status: deferred POC.** No Tauri scaffolding or build script exists on this branch
yet, so there is no copy-paste command to run today. Documented here for completeness
of the 5-method model.
```bash
bun run check:tauri # CONTRACT check — needs NO Rust, NO Tauri CLI
cargo tauri build # the binary — needs the toolchain above
```
`tauri.conf.json` (repo root) + `src-tauri/` (the Rust crate) wrap the **same `public/` tree**
Capacitor and the CDN serve — `build.frontendDist` is `../public`, the desktop counterpart of
Capacitor's `webDir`. One `bun run build` now feeds four consumers: CDN, Capacitor, local
staging, and Tauri. The crate carries no application logic; the product is the web tree.
**`check:tauri` is runnable anywhere**, exactly like `check:mobile`. It asserts the config points
at files that exist: `frontendDist` resolves (Tauri resolves it relative to `src-tauri/` — the
easiest thing to get wrong), every window `url` exists in the built tree, the identifier matches
Capacitor's `appId`, and the three crate files are present. That guards the soft failure Tauri
shares with Capacitor — *a wrong path yields a BLANK WHITE WINDOW at launch, not an error*.
Negative-tested five ways (wrong `frontendDist`, missing window url, identifier drift, empty
windows array, missing crate file); each exits 1.
> **The token/CORS caveat, stated before you hit it.** A Tauri webview serves from a custom origin
> (`tauri://localhost`, or `http://tauri.localhost` on Windows), *not* from your token host. The
> `tokenUrl` endpoint must send CORS headers permitting that origin — the same surprise
> `capacitor.config.json` documents for `https://localhost`. **The fix is a response header on the
> token host, not a change in `tauri.conf.json`.**
**Status: built + contract-proven; no binary emitted.** `rustc` parses `src-tauri/src/main.rs`
(it reaches the `tauri::` call and fails only on the uninstalled crate — a dependency error, not a
syntax one). Producing and launching an actual desktop binary still needs the Tauri CLI + webview
libs, so this is **not** "proven" — say *built, not shot*.

View file

@ -137,9 +137,9 @@ Your one element deploys five ways (only an element supports all five — a page
| 3 | **JavaScript embed** | `<script src=".../<plugin>.js">` + `<your-tag>` (SRI-hashed) | ✅ proven |
| 2 | **mobile** | `bun run phone` (Capacitor) — build step, no new code | 🔶 built, not shot |
| 4 | **WordPress plugin** | the `wordpress/doxa-maps-embed/` PHP wrapper emits the embed snippet | 🔶 built, not shot |
| 5 | **desktop (Tauri)** | front-end → desktop app | ⬜ aspirational |
| 5 | **desktop (Tauri)** | `tauri.conf.json` + `src-tauri/` wrap the same `public/` tree | 🔶 built, not shot |
Say "proven" ONLY for 1 & 3. Verify at `https://<platform>/plugin-assets/doxa-maps/<plugin>/<plugin>/index.html`.
Say "proven" ONLY for 1 & 3 (2, 4 and 5 are scaffolded but no binary/install has been shot). Verify at `https://<platform>/plugin-assets/doxa-maps/<plugin>/<plugin>/index.html`.
**Done = the live site shows it, not a green build.**
## Step 6 — Surface it (make it discoverable)