Skip to content

Releases: albertowd/live-telemetry-evo

v0.7.4

Choose a tag to compare

@github-actions github-actions released this 02 Aug 21:28

Fixed

  • ACC brake bias now matches the in-car dash: the per-car offset from the official documentation is applied to the raw shared-memory value.
  • Changing car without restarting the game kept the previous car's power scale, ideal pressures and calibrated maxima — all of it re-seeds on a car change now.
  • Brake bias read one point low (a 69 % setting showed 68 %) — the readout truncated the game's value instead of rounding it.
  • Fitting a compound the car files don't describe kept the previous compound's temperature window instead of the default curve.
  • AC Rally's spec sheet is picked up when the game fills it in, instead of only at connect time.

Changed

  • Per-car power and tyre-temperature colour curves rebuild only when the curve changes, not on every repaint.
  • Docs: the suspension bar is scaled to the car's mechanical travel or the session's deepest compression — never to the setup's packer range.
  • Docs: the suspension reference self-calibrates on ACC and AC EVO, and one hard kerb strike can set it for the rest of the session.

Full Changelog: v0.7.3...v0.7.4

v0.7.3

Choose a tag to compare

@github-actions github-actions released this 01 Aug 19:12

Fixed

  • AC Rally was not detected at all (regression in 0.7.0) — its acr.exe process was missing from the detector's list of known executables.

Changed

  • Game auto-detection now identifies the game solely by its executable, matched exactly against the running-process list: AssettoCorsaEVO.exe, acs.exe/acs_x86.exe, acc.exe/AC2-Win64-Shipping.exe, acr.exe. Also adds AC1's 32-bit acs_x86.exe, which was never matched.
  • Detection no longer inspects shared memory, and no longer guesses between ACC and AC Rally from tyre-temperature units. A stale acpmf_* mapping — left by a crashed game or held open by Content Manager / SimHub — is never mistaken for a running game.
  • A game sitting on its main menu is detected immediately, with no 10-second wait before the overlay commits to ACC.
  • The overlay now appears as soon as the game process starts rather than waiting for its first telemetry block; widgets show no data until the game publishes, and the readers connect on their own once it does.

Full Changelog: v0.7.1...v0.7.3

v0.7.2

Choose a tag to compare

@github-actions github-actions released this 24 Jul 18:14

Fixed

  • Bundled .exe crashed at launch with No module named 'PySide6.QtOpenGL' — the build stripped QtOpenGL/Qt6OpenGL.dll, which the VR overlay imports at startup. Both are now kept in the bundle.

Full Changelog: v0.6.6...v0.7.2

v0.7.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 00:50

Added

  • Per-widget show/hide: a Widgets submenu in the tray VR and Windows menus toggles each panel (engine, inputs, four wheels); persisted.
  • VR widgets wrap around the viewer on a cylinder — the corner panels turn to face inward — instead of sitting on a flat plane.
  • Tray VR submenus Spread (sideways fan-out) and Distance (panel distance), plus Size in VR — each persisted, applied live.
  • Global hotkeys Ctrl+Shift+C (toggle click-through) and Ctrl+Shift+S (cycle widget size XS → S → M → L → XL, wrapping).
  • Global VR hotkeys Ctrl+Shift+P (placement toggle), Ctrl+Shift+W (spread) and Ctrl+Shift+D (distance); each cycles its tray submenu.

Changed

  • VR submits each widget as its own native-resolution quad instead of one screen-size canvas — smaller uploads, and a hidden widget costs nothing.
  • Tray Windows and VR categories are mutually exclusive: Windows greys out while VR renders, VR greys out on the desktop overlay.
  • Reset restores the Inputs widget's default position but leaves it hidden (it's off by default); use the Widgets toggle to show it.
  • Hotkeys moved from Ctrl+Alt to Ctrl+Shift (less contested by gaming peripherals and vendor overlays); logging is now Ctrl+Shift+L.
  • Full global hotkey set: Ctrl+Shift + R reset, C click-through, S size, L logging, P/W/D VR placement/spread/distance, Q quit.
  • Each hotkey is inert while its tray entry is greyed: reset/size/click-through need widgets placed, logging a detected game, VR keys a live headset.
  • Tray Data category (Polling Hz, logging, Open logs folder) and Ctrl+Shift+L stay disabled until a game is detected and telemetry flows.

Fixed

  • VR HUD widgets were clipped and shrank at non-default Size — fixed by a max-size texture with the widget centred and full (not sub-rect) bounds.
  • ACC is no longer detected from a stale acpmf shared-memory tag; a live ACC process must be running before its physics block is trusted.
  • Global hotkeys are released on every quit path, not just closeEvent (skipped by QApplication.quit()), avoiding err 1409 on the next launch.
  • Hotkeys register per-combo with failures attributed individually, so one GetLastError() no longer misreports a single conflict as total failure.

Full Changelog: v0.6.6...v0.7.1

v0.6.6

Choose a tag to compare

@github-actions github-actions released this 19 May 22:33

Added

  • Auto-update on launch: hits GitHub releases API, downloads the new LiveTelemetryEvo-<version>.exe next to the app; skips already-downloaded files.
  • Streams via a .partial sibling + atomic rename so a crash mid-download never leaves a half-file under the final name.
  • Tray entry Check for Updates — 4 states: idle → Checking...Downloading...Restart to Update (launches new .exe, quits).
  • Tray balloon notification when a fresh download completes; silent on already-on-disk / up-to-date / offline paths.
  • New overlay.updater module — UpdateChecker worker + UpdateController (state machine + Qt signals the tray menu subscribes to).

Changed

  • PyInstaller spec keeps Python's stdlib SSL DLLs (libcrypto-* / libssl-*) for urllib HTTPS; Qt6Network.dll + TLS plugins stay excluded.

Full Changelog: v0.6.5...v0.6.6

v0.6.5

Choose a tag to compare

@github-actions github-actions released this 19 May 01:58

Added

  • Global hotkey Ctrl+Alt+C toggles CSV logging on/off, mirroring the tray Start logging / Stop logging action.
  • Polling and rendering decoupled across threads — source runs on its own QThread; UI repaints at QScreen.refreshRate() Hz.
  • FrameBus transports the latest snapshot (deep-copied, under lock) to the UI and a bounded queue to the CSV writer thread.
  • Tray submenu Polling Hz — 30 / 60 / 100 / 120 / 144 / 250; choice persisted via settings.json.
  • Tray actions Start logging / Stop logging + Open logs folder; CSV writes on a dedicated thread off the polling worker.
  • CSV schema auto-built from dataclasses.fields() on TelemetryFrame; new fields appear in the next session's file automatically.
  • New overlay.paths module — positions.json and logs/ sit next to the executable (CWD in dev); LIVE_TELEMETRY_DATA_DIR overrides.
  • Countdown screen shows the detected game name above the digit, both centred at the detection-screen font size.
  • AC EVO: KERS fields exposed (has_kers, battery_temp_c, lap-cap flags, overtake/heat/deploy/recharge maps); chips KMAX/CMAX/OT/HEAT.
  • AC1: per-car ACD data plumbed to widgets — torque curve drives rev-bar tint, per-compound curves drive tyre temps, ideal psi surfaced.
  • WheelData.susp_v flag — true when susp_m_t is rolling-max calibrated; suspension mid-band paints blue in that mode.

Changed

  • AC1 boost bar: dropped static.maxTurboBoost seed (unreliable on mods); right-edge now tracks rolling max of observed turbo_boost.
  • Engine rev-bar colour: uses per-car torque curve from ACD on AC1; otherwise self-calibrates from observed current_bhp peak RPM.
  • Boost and KERS battery bar slots fully transparent on NA / ICE-only cars — no more black stripes at the top of the engine widget.
  • AC EVO ABS blink merges all three signals (absInAction int, abs intensity float, graphics.abs_active bool); same logic for TC.
  • Per-wheel ABS heuristic on AC EVO uses documented slipRatio (not wheelSlip); threshold 0.10 → 0.03 — fires before the wheel is lost.
  • Brake disk now always rendered on AC1 (neutral white base + blue ABS blink); other games keep temp-curve tint + white blink.
  • AC1 + AC EVO: per-wheel body-roll height correction — per-axle rideHeight split by relative suspension travel across the axle.
  • Engine max_turbo_boost default 1.2 → 0.0 so NA cars on every source hide the boost slot via the existing > 0.05 gate.
  • Default polling rate moved from CLI-only --hz to a persisted setting changeable at runtime; --hz 0 (new default) uses persisted value.

Fixed

  • AC1 suspension calibration: removed 5 % headroom and 2× initial seed; static suspensionMaxTravel now trusted as-is. ACC/Rally too.
  • AC1 tyre-wear bar: raw tyreWear is a grip/health value (~0.06 useful range), not a linear 0-100 % counter — remapped onto 0..1.
  • KERS deploy-power on AC EVO now gates on physics.ersIsCharging instead of inferring direction from SoC drop; robust at SoC 0 / 1.
  • has_brake_temp=False on AC1 no longer hides the whole brake column — icon stays for ABS/lock blink, only the °C label is suppressed.
  • Dropped wasted writes to brake_t / brake_t_norm on AC1 (consumed only when has_brake_temp=True).
  • Sibling project fix: lt_wheel_info.py body-roll correction mixed Python-API and SHM reads across wheels — now consistent on both sides.

Full Changelog: v0.6.0...v0.6.5

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 12 May 01:24

Added

  • --source auto (now default) detects the running game via SHM tag namespace + process snapshot; shows "Detecting AC Environment..." until found.
  • Assetto Corsa Rally support via --source acrally flag.
  • Assetto Corsa Competizione support via --source acc flag.
  • Original Assetto Corsa support via --source ac1 flag.
  • Tire silhouette rotates by per-wheel camber on each wheel widget.
  • Contact-patch bars below each tire encoding inner/middle/outer load distribution.
  • Brake-pad and disc wear bars on each wheel widget, self-calibrated against per-wheel max observed since session start.
  • New pad_w / disc_w fields on WheelData, populated from ph.padLife / ph.discLife.
  • Per-zone temperature readouts (inner / middle / outer / core) on the tyre silhouette, with luminance-based text colour.

Changed

  • WheelData gains has_wheel_load, has_ride_height, has_camber capability flags; widgets hide indicators when a source lacks the signal.
  • Removed the trapezoidal camber strip; tire rotation plus contact bars replace it.
  • IMO temp grid always shows the inner face on the screen-centre-facing side of the widget.
  • Wheel widget logical height bumped 271 → 316 to fit the new bars and rotated tire.
  • Synthetic source: right-side camber sign flipped; corner-load → camber coupling rescaled.
  • Brake icon no longer shrinks with disc temperature; temperature drives only tint, wear moves to the dedicated bars.

Fixed

  • Per-face tyre temperatures now read from graphics-block TyreState on AC EVO instead of the dead legacy AC1 slots.
  • Brake icon now falls back to interpolating the brake curve from raw temp when brake_normalized_temperature is missing.
  • Tyre-wear restyled as a horizontal "Tire Wear" bar stacked under the existing Disk/Pads Wear rows; gated on has_tire_wear (hidden on AC EVO).
  • AC1 hides the Disk/Pads Wear bars — AC1's SDK predates padLife / discLife, so the bars previously rendered a stuck-fresh value.
  • AC1 hides the brake icon entirely (icon + label) since brakeTemp is never written by the game; lock/ABS blink disappears with it on AC1.
  • Wear bars now space themselves evenly between the brake column and pressure icon — a lone visible bar pins to the top of the available height.
  • AC1 contact-patch middle bar no longer collapses: new has_pressure_norm flag neutralises the pressure axis when the norm is a rough synthesis.
  • AC1 reads per-car spec data from data.acd: real per-axle ideal pressure, raw torque LUT for live BHP/torque, per-compound tyre thermal curves.
  • AC install auto-detected via Steam registry + libraryfolders.vdf; honours LT_AC_PATH env override and falls back to the default Steam path.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 01 May 04:05

Added

  • System-tray icon with a context menu: Reset positions, Click-through
    toggle, Size submenu (XS/S/M/L/XL), Quit. Left-click and right-click
    both surface the menu; tray icon shares the same source PNG as the EXE icon.
  • Two new global hotkeys (Win32 RegisterHotKey, fire even with the game
    focused): Ctrl+Alt+R resets every widget to its default position;
    Ctrl+Alt+S cycles widget size. Each tray entry shows its shortcut.
  • Phase 1 — driver-aid chips on the engine widget: ESC, LC (launch
    control), DRS (bright when deployed, dim when only available), ERS
    (charging), WW (wrong way), INV (lap invalidated), LAST (final lap).
    Strip auto-compresses width when many fire at once.
  • Phase 2 — analog readouts row on the engine widget: water / oil temp,
    oil / fuel pressure, exhaust temp, battery V, fuel L, brake bias %F. Cells
    hide automatically when the source publishes nothing for the current car.
  • Phase 3 — new inputs widget (top-centred): pedal bars (THR/BRK/CLU/HBR),
    signed steering bar, FFB clipping indicator, G-meter circle with reference
    rings, five-zone damage chips, tyres-off-track count, performance-mode
    label. Hidden by default in 0.5.0 — Ctrl+Alt+R brings it on screen.
  • 18 MDI icons rendered into resources/img/ via a new fetch_icons.py
    helper (downloads SVGs from Iconify, rasterises to 256×256 PNGs through
    QSvgRenderer — no extra dependencies).
  • GitHub Action (.github/workflows/release.yml) that builds the Windows
    executable and publishes a release on every v* tag push.

Changed

  • Removed the floating reset and size buttons from the overlay itself —
    their job is now done by the tray menu plus the new hotkeys.
  • App icon replaced with the higher-resolution LT branding (256×256);
    tray and EXE share the same source file so they always match.
  • Engine widget logical height grew from 120 to 148 px to fit the new
    Phase 2 readouts row; the bar still anchors to the bottom of the screen.

Fixed

  • Tire temperature grid showed thin transparent seams between colours at
    fractional logical coordinates (anti-aliased edges of adjacent rects).
    AA is now disabled for that grid; aliased fills snap flush.
  • Tray context menu was being covered by the overlay every second when the
    topmost-reassertion timer fired. The reassertion now skips while any
    popup widget is active.
  • build.py now bundles resources/icon.png into the EXE so the tray
    icon resolves at runtime (previously only the embedded .ico was set,
    so the tray was iconless in the frozen build).

Full Changelog: https://github.com/albertowd/live-telemetry-ac-evo/commits/v0.5.0