@@ -11,7 +11,193 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111> from git history and grouped by theme rather than exhaustive per-commit
1212> detail.
1313
14- ## [ 2.6.0] - unreleased
14+ ## [ 2.7.0] - 2026-06-19
15+
16+ ### Added
17+ - ** Setup history.** Each setup in the Garage now has a ** history** (book) icon
18+ that opens a full-panel timeline of every saved revision. It starts with the
19+ original setup shown in full, then lists each later revision as a ** diff** —
20+ only the values that changed, coloured ** green when a number went up** and
21+ ** red when it went down** vs the previous revision (with a per-revision toggle
22+ to show the full setup instead). Every revision shows the ** fastest lap** run
23+ on it, the revision holding the overall fastest lap is ** highlighted** , and the
24+ history is ** filterable by kart and course** — when unfiltered, each revision
25+ shows a bubble for the kart/course where its fastest lap was set.
26+ - ** Edit your vehicle types.** The Setups tab gains a ** Manage Vehicle Types**
27+ button (below * New Vehicle Type* ) that opens the type editor: pick an existing
28+ type from the dropdown — it starts empty so editing is a deliberate choice —
29+ tweak its sections, fields, wheel count or tires, then ** Update** . Renaming a
30+ field is always safe (your saved setups stay attached to it); but if an edit
31+ * removes* a field or flips its data type (number ↔ text) and existing setups
32+ already hold values there, a warning lists exactly which fields are affected.
33+ Cancel that warning and the risky changes are rolled back and highlighted in
34+ orange so you can see what was restored. The editor can also ** delete** a
35+ vehicle type — but only when nothing depends on it (no saved setups, and not
36+ the built-in default). Edits sync to the cloud like the rest of your garage
37+ (newest edit wins).
38+ - ** Vehicle history cards.** Vehicles in the Garage now have a little ** history**
39+ button, just like setups. It opens a panel that gathers every setup you've run
40+ on that vehicle — one card per frozen setup revision — showing the setup name,
41+ its content hash, and the fastest lap turned on it. Cards are ordered fastest
42+ lap first (so your quickest setup is on top), the fastest overall is
43+ highlighted, and each card is collapsed by default — expand it to see the full
44+ frozen setup (no diff). A course filter narrows the view to a single track and
45+ course. Built on a shared history-card module reused by both the setup- and
46+ vehicle-history panels.
47+ - ** Jump to a history card's session.** In both the setup- and vehicle-history
48+ panels, the fastest-lap time and each session in a card's "Fastest laps" list
49+ are now tappable — they load that session straight into the viewer (closing the
50+ garage drawer), so you can go from "which setup was quickest" to the actual
51+ telemetry in one tap. The fastest-lap value is read from each session's own
52+ cached best lap, so it always points back to a real, openable log.
53+ - ** Collapsible Pro panel + relocatable Video/Mini-Map on mobile.** The Pro
54+ view's left column (info/vehicle/video + mini-map) is roomy on tablet and
55+ desktop but cramped on a phone. On mobile a small flag tab now sits at the top
56+ of the divider between the two columns — tap it to collapse the left column so
57+ the graphs get the full screen width, tap again to bring it back. So you don't
58+ lose the video or the map when collapsed, the graph picker (the "Add Graph"
59+ dropdown) gains two extra options at the top on mobile — ** Video** and ** Mini
60+ Map** — that drop the video player or the track map into the regular,
61+ resizable graph stack alongside your data channels. Tablet/desktop are
62+ unchanged.
63+ - ** GoPro chunked-video support.** GoPro cameras split one recording into
64+ sequential 3–5 minute files (` GH010042.MP4 ` , ` GH020042.MP4 ` , … or legacy
65+ ` GOPR0042.MP4 ` + ` GP010042.MP4 ` ). You can now select ** all** the chapter files
66+ at once in the video player and they play back — and sync to your telemetry —
67+ as one continuous video. Chapters are auto-detected and ordered (you can also
68+ multi-select any set of files manually), the next chapter is preloaded so the
69+ boundary is near-seamless, and a small chapter indicator shows where you are.
70+ Fully client-side and offline, no stitching tool needed. Saved playlists
71+ reload automatically next session. On mobile, where the file picker can't be
72+ filtered, selecting * everything* still works: sidecar files (` .LRV ` /` .THM ` ),
73+ photos, and other junk are silently ignored. If the selection happens to span
74+ more than one recording, you're asked which one to load — and only that one is
75+ kept in memory; otherwise the single recording loads straight away.
76+ - ** Video export across GoPro chapters.** Exporting a full session (or a single
77+ lap) with overlays now stitches across all chapters into one MP4 — the frame
78+ encoder seeks through the whole virtual timeline and the audio from each
79+ chapter is concatenated in sync. Multi-chapter export requires a browser with
80+ WebCodecs (Chrome/Edge); single-file export is unchanged everywhere.
81+ - ** Post-session tire pressure & weight on the Notes tab.** A new collapsible
82+ ** Post-Session** panel sits under the session-setup selector on the Notes page,
83+ letting you record the tire pressures you measured after a run (single / halves
84+ / quarters — same picker as the setup editor, defaulting to quarters) and a
85+ single post-session weight. The values save with the session and cloud-sync like
86+ your notes, ready for later processing.
87+ - ** Device Name setting for the logger.** The Device → Settings screen now
88+ supports a ** Device Name** field (a free-text name, up to 32 characters) for
89+ loggers whose firmware exposes it. When you're signed in, a ** Use profile name**
90+ shortcut fills the field with your account name in one tap.
91+ - ** Feature roadmap on the home screen.** The landing page now shows a short
92+ "Remaining feature roadmap" panel under the action tiles, listing what's still
93+ coming (cheaper DIY logger, leaderboards & public profiles, 3rd-party logger
94+ downloads, native app, race-day organization, team management, coaching
95+ updates, video editor updates, and the "Vulture" logger) with rough timing
96+ estimates.
97+ - ** Earn free cloud storage by contributing tracks.** When you submit tracks to
98+ the community database while signed in, your contribution is now linked to your
99+ account — and the submit screen shows a note that signed-in contributions earn
100+ free cloud storage. Submitting without an account still works exactly as before.
101+ The home-screen ** Manage tracks** card and the ** Submit to DB** button now show
102+ a 🎁 reminder of the perk too.
103+ - ** Admin: user management.** A new ** Users** tab in the admin panel lists every
104+ account with its email/display name, plan, storage used, and number of track
105+ contributions. Click a user to see details and ** grant them free months of
106+ premium** (or remove the grant). Comped premium expires automatically when the
107+ granted months run out, then follows the same 60-day grace as a cancelled
108+ subscription before any over-limit cloud logs are trimmed.
109+ - ** Storage trim warning.** When a paid plan or a comped one lapses, your Profile
110+ now shows a clear countdown — "cloud logs trim to the free tier in N days" — so
111+ you have time to subscribe or download them first.
112+ - ** Admin: see who submitted a track.** The Submissions tab now shows the
113+ contributor's account name (or "Anonymous") alongside the existing IP/date.
114+ - ** Complimentary plan badge.** If you've been granted free premium, your Profile
115+ now shows a "Complimentary" badge and how long it lasts — and hides the Stripe
116+ billing buttons (there's no paid subscription to manage).
117+
118+ ### Changed
119+ - ** Notes and Setups moved to the main toolbar.** Session notes (with the
120+ session-setup + post-session measurement panel) and your vehicle setups are now
121+ their own tabs in the main view bar — ** Setups** then ** Notes** , to the right of
122+ Tools — instead of living inside the Garage drawer. They update often, so this
123+ keeps them a single tap away. ** Vehicles** stay in the Garage (you set those up
124+ once). The setup-status nag jumps straight to the right place. On ** tablets and
125+ desktop** the two share one ** Setups & Notes** tab shown as a 50/50 split, so
126+ the extra width isn't wasted; phones keep them as separate full-width tabs.
127+ - ** Fewer taps for single-vehicle garages.** The new-setup form now pre-fills
128+ (and locks) the vehicle type when you only have one, and the vehicle when only
129+ one fits — the pickers stay visible, just filled in for you. The session-setup
130+ selector on Notes likewise pre-fills your only vehicle (and its only setup).
131+ Nothing is auto-saved — you still tap Save. And if you linked the wrong setup to
132+ a session, a ** Clear session data** button (with an "are you sure" confirm)
133+ unlinks it so you can re-assign; your notes and measurements are kept.
134+ - ** Easier vehicle types.** Adding a vehicle now locks the type when there's only
135+ one (nothing to choose), and a ** New type** button on the Vehicles tab jumps you
136+ straight to the vehicle-type creator on the Setups tab so it's clear where types
137+ come from. On the landing page (no session loaded) the Setups tab is hosted
138+ inside the Garage so vehicles, setups and types stay reachable before you open a
139+ log.
140+ - ** Setups guide you to a vehicle first.** With no vehicles yet, the ** Add setup**
141+ button is disabled and a ** First create a vehicle** button takes you to the
142+ Vehicles tab — no more dead-end where a setup has nothing to attach to.
143+ - ** Copy setup from another vehicle.** When a same-type vehicle already has a
144+ setup, the new-setup form shows a ** Copy setup from…** button: pick a vehicle
145+ (filtered to the current type) and one of its setups, and the form is pre-filled
146+ so you can tweak and save — a big time-saver across similar karts/cars.
147+ - ** Tighter lap selector.** The lap dropdown in the session header now sizes to
148+ its label instead of a fixed width, freeing up room so the toolbar controls
149+ (snapshots, overlays) don't get squeezed off-screen on mobile.
150+ - ** Admin link tidied up.** The home-screen "Track Management" link is now
151+ labelled ** Admin** and only appears when an admin is actually signed in (it was
152+ previously shown to anyone on an admin-enabled build).
153+ - ** Prices show their currency.** The paid plan cards on the pricing/sign-up
154+ screens now note ** USD** next to the price.
155+ - ** Track manager is now a simple drill-down.** The track/course manager was
156+ reworked into a clear two-step flow: a ** list of tracks** → tap one → its
157+ ** courses** . The list scrolls once you have more than a handful of tracks, and
158+ grows a ** search box** to quickly filter once you have more than ten. The course
159+ screen no longer has a separate track dropdown (you got there by tapping the
160+ track) and has a ** back** arrow to the track list. Opening the manager — from the
161+ home screen * or* in a loaded session — now skips the old selection screen: the
162+ home screen opens on the track list, and in a session it jumps straight to the
163+ current track's courses, where ** tapping a course applies it to your session**
164+ (the active course is highlighted).
165+ - ** Faster course creation.** Two fewer-clicks tweaks to the course editor: new
166+ sector lines now default to ** Major** until the three traditional sectors are
167+ filled (so a standard 3-sector course is valid right after adding two lines, no
168+ toggling needed), and creating a new course with a session already loaded now
169+ ** auto-generates the track outline** from your fastest lap — the drawing is
170+ there before you start, instead of having to open the Generate picker yourself.
171+ - ** Sample data is now just a normal log.** The bundled sample session lives in
172+ your file browser as an ordinary file named ** "SAMPLE - Tillotson 225rs"** , and
173+ the home-screen ** Load sample data** button simply opens it like any other log —
174+ no more special-case sample handling and its rough edges. A new ** Show sample
175+ files** toggle in Settings (on by default) hides it from the browser — and the
176+ home-screen sample tile — if you'd rather not see it. The sample always shows as
177+ cloud-synced and can't be uploaded, so it never eats into your cloud storage.
178+ When the sample is your * only* file, the toggle stays locked on so you can never
179+ hide your only way back into the app.
180+ - ** Weather is cached per session.** Once a session's weather has been looked up,
181+ it's saved on your device — a session's date never changes, so its weather is
182+ fixed. Reopening that session shows the saved conditions instantly and no longer
183+ re-queries the weather station / service every time. The cache stays on your
184+ device (it isn't cloud-synced — there's no point re-uploading data the next
185+ device can look up for free), and the home-screen ** Local Weather** check still
186+ fetches live, current conditions as before.
187+
188+ ### Removed
189+ - ** Labs tab removed.** The experimental Labs tab (and its hidden settings
190+ toggle) has been retired — it carried no active features.
191+
192+ ### Fixed
193+ - ** Fonts now work fully offline.** The Inter and JetBrains Mono typefaces were
194+ loaded from Google's font CDN at runtime, which had no offline cache rule — so a
195+ fresh load with no signal (e.g. at the track) fell back to system fonts. The
196+ fonts are now self-hosted (via Fontsource) and bundled into the offline
197+ precache like the rest of the app, so they render correctly from the first paint
198+ with no network. This also removes a third-party request on every page load.
199+
200+ ## [ 2.6.0] - 2026-06-15
15201
16202### Added
17203- ** Tools on the home screen.** A new ** Tools** tile on the landing page opens the
0 commit comments