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/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/ \ diff --git a/documentation/readme-images/deploy5-desktop-rudder.png b/documentation/readme-images/deploy5-desktop-rudder.png new file mode 100644 index 000000000..78f0ca1e2 Binary files /dev/null and b/documentation/readme-images/deploy5-desktop-rudder.png differ 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.