feat!: remove Tauri desktop app surface — CLI + daemon only#3353
Conversation
Removes the Loom desktop GUI entirely. ~77k LOC deletion across the
src-tauri/ Rust crate, src/ Svelte/TS frontend, JS toolchain config,
e2e tests, and Tauri-specific documentation. The CLI + daemon
(loom-daemon, loom-tools, mcp-loom, scripts, skills, slash commands)
become the canonical user surface going forward.
Removed:
- src-tauri/ (Rust GUI shell, tauri.conf.json, capabilities, gen, icons)
- src/ (TS frontend, lib/, test/)
- Frontend toolchain: tsconfig.json, vite.config.ts, vitest.config.ts,
playwright.config.ts, biome.json, tailwind.config.js, postcss.config.js,
pnpm-lock.yaml, pnpm-workspace.yaml, index.html
- e2e/ test suite and .github/workflows/e2e.yml
- scripts/dev-app*.sh (GUI dev scripts)
- docs/testing/factory-reset-loop.md (Tauri-only flow)
- docs/testing/README.md (frontend testing guide)
- docs/architecture/system-overview.md (frontend-centric)
- docs/guides/architecture-patterns.md (frontend patterns)
- docs/mcp/loom-ui.md and docs/mcp/loom-logs.md (frontend MCP refs)
- docs/adr/0002, 0005, 0007 (Tauri/frontend ADRs)
Decoupled (edited, not deleted):
- Cargo.toml workspace members: drop "src-tauri", keep loom-api + loom-daemon
- mcp-loom/src/shared/config.ts: remove TAURI_LOG export
- mcp-loom/src/tools/logs.ts and mcp-loom/README.md: drop tail_tauri_log refs
- scripts/version.sh: 7 -> 5 version-bearing files (drop src-tauri JSON+TOML)
- .github/workflows/release.yml: ship loom-daemon binaries instead of DMGs
- .github/workflows/ci.yml: drop frontend lint/typecheck/test jobs
- scripts/install-loom.sh + scripts/install/create-pr.sh: drop Tauri install paths
- loom-daemon/src/init/git.rs: detect Loom source repo via loom-api/ + loom-daemon/
(no longer src-tauri/); legacy .app bundle resolution kept defensively
- loom-daemon/src/main.rs: replace Tauri App Mode hints with Daemon Mode hints
- loom-tools shepherd builder phase: drop src-tauri/ from language patterns
Doc rewrites:
- CLAUDE.md: rewrite "Usage Modes" section, drop "Tauri App Mode", update
version-files count from 7 to 5
- README.md: drop Loom.app references, update Development section
- defaults/CLAUDE.md, defaults/.loom/CLAUDE.md, defaults/.claude/README.md,
defaults/.claude/commands/loom/*.md, defaults/roles/README.md: scrub Tauri
- docs/agents.md, docs/guides/{quickstart-tutorial,cli-reference,git-workflow,
getting-started,daemon-dev-mode,dev-workflow,code-quality,testing,
troubleshooting,common-tasks,development}.md, docs/api/README.md,
docs/mcp/README.md, docs/adr/{README,0008}.md: scrub Tauri
- package.json: rewrite description from "multi-terminal desktop application
for macOS" to "AI-powered development orchestration: CLI + daemon"; remove
orphaned tauri:*, app:*, build, dev, lint, test:unit, test:e2e scripts;
drop @tauri-apps/*, @xterm/*, biome, playwright, tailwind, vite, vitest
dependencies
Verification:
- cargo check --workspace passes with ["loom-api", "loom-daemon"]
- cargo test --workspace passes (78 tests across daemon + integration)
- mcp-loom build passes (tsc + esbuild)
- loom-tools tests pass (classify_changed_files reshaped for daemon-only)
- ./scripts/version.sh check passes on the reduced file set
- git grep -i 'tauri|loom\.app' returns only WORK_LOG.md (historical PR
titles) and quickstarts/desktop/ (a Tauri *template* for users building
their own Tauri apps with Loom orchestration — not Loom's GUI)
DMG release artifacts published before this change remain available on
prior GitHub releases as historical artifacts. The project name "Loom" is
unchanged; only the desktop-app surface goes.
Closes #3330.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Changes needed: small targeted fix to Review summaryVerified locally on the PR branch:
Diff size matches expectations: 277 files, 1465 / 77259 LOC. Architecturally clean. Blocking:
|
|
Fixed: dropped npm-audit job from security.yml (and removed pnpm-lock.yaml from the paths trigger). Ready for re-review. |
|
LGTM after security.yml fix. Doctor's commit 085720a cleanly removes the orphaned npm-audit job and its pnpm-lock.yaml path trigger; cargo-audit and codeql jobs are preserved, YAML is valid, and the Security Scan workflow now passes (was failing before the fix). All CI green, mergeStateStatus CLEAN. Approved. |
Captures the 8 PRs that landed since v0.8.1: Tauri removal (#3353), Claude Code 2.1+ compatibility hardening (#3352, #3356, #3348), post-build quality gate (#3355), host-sleep readiness check (#3357), and complementary builder/judge perf-guidance docs (#3351, #3354). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Summary
Removes the Tauri desktop GUI from Loom. The CLI + daemon (
loom-daemon,loom-tools,mcp-loom, scripts, skills, slash commands) becomes the canonical user surface going forward. ~77k LOC deletion + workflow rewrite + doc scrub, landed as a single coherent PR per the issue's scope note.Sibling proposal #3317 (daemon deprecation) was closed as not planned — daemon stays because
spawn-claude.shtoken rotation depends on its per-spawn process model. Target shape: CLI + daemon, no GUI.What changed
Removed
src-tauri/(Rust GUI shell,tauri.conf.json,capabilities/,gen/,icons/,build.rs)src/(TypeScript frontend,lib/,test/,main.ts,style.css,vite-env.d.ts)tsconfig.json,vite.config.ts,vitest.config.ts,playwright.config.ts,biome.json,tailwind.config.js,postcss.config.js,pnpm-lock.yaml,pnpm-workspace.yaml,index.htmle2e/test suite and.github/workflows/e2e.ymlscripts/dev-app*.sh(GUI dev scripts) — daemon dev scripts (dev-daemon.sh,daemon-headless.sh,stop-daemon.sh) survivedocs/testing/factory-reset-loop.md,docs/testing/README.md,docs/architecture/system-overview.md,docs/guides/architecture-patterns.md,docs/mcp/loom-ui.md,docs/mcp/loom-logs.md,docs/adr/0002,0005,0007Decoupled (edited, not deleted)
Cargo.tomlworkspace members: drop"src-tauri", keep["loom-api", "loom-daemon"]mcp-loom/src/shared/config.ts: removeTAURI_LOGexportmcp-loom/src/tools/logs.ts+mcp-loom/README.md: droptail_tauri_logrefsscripts/version.sh: 7 → 5 version-bearing files (dropsrc-tauri/tauri.conf.jsonandsrc-tauri/Cargo.toml).github/workflows/release.yml: rewritten to shiploom-daemonbinaries (Apple Silicon + Intel) instead of DMGs.github/workflows/ci.yml: drop frontend lint/typecheck/test jobs; keep Rust + mcp-loom + installer-testsscripts/install-loom.sh+scripts/install/create-pr.sh: drop Tauri install paths; install hints now point at Daemon Modeloom-daemon/src/init/git.rs: detect Loom source repo vialoom-api/+loom-daemon/directories (no longersrc-tauri/); legacy.appbundle resolution kept defensively for third-party packagersloom-daemon/src/main.rs: replaceTauri App Modeinstall hints with Daemon Mode hintsloom-tools/src/loom_tools/shepherd/phases/builder.py: dropsrc-tauri/from language path patternsDoc rewrites
CLAUDE.md: rewrite "Usage Modes" section, drop "Tauri App Mode", update version-files count from 7 to 5README.md: dropLoom.appreferences, update Development section to use daemon scriptsdefaults/CLAUDE.md,defaults/.loom/CLAUDE.md,defaults/.claude/README.md,defaults/.claude/commands/loom/*.md,defaults/roles/README.md: scrub Tauridocs/agents.md,docs/guides/{quickstart-tutorial,cli-reference,git-workflow,getting-started,daemon-dev-mode,dev-workflow,code-quality,testing,troubleshooting,common-tasks,development}.md,docs/api/README.md,docs/mcp/README.md,docs/adr/{README,0008}.md: scrub Tauripackage.json: rewrite description from "multi-terminal desktop application for macOS" to "AI-powered development orchestration: CLI + daemon"; remove orphanedtauri:*,app:*,build,dev,lint,test:unit,test:e2escripts; drop frontend dependenciesAcceptance criteria
src-tauri/,src/, and frontend toolchain config files removedCargo.tomlworkspace builds with["loom-api", "loom-daemon"]only —cargo check --workspaceandcargo test --workspacepass (78 tests across daemon + integration)npm run buildpassesscripts/version.sh checkworks end-to-end with the reduced file set (5 files in sync).github/workflows/release.ymlrewritten to produce only the surviving artifacts (loom-daemon binaries)tauri,Loom.app,src-tauri,tauri:dev,tauri:build,pnpm tauri, orTauri App Modein tracked files — see verification note belowCLAUDE.md"Usage Modes" section updated; "Three-Layer Architecture" remainspackage.jsondescription rewritten; orphaned scripts removedVerification command
git grep -i 'tauri\|loom\.app' -- . ':!CHANGELOG.md' ':!.git' ':!WORK_LOG.md' ':!quickstarts/'returns no results.The full unfiltered version of the verification command returns matches in two intentional exceptions:
WORK_LOG.md— historical PR titles (e.g., "PR test: improve test coverage for src-tauri Rust backend #2232: test: improve test coverage for src-tauri Rust backend"). These are records of past work and follow the same precedent as theCHANGELOG.mdexclusion called out in the issue.quickstarts/desktop/— a quickstart template for users building their own Tauri desktop apps with Loom orchestration. This is not Loom's GUI; it's a starter project. Thequickstarts/README.mdlists it as a (planned) template alongsidewebappandapitemplates. Removing Tauri references here would break the template.Downstream coordination (handled after merge)
spheresemi/spherehas ~10 command files referencingTauri App ModeandLoom.app. File a coordination issue in sphere after this merges (do not block this PR).Test plan
cargo check --workspace— passescargo test --workspace --no-fail-fast— passes (78 tests, all green)cd mcp-loom && npm run build— passes (tsc + esbuild)cd loom-tools && uv run pytest tests/shepherd/test_phases.py -k 'classify_changed' -x -q— passes (7 tests)./scripts/version.sh check— passes (all 5 version files + Cargo.lock in sync at 0.8.1)git grep -i 'tauri\|loom\.app' -- . ':!CHANGELOG.md' ':!.git' ':!WORK_LOG.md' ':!quickstarts/'— returns no resultsCloses #3330.
🤖 Generated with Claude Code