Slow Motion Birds

The interaction model

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.

Three states

01 Ambient

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.

Apple TV showing full-screen bird footage with no controls
Apple TV, ambient. Nothing on the glass.
iPhone showing bird footage with a fact card in the letterbox band
iPhone, ambient. The fact card sits in the letterbox band, clear of the picture.

02 Shelf

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.

Apple TV control shelf with film row and controls
Apple TV, shelf up. The focus ring is on the poster only, which is the Apple TV convention.
iPhone control shelf with film row and controls
iPhone, shelf up. Controls scroll sideways rather than squeezing.

03 Asleep

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.

What each input does

IntentiPhone / iPadApple TV
Summon the shelfTap anywhereClick, or swipe up or down
Dismiss the shelfTap the video, or flick downMenu / Back
Change bird, no chromeSwipe left or rightSwipe left or right
Change bird, by nameTap a cardFocus a card and click
Play / pauseShelf controlThe remote's Play/Pause, in any state
Leave the appHomeMenu, 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 timer, which was really two timers

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.

What I deliberately did not build

Two things only you can answer

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.

Changelog: 1.3.0