Files
waggle-os/docs/plans/APP-DIR-AUDIT-2026-04-19.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

6.6 KiB

app/ Directory Audit — 2026-04-19 (L-15 findings)

L-15 was scoped as a 1-hour "verify + remove dead app/ frontend." Reality is larger: the React side of app/ was already removed in commit a883050 (Apr-12) but left behind broken build hooks and a 159M library of unused bee-themed brand assets. This doc pins down what's dead, what's alive, and what needs your call.

What's alive

  • app/src-tauri/ (6.9G with build artifacts) — Rust shell for the Tauri desktop binary. Used by tauri:build / tauri:dev in app/package.json. Keep.
  • app/scripts/ — build-sidecar / bundle-native-deps / bundle-node scripts used by tauri:build. Keep.
  • app/public/waggle-logo.{svg,jpeg} — referenced by app/index.html, still loaded by Tauri webview. Keep.
  • Tauri config (app/tauri.conf.json, app/icons/, Cargo.toml) — Keep.

What shipped broken

1. app/src/ frontend was deleted but build hooks remained

Commit a883050 (Apr-12) removed 77 dead .tsx files from app/src/, leaving only app/index.html (references /src/main.tsx which no longer exists), app/vite.config.ts, app/tailwind.config.ts, and an empty app/src/components/ directory. Running cd app && npx vite build now fails with:

Failed to resolve /src/main.tsx from D:/Projects/waggle-os/app/index.html

Fixed this commit:

  • Dockerfile line 34 — RUN cd app && npm run buildRUN npm run build
  • Dockerfile line 88 — COPY /app/app/dist app/distCOPY /app/dist dist
  • Dockerfile line 97 — WAGGLE_FRONTEND_DIR=/app/app/dist/app/dist
  • .github/workflows/ci.yml line 59 — cd app && npx vite buildnpm run build
  • .github/workflows/release.yml lines 53, 108 — cd app && npm run buildcd apps/web && npx vite build (Tauri release needs apps/web/dist specifically per tauri.conf.json's frontendDist: "../../apps/web/dist")
  • packages/server/tests/deployment.test.ts — assertions updated to match.
  • packages/server/tests/web-frontend.test.ts — stale comment fixed.
  • packages/server/src/local/index.ts (earlier this session, task 14) — server's frontendDir lookup now prefers <root>/dist/ over app/dist/.

2. app/package.json still defines broken scripts

app/package.json keeps dev, build, preview, typecheck scripts that all require app/src/main.tsx. They'll fail if invoked. Keeping them for now — they're not on any critical path after this commit's fixes, and removing them risks surprising someone's muscle memory.

Proposed follow-up: delete the broken scripts + app/index.html + app/vite.config.ts + app/tailwind.config.ts + empty app/src/components/ once we're sure nothing in scripts/ or packages/ references them.

What's orphaned (your call needed)

packages/ui/ + app/public/brand/ — 159M of unused brand assets — DELETED 2026-04-20

Decision (Marko, 2026-04-20): option 1 — delete both.

What was deleted:

  • packages/ui/ (12M) — entire workspace package, only consumer was dead app/
  • app/public/brand/ (159M) — 26 bee sprites + 18 app icons + hex textures
  • app/tests/e2e/regression.test.ts — the only file that imported @waggle/ui
  • "@waggle/ui": "*" removed from app/package.json deps
  • package-lock.json regenerated from scratch (0 remaining refs)

What's preserved:

  • app/tests/e2e/{chat,startup,workspaces}.test.ts — server integration tests that import from @waggle/server, unrelated to dead UI
  • apps/www/public/brand/ — landing-page brand assets (separate directory, unrelated)
  • P10 bee persona sprites in apps/web/src/assets/personas/ — different size/style for 64px avatars, unrelated

Follow-up noted:

  • bun.lock still has @waggle/ui workspace entries (couldn't regen — bun install network-blocked in this session). Stale entries are harmless since npm is the primary package manager per CLAUDE.md, but next successful bun install will clean them up.

Below — the original audit text preserved for history:

Found: app/public/brand/ contains 26 bee sprites (dark + light variants for 13 personas: analyst, architect, builder, celebrating, confused, connector, hunter, marketer, orchestrator, researcher, sleeping, team, writer) plus 18+ app icons, plus hex textures. Total 159M.

Who references them: Only packages/ui/src/components/{ChatArea,EventStream,MemoryBrowser}.tsx, which imports paths like /brand/bee-orchestrator-dark.png.

Who imports @waggle/ui: Only app/package.json — and app/ has no React frontend, so @waggle/ui is effectively orphaned.

apps/web/ does NOT import @waggle/ui — the new desktop OS UI in apps/web/src/ built its own component system without it.

Style: The pre-existing brand bees are hex-themed geometric full-size illustrations (~140-150px, black background) designed for empty-state hero slots in the old Tauri sidebar UI. They are NOT designed for 64px persona avatars. So this session's P10 AI-generated 64px avatars are a different use case; no overlap.

Your options:

  1. Delete packages/ui/ + app/public/brand/ — saves 159M + simplifies the workspace. Risk: if any future work wants hero-size bee illustrations, they'd regenerate (P10 template in apps/web/src/assets/personas/README.md can be tweaked up to 2K size).
  2. Keep packages/ui/ alive, wire into apps/web — use the existing hero illustrations in empty states (Chat, Events, Memory). That's ~half a day of integration work; no new assets needed.
  3. Park both, ship L-15 as just the CI/Dockerfile fix. What I did this commit. Zero risk, the ~325M worth of stale artifacts (app/dist/ at 165M + app/public/brand/ at 159M) stays on disk but the build chain is unblocked.

Recommendation: option 3 for now. Revisit option 1 vs 2 once benchmarks clear and polish sprint continues.

Summary

Item Status
Broken cd app && npm run build hooks Fixed (Dockerfile + 2 workflows + 2 tests)
Server frontendDir preference Fixed (task 14 earlier this session)
Empty app/src/components/ Left in place; harmless
app/index.html + vite.config.ts (reference missing main.tsx) Left in place; no longer called
app/package.json broken scripts Left in place; no longer called
app/dist/ 165M stale artifact Left in place; no longer served
packages/ui/ + app/public/brand/ 159M Deferred — needs your call on option 1/2/3

Net of this commit: CI/Docker build chains unblocked. cd app && npm run build no longer required anywhere. The larger orphan (packages/ui + brand assets) is documented for a later decision.