chore: remove the Studio desktop app

Merged
GU
2d ago
+338-121847

What is this contribution about?

Discontinues the Studio desktop app (Tauri) and removes it from the repository.

  • apps/native: the Tauri shell, the Rust local API, and the native e2e suites are deleted.
  • apps/web:
    • The VITE_TAURI_APP build mode is gone: index.native.*, native-boot.js, src/desktop/, src/lib/desktop/, the build:native and dev:native scripts, and the @tauri-apps/* and desktop-terminal xterm addon dependencies.
    • Every useIsDesktopApp() gate is collapsed to the web branch, and code that only existed for desktop goes with it:
      • the download-app dialog and its triggers;
      • the IDE deep links;
      • the worktree reclaim on archive;
      • the restart-to-update button;
      • the desktop OAuth browser adapter;
      • the x-deco-fast-preview header, which only the desktop interceptor read.
    • The i18n keys left unused by this are removed from both en and pt-br.
  • apps/api:
    • The /api/auth/desktop routes are removed, along with their e2e spec.
    • local.studio.decocms.com is no longer allowed as a CORS origin or as an OAuth redirect_uri.
    • The 409 for desktop-only coding-agent threads now says the chat ran in the discontinued desktop app.
  • CI and release:
    • native.yml, release-native.yaml, and scripts/check-web-bundle-desktop-free.ts are deleted.
    • release-changes.ts no longer bumps apps/native/package.json, and the none deploy scope it used is gone.
    • The cargo lefthook hooks and the knip entries for native are removed.
  • Development: remove the deleted desktop manifest from the new Compose Watch image, watch rules, and build-context exceptions. Preserve the latest Compose and GitHub Copilot behavior when resolving rebase conflicts.
  • Distribution:
    • The deco-studio cask is kept but marked disable!. brew install and brew upgrade now print the discontinuation message, and brew uninstall --zap still cleans up existing installs.
    • install.sh stays at its published URL and prints the same notice plus uninstall steps, then exits 1.

Kept on purpose (persisted data):

  • local-api stays in the sandboxMap schema.
  • Desktop-only harness ids stay on thread rows.
  • Both remain readable and guarded; nothing new creates them.
  • The decopilot harness's portability seams (hooks that are optional for non-cluster runtimes) are untouched.

How did you verify your code works?

  • Rebased the full stack onto main at 3b83e3b0c7; all four remote branches contain their immediate base and match their local heads.
  • Pinned Bun 1.3.14: frozen-lockfile installation passed.
  • docker compose config --quiet passed; all 16 development-image COPY sources exist and the deleted desktop manifest is absent from COPY/watch/ignore entries.
  • API and web typechecks passed.
  • bun run verify: formatting, lint, and Knip passed. The unit suite completed with 10,791 passing tests and three timing failures in lifecycle-watcher, remote-provider, and thread-connection tests.
  • Focused rerun of those three files plus runtime setup, Copilot credential handling, model permissions, and release scope: 201 passed, 0 failed.
  • Baseline check on main for the two sandbox files: 44 passed, 0 failed. The full-suite timing failures remain unresolved; they are not claimed to be pre-existing failures.
  • Production web build validation remains incomplete: the fresh pinned-Bun attempt did not reach Vite compilation output before it was stopped, consistent with the earlier local build attempts.
  • Integration/E2E suites and the full Docker development-image build were not run.

Screenshots/Demonstration

No new UI. The visible change is that the "Install on Mac/Linux" account menu item and the download CTAs no longer appear.

How to Test

  1. bun install && bun run dev, then sign in. The account menu no longer offers a desktop download.
  2. Open a thread whose harness is codex or opencode. The input is blocked with the new "can't be continued here" message.
  3. curl -fsSL <host>/install.sh | sh prints the discontinuation notice.

Migration Notes

  • Installed desktop apps keep their current version. The native-updates prerelease is not deleted, so the updater has nothing new to fetch.
  • Once this merges, the cask tap is disabled.
  • No database migrations.

Review Checklist

  • PR title is clear and descriptive
  • Changes are tested and working โ€” full-suite timing and local build limitations above
  • Documentation is updated (if needed)
  • No breaking changes โ€” removes the desktop app and its /api/auth/desktop routes

๐Ÿค– Generated with Claude Code


Summary by cubic

Discontinues the Studio desktop app (Tauri) and removes it from the repository โ€” the Rust local API, the desktop build mode and desktop-only paths in apps/web, the /api/auth/desktop routes and local.studio.decocms.com allowances in apps/api, and the native CI/release pipeline.

Migration

  • The deco-studio Homebrew cask is disabled: brew install/upgrade print the discontinuation message, and brew uninstall --zap still cleans up installs; install.sh prints the same notice and exits 1.
  • Installed apps keep their current version with no further updates.
  • Persisted local-api sandbox records and desktop-only harness thread rows stay readable and guarded; nothing new creates them, and resuming those chats returns a 409 saying the chat ran in the discontinued app.