README: the desktop app works; one code base from the browser to the desktop

The desktop output now leads with what it shows: what you run on the development server in your
browser ships as a desktop app from the same code, wrapped by Tauri in a small Rust program. Rudder is
the proof: the offline voice-to-text plugin runs in the Plugin Studio and as its own desktop app, and
the Linux app works and is used to dictate the work on many of these maps. The summary table, the
"speak instead of typing" and "one plugin, several outputs" bullets and the desktop section say so;
the details keep what is not run yet (macOS, Windows, the automatic production build).
The desktop HOWTO's proven table records the launched Linux app.
This commit is contained in:
Doxa Maps 2026-10-03 04:56:56 +00:00
parent 1d8f5f1ccd
commit f2c8c0a90b
2 changed files with 28 additions and 17 deletions

View file

@ -60,7 +60,7 @@ capabilities, three outputs, one shared library, one build.
| 🔗 **Maps that talk to each other** | Maps share props and events, so one app can nest them and a click in one can move another. |
| 🪶 **Small bundles** | Each map's file carries only the parts of the shared library it uses (tree-shaken). |
| ⚙️ **One build step** | `bun run build` makes every map at once. |
| 📦 **Three outputs** | A web folder (iframe, script embed), a mobile app, a desktop app — [the 3 outputs](#what-the-build-makes--3-outputs). |
| 📦 **Three outputs** | A web folder (iframe, script embed), a mobile app, and a desktop app built from the same code you run in the browser — [the 3 outputs](#what-the-build-makes--3-outputs). |
| What dx-maps set out to do | Proof |
|---|---|
@ -259,10 +259,12 @@ If you build with AI agents, this repo is made for you:
updating the moment you save.
- **Speak instead of typing.** Rudder, an offline voice-to-text tool, sits as a corner widget in the
Studio: look at a plugin, say what you see, and hand the text to your agent. Nothing leaves your
computer (Linux today).
- **One plugin, several outputs.** The same plugin ships as a web embed or a mobile app, and a plugin
can target the desktop: Rudder is the desktop example, a corner widget in the Studio and its own
desktop app (`bun run desktop:build rudder-voice`, see [HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)).
computer. Rudder also runs as its own desktop app: the Linux app works and is used to dictate the
work on many of these maps.
- **One plugin, several outputs.** The same code ships as a web embed, a mobile app or a desktop app.
Rudder shows the whole path: you run it in your browser on the development server, then
`bun run desktop:build rudder-voice` ships that same code as a desktop app (see
[HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)).
- **Build together.** [Run it in the cloud](#run-it-in-the-cloud) gives a whole team one shared dev
server.
@ -615,21 +617,29 @@ bun run phone # builds the app and installs it on a phone or emulator
### Output 3 — the desktop app ✅ works today
**We got the JAMstack map app running as a desktop app.**
**Run it in your browser, then ship the same code as a desktop app.** What you build and try on the
development server (`bun run dev`) is what ships to the desktop: [Tauri](https://tauri.app) wraps the
built folder in a small Rust program that runs on your own computer. There is no second code base.
![Desktop app (Tauri), working](documentation/readme-images/deploy5-desktop.png)
**Rudder, the voice-to-text plugin, runs as its own desktop app too**, built with
`bun run desktop:build rudder-voice` ([HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)).
**Rudder, the offline voice-to-text plugin, proves it.** It runs as a corner widget in the Plugin
Studio and as its own desktop app, built with `bun run desktop:build rudder-voice`
([HOWTO-build-the-desktop-app](./documentation/HOWTO-build-the-desktop-app.md)). The Linux app works and
is used to dictate the work on many of these maps: look at a plugin, say what you see, and hand the
text to an agent. Nothing leaves the computer.
![Rudder, the offline voice-to-text desktop app, running](documentation/readme-images/deploy5-desktop-rudder.png)
**The map app runs as a desktop app the same way.**
![Desktop app (Tauri), working](documentation/readme-images/deploy5-desktop.png)
<details>
<summary><b>More about the desktop app</b></summary>
[Tauri](https://tauri.app) wraps the same built folder into a desktop program: it produced a Linux
app and a `.deb` installer. It isn't in the dx bundler for production yet — and the Research Gallery
could become a strong desktop app.
Tauri builds a Linux app and a `.deb` installer today. The macOS and Windows builds are set up but
have not been run yet ([the HOWTO](./documentation/HOWTO-build-the-desktop-app.md) says which steps are
proven). The desktop build runs on demand with the commands below; the automatic production build
doesn't make it yet. The Research Gallery could become a strong desktop app too.
```bash
bun run check:tauri # checks the desktop setup — needs no Rust tools

View file

@ -4,8 +4,9 @@ Rudder (`plugin-designs/rudder-voice`) is voice-to-text that runs on your own co
local engine (`backend/rudder-engine`, Go) that drives NVIDIA's NeMo-Speech.cpp speech server. The
desktop app is a Tauri window around the built web tree, with the engine started as a **sidecar**.
This page is written for an agent following it cold. **Read "What is proven" first**: most of the
desktop path has never been run by anyone, and the steps say so where that is the case.
This page is written for an agent following it cold. **Read "What is proven" first**: the Linux app is
proven and in use; the macOS and Windows path has not been run yet, and the steps say so where that is
the case.
## What is proven, and what is not
@ -18,8 +19,8 @@ desktop path has never been run by anyone, and the steps say so where that is th
| The engine **compiling** for macOS (arm64, x86_64) and Windows (x86_64) | Proven by cross-compiling. It has **never been run** on either. |
| The engine accepting a WebSocket from the Tauri webview (`tauri://localhost`, `http://tauri.localhost`) | Proven against a running engine; another site's origin is refused. |
| NeMo-Speech.cpp runtime for macOS / Windows | Published by NVIDIA (release v0.1.0: `macos-aarch64-cpu`, `macos-aarch64-metal`, `macos-x86_64-cpu`, `windows-x86_64-cpu` / `-cuda` / `-vulkan`). **Never run here.** |
| `bun run desktop:build rudder-voice` on **Linux** | Proven: produced `Rudder_0.1.0_amd64.deb` (8.8 MB) holding the app and the `rudder-engine` sidecar side by side. The app has **not been launched** from it yet (no display on the build box). |
| The shell starting and stopping the engine sidecar | Built (`deployment/src-tauri/src/main.rs`), compiled into that installer; not yet run. |
| `bun run desktop:build rudder-voice` on **Linux** | Proven: produced `Rudder_0.1.0_amd64.deb` (8.8 MB) holding the app and the `rudder-engine` sidecar side by side. The installed Linux app has since been launched and is in use: it is used to dictate the work on these maps. |
| The shell starting and stopping the engine sidecar | Built (`deployment/src-tauri/src/main.rs`), compiled into that installer. The installed Linux app works (the row above); not yet run on macOS or Windows. |
| First-run model download | **Not built.** Run `setup-runtime.sh` into the app's data folder by hand (step 7). |
## 1. Prerequisites