diff --git a/AGENTS.md b/AGENTS.md index 9d5b17b..da152fd 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -46,7 +46,24 @@ Use the `joplin_get_note` tool with note ID `6c0dcb2a567348fd9796f50c790082e4` t ## API Communication -Racecraft communicates exclusively with the rusty-telemetry REST API. In development, Vite proxies `/api/*` to `http://127.0.0.1:8080`. See the rusty-telemetry README for full endpoint documentation. +Racecraft communicates exclusively with the rusty-telemetry REST API (23 endpoints). In development, Vite proxies `/api/*` to `http://127.0.0.1:8080`. See the rusty-telemetry README for full endpoint documentation. + +## Features + +- **Dashboard** — system status, live feed cards, recent sessions +- **Live Telemetry** — real-time gauges (speed, RPM, gear, inputs), per-feed status +- **Sessions** — create/complete/reopen sessions, start/stop/delete runs, view analysis +- **Shift Points** — gear RPM range charts, shift event timeline, recommended shift RPM +- **Car Characteristics** — aggregated shift-point profiles per car across all sessions +- **Track Mapping** — canvas-rendered track boundaries, persistent track models + +## State Management (Pinia Stores) + +| Store | Purpose | +|-------|---------| +| `stores/telemetry.ts` | Live telemetry polling + derived status | +| `stores/sessions.ts` | Session CRUD, run management, analysis retrieval | +| `stores/tracks.ts` | Track model list + detail | ## Commands diff --git a/README.md b/README.md index eaf1768..0ca89da 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ Web-based sim racing telemetry analysis client. Connects to [rusty-telemetry](ht - Polling at 250ms for responsive updates ### Session Management -- Create analysis sessions with use case selection (Shift Points, Track Map, etc.) +- Create analysis sessions with use case selection (Shift Points, Track Mapping) - Start/stop runs within a session to capture telemetry data - Complete sessions to trigger automatic analysis - Session detail view with run history and status @@ -59,10 +59,16 @@ Web-based sim racing telemetry analysis client. Connects to [rusty-telemetry](ht - Recommended shift RPM from aggregated data - Detailed shift event table -### Track Map +### Car Characteristics +- Aggregated shift-point profiles per car across all sessions +- Expandable car cards showing per-gear RPM/speed ranges +- Recommended shift RPM per car + +### Track Mapping - Canvas-rendered track boundaries from coordinate data - Center line computation from left/right boundary runs - Boundary legend with point counts +- Persistent track models with track list and detail views - Responsive canvas that redraws on window resize ## Tech Stack @@ -137,19 +143,22 @@ racecraft/ ├── src/ │ ├── main.ts # App bootstrap (Vue + Pinia + Router) │ ├── App.vue # Root layout with navigation -│ ├── router/index.ts # 6 routes with lazy loading +│ ├── router/index.ts # 8 routes with lazy loading │ ├── types/index.ts # TypeScript interfaces matching API JSON shapes │ ├── api/client.ts # Typed Axios client (all API endpoints) │ ├── stores/ │ │ ├── telemetry.ts # Live telemetry with polling + derived status -│ │ └── sessions.ts # Session CRUD, run management, analysis +│ │ ├── sessions.ts # Session CRUD, run management, analysis +│ │ └── tracks.ts # Track model list + detail │ ├── views/ │ │ ├── DashboardView.vue # System status, feeds, quick actions │ │ ├── LiveView.vue # Real-time gauges and telemetry │ │ ├── SessionsView.vue # Session list with create/delete │ │ ├── SessionDetailView.vue # Run workflow, complete, analyze │ │ ├── ShiftPointsView.vue # RPM charts and shift event table -│ │ └── TrackMapView.vue # Canvas track map renderer +│ │ ├── CharacteristicsView.vue # Car characteristics aggregation +│ │ ├── TracksView.vue # Track model list +│ │ └── TrackDetailView.vue # Canvas track map renderer │ ├── components/ │ │ └── FeedStatus.vue # Reusable feed card with health + telemetry │ └── assets/ @@ -160,7 +169,7 @@ racecraft/ ## API Contract -Racecraft consumes the rusty-telemetry REST API (19 endpoints). See the [rusty-telemetry README](https://codeberg.org/jhunnius/rusty-telemetry) for full endpoint documentation. +Racecraft consumes the rusty-telemetry REST API (23 endpoints). See the [rusty-telemetry README](https://codeberg.org/jhunnius/rusty-telemetry) for full endpoint documentation. Key endpoints used: - `GET /api/live` — polled every 250ms–1000ms for live telemetry @@ -168,6 +177,10 @@ Key endpoints used: - `POST /api/sessions/{id}/runs` / `POST /api/sessions/{id}/runs/{run_id}/stop` — run capture - `POST /api/sessions/{id}/complete` — complete session and trigger analysis - `GET /api/sessions/{id}/analysis` — retrieve analysis results +- `GET /api/characteristics/cars` — aggregated car shift-point profiles +- `GET /api/characteristics/cars/{car}` — detailed per-gear data for a car +- `GET /api/tracks` / `GET /api/tracks/{track}` — track model list and detail +- `POST /api/sessions/{id}/build-track-model` — build track model from session ## License