Repository navigation
Tyre history and pit stops, title-fight line, standings widgets, CI build - #1
Merged
Merged
Conversation
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
force-pushed
the
claude/project-thread-sfj346
branch
from
October 9, 2026 21:38
7389c18 to
f5081c0
Compare
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
marked this pull request as ready for review
October 9, 2026 22:01
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
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).
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.
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:
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 areTotalLaps - StartLaps, and the pit laps are their running sum, shown only when they agree with TimingData'sNumberOfPitStops.TitleFightcounts 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 throughAutoFollowReceiver, never closer than 30 minutes apart; a table the app fetches reaches them at once throughJolpicaStandingsRepository.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-freeStandingsWidgetPlanner.The lock-screen widgets are RemoteViews providers like the existing 2x2 lock widget: they ship disabled and
StandingsLockWidget.syncEnabledswitches them on for sw600dp and hinge devices only. They are drawn from the same snapshot whenever it is rebuilt, andStandingsLockPlandecides 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 forStandingsWidgetPlanner, 5 forStandingsLockPlan); 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.