# Project: tiletopia A Windows desktop app for running and arranging many WSL terminals at once. Built primarily to manage multiple `claude` sessions across projects in parallel; works for any multi-shell workflow. ## Working agreement - This is a git repo with `origin` on Forgejo at `https://git.rdx4.com/megaproxy/tiletopia.git` (private). HTTPS auth uses the token in `~/.git-credentials` — pushes are non-interactive. - Commit after each logical change with a one-line imperative message; `git push` after each commit (or at minimum before ending the session). - Read `memory.md` at session start. Update it before ending the session. - Never commit secrets — see `.gitignore` and the rules in `~/claude/CLAUDE.md`. ## Project-specific notes - **Stack:** Tauri 2 + React 18 + TypeScript + Vite + pnpm + xterm.js + `portable-pty`. Mirrors `~/claude/projects/claude-usage-widget/` for toolchain choices. (Originally Svelte 5; migrated to React in commit `774b863` — released as 0.2.0.) - **Build target:** Windows `.exe` only. Rust toolchain lives on the Windows host, not WSL. - **Source location:** `D:\dev\tiletopia\` (Windows-native NTFS). Symlinked into WSL at `~/claude/projects/tiletopia` for editing convenience, but **all pnpm and cargo commands must run on the Windows host** against the `D:\` path — never the `\\wsl.localhost\...` UNC path (pnpm 11.x crashes inside `isDriveExFat`, and the underlying error gets swallowed). - **Run:** ```powershell cd D:\dev\tiletopia pnpm install pnpm tauri dev # iterate pnpm tauri build # NSIS installer at src-tauri\target\release\bundle\nsis\ ``` - **Validate in WSL:** `pnpm check` (`tsc --noEmit`) runs in WSL and validates the React/TS side without needing the Rust toolchain. - **Plan reference:** `~/.claude/plans/imperative-coalescing-feigenbaum.md` — the approved plan that drove the scaffold and the full M0–M5 milestone roadmap. - **Archived idea history:** the brainstorm phase + full session log lives at `~/claude/archive/ideas/wsl-mux/plan.md`.