← djfable · protocol · faq

changelog

what actually happened at the booth, dated. every line landed on hardware with an operator at the decks.

2026-07-20 — pinned target, no more focus hijack

The wheel-byte injector into Claude Code's alt-screen was riding tmux follow-active-pane, so scrubs meant for FABLE landed on whichever pane the operator's cursor happened to be over — usually the KIMI pane, sometimes an idle shell. Fix was to resolve the FABLE pane by pane ID at 4 Hz and cache it in a background thread; the 2 kHz MIDI loop reads the cached target only.

receipt: /tmp/dragons-state.json.active_targets.fable pins the resolved pane ID. Real target changes invalidate the last effort receipt so the fader value is re-applied to the new pane.

2026-07-20 — alt-screen wheel bytes still the right route

Claude Code renders on an alt-screen. tmux copy-mode can't reach it. The daemon injects SGR mouse-wheel byte sequences at the pane cursor, which the alt-screen virtualizer treats as real wheel events — same shape it expects from a system mouse. That's why the scrub feels like scrolling instead of stepping.

2026-07-20 — three-fault booth debug (live)

1. dead layout file  —  the rig's tmux layout json was stale;
                        new panes weren't landing where the daemon expected
                        them. FABLE ended up in a pane the daemon didn't
                        know about, so nothing scrubbed.

2. follow-active-pane —  the wheel-byte injector was chasing the operator's
                        cursor instead of the FABLE pane. cursor over KIMI
                        made KIMI scrub when the operator meant FABLE.
                        pinned target = booth pane by ID, not by focus.

3. serato-starved MIDI  the Rane's Serato handshake left platter output
                        gated to ~0.25 ticks/sec (down from native ~1000
                        tps). scrubs looked "dead" but were actually one
                        MIDI event every 4 seconds. cleared by re-issuing
                        the native-mode handshake before subscribing.

All three cleared in one live session. This page was written from the booth after they did.

2026-07-20 — the kimi-code Enter discovery

Sending tmux send-keys Enter to KIMI wasn't submitting — the kimi composer runs the Kitty keyboard protocol and eats \r as a newline in-buffer. The submit sequence is \x1b[13u (CSI-u). FABLE's alt-screen composer takes plain Enter. Per-deck delta lives in the daemon so the cross-drive protocol actually crosses.

2026-07-20 — first cross-drive over flasmon

Working topic on both decks: flasmon.com — the sodium D-line as a chemically-pumped emitter and the photon chemical potential μγ. KIMI drafts, FABLE audits (or vice versa), DF scrubs backward through the disagreement with the platter. That turn was the first real research use of the rig, not a rig demo.

2026-07-20 — v0 — site up

djfable.com + djfable.cc inducted (Cloudflare zone, NS-flip to nia+thaddeus, activation), bound to a workers-assets worker. www.* → apex 301, hardening headers. no fake screenshots; deck + tape ASCII are rendered live, prompts are canned SIM.

source: github.com/DanielleFong/djclaude · protocol: djfable.com/protocol