Releases: albertowd/live-telemetry-evo
Releases · albertowd/live-telemetry-evo
Release list
v0.7.4
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
Fixed
- AC Rally was not detected at all (regression in 0.7.0) — its
acr.exeprocess 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-bitacs_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
Fixed
- Bundled
.execrashed at launch withNo module named 'PySide6.QtOpenGL'— the build strippedQtOpenGL/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
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) andCtrl+Shift+S(cycle widget sizeXS → S → M → L → XL, wrapping). - Global VR hotkeys
Ctrl+Shift+P(placement toggle),Ctrl+Shift+W(spread) andCtrl+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+AlttoCtrl+Shift(less contested by gaming peripherals and vendor overlays); logging is nowCtrl+Shift+L. - Full global hotkey set:
Ctrl+Shift+Rreset,Cclick-through,Ssize,Llogging,P/W/DVR placement/spread/distance,Qquit. - 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+Lstay 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
acpmfshared-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 byQApplication.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
Added
- Auto-update on launch: hits GitHub releases API, downloads the new
LiveTelemetryEvo-<version>.exenext to the app; skips already-downloaded files. - Streams via a
.partialsibling + 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.updatermodule —UpdateCheckerworker +UpdateController(state machine + Qt signals the tray menu subscribes to).
Changed
- PyInstaller spec keeps Python's stdlib SSL DLLs (
libcrypto-*/libssl-*) forurllibHTTPS;Qt6Network.dll+ TLS plugins stay excluded.
Full Changelog: v0.6.5...v0.6.6
v0.6.5
Added
- Global hotkey
Ctrl+Alt+Ctoggles 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 atQScreen.refreshRate()Hz. FrameBustransports 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()onTelemetryFrame; new fields appear in the next session's file automatically. - New
overlay.pathsmodule —positions.jsonandlogs/sit next to the executable (CWD in dev);LIVE_TELEMETRY_DATA_DIRoverrides. - 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_vflag — true whensusp_m_tis rolling-max calibrated; suspension mid-band paints blue in that mode.
Changed
- AC1 boost bar: dropped
static.maxTurboBoostseed (unreliable on mods); right-edge now tracks rolling max of observedturbo_boost. - Engine rev-bar colour: uses per-car torque curve from ACD on AC1; otherwise self-calibrates from observed
current_bhppeak 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 (
absInActionint,absintensity float,graphics.abs_activebool); same logic for TC. - Per-wheel ABS heuristic on AC EVO uses documented
slipRatio(notwheelSlip); 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
rideHeightsplit by relative suspension travel across the axle. - Engine
max_turbo_boostdefault 1.2 → 0.0 so NA cars on every source hide the boost slot via the existing> 0.05gate. - Default polling rate moved from CLI-only
--hzto 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
suspensionMaxTravelnow trusted as-is. ACC/Rally too. - AC1 tyre-wear bar: raw
tyreWearis 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.ersIsCharginginstead of inferring direction from SoC drop; robust at SoC 0 / 1. has_brake_temp=Falseon AC1 no longer hides the whole brake column — icon stays for ABS/lock blink, only the°Clabel is suppressed.- Dropped wasted writes to
brake_t/brake_t_normon AC1 (consumed only whenhas_brake_temp=True). - Sibling project fix:
lt_wheel_info.pybody-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
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 acrallyflag. - Assetto Corsa Competizione support via
--source accflag. - Original Assetto Corsa support via
--source ac1flag. - 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_wfields onWheelData, populated fromph.padLife/ph.discLife. - Per-zone temperature readouts (inner / middle / outer / core) on the tyre silhouette, with luminance-based text colour.
Changed
WheelDatagainshas_wheel_load,has_ride_height,has_cambercapability 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_temperatureis 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
brakeTempis 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_normflag 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; honoursLT_AC_PATHenv override and falls back to the default Steam path.
Full Changelog: v0.5.0...v0.6.0
v0.5.0
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+Rresets every widget to its default position;
Ctrl+Alt+Scycles 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+Rbrings it on screen. - 18 MDI icons rendered into
resources/img/via a newfetch_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 everyv*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.pynow bundlesresources/icon.pnginto the EXE so the tray
icon resolves at runtime (previously only the embedded.icowas set,
so the tray was iconless in the frozen build).
Full Changelog: https://github.com/albertowd/live-telemetry-ac-evo/commits/v0.5.0