Seven more apps: support 64x64 square panels (round 2) - #747
Merged
Merged
Conversation
worldclock already spreads its cities down the panel and only needed to say so. binaryclock is six columns of bits across the panel width, which a square panel shares, so every bar and the box it sits in get twice the height. cisaticker is an 8px masthead over 7px alert rows with 1px rules: three rows on 64x32, seven on 64x64, from the same arithmetic. germanpartypolls put a 16px pie beside a scrolling list. On square the pie is 24px with the poll date beside it on top, and the list sits underneath where six parties fit without scrolling. citibikebymk's block is about 30 rows and is centred rather than hung from the top edge. usdebtclock crops a 68x50 flag to 64x32; a square panel has the rows for all of it, so it is centred, and the five lines of figures are centred over it. Its square preview is a still: the animated one was 478KB. solartimeclock's box is sized to the panel and its column expands on square so space_evenly spreads the title and times. solartimeclock is byte-identical at 64x32. binaryclock renders thirty seconds from "now" so cannot be compared by bytes; it and the others were checked by eye. All seven were installed on the bench's 64x32, two 64x64 and 128x64 displays and rendered there by the server. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1500 frames at 64x32 already takes a Pi 3B about 18 of the server's 30 seconds; at 64x64 and 128x64 it timed out and the panel got nothing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
750 still timed out on the bench Pi; 500 renders in about the time the 64x32 panel takes for the full 1500 and is still 17s of animation. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
500 frames was fine at 64x64 but 128x64 still timed out on the bench Pi, so the count comes from a pixel-frame budget instead of a flat number: 488 at 64x64, 244 at 128x64, 1500 unchanged at 64x32. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Seven more. Each rendered at 64×32, 64×64 and 128×64, then installed on real hardware — a 64×32, two 64×64 and a 128×64 display on the bench — and rendered by the server for all four.
worldclockbinaryclockcisatickergermanpartypollscitibikebymkusdebtclocksolartimeclock64×64 column: the committed
@64x64.webppreview (native 64px, upscaled by the browser). 64×32 column: the app's existing preview.What changed, per app
space_around, expanded); flag only, verified by rendering.ROWS = (canvas.height() - 8) // 8: 3 on 64×32, 7 on 64×64.space_evenlyspreads the title and times.usdebtclock and the render deadline
This one animates 1,500 frames, and on the bench's Raspberry Pi 3B that already costs 18–30 s of the server's 30 s at 64×32, untouched — it timed out on the 64×32 display during testing with the original code. A larger canvas multiplies that, so taller canvases now get a pixel-frame budget rather than a flat count: 488 frames at 64×64, 244 at 128×64, still 1,500 at 64×32. Measured after the change: 15 s on both 64×64 displays (was a 30 s timeout). Worth knowing that this app is marginal on Pi-class servers in animated mode regardless; the still mode is instant.
Verification
solartimeclockis byte-identical at 64×32.binaryclockrenders thirty seconds from "now" so can't be byte-compared; it and the live-data apps were checked by eye at 64×32. The classic code path is untouched in each — the square branch is additive.pixlet check; shape tested withh == wviais_square(), neverh == 64; none claimsupports2x.🤖 Generated with Claude Code