The playground
The page is the app.
Below is a hands-on slice of the flexGrid surface. Click a tile to lock it. Press R to shuffle. Press A to cycle aspect-match strictness. Press E to drop into Editorial Layout. This isn't a video — it's the actual choreography, in the actual interactions, in your browser.
Locks it — it stays put while everything else shuffles.
Picks it for Moments. The badge appears; the drawer would open in-app.
4 / 9 are Free. 12 / 16 require Plus — marked with the orange dot.
Press E. Hero + supporting cells. Cycles three of the fourteen templates.
Editorial Layout
Magazine pages from a folder.
Fourteen curated templates with two to six cells. Vision-aware hero placement. A density knob and a structure lock so auto-advance can cycle contents inside a layout you composed once.
Editorial Layout · Plus
Magazine pages, from a folder.
Fourteen curated templates. Two to six cells. Vision-aware hero placement. A density knob to trade calm for variety. Lock the structure and let auto-advance cycle the contents inside it.
Landscape window. One hero cell, three supporting frames stacked.
- Templates bias to your window shape automatically.
- Vision tags decide which cell becomes the hero.
- Structure lock keeps the layout while the contents cycle.
Keyboard-first, on purpose
flexGrid is a piano. Here are the keys.
Mouse work is fine. The keyboard is faster. The shortcuts on this page work on the playground above — they also work in the app exactly the same way.
Cold open
There is no loading screen. Just the wall.
The scanner is progressive. The cultivated first batch fires in about a second and a half on a folder of twenty-five thousand files. Hit Open, hit the folder, hit nothing else.
On the right is the four-phase animation the app performs every time — empty target, folder arrival, scanner ramp, playing. The whole sequence takes under two seconds for most folders.
The loop seam
A flaw you stopped noticing — and a fix that doesn't exist.
Most video players give you a tiny black flash at the loop boundary. flexGrid uses AVPlayerLooper under every cell, so the seam isn't fixed — it isn't there. Watch the two strips loop.
Naïve looping seeks back to frame zero. The decoder catches up, the player blinks, the audio clicks. You stop noticing it; you never stop seeing it.
AVPlayerLooper keeps a second media replica running across the loop boundary. There's no seek, no rebuffer, no flash. The seam isn't fixed — it isn't there.
SmartShuffle
Multi-dimensional library coverage, in the background.
Every shuffle scores candidates against a sliding window of what just played. The radar at right is that scoring, animated. The highlighted axis is whichever dimension is currently most decisive.
Bag-draw guarantees that every item plays before any repeat. The result is a shuffle that feels hand-curated. The math is doing the curating.
Smart cell display
One Smart mode. A decision tree per cell.
Aspect matches? Fit. Subject found? Frame around it. Center crop safe? Take it. None of the above? Zoom out so the edges stay visible. Cycles through the four cases on the left.
Per-cell, every frame
A small decision tree, not six toggles.
- 1Aspect matchesFit — no crop needed.
- 2Subject foundNowFrame around the subject.
- 3Center crop safeSubject survives a clean center crop.
- 4Safe fallbackCrop would clip — zoom out to keep edges visible.
Tightness slider and Top / Center / Bottom anchor when you want the framing nudged further. Otherwise the cell sorts itself out.
Now do it for real.
The playground is a faithful slice. The app is the rest of it — bigger grids, more shortcuts, actual video, your folder, your wall.