Tier 3Tier 3 · Roku. The Overhang is a stock Roku node. The custom FileListItem stacks a raw filename over its caption; SceneGraph ships no stock row with this anatomy.DesignTokens.brs · primary · appBackground · focus · borderHover · textMuted
The row is the one thing put.io had to build
FileListItem.xml: a Group holding a FocusBackground and a vertical LayoutGroup at translation="[35,60]". Title sits over the caption with 10px spacing; the icon is a Poster at 50×50.
There is no value slot on a file row. listItemMainTextWidth(1716) gives the title a 1490px budget, so long raw filenames ellipsize before the row edge.
Raw filenames, always. No parsing, no posters, no thumbnails. The extension and release string are what the user came for.

Roku is a file browser, not a poster wall.
put.io
9:41
Your Files / Films
homework_answers_DONT_DELETE
12 items
The.Wire.S03E04.Back.Burners.1080p.BluRay.x264-DEMAND.mkv
3.42 GB · resume at 21:04
Seinfeld.S09E23.The.Finale.Part.2.720p.HDTV.x264-FLEET.mkv
1.20 GB · watched
podcast_ep127_final_mixdown_v2.mp3
72.4 MB
document-scan-march-2026.pdf
210 KB
OKPlayOptionsBack
Files · custom FileListItem in a stock listFolder uses the fill weight; file types use regular. Title and caption stay stacked on every row.
Per-control detail, the token map and the full don't list live in platforms/roku/DESIGN.md.
Do not use PosterGrid or RowList. Both are built for catalogue apps with artwork.

A grid of grey rectangles shows fewer items, truncates longer names, and turns a straight D-pad path into one that crosses the screen.