# Seeding (fresh dev DB, `T3CODE_DEV_SEED=0 vp run dev`)
node apps/server/src/bin.ts project add --base-dir <worktree>/.t3 --title "Demo app" <scratch git repo>
for t in "Fix login bug" "Add dark mode" "Write release notes"; do
  node apps/server/src/bin.ts thread start --base-dir <worktree>/.t3 --provider claudeAgent --model claude-haiku-5-5 \
    --title "$t" --wait <scratch git repo> "Reply with the single word OK. Do not run tools."
done

# Logger, evaluated in the page before pressing shortcuts (Chromium, 1280x800)
```js
window.__log = [];
const t0 = performance.now();
const rec = (k, v) => window.__log.push(`${Math.round(performance.now()-t0)}ms ${k}: ${v}`);
new MutationObserver((muts) => {
  const seen = new Set();
  for (const m of muts) {
    const el = m.target.nodeType === 1 ? m.target : m.target.parentElement;
    const live = el && el.closest('[aria-live],[role=status],[role=alert],[role=log]');
    if (live && !seen.has(live) && live.textContent.trim()) {
      seen.add(live);
      rec('live(' + (live.getAttribute('aria-live') || live.getAttribute('role')) + ')', live.textContent.trim().slice(0, 160));
    }
  }
}).observe(document.body, { subtree: true, childList: true, characterData: true });
document.addEventListener('focusin', (e) => rec('focus', e.target.getAttribute('aria-label') || e.target.tagName), true);
window.__mark = (s) => rec('KEY', s);
```
Keys pressed with real keyboard events: Ctrl+Shift+[ / ], Ctrl+Shift+S, Ctrl+Z, Ctrl+Shift+P, Ctrl+Shift+M, Ctrl+Shift+ArrowDown.
