openalice-desktop
**OpenAlice Social — native desktop client for the OpenAlice platform.**
Architecture rating
Strong substrate adoption — manifest 100, drift 100, code_health 100, 0 circular deps, 0 dead imports, AGENTS.md present and standard Tauri 2 layout, indicating uniform conventions across the shell.
Valid manifest (100) with clear summary, README + AGENTS.md present and roadmap 80, but feature score weak (52/100) and 10 missing docstrings on a thin codebase leave in-code architecture notes thin.
Tauri 2 capability model present (src-tauri/capabilities/ scopes permissions) and deep-link/auto-update flows wired, but no evidence of update signature verification or hardened CSP, and as a web-wrapper it inherits the social UI's authn rather than enforcing its own.
Auto-update and deep-link handling provide some resilience, but one god-module with max cyclomatic complexity 25 + 1 deep-nesting flag concentrate risk, and no visible timeout/retry/graceful-shutdown or error-handling signals for tray/PTT lifecycle.
No metrics, tracing, or health probe (Atlas health fails: 'no https endpoint in manifest exposes' — expected for desktop), structured logging unconfirmed; only intrinsic Tauri logging assumed, so observability is effectively absent.
Manifest owns zero tables; no migrations dir, no schema, no RLS/FK/constraints — a stateless desktop shell with no data layer to evaluate, scored conservatively for absence (no local persistence/secure-store signals shown).
No test directory or test files detected (migrations/tests presence empty) and inspector reports no test signals — zero coverage of deep-link parsing, PTT, or auto-update critical paths.
source · auto-grader-2026-06-16
Ecosystem manifest
.atlas-deps.ymlTauri 2 desktop shell for openalice-social — wraps the social web UI in a native window with tray, PTT, deep links, and auto-update.
- openalice-socialhttpvia SOCIAL_URL (hardcoded https://social.blal.pro)Loads the social UI in the native iframe — frontend served by openalice-social
- via CSP connect-src / wss://social-api.blal.proReal-time chat + event streams via openalice-social-api WS layer
- via tauri-plugin-updater endpoints (social-api.blal.pro)Auto-update checks: GET /api/v1/updates/check/{target}/{arch}/{current_version}
- desktop_binary: openalice-social-desktop
Roadmap · what's planned next
- desktop.bundle.macos-cross-compileP2planned1%Add a docker/macos build target producing signed .dmg artifacts so macOS users stop falling back to the browser PWA.
- desktop.signing.windows-authenticodeP1planned1%Wire Authenticode signing into the Windows MSI/EXE pipeline (cert via OA_WINDOWS_CERT_PFX) so SmartScreen stops flagging the installer as unrecognised.
- desktop.notifications.native-bridgeP1planned4%Forward unread-message events from the iframe to tauri-plugin-notification so the OS notification center fires when the window is minimised to tray.
- desktop.deeplink.route-restore-on-cold-startP3planned3%Persist the last-opened openalice:// path in the store and replay it after auto-update restart, so a chat deep-link no longer drops the user back at /chat root.
- desktop.ipc.screen-share-pickerP3planned4%Expose a get_screen_sources IPC command (using tauri's display API) so the in-iframe voice client can launch native screen-picker dialogs instead of the Chromium default.
Code composition
tokei · loc- Rust46.3%
- Shell22.6%
- JSON18.5%
- HTML9.1%
- TOML3.6%
- Rust46.3%
- Shell22.6%
- JSON18.5%
- HTML9.1%
- TOML3.6%
- Rust46.3%· 336
- Shell22.6%· 164
- JSON18.5%· 134
- HTML9.1%· 66
- TOML3.6%· 26
| Language | % code | code | comments | blanks | files |
|---|---|---|---|---|---|
| Rust | 46.3% | 336 | 20 | 40 | 2 |
| Shell | 22.6% | 164 | 20 | 37 | 4 |
| JSON | 18.5% | 134 | 0 | 0 | 3 |
| HTML | 9.1% | 66 | 3 | 5 | 1 |
| TOML | 3.6% | 26 | 0 | 3 | 1 |
| Markdown | 0.0% | 0 | 81 | 35 | 2 |
Telemetry ribbon · last 90 days
1 eventdesktop/ptt
1 feature- desktop.ptt.global-shortcutsrc-tauri/src/main.rs:47Registers a user-configurable global shortcut (default `Alt+V`) that emits `ptt-start` / `ptt-end` Tauri events, which are forwarded to the iframe via `postMessage` so the web app can activate voice without window focus. [tauri::command]
desktop/shell
1 feature- desktop.shell.iframe-hostsrc-tauri/src/main.rs:1Wraps `platform.blal.pro/chat` in a native Tauri window, delegating all UI to the web app while providing OS-level integration (tray, shortcuts, deep links, updater). ![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
desktop/updater
1 feature- desktop.updater.auto-checksrc-tauri/src/main.rs:110Polls `api.platform.blal.pro/api/v1/updates/check/{target}/{arch}/{version}` 5 s after launch; downloads silently with progress events, then emits `update-installed` so the frontend banner prompts the user to restart.
desktop/window
1 feature- desktop.window.state-persistencesrc-tauri/src/main.rs:199Saves and restores outer position and size across restarts via `tauri-plugin-store` (`settings.json`). Minimum size guard (800×600) prevents off-screen placement on multi-monitor setups.