ShellDeck Desktop is a Tauri v2 thin client. It does not bundle or start the ShellDeck server; it opens a user-configured server URL in a persistent desktop webview.
- Node.js 22+ and npm.
- Rust stable.
- Linux GUI build packages when building locally:
libwebkit2gtk-4.1-dev,build-essential,libssl-dev,libayatana-appindicator3-dev,librsvg2-dev,curl,wget, andfile. - No local secret files are required for unsigned local checks.
cd desktop
npm ci
npm run buildIf the Linux WebKitGTK development package is installed, also run:
cd desktop/src-tauri
cargo checkTo build local Linux bundles:
cd desktop
npm run tauri build -- --bundles appimage,debGenerate the Tauri updater keypair once:
cd desktop
npm run tauri signer generateKeep the private key out of the repo. Put only the public key in src-tauri/tauri.conf.json, replacing REPLACE_WITH_TAURI_UPDATER_PUBKEY.
Store the private key and password in GitHub Actions secrets:
TAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PRIVATE_KEY_PASSWORD
The release workflow also expects Cloudflare R2 credentials by secret name:
CLOUDFLARE_ACCOUNT_IDCLOUDFLARE_API_TOKENSHELLDECK_R2_BUCKET
The R2 bucket must serve https://dl.shelldeck.app/desktop/... through its custom domain. No R2 credential value belongs in this repo.
- Update the desktop version in
desktop/package.json,desktop/src-tauri/Cargo.toml, anddesktop/src-tauri/tauri.conf.json. - Make sure the updater public key placeholder has been replaced with the generated public key.
- Commit the version change.
- Tag the release:
git tag desktop-vX.Y.Z
git push origin feat/shelldeck-desktop
git push origin desktop-vX.Y.ZThe tag triggers .github/workflows/desktop-release.yml. It builds Linux AppImage and .deb bundles on ubuntu-latest, builds the Windows NSIS installer on windows-latest, signs updater artifacts with the Tauri signing secrets, writes per-target latest.json, uploads artifacts to R2, and attaches them to the GitHub Release.
Windows code signing is intentionally skipped in v1, so Windows may show a SmartScreen warning until Authenticode signing is added.