| name | run-app |
| description | Build, run, and screenshot the Towles Tool desktop app (Tauri 2 + WebKitGTK shell). Use when asked to run, start, build, test, or screenshot the app, or to launch it for the user to check. |
Running the desktop app
Tauri 2 app: crates-tauri/tt-app (Rust) + apps/client (React/Vite).
"Running" means the real WebKitGTK WebView with real Rust IPC — never a
bare browser against the Vite dev server.
Paths below are relative to the repo/task root.
Prerequisites
Run (agent path) — start here
npm run dev:drive > /tmp/dev-drive.log 2>&1 &
disown
until node scripts/drive.mjs status 2>/dev/null | grep -q '"ready":true'; do sleep 5; done
Cold cargo build, so this takes several minutes (5-7 observed) the first
time in a task — poll status, don't guess a sleep. Full protocol:
e2e/README.md.
node scripts/drive.mjs invoke settings_get
node scripts/drive.mjs eval "document.title"
node scripts/drive.mjs shot cockpit
node scripts/drive.mjs clicktext "Board"
node scripts/drive.mjs click "input[name=foo]"
node scripts/drive.mjs type "input[name=foo]" "x"
node scripts/drive.mjs url /
Read the screenshot — blank/error means it didn't launch. Ports
resolve automatically per task, no config needed.
Run (human path)
npm start
npm run dev
Neither is automatable (no WebDriver server attached) — use dev:drive
for anything an agent needs to drive.
Per this repo's CLAUDE.md: after finishing a task that touches the app,
launch npm start in the background as the last step so it's already on
screen for Chris — doesn't replace driving it yourself first.
Gotchas
Troubleshooting