Skip to content

Load lap snapshots as the reference lap#74

Merged
TheAngryRaven merged 1 commit into
BETAfrom
claude/lap-snapshot-feature-VBWDI
May 28, 2026
Merged

Load lap snapshots as the reference lap#74
TheAngryRaven merged 1 commit into
BETAfrom
claude/lap-snapshot-feature-VBWDI

Conversation

@TheAngryRaven
Copy link
Copy Markdown
Owner

Summary

Follow-up to the lap-snapshots feature (#73): make loading a snapshot as the reference lap discoverable, and add an entry point on the lap times page.

Selecting a snapshot already routed its clean lap into the reference-overlay slot (so it renders as the comparison and stays out of playback/video) — but it wasn't obvious that this is setting the reference, and there was no way to reach it from the lap page next to the existing external-reference loader.

Changes

  • Snapshots menu now reads "Load as reference lap (this course)"; selecting a snapshot sets it as the reference comparison (unchanged mechanics, clearer intent).
  • New "Load snapshot as reference" button on the lap times page, sitting right next to the external-reference Choose Log loader. It opens the same per-course snapshot picker in load-only mode (no save action).
  • Plumbing: ExternalRefBar grew a trailing slot; LapSnapshotControls gained triggerLabel + showSave props; snapshot state is exposed through SessionContext so the lap page can render the picker.

Files

LapSnapshotControls.tsx, ExternalRefBar.tsx, LapTable.tsx, tabs/LapTimesTab.tsx, contexts/SessionContext.tsx, pages/Index.tsx, CHANGELOG.md.

Test plan

  • npm run lint, npm run typecheck, npm run test:run (737 passing), npm run build all green
  • Lap times page: "Load snapshot as reference" appears next to Choose Log; opening it lists the current course's snapshots
  • Selecting a snapshot (from either the header menu or the lap-page button) sets it as the reference — charts/pace update, and it does not auto-play or appear in the video player
  • "Clear" removes the snapshot reference; choosing a file-based external ref or a per-lap reference clears the active snapshot

https://claude.ai/code/session_01L9h3QDcyTEXmVe6tWMio6T


Generated by Claude Code

Selecting a snapshot already routed it into the reference-overlay slot, but it
wasn't discoverable as "the reference" and had no entry point on the lap page.

- The Snapshots menu now reads "Load as reference lap" and selecting a snapshot
  sets it as the reference comparison.
- Add a "Load snapshot as reference" button next to the external-reference
  loader (Choose Log) on the lap times page, opening the same per-course
  snapshot picker in load-only mode. Threaded through SessionContext +
  ExternalRefBar's new trailing slot.

https://claude.ai/code/session_01L9h3QDcyTEXmVe6tWMio6T
@github-actions
Copy link
Copy Markdown

Coverage Summary

Lines: 35.59% (2397/6734) · Statements: 34.62% · Functions: 28.99% · Branches: 36.17%

Per-file coverage
File Lines Functions Branches
src/components/video-overlays/dataSourceResolver.ts 84.12% 70% 79.41%
src/components/video-overlays/overlayUtils.ts 100% 100% 100%
src/components/video-overlays/registry.ts 100% 100% 100%
src/components/video-overlays/sectorUtils.ts 94.73% 100% 84.37%
src/components/video-overlays/themes.ts 100% 100% 100%
src/components/video-overlays/types.ts 0% 100% 100%
src/hooks/use-mobile.tsx 0% 0% 100%
src/hooks/use-toast.ts 0% 0% 0%
src/hooks/useAuth.ts 100% 100% 100%
src/hooks/useDataLoader.ts 0% 0% 0%
src/hooks/useDocumentHead.ts 0% 0% 0%
src/hooks/useEngineManager.ts 0% 0% 0%
src/hooks/useFileManager.ts 0% 0% 0%
src/hooks/useKartManager.ts 100% 100% 100%
src/hooks/useLapManagement.ts 0% 0% 0%
src/hooks/useLapSnapshots.ts 0% 0% 0%
src/hooks/useNoteManager.ts 0% 0% 0%
src/hooks/useOnlineStatus.ts 0% 0% 0%
src/hooks/usePlayback.ts 0% 0% 0%
src/hooks/useReferenceLap.ts 0% 0% 0%
src/hooks/useSessionData.ts 0% 0% 0%
src/hooks/useSessionMetadata.ts 0% 0% 0%
src/hooks/useSettings.ts 0% 0% 0%
src/hooks/useSetupManager.ts 0% 0% 100%
src/hooks/useStripePrices.ts 0% 0% 0%
src/hooks/useSubscription.ts 0% 0% 0%
src/hooks/useTemplateManager.ts 0% 0% 0%
src/hooks/useTrackEditorForm.ts 0% 0% 0%
src/hooks/useVehicleManager.ts 0% 0% 100%
src/hooks/useVideoSync.ts 0% 0% 0%
src/integrations/lovable/index.ts 0% 0% 0%
src/lib/aimParser.ts 87.96% 100% 69.13%
src/lib/alfanoParser.ts 80.46% 100% 57.48%
src/lib/billing.ts 94.73% 100% 96.29%
src/lib/billingClient.ts 0% 0% 0%
src/lib/ble/test/mockBle.ts 100% 100% 50%
src/lib/ble/battery.ts 93.33% 100% 87.5%
src/lib/ble/connection.ts 0% 0% 0%
src/lib/ble/fileTransfer.ts 90.69% 95% 72.91%
src/lib/ble/format.ts 50% 100% 66.66%
src/lib/ble/index.ts 100% 100% 100%
src/lib/ble/internal.ts 100% 100% 50%
src/lib/ble/settings.ts 93.6% 100% 85.29%
src/lib/ble/trackSync.ts 89.69% 90.9% 70.96%
src/lib/ble/types.ts 100% 100% 100%
src/lib/bleDatalogger.ts 100% 100% 100%
src/lib/brakingZones.ts 97.14% 100% 86.11%
src/lib/browserCompat.ts 0% 0% 0%
src/lib/channels.ts 100% 100% 84.61%
src/lib/chartColors.ts 100% 100% 100%
src/lib/chartUtils.ts 0% 0% 0%
src/lib/courseDetection.ts 99.01% 100% 84.14%
src/lib/datalogParser.ts 18.51% 50% 17.39%
src/lib/db/index.ts 0% 0% 0%
src/lib/db/supabaseAdapter.ts 0% 0% 0%
src/lib/db/types.ts 100% 100% 100%
src/lib/dbUtils.ts 3.12% 0% 0%
src/lib/deviceSettingsSchema.ts 93.33% 100% 96.42%
src/lib/deviceTrackSync.ts 100% 100% 90%
src/lib/doveParser.ts 89.6% 72.72% 73.63%
src/lib/dovexParser.ts 76.56% 76.92% 47.27%
src/lib/emailValidation.ts 100% 100% 100%
src/lib/engineStorage.ts 0% 0% 100%
src/lib/engineUtils.ts 100% 100% 91.66%
src/lib/fieldResolver.ts 100% 100% 83.33%
src/lib/fileStorage.ts 0% 0% 0%
src/lib/garageEvents.ts 100% 100% 100%
src/lib/gforceCalculation.ts 100% 100% 100%
src/lib/graphPrefsStorage.ts 0% 0% 0%
src/lib/kartStorage.ts 0% 0% 0%
src/lib/lapCalculation.ts 96.12% 100% 90.32%
src/lib/lapDelta.ts 98.96% 100% 82.35%
src/lib/lapSnapshot.ts 100% 100% 87.5%
src/lib/lapSnapshotStorage.ts 0% 0% 0%
src/lib/motecParser.ts 4.29% 3.44% 0.69%
src/lib/nmeaParser.ts 85.62% 92.85% 71.22%
src/lib/noteStorage.ts 0% 0% 100%
src/lib/overlayCanvasRenderer.ts 0% 0% 0%
src/lib/parserUtils.ts 100% 100% 98.52%
src/lib/pendingCheckout.ts 58.82% 25% 100%
src/lib/referenceUtils.ts 100% 100% 89.28%
src/lib/setupStorage.ts 0% 0% 0%
src/lib/speedBounds.ts 94.11% 66.66% 89.18%
src/lib/speedEvents.ts 86.56% 100% 76%
src/lib/templateStorage.ts 0% 0% 0%
src/lib/trackStorage.ts 3.33% 0% 0%
src/lib/trackUtils.ts 100% 100% 100%
src/lib/ubxParser.ts 5% 0% 0%
src/lib/utils.ts 100% 100% 100%
src/lib/vboParser.ts 83.2% 100% 60.97%
src/lib/vehicleStorage.ts 0% 0% 0%
src/lib/videoExport.ts 0% 0% 0%
src/lib/videoFileStorage.ts 0% 0% 0%
src/lib/videoStorage.ts 0% 0% 0%
src/lib/weatherService.ts 0% 0% 0%
src/plugins/cloud-sync/accountDeletion.ts 0% 0% 0%
src/plugins/cloud-sync/accountExport.ts 0% 0% 0%
src/plugins/cloud-sync/autoSync.ts 0% 0% 0%
src/plugins/cloud-sync/cloudClient.ts 0% 0% 0%
src/plugins/cloud-sync/CloudFilesSection.tsx 0% 0% 0%
src/plugins/cloud-sync/CloudLogsPanel.tsx 0% 0% 0%
src/plugins/cloud-sync/CloudSyncPanel.tsx 0% 0% 0%
src/plugins/cloud-sync/DataPrivacyPanel.tsx 0% 0% 0%
src/plugins/cloud-sync/DownloadAllCloudLogs.tsx 0% 0% 0%
src/plugins/cloud-sync/exportManifest.ts 100% 100% 100%
src/plugins/cloud-sync/FileDeleteToggle.tsx 0% 0% 0%
src/plugins/cloud-sync/fileSync.ts 68.42% 38.46% 100%
src/plugins/cloud-sync/FileSyncToggle.tsx 0% 0% 0%
src/plugins/cloud-sync/index.ts 0% 0% 0%
src/plugins/cloud-sync/LapSnapshotsPanel.tsx 0% 0% 0%
src/plugins/cloud-sync/merge.ts 90.9% 66.66% 100%
src/plugins/cloud-sync/pendingSync.ts 0% 0% 0%
src/plugins/cloud-sync/profile.ts 0% 0% 0%
src/plugins/cloud-sync/snapshotSync.ts 0% 0% 0%
src/plugins/cloud-sync/snapshotTombstones.ts 0% 0% 0%
src/plugins/cloud-sync/StoragePanel.tsx 0% 0% 0%
src/plugins/cloud-sync/storageTypes.ts 100% 100% 100%
src/plugins/cloud-sync/storeAccessors.ts 0% 0% 0%
src/plugins/cloud-sync/syncEngine.ts 0% 0% 0%
src/plugins/cloud-sync/syncStores.ts 100% 100% 100%
src/plugins/index.ts 0% 0% 0%
src/plugins/mounts.ts 100% 100% 100%
src/plugins/panels.ts 100% 100% 100%
src/plugins/PluginMount.tsx 0% 0% 0%
src/plugins/PluginPanelHost.tsx 0% 0% 0%
src/plugins/registry.ts 100% 100% 100%
src/plugins/storage.ts 32.25% 8.33% 33.33%
src/plugins/types.ts 100% 100% 100%
src/types/racing.ts 100% 100% 100%

@TheAngryRaven TheAngryRaven merged commit 3e055b4 into BETA May 28, 2026
5 checks passed
@TheAngryRaven TheAngryRaven deleted the claude/lap-snapshot-feature-VBWDI branch May 28, 2026 01:57
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