Release BETA → main: landing page UX overhaul + mobile garage polish#194
Merged
Conversation
The home screen bundled every action (upload, browse, BLE download, manage tracks) into the file dropzone as a cluster of small outline buttons, which read as cramped and unhelpful. Rework it into a Bambu-Studio-style layout: - FileImport is now just one large drag-and-drop / click-to-browse zone — the single primary action. The secondary buttons it used to host are gone. - Every other action is a big, scannable ActionTile (icon + title + one-line description): load sample data (featured), browse saved files, download from the logger over Bluetooth, manage tracks, and build your own logger. - New reusable ActionTile presentational component keeps all tiles consistent (button or external-link variants, optional featured accent + spinner). - DataloggerDownload gains a renderTrigger prop so it can be driven from a tile while still owning its transfer modal; it stays lazy so the BLE module is off the initial bundle. - Pricing cards are removed from the landing page — plan selection already lives on the registration page. This also drops Supabase off the offline-first landing payload entirely. - Reference dialogs (supported files, about, weather, browser compat, contact) and resource links are tidied into clear rows. Colors and design tokens are unchanged — this is a UX/layout pass, not a restyle. The in-session app view is untouched.
Bump package + lockfile to 2.5.1 and move the landing-page UX overhaul from [Unreleased] to the 2.5.1 changelog section.
Landing page UX overhaul — simpler, bigger-button home screen
- FileManagerDrawer covers the full screen on mobile (w-full), staying at half width on sm+ — easier to use on a phone. - Hide the play/pause button on mobile in the loaded-session header so the Garage button stays reachable when space is tight. - Consolidate the compact track/course label + edit button into a single course control: a route icon (shown at every size, a clearer race-course glyph) with the current track : course as the label on wider screens and a title tooltip.
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
dovesdataviewer | 411337f | Commit Preview URL Branch Preview URL |
Jun 13 2026, 05:56 AM |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Coverage SummaryLines: 58.45% (5209/8911) · Statements: 57.49% · Functions: 55.27% · Branches: 52.67% Per-file coverage
|
Reverse the mobile play/pause hide — there's room to keep it at all sizes — and show the consolidated course control's track : course label from tablet (md) up rather than desktop-only.
Resizable dividers (left/right split, InfoBox/MiniMap split, video panel) stopped tracking a few pixels into a touch drag. The shadcn ResizableHandle is a 1px line with only a ~4px invisible grab strip, while react-resizable-panels extends the drag-start hit margin 15px over the neighbouring chart/map. Only the handle element gets touch-action:none, so a finger landing just off the divider started the resize on a neighbour element; after the touch-slop the browser reclaimed the gesture as a scroll (pointercancel) and the drag died. Widen the touch-action:none grab strip to ~16px and shrink the library's drag-start margin to match it, so every started drag begins on the handle itself and touch drags track all the way. Mirrors the existing GraphResizeHandle fix for the same root cause.
Mobile garage drawer + in-session header polish
The browser shows each session by date/time, so the file format wasn't visible anywhere. Add a small type pill (Dove, Dovex, XRK, XRZ, iRacing, VBO, MoTeC, UBX, NMEA, CSV, …) derived from the file extension — we don't persist the detected format, so the extension is the source of truth. - lib/logFileType.ts: pure extension → label mapping (unit-tested). - components/FileTypeBadge.tsx: reusable pill, renders nothing without an extension. - Wired into FilesTab local + cloud rows and the Profile Cloud logs panel.
The 2.5.1 beta version was already cut, so these changes belong under it rather than a new [Unreleased] block. Merge the entries into ## [2.5.1] - unreleased and add a CLAUDE.md note: once a beta version is picked, keep it as the heading marked "unreleased" and accumulate changes there — no per-commit patch bumps.
…ubble Add log-type bubble to file browser rows
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.
Promotes the current
BETAline tomain. UX/layout work only — no color or design-token changes, and the in-session app view is untouched apart from the mobile header tweaks called out below.Landing page UX overhaul (2.5.1)
The home screen was a cramped dropzone with a cluster of small buttons bundled inside it. Reworked into a simple, Bambu-Studio-style layout:
FileImportis now a single large drag-and-drop / click-to-browse zone.ActionTile): load sample data (featured), browse saved files, download from logger (Bluetooth), manage tracks, build your own logger.DataloggerDownloadgains arenderTriggerprop so it drives a tile while keeping its transfer modal — still lazy, so the BLE module stays off the initial bundle.PricingCards variant="register"). Bonus: drops Supabase off the offline-first landing payload entirely.Mobile garage & header polish
w-full), staying at half width onsm+— much easier to use on a small screen.Track : Courselabel + edit button are merged into a single control using a clearer route icon to represent a race course (shown at every screen size), with the currentTrack : Courseas its label on wider screens and a title tooltip on mobile.Checks
npm run lint✅npm run typecheck✅npm run test:run✅ (109 files, 1497 tests)npm run build✅ (BLE stays in its own lazy chunk; Supabase stays a separate vendor chunk)CHANGELOG:
2.5.1section for the landing overhaul; the mobile polish sits under[Unreleased]pending the next version cut.https://claude.ai/code/session_014P9qC1xKvJUajTTdHuAh7P
Generated by Claude Code