Run before shipping. ~20 min. Check each box.
- Rust + capabilities schema:
cargo check --manifest-path src-tauri/Cargo.toml→ must finish with no errors ✓ (passed 2026-03-27) - JS syntax:
node --check src/app.js→ must print nothing ✓ (passed 2026-03-27) - Full release build:
npm run tauri build→ must complete without errors
-
npm run tauri dev— window opens, no console errors - Sidebar shows "SESSIONS" +
+button - Input textarea is disabled (no session yet)
- Click
+→ pick any non-pixel-terminal folder - No warning dialog appears
- Session card appears; sprite animates; "Starting in …" message
- Type
say hello in one word, press Enter → response appears, sprite goes idle - Tool-using prompt (e.g.
list files here) → tool lines show…then✓
-
Click
+→ pick/path/to/pixel-terminal(the app's own directory) -
Warning dialog appears with "proceed read-only" + "cancel" buttons
-
Press cancel → dialog closes, NO session created
-
Repeat → click "proceed read-only" → session created with
(read-only)in system message -
In that session, ask:
edit any file in this directory→ Claude refuses (Edit disabled) -
In that session, ask:
run: echo test > /tmp/pttest.txt→ Claude refuses (Bash disabled) -
Clean up:
rm /tmp/pttest.txt(if somehow created) -
Pick
pixel-terminal/srcsubdirectory → warning still appears (upward walk works) -
Open browser devtools (Cmd+Option+I) — confirm NO
isSelfDirectory check failed:warning in consoleIf console shows
isSelfDirectory check failed:: sentinel detection is broken. Fix: insrc-tauri/capabilities/default.json, movetestfromshell:allow-executeinto theshell:allow-spawnallow array, then change.execute()→.spawn()inisSelfDirectorywith a close-event listener.
- Send a prompt that triggers 10+ tool calls → no jank, scroll stays at bottom throughout
- Open two sessions; switch with Cmd+1 / Cmd+2 → instant switch, no animation flash on old messages
- Scroll UP in a long session, send a new message → scrolls back to bottom
- Click
✕on a session card → confirm modal button says "terminate" (not "proceed read-only" — verifies okLabel resets between calls) - Confirm → card removed, switches to next session or empty state
- Press Escape during active response → "Interrupted" message, ERR state
- Click red X (window close) → confirm modal with session count, cancel leaves app open
- Drag the resize handle → sidebar width changes smoothly (no jank)
- Release → width stays at dragged position
- Commit test results and any fixes found
- Tag the release commit:
git tag v0.1.0-ship && git push --tags