Skip to content

Ten more apps: support 64x64 square panels (round 8) - #756

Merged
nsluke merged 6 commits into
tronbyt:mainfrom
nsluke:feat/square-round8
Oct 3, 2026
Merged

nsluke merged 6 commits into
tronbyt:mainfrom
nsluke:feat/square-round8

Conversation

@nsluke

@nsluke nsluke commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

Round 8. Each rendered at 64×32, 64×64 and 128×64, then installed on the bench's displays and rendered there by the server (numbers in a comment below).

app 64×32 (unchanged) 64×64
nycalerts
fbiwanted
nova
abcradio
abcnews
yearprogress
raafuelwatch
severewxalertsusa
desknametag
esbnyccolors

64×64 column: the committed @64x64.webp preview (native 64px, upscaled by the browser). 64×32 column: the app's existing preview.

What changed, per app

  • nycalerts, fbiwanted — same layout: an 11px header, a rule, and a 20px body the notice scrolls sideways through as one line. On a square panel the body has 52 rows, so the same text is wrapped to the panel width and scrolled up through them instead. 64×32 keeps its sideways ticker exactly as it was.
  • abcnews — headlines scroll through the rows under the 7px title: 24 at 64×32, 56 on square.
  • nova, abcradio, raafuelwatch — fixed bands totalling 32 rows; on square the column expands and spreads them.
  • yearprogress — the bar is 10 rows at 64×32 and 24 on square; the year and percentage keep their size and the column spreads them.
  • severewxalertsusa — lays every frame out for 32 rows (64 at 2x). A square panel is 64 tall but not 2x, so each frame is centred rather than hung from the top edge. Its 2x layout is untouched.
  • desknametag, esbnyccolors — already fill a square panel as written; flag only, verified by rendering.

Verification

All ten pass pixlet check; shape tested with h == w via is_square(), never h == 64. Every change evaluates to the old value at 32 rows; the square-only branches are additive.

🤖 Generated with Claude Code

nsluke and others added 2 commits October 1, 2026 14:22
nycalerts and fbiwanted share a layout: an 11px header, a rule, and a
20px body the alert or notice scrolls through. The body takes the rows
under the rule: 52 on a square panel.

abcnews scrolls its headlines through the rows under its 7px title, 56
on square, instead of a fixed 24.

nova, abcradio and raafuelwatch each stack fixed bands totalling 32
rows; on a square panel the column expands and spreads them.

yearprogress's bar is 10 rows on a 64x32 panel and 24 on a square one,
where the year and the percentage keep their size and the column
spreads them.

severewxalertsusa lays every frame out for 32 rows (64 at 2x); a square
panel is 64 tall but not 2x, so each frame is centred rather than hung
from the top edge.

desknametag and esbnyccolors already fill a square panel as written and
only needed to say so.

All rendered at 64x32, 64x64 and 128x64; 64x32 unchanged in each.
Installed on the bench's displays. @64x64.webp previews included.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Giving the body 52 rows left a single ticker line padded 4px from the
top of them. On a square panel the same text is wrapped to the panel
width and scrolled vertically through the rows instead; 64x32 keeps
its sideways ticker exactly as it was.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@nsluke
nsluke requested a review from tavdog as a code owner October 1, 2026 18:23
@nsluke

nsluke commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Hardware pass on the 64×64 display (bench Raspberry Pi 3B, under-voltage-throttled, load ~7.5 — pessimistic; the device is carrying 80+ test apps now so one rotation takes a while):

app 64×64
nycalerts 9.6 s
fbiwanted 21.8 s
nova 0.45 s
abcradio 1.3 s
abcnews 30 s timeout
yearprogress 2.3 s
raafuelwatch 2.7 s
severewxalertsusa 0.23 s
desknametag 0.26 s
esbnyccolors 22.9 s

abcnews hit the deadline at 64×64. Its headline marquee is now 56 rows instead of 24, and the feed's full article list scrolls through it, so the animation got longer — same shape as the militarynews case in round 3. I'll follow up on this branch with a cap on how many articles a square panel scrolls so it stays inside the budget; the 64×32 render (22 s on this Pi, untouched code) is already marginal, which is the app rather than the port.

The whole list scrolls through the marquee, so its length is the
animation's length; at 56 rows the full feed timed out on the bench
Raspberry Pi 3B. Eight stories is still more than a 24-row panel gets
through in one rotation.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@nsluke

nsluke commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator Author

Correction on abcnews: I pushed a "cap the list to eight stories on square" commit and then reverted it. The app already caps its feed at five stories (feed_length = min(len(title), 5)), so the cap changed nothing — and the local square render is 0.2 s. The 30 s on the bench was the Pi at load 7.5 with 80+ test apps in rotation, not this port. Nothing further needed here; the branch is back to the ten-app change.

@nsluke
nsluke merged commit d315322 into tronbyt:main Oct 3, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant