You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CLAUDE.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@
17
17
4.**Update credits** (in README) when adding new FOSS dependencies.
18
18
5.**Never do on the server what you can do on the client.**
19
19
6.**Add tests when possible**: New parsers, pure utilities, and protocol/format logic should ship with Vitest coverage. Bug fixes should add a regression test that fails before the fix. Don't leave testable logic untested.
20
-
7.**Keep `CHANGELOG.md` updated**: Add user-facing changes under the `[Unreleased]` heading (Keep a Changelog format) as you make them — don't wait for release time. Cut a new version section + tag when releasing.
20
+
7.**Keep `CHANGELOG.md` updated**: Add user-facing changes as you make them — don't wait for release time. **Once a beta version number has been picked (e.g. `2.5.1`), keep that version as the heading and mark it unreleased — `## [2.5.1] - unreleased` — and keep adding every change under that same section until it actually ships. Do NOT create a new `[Unreleased]` block or bump the patch number on every commit; we are not cutting a `.1` release per change.** Only on release do you set the date and tag, then start the next version. (A bare `[Unreleased]` is fine only before any beta version has been chosen.)
21
21
8.**Keep it professional**: This is a public, released OSS project (v1.5.0+). Hold the bar — see the standards below.
22
22
23
23
---
@@ -615,7 +615,7 @@ The `course_layouts` table stores polyline drawings of track layouts (1:1 with c
615
615
616
616
**Draw tool**: In the VisualEditor, a "Draw" button allows clicking on the satellite map to build a polyline outline. It is shown whenever `showDrawTool` is set — **available to all users**, not just admin (the old `isAdminEditor` gate was removed). User-drawn (or lap-generated) outlines are persisted on `Course.layout` (a `{lat, lon}[]` polyline) through the normal track-storage CRUD, so they ride cloud-sync and travel with a community submission. Built-in courses still get their outline from `public/drawings.json` (see `loadCourseDrawings`); when editing, the user's own `course.layout` takes precedence over the built-in drawing.
617
617
618
-
**Manage Tracks (home screen)**: `FileImport` renders a **Manage Tracks**button (below "Download from Datalogger") that opens `TrackEditor` via its `triggerButton` + `startInManage` props — the track manager is reachable with no datalog loaded. The create-flow dialogs (`AddTrackDialog`/`AddCourseDialog`) pass `isNewTrack`/`showDrawTool` so location search + manual drawing are available there.
618
+
**Manage Tracks (home screen)**: `LandingPage` renders a **Manage Tracks**action tile that opens `TrackEditor` via its `triggerButton` + `startInManage` props — the track manager is reachable with no datalog loaded. The create-flow dialogs (`AddTrackDialog`/`AddCourseDialog`) pass `isNewTrack`/`showDrawTool` so location search + manual drawing are available there.
619
619
620
620
**Generate Drawing**: A "Generate" button (visible when `showDrawTool` is true and either laps *or* GPS samples are available) auto-populates the drawing from GPS data. With detected laps it opens a picker — each lap **plus** a **Whole session** option; with no laps (a fresh track at a brand-new venue where waypoint mode never closed a lap) it generates straight from the full session trace, so the outline can be drawn before a course exists. Available in user-side TrackEditor when session data is loaded. Laps and samples are threaded from `Index.tsx` → `TrackEditor` → `VisualEditor` (and into the create-flow dialogs). The drawing state lives in `useTrackEditorForm` (`formLayout`) and is written into the course via `buildCourse()`. The editor's satellite basemap shares the race-line map's Esri **Wayback** imagery-date picker (`useWaybackImagery`), so lines can be placed against a cloud-free capture (online-only, lazy).
621
621
@@ -775,6 +775,10 @@ Profile **Cloud logs** panel reuses `SessionBrowser` with its own rows.
775
775
-**Display name = the session's date/time**, derived from `sessionStartTime` (the
776
776
first valid sample), e.g. "2/12/2026 11:15 AM" — *not* the upload time or raw
777
777
filename (filename is the row's `title`/tooltip + the stable IndexedDB key).
778
+
-**Log type bubble:** each row shows a `FileTypeBadge` (`components/FileTypeBadge.tsx`)
779
+
with the format derived from the file extension (`lib/logFileType.ts`, pure +
780
+
unit-tested) — the format isn't persisted, so the extension is the source of
781
+
truth. Used on FilesTab local + cloud rows and the Profile Cloud logs panel.
778
782
-**Smart collapse:** a folder level is only rendered when there's more than one
779
783
entry — a single track and/or single course auto-descends straight to the logs
780
784
(the breadcrumb still records the collapsed segments so date names read in
0 commit comments