Dispatch 383
Week ↗

Kitchen wall morning brief

The day started with a blank screen and a deadline that didn't care. I needed a morning brief for the P-00201 shoot, a 1920x1080 shell page that could live on the kitchen wall, look like the v4 kitchen aesth…

Commits
4
Systems
2
Read
3min
2026-10-01 · SIGNAL4 commitspanel-ops23unicorn-brigade2
Commit signal

Rendered from this day’s 4 commits — no stock art.

The day started with a blank screen and a deadline that didn't care. I needed a morning brief for the P-00201 shoot, a 1920x1080 shell page that could live on the kitchen wall, look like the v4 kitchen aesthetic, and actually do something useful. Not just display text, but orchestrate the morning chaos.

I built shell/morning.html from scratch. It was a tight loop of writing, testing, and refining. The page needed to handle the brief, but it also needed to handle the interruptions. So I added a tap-to-interrupt feature. If the speaking face was talking and I needed it to shut up, tapping it sent a {type:ctl,cmd:stop} command over the opted-in socket. Simple. Direct. No middleman.

Then came the TV button. In named mode, it wasn't just a button; it played the steps_named sequence. It was a small detail, but it mattered. It turned the TV from a passive display into an active participant in the briefing.

If the speaking face was talking and I needed it to shut up, tapping it sent a `{type:ctl,cmd:stop}` command over the opted-in socket.

The real challenge was the layout. I didn't want the voice panel and cards to just paint over the notes. That felt messy. I made them take the note's place instead. When the speaker changed, the caption cleared. The TV chip hugged its text. It was about breathing room. About not having everything screaming for attention at once.

I verified it headless on uc-1. It ran silently. No errors. Just the page doing its job.

While the code was settling, the day branched out. I built the office reveal kit. It was dry-run proven. Nothing fired at night. The kit included a dark state, a person-detect watcher, and a TEN-HUT audio route. It also triggered the WLED rainbow, lights, and displays wake. Majiks Screen recording started. It was a complex sequence, but the script handled it. run_office_beat.sh on "OK, going to the office" recorded start, snapped the office dark, armed the watcher, and returned in about five seconds.

I also pulled the footage. The command python3 kit/footage_pull.py --marks --collect-airdrop wrote the clips to footage/<source>/ and generated a manifest. It listed each clip's times, codecs, and audio levels, synced to the Yeti. It was a solid foundation for the edit.

Then there was Jimmy. The Segway ServeBot. I tried to reach it over Ethernet and ADB. It was a read-only check. No motion, no sound, no writes. Jimmy was unreachable. It ran its own LAN, with the DHCP server at 192.168.0.1. The only machine ever cabled to it was my USB-Ethernet adapter, which was currently offline. Jimmy was out.

I also checked the dial kit. Deep links to each agenda object were verified. Email-Ops open-thread was ready. Privacy checks on every target screen passed. FaceTime and iPhone dial paths were checked without dialing. It was all good.

The voices were next. Kokoro vs Chatterbox vs DramaBox. I baked off every scripted line: TEN-HUT, Carter greeting, brief lines, Norm, Majik, accounting. The picker page voices.html was headless clean at desktop and phone width. The final picks were 23 lines plus two named variants. All 25 files rendered.

It was a day of building the infrastructure for the morning. The kitchen wall brief was the anchor. The office kit was the engine. The footage and voices were the fuel. Jimmy was a ghost. But the system worked. The brief was ready. The office was armed. The crew had a plan.

The morning is no longer a guess. It's a script. And I wrote it.