Skip to content

Tyre history and pit stops, title-fight line, standings widgets, CI build - #1

Merged
Spottq merged 7 commits into
mainfrom
claude/project-thread-sfj346
Oct 10, 2026
Merged

Spottq merged 7 commits into
mainfrom
claude/project-thread-sfj346

Conversation

@Spottq

@Spottq Spottq commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Before: the expanded driver row on the Live tab shows only the S1/S2/S3 sectors, so there is no way to see which tyres a driver has used or when they pitted. The standings list everyone alike, with nothing saying who can still win the title. There is no standings widget for the home screen or the lock screen. Nothing builds or tests the app on pushes or pull requests.

After: under the sectors, the expanded row shows the driver's tyre chain, one chip per stint with its laps (a dashed rim marks a used set), and in races and sprints "Pit stops 2 · L15, L38". Both standings tabs show "4 races + 1 sprint left · 108 pts to play for" and a dashed "Title out of reach below" line after the last driver or team who can still catch the leader ("Title decided" when only the leader is left). Three new home-screen widgets, each its own entry in the picker and resizable from 2x2:

  • Drivers' standings and Constructors' standings: position, team colour, name (the driver code when narrow) and points, as many rows as the height holds, with the same title line.
  • Title fight: the leader's points and wins, and the gaps of the drivers chasing them ("NOR −22 · VER −83" at 2x2, tiles from 4x2), with the line among the chasers.

The same three come as 2x2 Samsung lock-screen widgets on tablets and foldables: the top five with the title line, and the leader with the two nearest gaps and the points left, in the monotone style the lock screen recolours. Tapping any standings widget opens the Standings tab on the matching table. A GitHub Actions workflow runs the unit tests and a debug build on pushes to main and on pull requests.

How: stints come from TimingAppData Stints: the laps of a stint are TotalLaps - StartLaps, and the pit laps are their running sum, shown only when they agree with TimingData's NumberOfPitStops. TitleFight counts the races and sprints left in the calendar after the standings round, at 25 and 8 points for a driver and a one-two's 43 and 15 for a team; an entry stays in the fight while its points plus that total reach the leader's. On a sprint weekend the standings carry the same round number before and after the race, so that race keeps counting for a day after its start rather than dropping someone too early.

The home widgets are Glance, laid out for their exact size, and share one snapshot built by StandingsWidgetUpdater. The table only changes after a race or a sprint, so they fetch it 1, 3, 6, 12 and 24 hours after each one ends and otherwise once a day, on an inexact non-wakeup alarm through AutoFollowReceiver, never closer than 30 minutes apart; a table the app fetches reaches them at once through JolpicaStandingsRepository.updates. Before the season's first race they show last season's final table. They follow the session widget's colours and One UI blur settings and use its settings screen. The rules (rows that fit, where the line goes, when to fetch) live in the Android-free StandingsWidgetPlanner.

The lock-screen widgets are RemoteViews providers like the existing 2x2 lock widget: they ship disabled and StandingsLockWidget.syncEnabled switches them on for sw600dp and hinge devices only. They are drawn from the same snapshot whenever it is rebuilt, and StandingsLockPlan decides how many rows and small lines fit the slot at the system font size.

The workflow uses Temurin 21 with the Gradle cache and uploads the test reports when a job fails.

Tests: 42 new unit tests (4 for stint parsing, 14 for TitleFight, 19 for StandingsWidgetPlanner, 5 for StandingsLockPlan); the whole suite (233) passes and the debug APK builds in CI. Not yet tried on a device: the new screens and widgets want a look on a phone and a Samsung tablet or foldable before merging.

claude added 3 commits October 9, 2026 21:21
The live feed already sends every stint in TimingAppData, but only the
current compound was kept. The parser now keeps the whole list (compound,
new or used, laps in the stint), and the expanded row shows it under the
sectors as a chain of compound chips with their laps. In races and sprints
the pit stops sit beside it, under S3: the timing line's count, plus the
lap of each stop worked out from the stint lengths when the two agree.

ESPN publishes no tyres, so on the fallback feed the row shows the stop
count only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
TitleFight counts the races and sprints left on the calendar after the
standings' round (25 points a race, 8 a sprint) and finds how far down the
table a driver can still reach the leader. The drivers' tab gets a summary
line under the round ("4 races + 1 sprint left · 108 pts to play for") and
a dashed "Title out of reach below" rule after the last contender, or
"Title decided" once only the leader is left. No rule while everyone can
still win.

Standings published after a sprint carry the same round as the ones after
that weekend's race, so on a sprint weekend the race keeps counting for a
day after its start: a driver is never dropped below the line early.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Spottq
Spottq force-pushed the claude/project-thread-sfj346 branch from 7389c18 to f5081c0 Compare October 9, 2026 21:38
claude added 2 commits October 9, 2026 21:39
A team can score a one-two in every race and sprint left (43 and 15
points), so the Constructors tab gets the same "Title out of reach below"
line and its own "N races left · X pts to play for" summary.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e fight

Three home-screen widgets, each its own entry in the picker, from 2x2 up:

- Drivers' standings and Constructors' standings: position, team colour,
  name (a driver code when narrow) and points, as many rows as the height
  holds, with the dashed "Title out of reach below" line after the last
  one who can still win, as in the app.
- Title fight: the championship leader's points and wins, and the gaps of
  the drivers chasing them, with the same line among the chasers.

The table changes only after a race or a sprint, so the widgets fetch it
1, 3, 6, 12 and 24 hours after each one ends and otherwise once a day, on
an inexact non-wakeup alarm; a table the app fetches reaches them at once.
Before the season's first race they show last season's final table. They
follow the session widget's colours and One UI blur settings, and a tap
opens the Standings tab on the matching table.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Spottq Spottq changed the title Tyre history and pit stops, title-fight line, CI build Tyre history and pit stops, title-fight line, standings widgets, CI build Oct 9, 2026
@Spottq
Spottq marked this pull request as ready for review October 9, 2026 22:01
claude added 2 commits October 9, 2026 22:44
The drivers' and constructors' tables (the top five and the title line)
and the title fight (the leader's points, the two nearest gaps and the
points left) as One UI lock-screen widgets in the 2x2 slot. Like the
existing 2x2 lock widget they ship disabled and are switched on for
sw600dp and hinge devices only, and use the monotone style that the host
recolours. They share the home standings widgets' snapshot and refresh
alarm, and a tap opens the matching Standings tab.
@Spottq
Spottq merged commit 279060d into main Oct 10, 2026
1 check passed
Spottq added a commit that referenced this pull request Oct 10, 2026
- Merged #1 and #2: tyre stints and pit stops in the expanded driver row,
  the title-fight line in both standings tables, three home-screen
  standings widgets and their 2x2 lock-screen versions, CI, and the
  comment cleanup.
- Driver names: the short name takes the initial of the name a driver
  races under, so Jolpica's "Andrea Kimi" Antonelli reads "K. Antonelli"
  in the standings, results and live timing (DriverNames).
- Live Update on Android 17: the leader's metric is labelled "P1" like
  the other cells; the lap count stays only in the title.
- README: the standings widgets, tyres and pit stops, the title line.
- Version 1.2 (versionCode 4).
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