Skip to content

Releases: TheAngryRaven/DovesDataViewer

3.0.0 leaderboard and profiles

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 30 Jun 04:26
331d9a0

v3.0.0 — 2026-06-30

Added

  • Public-vehicle badge. Vehicles marked Show on profile now carry a small
    Public badge in the garage's Vehicles tab, so you can see at a glance which are
    shared on your driver profile.
  • Request a datalogger. The contact form has a new New datalogger connection
    category, and the "Download from logger" picker has a Request additional
    dataloggers
    button that opens the contact form with that category preselected.
  • Custom tracks ride along with leaderboard snapshots. When you submit a snapshot
    for a track that isn't in the built-in list, its layout + sectors are included with
    the snapshot (so others can view the lap) and the track is automatically submitted
    to the community track database
    for review — same flow as the manual submitter, no
    CAPTCHA for signed-in users, deduped so it's only sent once.
  • Alfano logger groundwork. Picking the Alfano tile in the logger picker now
    explains that Alfano transfers over Bluetooth serial (Classic Bluetooth SPP),
    which browsers can't access in-browser, so it will require the native app. The
    native-side download flow is scaffolded (src/lib/loggers/alfano/,
    AlfanoDownload) against the shared native IPC client; the Rust backend that
    drives it is still to come.
  • Public driver profiles (plan 0006). A new public /driver/{name} page (shareable,
    viewable signed-out) shows a driver's profile picture, display name, their opt-in
    vehicles
    (name/type/engine only — never weights or setups), and their uploaded
    leaderboard snapshots as cards. URLs are case-insensitive. Click a driver's
    avatar on the Leaderboards
    to open their profile, and click any snapshot card to
    load that lap in the read-only viewer.
  • Profile pictures. Tap your profile picture on the Profile tab to upload one; it's
    cropped to a centred square and downscaled to ≤256px on-device, then stored in the
    cloud. Avatar thumbnails now appear next to names on the Leaderboards.
  • Copy profile link. A button under Sign out on the Profile tab copies your public
    driver-profile link.
  • Show a vehicle on your profile. Each vehicle in the garage now has a Show on
    profile
    toggle that publishes a public-safe projection (no weight, no setup).
  • A ← Back to home button on the Leaderboards and driver-profile pages.
  • Leaderboards (plan 0005). A new public Leaderboards page (linked from the
    landing page) where anyone — signed in or not — can browse fastest community laps
    by track → course → engine class, with an optional Group by weight toggle
    and a Show top selector (3/10/25/50/100/All). Picking a group launches the
    normal telemetry viewer in a new read-only mode (alert-coloured header,
    Coach/Tools/Setups + video/weather/snapshots hidden) where every submitted lap is
    a row, fastest first, labelled by the submitter's name.
  • Submit snapshots to the leaderboards. From the Profile tab, signed-in users
    with lap snapshots get a Submit to leaderboards dialog. GPS, engine name and a
    listed weight are public; engine-telemetry channels (RPM, temps) stay
    private unless you opt to share them. Setup data is never uploaded. The listed
    weight defaults to the vehicle's weight and can be overridden (e.g. show a class
    weight). Identical snapshots can't be resubmitted.
  • Engine classification + moderation (admin). A new admin Leaderboards tab
    lists every submission with approve/deny (allow-by-default), a per-record engine
    class override, and admin notes. Engine classes are keyword groups that
    collapse free-text engine names ("Tillotson 225" / "225RS" / "Tilly") into one
    class automatically, with a Reclassify action — without ever mutating the
    user's raw engine string.

Changed

  • Display names are now unique case-insensitively so a name can't be impersonated by
    changing case (existing case-duplicates are auto-suffixed by the migration).
  • Leaderboard names update live. A submitter's name on the leaderboards now comes from
    their current profile (linked by account) instead of a copy frozen at submit time, so
    renaming your display name updates all your existing entries.

Full changelog: v2.9.2...main

v2.9.2 prepping for big things

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 25 Jun 04:59
d0dd71e

v2.9.2 — 2026-06-25

Added

  • Frame-by-frame stepping in the header. Two new buttons flank the play button to step the data cursor one sample back/forward. A synced video follows the step (through the same sync path), landing on the exact frame — so drivers and coaches can compare a lap literally frame by frame. Stepping pauses any running playback.
  • Split graphs — side-by-side lap comparison (Pro tab). On tablet and larger, a new Split graphs button (top-right of the Pro tab, where the Simple tab's Overlay toggle sits) splits the graph area into a draggable two-up view. Pick one of your enabled overlay laps and the right panel mirrors the main panel's graphs for that lap; a single playback control drives both, kept on the same point on track. If a synced video is relocated into the graph stack and the chosen lap is from the current session, a second video plays alongside it — frame-locked to the main player and showing the same point on track in the comparison lap's own footage (an out-of-session lap shows graphs only, leaving the main video untouched). Opening the side panel — or pressing Combine graphs — returns to the single view. Not available on phones.
  • Download from a Fledgling over Bluetooth in the native app. On the native (Tauri) app the PerchWerks Fledgling tile in the logger picker now runs a real Bluetooth download through the native shell (the native webview has no Web Bluetooth). The flow scans for nearby loggers, lets you pick yours from an in-app list, then connects, lists sessions and downloads + imports the chosen one — the same device files (.dove/.dovex/.csv) and parser as the browser path. Built on a new createDovesloggerConnection() adapter behind the existing LoggerConnection interface, sharing the native IPC client with MyChron. Settings, track sync and firmware update stay on the Web Bluetooth path for now. Web downloads are unchanged.

Changed

  • The Pro tab's side panel can now be collapsed on any screen size (previously phone-only), giving the graphs the full width when you want it.
  • Video sync is now anchored to absolute session time. Sync a video once and it stays put — switching laps (or cropping the range) never needs a re-sync. The app understands where the footage sits on the session timeline, so partial videos are handled cleanly: when the camera started after the logger or stopped before the session ended, the out-of-footage stretches show "Video starts later" / "Video ended" while the charts keep playing, instead of a generic message.
  • Simple-view graph controls are easier to reach. The collapse/expand button on the map/graph divider is now larger and lives on the left, grouped with a new legend toggle in a single floating control flag — clear of the map's weather/info buttons on the right that it used to crowd. The legend toggle hides the chart's legend bar to reclaim vertical space (handy for logs with many channels), and collapsing the graph now shows a clean grey panel instead of a cramped chart. The "data crop" sector dropdown keeps a minimum width so it no longer squishes on mobile in the Simple or Pro views.

Fixed

  • Smoother playback with a video loaded. Pressing play in Pro graph view with a synced video stuttered: the video's playhead time lived inside the shared video state, so every video frame re-created the whole session context and re-rendered every tab and panel ~30–60×/sec. The per-frame playhead now lives in its own tiny context (like the playback cursor already does), so only the video time readout re-renders per frame and the rest of the view stays quiet.
  • A synced video no longer stutters when you play or scrub the data. Pressing the top play button used to advance the data cursor on its own clock and seek the locked video to chase it — every seek forces the decoder back to a keyframe, so the picture juddered instead of playing. The top play button now drives the video itself when it's locked over footage (the same smooth path as the video's own play button), with the cursor derived from the video's playhead.
  • Scrubbing a synced video is smoother and lands on the same frame every time. Dragging the data cursor fired a fresh video seek every frame regardless of whether the previous one had finished, so the decoder thrashed (cancel/restart) and the picture juddered; a fixed seek-throttle also dropped the final seek, parking the video on a stale frame. Seeks are now paced on the video's own seeked event — the next seek is issued only when the last completes, always to the latest cursor position — using a fast approximate seek during the drag and one precise seek once the cursor settles, so the parked frame is exact and repeatable. Scrub cursor updates are also coalesced to one per animation frame, so a high-rate mouse or trackpad no longer floods the main thread with graph redraws while the video seeks.
  • Split-graphs comparison video no longer drifts lap-by-lap. Two causes are fixed. First, the comparison player seeked off the overlay lap's snapped first sample (a sub-sample fraction before the true start/finish crossing); it now anchors to each lap's true crossing times and interpolates the seek by track distance. Second — the bigger one — a single sync offset can't absorb a camera/datalogger clock-rate difference, so far-from-sync laps drifted by seconds. Video sync is now rate-aware: a manual ± nudge (50 ms steps) on the comparison video fine-tunes one lap, and the ✓ Lock in button turns that into a calibration anchor — the clock rate is fit through it (refined as you lock more laps) and applied to every lap automatically, keeping the lap you originally synced pixel-exact. Nudges never touch the saved sync until you lock them.
  • Approving a track/course submission now adds it to the database. In the admin Submissions tab, approving a submission previously only flipped its status — it never created the track or course, so an approved new track/course silently never appeared in the live tables. Approval now materializes the submission: it upserts the track (creating it for a new track), upserts the course from the submitted geometry/sectors, sets a new track's default course, and attaches any drawn outline — covering new tracks, new courses, and course modifications. A bad payload now errors and leaves the submission pending instead of being marked approved while landing nothing.
  • Simple-graph legend no longer lists g-force lines it doesn't draw. With the default "hardware" G-force source, the simple telemetry chart draws the hardware accel channels and hides the GPS-derived Lat G/Lon G — but the legend still listed them, so they appeared without ever drawing. The legend now matches what's drawn; switch the G-force source to GPS in Settings to see Lat G/Lon G.
  • Landing-page header layout. The Sponsor button now sits at the far left next to the LapWing brand, and the account control sits at the far right. A new Settings button (opening the settings panel) sits just left of it. When signed in, the account control is now a Profile button that opens the file-manager drawer straight to the Profile tab, replacing the old Sign-out button.
  • Support contact email. The Terms of Service and Privacy Policy now point to support@perchwerks.com for questions and requests (replacing the interim address), and the Code of Conduct's enforcement contact was updated to match.

Removed

  • "Continue with Google" sign-in. Google OAuth routed through a third-party hosted broker; it has been removed (along with its build-time scaffolding and the VITE_ENABLE_GOOGLE_AUTH flag) pending a native Supabase Google OAuth setup. Email sign-in/registration is unaffected. No public backend credentials ship in the repo anymore — the Supabase fallbacks are blank, so a fresh clone runs fully offline-first until you supply your own VITE_SUPABASE_* values.

Full Changelog: v2.9.1...v2.9.2

v2.9.1 Prep for big things

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 22 Jun 05:12
bcb3062

What's Changed

Full Changelog: v2.9.0...v2.9.1

2.9.0 prep for big things

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 22 Jun 03:12
3c60ceb

What's Changed

Full Changelog: v2.8.0...v2.9.0

2.8.0 LapWing Rebrand

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 20 Jun 23:40
3310e9a

What's Changed

Full Changelog: v2.7.2...v2.8.0

v2.7.2 Rebrand Warning

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 20 Jun 22:48
d5b7818

What's Changed

  • Migration banner on hackthetrack.net → LapWing (emergency, into main) by @TheAngryRaven in #259

Full Changelog: v2.7.1...v2.7.2

UX Flow Fixes

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 19 Jun 16:33
acb5bd7

What's Changed

Full Changelog: v2.7.0...v2.7.1

UX flow fixes

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 19 Jun 05:37
8b8ed6a

What's Changed

Full Changelog: v2.6.0...v2.7.0

v2.6.0 localization and phone datalogger

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 15 Jun 02:25
c2504af

What's Changed

Full Changelog: v2.5.1...v2.6.0

v2.5.1 - UX cleanup

Choose a tag to compare

@TheAngryRaven TheAngryRaven released this 13 Jun 05:57
f7759ab

What's Changed

Full Changelog: v2.5.0...v2.5.1