Slow Motion Birds
Version 1.3.0 · Updated Wed / 2026-08-05 / 3:52 PM CT · commit 85417bb on main
The last pass shipped a circle button in the corner. This one is a designed model: the picture is the app, and chrome is summoned and then leaves. Everything below is running code, screenshotted out of the Apple TV 4K and iPhone 17 simulators, not a mockup.
Video, and the fact card if facts are on. Zero controls. No status bar, no home indicator, nothing. This is where the app lives essentially all of the time, and it is the reason a permanent button was the wrong answer: chrome parked over ambient footage fights the only thing the app is for.
The fact card places itself in the black letterbox band when there is one, and insets into the bottom of the picture when there is not. It never covers the meat of a shot.
Summoned by a tap on iPhone or any remote input on Apple TV. It sits over still-playing video and takes itself away after six idle seconds. Now-playing header with live countdown chips, a film row with poster frames pulled out of the video files themselves at runtime, and a control row.
There is no separate settings screen on purpose. Every choice here (which bird, how long, facts on or off) is one you want to make while looking at the picture.
Where "Stop after" leads. A 15 second fade to black, then a pause, then one dim line offering to come back. Not a hard cut: the realistic use of a stop timer on an ambient app is falling asleep to it, and a picture that snaps off is what wakes you. Any input wakes it, and waking restarts the same duration. The first touch only wakes, it does not also skip a film.
| Intent | iPhone / iPad | Apple TV |
|---|---|---|
| Summon the shelf | Tap anywhere | Click, or swipe up or down |
| Dismiss the shelf | Tap the video, or flick down | Menu / Back |
| Change bird, no chrome | Swipe left or right | Swipe left or right |
| Change bird, by name | Tap a card | Focus a card and click |
| Play / pause | Shelf control | The remote's Play/Pause, in any state |
| Leave the app | Home | Menu, when the shelf is already hidden |
That last row is load-bearing. The Menu handler is attached to the shelf only, never to the app root, so when the shelf is gone Menu does the correct platform thing and returns to the Apple TV home screen. Swallowing Menu is the single most common way a tvOS app feels broken.
The brief asked for a loop timer that would "stop, sleep, or move on". Those are two different questions, so they are two separate controls, both of which show a live countdown in the shelf whenever they are armed. Timer state is never invisible.
1. Barred Owl Visits opens on a cardinal and a bluebird. Its auto-generated poster frame shows the same, because the poster is pulled from 1.5 seconds into the clip. If the owl shows up later, tell me roughly when and I will move the poster timestamp. If the file is mislabelled, films.json needs fixing.
2. Finch Fight Fest facts are still placeholders. Real House Finch facts, plus rough timestamps for when other species turn up in that one, are still owed. Plain language is fine, no JSON needed, the format is in CONTENT-GUIDE.md in the repo.