From 9227ad8eb7e9cdf364428e2093e153ff85acfb32 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 01:32:16 +0000 Subject: [PATCH 1/3] README: show Rudder running as a desktop app Output 3 showed only the map app as a desktop app. Rudder is the desktop example the README describes, and it has now been built with `bun run desktop:build rudder-voice` and run on Linux: a screenshot of the running app goes under the map app's, with one line on how to build it. The PNG carries no text chunks (the original recorded its creation time and timezone); the pixels are unchanged. HELD since 2026-09-29 01:32Z for a condition from the Driver whose message was cut off ("before you add it to the readme you nee"). It is merged now on the 14:38Z merge-all order. Drop this commit if that condition is not met. --- README.md | 5 +++++ .../readme-images/deploy5-desktop-rudder.png | Bin 0 -> 60469 bytes 2 files changed, 5 insertions(+) create mode 100644 documentation/readme-images/deploy5-desktop-rudder.png diff --git a/README.md b/README.md index 596b287d1..04901f3ae 100644 --- a/README.md +++ b/README.md @@ -523,6 +523,11 @@ bun run phone # builds the app and installs it on a phone or emulator ![Desktop app (Tauri) — proven, not yet in production](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 as a desktop app on Linux: offline voice-to-text](documentation/readme-images/deploy5-desktop-rudder.png) +
More about the desktop app diff --git a/documentation/readme-images/deploy5-desktop-rudder.png b/documentation/readme-images/deploy5-desktop-rudder.png new file mode 100644 index 0000000000000000000000000000000000000000..78f0ca1e2cd9cab0371953129a267481c6fc40a2 GIT binary patch literal 60469 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ⅅ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 P0s{AqEsO|v9=-ZMLEy$c literal 0 HcmV?d00001 From 5e99195fdff58ea910ec175c65cdd1e1ab2558cf Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Tue, 29 Sep 2026 01:32:18 +0000 Subject: [PATCH 2/3] rudder-voice README: the desktop build is no longer "not yet" on Linux "Not yet" still listed the desktop build with the engine as a Tauri sidecar. On Linux it builds and runs; what is still not done is macOS and Windows (the engine cross-compiles for both and has never run there). --- plugin-designs/rudder-voice/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin-designs/rudder-voice/README.md b/plugin-designs/rudder-voice/README.md index 3cea40173..6f91405e2 100644 --- a/plugin-designs/rudder-voice/README.md +++ b/plugin-designs/rudder-voice/README.md @@ -57,5 +57,6 @@ so this plugin is not meant for web embeds. ## Not yet -- Desktop build (`desktop:build`) with the engine as a Tauri sidecar. +- The desktop app on macOS and Windows. On Linux it builds and runs: `bun run desktop:build rudder-voice`, + see [HOWTO-build-the-desktop-app](../../documentation/HOWTO-build-the-desktop-app.md). - A saved word-correction table (PocketBase) for technical terms the model mishears. From 6df2da9c99deec02140a53b078a15ed2e581163b Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Mon, 28 Sep 2026 04:32:57 +0000 Subject: [PATCH 3/3] Cloud container: OIDC_AUTO_SIGNIN, so the Studio can sign in inside a dashboard frame With it on, oauth2-proxy skips its button page. For a user already signed in to the provider the sign-in is then redirects only, and the provider's no-framing headers never apply, so a framed Studio signs itself in. UNVERIFIED: never run live in a framed dashboard (written 2026-09-28 04:32Z, not landed until the 14:38Z merge-all order). Checked only statically: bash -n passes, and the argument switch yields --skip-provider-button for 1 and nothing for unset or 0 under set -u. Replayed onto development: AUTO is now defined inside the OIDC gate block (ACCESS != public), next to the ALLOW list, and passed before --upstream="$ROOT". Default off, so no running container changes. --- deployment/cloud/README.md | 1 + deployment/cloud/entry.sh | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/deployment/cloud/README.md b/deployment/cloud/README.md index 643234ae1..69d7b3d0d 100644 --- a/deployment/cloud/README.md +++ b/deployment/cloud/README.md @@ -113,6 +113,7 @@ there. Only then does it swap the new build in. | `PRODUCTION_BRANCH` | the branch `/cdn/` is built from (default `main`); the dev server keeps following `BRANCH`. It moves only on a publish | | `EMBED_BASE_URL` | the address the published `dx-maps/` folder sits under, so the manifests' copy-paste snippets are absolute: `https:///cdn` (it is served at `/cdn/dx-maps/`), or a research subdomain's `https://research.` (served at `/dx-maps/`). Unset, the snippets stay relative (`./…`) and other sites can't paste them | | `CDN_AUTOBUILD_MINUTES` | rebuild `/cdn/` by itself once `PRODUCTION_BRANCH` has held a new commit this long (default `2`; `0` = only the admin button) | +| `OIDC_AUTO_SIGNIN` | `1` skips the "Sign in with …" button and goes straight to the provider, so the Studio can sign in inside a frame (a dashboard tile) for anyone already signed in to the provider. Default off | | `SUBDOMAIN_APPS` | publish plugins as their own PUBLIC sites: `host=bundle/profile`, comma-separated, e.g. `research-gallery.example.org=doxa-maps-spa/doxa-maps-spa`. Served from the `/cdn` build by a separate server on `SUBDOMAIN_PORT` (default `5176`) that answers only those hosts and only with published files; point each host's proxy route at that port. No sign-in is skipped anywhere else | | `PUBLIC_API_BASE` | the public API URL written into the build's `runtime-config.js` (e.g. `https:///api-prod`) | | `BUILD_MAX_OLD_SPACE_MB` | Node heap cap for a build (default `1536`) | diff --git a/deployment/cloud/entry.sh b/deployment/cloud/entry.sh index 2b0aaef05..92dd43aa1 100755 --- a/deployment/cloud/entry.sh +++ b/deployment/cloud/entry.sh @@ -118,6 +118,10 @@ if [ -z "${OIDC_ISSUER:-}" ] && [ "${ACCESS:-}" != public ]; then fi if [ "${ACCESS:-}" != public ]; then + # OIDC_AUTO_SIGNIN=1: no "Sign in with …" button page; an unsigned visitor goes straight to the provider. It lets + # the Studio sign in INSIDE a frame (e.g. a dashboard tile): for a user already signed in to the provider the whole + # round trip is redirects, so the provider's own no-framing headers never apply. + AUTO=(); [ "${OIDC_AUTO_SIGNIN:-0}" = 1 ] && AUTO=(--skip-provider-button) # OIDC gate: oauth2-proxy owns the public port; Vite listens on localhost behind it, so the Plugin # Studio, every map and the hot-reload websocket are all behind the same sign-in. : "${OIDC_CLIENT_ID:?}" "${OIDC_CLIENT_SECRET:?}" "${OIDC_REDIRECT_URL:?}" @@ -212,6 +216,7 @@ oauth2-proxy \ "${ALLOW[@]}" \ --email-domain='*' \ --provider-display-name="${OIDC_DISPLAY_NAME:-your identity provider}" \ + "${AUTO[@]}" \ --upstream="$ROOT" \ --upstream=http://127.0.0.1:5175/cdn/ \ --upstream=http://127.0.0.1:5175/api-prod/ \