Skip to content

Prepare v11.1.0#556

Merged
JavierRibaldelRio merged 147 commits into
productionfrom
develop
Jun 27, 2026
Merged

Prepare v11.1.0#556
JavierRibaldelRio merged 147 commits into
productionfrom
develop

Conversation

@JavierRibaldelRio

Copy link
Copy Markdown
Collaborator

No description provided.

vasyl-ks and others added 30 commits April 28, 2026 22:34
These folders are already listed in .gitignore but were previously
committed. Remove them from the git index while preserving local
copies so they are no longer pushed to GitHub.
Sets up the competition-view package in the pnpm workspace with the same
stack as testing-view: React 19, TypeScript, Vite + SWC, Tailwind CSS v4,
@workspace/ui and @workspace/core. Dev server runs on port 9001.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces the full application shell: entry point (main.tsx), root App
component with WebSocket connection tracking, HashRouter with Overview and
Messages routes, collapsible sidebar (logo, navigation, connection status,
dark-mode toggle), page header with live connection badge, and the AppLayout
wrapper that syncs dark-mode preference to the document root.

Includes a minimal persisted Zustand store (appSlice) that retains the
dark-mode preference across sessions. Page stubs are left as placeholders
to be filled in subsequent commits.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Expands the Zustand store with three new slices:
- connectionsSlice  – mirrors per-board connection status from the backend
- messagesSlice     – capped FIFO log of system messages (max 500 entries)
- telemetrySlice    – flat key→value map of the latest measurement values,
                      updated via high-frequency podData/update packets

Adds typed definitions for Connection, Message/MessagePacket, and
TelemetryData/TelemetryState under src/types/.

App.tsx now subscribes to all three backend topics (connection/update,
message/update, podData/update with 100 ms throttle) and fans out to the
appropriate store actions. ConnectionStatusGroup upgraded to also render
live per-board entries from the connections slice.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The flash station has been moved to its own standalone flashing-view app.
This removes the /flashing route and its feature module from the testing-view.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes bundled Python integration, BLCU IPC proxy handlers, and the
setup-python script that were added ad-hoc during flashing-view integration.
The BLCU IPC layer will be added back properly in the flashing-view PR.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Relocates the flashing-view from the project root into frontend/flashing-view
to match the layout of testing-view and competition-view. Updates the pnpm
workspace to reference the new path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces the two core competition pages:

Overview dashboard:
- VehicleStateBanner   — full-width banner for VCU general + operational state
- BrakeIndicator       — large colour-coded BRAKED / UNBRAKED widget
- MetricCard           — reusable card with threshold-aware colour coding
- RecentMessages       — compact last-6 message panel with kind + timestamp
- Responsive grid layout (2 cols → 4 cols on large screens)

Messages page:
- Full scrollable log reading from the Zustand messages slice
- Per-kind filter toggles (info / warning / error / debug)
- Live count display and one-click Clear button
- MessageItem component with colour-coded kind badge

Supporting utilities:
- constants/measurements.ts  — central registry of all telemetry key strings
- hooks/useMeasurement.ts    — thin selector hook for single measurement reads

Completes the 25% milestone for the competition-view redesign.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…sidebar

Copies the shared logo.svg from testing-view into competition-view's assets
and updates the Logo component to render it. The dark:invert class ensures
the logo is visible in both light and dark mode, matching the testing-view
treatment.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds competition-critical order controls directly to the Overview dashboard:

- constants/orders.ts    — typed Order interface and three hardcoded order
                           sets: BRAKE (215), OPEN_CONTACTORS (902), and
                           EMERGENCY_STOP (55 + 1799 + 1698 + 0)
- hooks/useSendOrder.ts  — stable useCallback that posts each order to the
                           backend via socketService.post("order/send", ...)
                           and logs every dispatch through competitionView logger
- OrdersPanel            — three action buttons; Emergency Stop requires a
                           second click within 2 s (armed + pulse animation)
                           to prevent accidental activation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces a dedicated Batteries page with two sections:

High Voltage (HVSCU + OBCCU):
- Summary bar with total voltage, min SOC, cell V max/min, T max/min,
  and a contactor-state badge
- Grid of 10 BatteryPackCard components, each showing a SOC progress bar,
  voltage, temperature, cell max/min, and a balancing indicator

Low Voltage (BMSL):
- Summary bar with SOC, total voltage, current, V max/min, T max/min
- 6 CellCard components with per-cell voltage bars and threshold
  colouring (amber above 4.15 V, red below 3.1 V)

constants/measurements.ts expanded with obccuPack() factory function,
full BMSL, LCU, and PCU_BOARD key sets.
constants/pages.ts and App.tsx updated with the /batteries route.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces a dedicated Boards page giving an at-a-glance view of every
ECU's state machine status and key secondary measurements:

- BoardCard (reusable) — state badge pulled from any measurement key
  plus a compact stats grid; drives VCU, HVSCU, PCU, LCU, and BMSL cards
- LcuAirgapCard — 8 sensor readings (4 vertical + 4 horizontal) with
  amber threshold warning below 5 mm
- Boards page — two sections: Board States grid and Levitation detail

App.tsx and constants/pages.ts were already updated in commit 6.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduces a Charts page with four fixed competition-critical series,
rendered with uplot for high-frequency updates:

- Speed (PCU/speetec_velocity, m/s)
- Position (PCU/speetec_position, m)
- HV Battery SOC (HVSCU/minimum_soc, %)
- Brake Pressure (VCU/pressure_brakes, bar)

TelemetryChart component:
- History accumulated in local refs (no store overhead) — rolling 500 pts
- x-axis is a monotonic counter driven by incoming measurement updates
- ResizeObserver keeps chart width in sync with its container
- Click-drag zooms; double-click resets to live view
- memo'd to avoid unnecessary re-renders

chartConfig.ts centralises height, line/point sizes, and the 5-colour
palette (competition orange leading). uplot ^1.6.32 added to package.json.
/charts route and LineChart sidebar icon added.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BatteryFull, CircuitBoard and LineChart are not exported by
@workspace/ui/icons. Replaced with icons that are available in the
curated set: Layout (Overview), Activity (Charts), Wrench (Batteries),
Terminal (Boards), ScrollText (Messages). Resolves blank-page build error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…h UI kit components

Levitation board fixes:
- Removed max-w-sm constraint — card now spans full width like the board grid
- Renamed horizontal airgap labels from "Airgap 5–8" to "H1–H4" for clarity
- Added pitch, roll, yaw rotation measurements (LCU/rot_control_y/x/z)
- Redesigned card into a 4-column grid: Position · Rotation · Vertical Airgaps · Horizontal Airgaps

UI kit consistency (use @workspace/ui components throughout):
- ConnectionBadge   — custom <span> replaced with Badge
- BoardCard         — state indicator <span> replaced with Badge
- OrdersPanel       — raw <button> elements replaced with Button
- Messages          — filter toggle raw <button> elements replaced with Button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add catalog types (NumericParameter, EnumParameter, BooleanParameter)
- Add catalogSlice Zustand slice storing commandsCatalog and boards list
- Add useOrdersCatalog hook — fetches /orderStructures, refetches on WS reconnect
- Add Orders page: search Input, Skeleton loading, collapsible BoardSection per board
- Add BoardSection: Collapsible with Badge count, auto-expands during search
- Add OrderItem: Badge for ID, Send Button, expandable parameter form
- Add OrderParameters: Input/Select/Checkbox from @workspace/ui for all param kinds

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JavierRibaldelRio and others added 29 commits June 20, 2026 21:54
…s-values

feat: add toggleable labels for charts values
…workflow

chore(release): update workflow to allow select options
@JavierRibaldelRio JavierRibaldelRio merged commit e2c6f99 into production Jun 27, 2026
17 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants