Dot Palette
repo: ~/Projects/dot-palette · 3 commits · 0 in last 24h, 0 in last 7d ·
Skills used
- /claude2
- /code2
- /quit1
- /run1
Creative ideas + design notes
Commits with substantial prose (≥120 chars) — the rationale behind each move.
9fc1f03 · 2026-09-17 · dot-palette: guard IPC calls so the palette degrades gracefully without the preload bridge (TK-11877)
Empirically seeded by cycle-1 screenrecord: opening index.html in a plain browser
(no Electron preload) threw uncaught 'Cannot read properties of undefined (reading
move/quit)' on grip-drag + close. window.palette?.move?.() / ?.quit?.() no-op when
the bridge is absent; identical in Electron where preload defines window.palette.
Isolated screenrecord re-test: 10 error-bearing records -> 0 (5 passes clean).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017wvstRQCpemptApArrjQRg
bc3244f · 2026-09-17 · dot-palette: side-effect-free test seam + selftest + safe-by-default screenrecord (TK-11877)
Hardening pass (Cody FIX-FIRST gated). server.js gains 4 test seams
(DOTPALETTE_ENGINE/_BIN/_TTY_OVERRIDE/_PORT_FILE) each with a || fallback, so
the full HTTP->engine path can be exercised on an ephemeral port with a mock
engine + fake tty, never touching a real iTerm2 tab or the live :9791 palette.
Production isolation is CODE-enforced, not assumed: start.command unsets the
seams and electron-main.js strips them from the spawned server.js env, so a
stray seam in the shell can never leak in to mock the engine or mis-target a tty.
selftest.js: 7/7 incl 2 NEGATIVE cases (reddens on injected engine failure +
unresolvable tty) per CLAUDE.md TK-11431 amд3. screenrecord/run.js: was hitting
the LIVE palette (repainting the focused tab, 5x); now boots its own isolated
instance by default, live only on explicit --live.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017wvstRQCpemptApArrjQRg
File tree
9 files tracked. Click any to browse the source at HEAD.
rendered in 1ms