docs: record the theme-Proxy identity trap and the agent-drivable live smoke #51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "clfy-docs-proxy-trap-smoke"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Docs only — no code. Three facts learned shipping #49/#50 that CLAUDE.md should carry.
1. New "convention that bites": pi's Theme arrives as two object identities
pi hands claudify the same logical theme as both the instance and a forwarding Proxy,
sharing one
fgColorscontainer. Keying per-theme state on the theme object gives eachidentity its own entry — so whichever arrives second sees claudify's own override already
installed and misrecords it as the theme's original, permanently stranding the override.
This is what broke
accentColor: themerestore (fixed in #49,c78b609). It was latent forthe
claudeaccent too, pre-dating that work. Key such state ontheme.fgColorsinstead,which forwards through the Proxy. Worth a standing warning because any future per-theme state
in
index.tswalks into it.2. The pi-session rule was true but misleading
"Do not launch an interactive pi session — pi hangs forever under a headless pseudo-terminal"
made the mandated pre-release smoke a human-only step. Headless is the operative word: a
detached tmux session gives pi a real PTY, and an agent can drive it with
tmux send-keysand read it with
tmux capture-pane -e -p.Proven this session — the entire CLFY-21 smoke ran unattended: opened
/claudify, walkedHub → Theme → Accent, committed a custom hex, watched it recolor live, switched back to
theme, confirmed pi's teal restored, and pressed/to exercise slash-autocomplete (the2.3.0 crash reproducer). The rule is corrected rather than deleted — the headless-hang fact is
still true and still worth warning about, and the tests remain the day-to-day verification.
3. The smoke needs BOTH package declarations swapped
~/.pi/agent/settings.jsonand<repo>/.pi/settings.jsoneach declarenpm:@owlburtoe/pi-claudify. Swap only one and the smoke silently exercises the publishednpm build — which is exactly how the first 2.3.1 smoke attempt tested the broken copy.
CLAUDE.md hinted at this; it is now unambiguous that it is two files.
Validation
Documentation only; no code touched, so the suite is unaffected (master was 15/15 green and
tsc --strictclean ataf8eeaf).AGENTS.mdis a symlink toCLAUDE.mdand followsautomatically.