Add OpenF1 plugin#85
Conversation
New community plugin for the free OpenF1 API (https://openf1.org). Indexes F1 meetings, sessions, and the current driver grid, with dashboards for session results, laps, pit stops, tyre stints, weather, race control, overtakes, and championship standings. No authentication required (public historical data). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI (base), Organization UI (inherited) Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
💤 Files with no reviewable changes (1)
📝 WalkthroughWalkthroughAdds the OpenF1 v1 plugin metadata, entity types, validation, data streams, indexing, default dashboards, scopes, documentation, and an empty UI config. ChangesOpenF1 Plugin Implementation
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@plugins/OpenF1/v1/dataStreams/championshipDrivers.json`:
- Around line 39-51: The role assignment in the championshipDrivers data stream
is reversed: driver_number is marked as the label even though it is the raw
identifier, while driverName is the human-readable field and should carry the
label role. Update the metadata in championshipDrivers.json so driverName is the
label (consistent with connectionCheck and championshipTeams), and move the
id/identifier-style role off driver_number or remove the incorrect label role
from it. Use the driver_number and driverName entries to locate the fix.
In `@plugins/OpenF1/v1/dataStreams/connectionCheck.json`:
- Line 16: The shared session identifier shape is inconsistent: session_key is
currently declared as string in connectionCheck.json while the OpenF1 schema
uses a numeric id. Update the session_key field definitions in
connectionCheck.json and sessions.json to shape number so they match
meetingSessions.json and keep the shared id consistent across the OpenF1 data
stream definitions.
In `@plugins/OpenF1/v1/dataStreams/sessionDrivers.json`:
- Around line 39-83: The metadata for sessionDrivers.json defines full_name
twice, which can cause the label metadata and drilldown source mapping to
conflict. Merge the visible full_name entry and the sourceId/sourceType entry
into a single metadata object in the metadata array, following the same pattern
used by session_name in meetingSessions.json. Make sure the combined full_name
entry keeps the displayName, shape, and role while also including sourceId and
sourceType so the driver link and label both work correctly.
In `@plugins/OpenF1/v1/dataStreams/sessionResult.json`:
- Around line 46-51: The sessionResult metadata has two entries using the same
name driver_number, causing one definition to conflict with the other. Update
the duplicate linked-entity field in the sessionResult data stream to use a
distinct name, matching the pattern used by other linked entities such as
driver_number plus a separate raw/display field name in overtakes.json, and keep
the original label metadata intact. Locate the conflicting entries in the
sessionResult metadata array and rename the raw linked-entity column so it no
longer overrides the existing driver_number label definition.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: 204b2f0d-8eeb-4671-8a87-0bd8e22dfd56
⛔ Files ignored due to path filters (1)
plugins/OpenF1/v1/icon.svgis excluded by!**/*.svg
📒 Files selected for processing (27)
plugins/OpenF1/v1/configValidation.jsonplugins/OpenF1/v1/custom_types.jsonplugins/OpenF1/v1/dataStreams/championshipDrivers.jsonplugins/OpenF1/v1/dataStreams/championshipTeams.jsonplugins/OpenF1/v1/dataStreams/connectionCheck.jsonplugins/OpenF1/v1/dataStreams/drivers.jsonplugins/OpenF1/v1/dataStreams/laps.jsonplugins/OpenF1/v1/dataStreams/meetingSessions.jsonplugins/OpenF1/v1/dataStreams/meetings.jsonplugins/OpenF1/v1/dataStreams/overtakes.jsonplugins/OpenF1/v1/dataStreams/pitStops.jsonplugins/OpenF1/v1/dataStreams/raceControl.jsonplugins/OpenF1/v1/dataStreams/sessionDrivers.jsonplugins/OpenF1/v1/dataStreams/sessionResult.jsonplugins/OpenF1/v1/dataStreams/sessions.jsonplugins/OpenF1/v1/dataStreams/stints.jsonplugins/OpenF1/v1/dataStreams/weather.jsonplugins/OpenF1/v1/defaultContent/driver.dash.jsonplugins/OpenF1/v1/defaultContent/manifest.jsonplugins/OpenF1/v1/defaultContent/meeting.dash.jsonplugins/OpenF1/v1/defaultContent/overview.dash.jsonplugins/OpenF1/v1/defaultContent/scopes.jsonplugins/OpenF1/v1/defaultContent/session.dash.jsonplugins/OpenF1/v1/docs/README.mdplugins/OpenF1/v1/indexDefinitions/default.jsonplugins/OpenF1/v1/metadata.jsonplugins/OpenF1/v1/ui.json
- sessionResult: merge duplicate driver_number metadata into one entry (keeps Car Number label + F1 Driver drilldown) - sessionDrivers: merge duplicate full_name metadata into one entry (keeps Driver label + F1 Driver drilldown) - connectionCheck, sessions: session_key shape string -> number to match the numeric OpenF1 id and meetingSessions Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Driver # column now links through to the F1 Driver object, consistent with the session result and drivers tables. (championshipTeams has no indexed object to drill to.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@plugins/OpenF1/v1/dataStreams/championshipDrivers.json`:
- Around line 43-45: The data-stream contract in championshipDrivers.json has
changed, so the OpenF1 plugin version metadata must be bumped to match. Update
the version in plugins/OpenF1/v1/metadata.json alongside this stream change,
using the plugin metadata and version fields there so the package/version
reflects the updated contract.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI (base), Organization UI (inherited)
Review profile: ASSERTIVE
Plan: Pro
Run ID: d8b8607f-7dc6-4455-94b2-21a75effd0c3
📒 Files selected for processing (1)
plugins/OpenF1/v1/dataStreams/championshipDrivers.json
Drop sourceType from championshipDrivers.driverTeam so it shows the team name as plain text (resolved via the driver_number lookup) instead of drilling to the F1 Driver, matching the AutoTask objectPropertyPath pattern. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🧩 Plugin PR Summary📦 Modified Plugins
📋 Results
🔍 Validation Details✅
|
🔌 Plugin overview
🖼️ Plugin screenshots
Plugin configuration
No configuration fields (public API); setup only runs a connectivity check.
Default dashboards
🧪 Testing
connectionCheckvalidation step returns 200.objectPropertyPathlookups resolve, and that the Session Result and Session Drivers tables drill down to the F1 Driver object.gap_to_leadercan be a string ("+1 LAP");/pitand some endpoints 404 on sessions with no data; session display names disambiguated by circuit (e.g. Imola vs Monza)./car_dataand/location(~3.7 Hz) would exceed dashboard query limits./starting_gridendpoint returns no data, so it is not included (final positions come from session results).Full detail in
docs/README.md.📚 Checklist
🤖 Generated with Claude Code
Summary by CodeRabbit