feat: coco, the music ghost — a second agent on the desk - #7
Merged
Conversation
…music - music/brain.ts: deterministic zero-token intent parsing (D7) — control verbs anchored to whole commands, mood words to fixed search strings - music/youtube.ts: server-side track resolution via YouTube Data API v3 (key never reaches the browser; embeddable-filtered; honest no-key refusal) - music/store.ts: the event bus the desk agent calls the ghost over - music-ghost.tsx: the character — eyes only (no mouth), band-red volume with wisp skirt, beat bob at ~109 BPM, enjoy-arcs, drag + click controls, visible-size embed in the now-playing card, autoplay-guard fallback - the ghost follows the bot's containment + motion laws (DESIGN_SYSTEM §7); --band is the one documented non-verdict hue (§2) - 22 new tests (tests/music-brain.test.ts) — shopping sentences stay shopping, moods replay bit-for-bit; 44/44 green; lint/typecheck/verify green - stale claim fixed: why-page 'simulated' patch no longer calls MCP/ACP 'protocol-shaped' — they shipped real in D6
…eady Two bugs, both real: 1. The ghost was a new character (skirt, wisp, pulse) when the ask was the desk head in red. Rebuilt on the same 32x32 viewBox, r=13 volume, and the SHARED .desk-eye-g/.desk-eye classes — the eye choreography is now glance-for-glance identical to the black head. Skirt, wisp, pulse and wander removed from CSS; the ghost's own motion is arrive/sink + beat bob. 2. 'setVolume is not a function' — the IFrame API player's methods only exist after onReady. Every player call now goes through the ready promise; volume sets on ready. The stage's React-owned wrapper persists through the full/mini deck flip so the player is created once and the music never dies on a collapse; the ready promise resets on unmount. skip now rides the summon's three-track queue instead of doing nothing. Verified: console clean through summon→play→stop; lint/typecheck/44 tests/verify green.
…off, a working summon
…: instant chat, native dblclick, slow-crate honesty
…ideo, loop toggle; feat(agents): the craft-school rebuild — decoration deleted
… coco; fix(coco): the head never leaves the viewport
…ver off-screen in vw; feat(agents): the landing's grammar — hero stage, wire between the heads, summon up top
…perch raises them; the double-click truly hides the video (the rise fill was pinning opacity)
… the seam IS the bus wire
…eam, the frame speaks once; fix(chat): words stream once, statuses say once, panels scroll quiet
… the ghost's state rides the prompt as one line, ~40 tokens, commands still free
… promise — stop-then-play works again, pause with it
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this ships
coco — the red music ghost: a second agent summoned by moco over the bus.
musicBus— the handoff is receipted as acoco ·chip in both transcriptsEvidence
bun run typecheck+bun run lint+ 37/37 brain tests +make verifygreen on every commit