Skip to content

SailGP: add 2x (128x64) support + Extended Standings display - #578

Merged
tavdog merged 14 commits into
tronbyt:mainfrom
jvivona:sailgp-2x
Jul 8, 2026
Merged

SailGP: add 2x (128x64) support + Extended Standings display#578
tavdog merged 14 commits into
tronbyt:mainfrom
jvivona:sailgp-2x

Conversation

@jvivona

@jvivona jvivona commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

SailGP — 2x (128×64) support

Adds 2x rendering to SailGP. The existing 1x (64×32) layouts are unchanged; all 2x work is gated behind canvas.is2x() (manifest supports2x: true).

Display modes

  • Next Race — a single schedule screen (round, host city, event name, dates) with the full standings paging along the bottom (three rows of three, sliding a page at a time).
  • Next Race + Extended Standings (new) — same schedule up top, then the standings one team per line (place, full team name + country code, points), four teams a page, sliding to the next few. 2x-only; falls back to the standard Next Race at 1x.
  • Standings Display — flag/logo leaderboard with team name, driver, and points.

Other touches

  • Optional Team Image picker to show country flags or team logos in the standings.
  • Color pickers are scoped to the relevant mode: Race Info Color on the Next Race screens, Standings Color wherever standings appear, Team Image only on the full Standings display. Each picker's default is honored as the tuned 2x color unless the user overrides it.
  • Amber points and a mode label in the 2x title bar for readability.

Data comes from the existing jvivona/tidbyt-data SailGP feed (standings / next-race / flags / logos).

Opening as a draft for now.

jvivona and others added 12 commits July 6, 2026 16:39
Next Race becomes a single static schedule screen at 2x - SailGP title,
round, location, race name, date range and start time - with the
standings paging a few teams at a time along the bottom instead of a
continuous marquee.

Standings (flags) becomes a paged vertical leaderboard at 2x: each row
is position, country flag, driver last name and points, four teams per
page. Driver names come straight from the feed.

1x (64x32) layouts are unchanged. Adds supports2x to the manifest and
regenerates both previews.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New "Team Image" schema dropdown chooses country flags or team logos in
the standings (both 1x and 2x); the value maps directly to the flags.json
/ logos.json feed files. The feed now also carries team_name, so the 2x
standings rows show the team name above the driver name (e.g. "BONDS
Flying Roos / Slingsby") with points on the right. Flags remain the
default. Overlong team names word-wrap-truncate cleanly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Next Race drops the start-time line and shows the standings two rows of
three per page (six teams) using the freed vertical space. Both sliders
are slowed a little (standings 75->100, Next Race pages 50->70 frames).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 2x title bar now shows the current mode next to the brand ("SailGP
Next Race" / "SailGP Season Standings"). Next Race packs the standings
into three rows of three per page (nine teams), so 13 teams fit in two
pages instead of three.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Next Race standings render points in amber (code stays the standings
color) so the numbers stop blending into the white schedule text. The
leaders are bottom-aligned, and both sliders are slowed a bit more
(standings 100->120, Next Race pages 70->95 frames).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Race Info Color picker now overrides the round/race accent and the
Standings Color picker overrides the amber points on the 2x Next Race
screen, matching how the pickers already work at 1x. The picker's white
default is treated as "not set", so the tuned 2x colors (teal accent,
amber points) still show unless the user picks something.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New 2x-only display option that keeps the Next Race schedule up top
(date tightened up to reclaim a line) and lists the full table one team
per line: place, full team name (CODE), and points. Shows four teams a
page and slides to the next few, distributing 13 teams as 4/3/3/3 so the
last page isn't a lonely single row. Falls back to the standard Next
Race view at 1x.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drop the even-out balancing in the extended view; page four at a time
and let the last page fall where it may, matching the flag/logo
standings paging (13 -> 4/4/4/1, a future 14th team -> 4/4/4/2).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Team Image and Standings Color now only appear when the full Standings
display is selected (they don't apply to the Next Race screens), and
Race Info Color + US Date format now show for both Next Race screens,
including the new Extended Standings view (previously only the standard
Next Race). Folds all of this into one datadisplay-driven generated
section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Both Next Race screens display standings, so keep the Standings Color
picker available there alongside Race Info Color; only Team Image stays
exclusive to the full Standings display.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds 2x display support (128x64) to the SailGP app, introducing new layouts for standings and next race schedules, along with schema updates to allow selecting team logos or country flags. Feedback highlights the need to correct a comment regarding standings paging, and to add defensive checks to prevent runtime errors when handling missing team codes in the images dictionary or null/empty driver names.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread apps/sailgp/sailgp.star Outdated
Comment thread apps/sailgp/sailgp.star Outdated
Comment thread apps/sailgp/sailgp.star
Comment thread apps/sailgp/sailgp.star Outdated
jvivona and others added 2 commits July 7, 2026 06:21
- Guard the flag/logo image lookups (1x and 2x standings) so a team code
  missing from the images feed renders an empty slot instead of erroring.
- driver_name() returns "" for a null/empty driver name.
- Fix stale comment: standings page three rows of three.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jvivona

jvivona commented Jul 7, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review — addressed all four in 3fd5031:

  1. Standings paging comment — corrected to "three rows of three".
  2. Missing team code (1x standings)standings_team_column now uses images.get(...) and renders an empty slot if a code isn't present.
  3. Null/empty driver namedriver_name() returns "" for a falsy name.
  4. Missing team code (2x standings)standings_row_2x guarded the same way.

These are defensive (the feed reliably provides these keys), but happy to harden regardless.

@jvivona
jvivona marked this pull request as ready for review July 7, 2026 10:23
@jvivona
jvivona requested a review from tavdog as a code owner July 7, 2026 10:23
@tavdog
tavdog merged commit 528e552 into tronbyt:main Jul 8, 2026
@jvivona
jvivona deleted the sailgp-2x branch July 8, 2026 09:36
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.

2 participants