v0.3.4 - 2026-08-05
⚠️ Overlay in This Release Is a DEMOThis is a preview, not a finished feature. It is being released so it can be
tested on real systems — the only thing that cannot be done during
development.
- It has never been run on Windows. Cross-compilation succeeds,
clippy
is clean for the Windows target, but not a single line has actually been
executed there.- The author has not tested it inside the game. The panel is exercised
under LuaJIT and LÖVE, and everyui.*call is verified against the
installed CSP. That is still not the same as a real driving session.- Some console labels and the
Wear:,T:, andB:prefixes are not yet
translated.The official release will come after real-world testing on both operating
systems. If something breaks, please report it — the panel status window now
shows every version at once.
Most importantly: before this release, the overlay could not work for
anyone on Linux.
v0.3.3 was tagged eleven minutes before the commit that taught
shm-bridge how to map the overlay, meaning every published bridge only
created its own AC pages. This has been verified by scanning the released
artifact.
⚠️ Breaking Change
- Overlay frame version is now 4. An application version field has been
added so the panel can detect when the game is still rendering an older copy.
The new field is appended at the end, so existing offsets remain unchanged.
The application, panel, andshm-bridge.exemust all come from the same
release. The panel updates itself automatically; the bridge is installed via
[B] on the overlay card.
🐞 Fixed
- The panel failed to load entirely.
ui.Iconsand
ui.Icons.Settingswere accessed at file scope: as long asui.Iconswas
truthy, it was indexed immediately, and the argument table was constructed
beforepcall, meaningpcallcould not protect it. Every window displayed
an error message instead of the panel. - Both developer mode switches crashed with
nil.applyDemoand
DEMO_ADVICEwere defined below their callers, making them globals from the
callers' point of view. This was the fourth occurrence of the same trap. - Both panel version numbers were incorrect.
manifest.inireported
version1.0for eleven consecutive releases, and the panel itself had no
internal version. - Both test harnesses falsely reported success on a broken panel.
LuaJIT rendered only 27 lines instead of 140, while LÖVE did not treat a
startup crash as a failure. - The overlay card truncated its own diagnostics at 66 columns.
🚀 Added
- The bridge now identifies itself. It writes
/dev/shm/acpe-bridge.infoand embeds its version directly into the binary,
allowing it to be identified even without running it. - The overlay card now validates all three components, while [B]
downloads the published bridge and verifies it before replacing the existing
one. The previous bridge is preserved as.previous. - Bridge update check on startup. It only checks for updates; downloading
still requires pressing the key.
The application itself is never updated through this mechanism. - The panel now detects when the game is using an outdated copy and
suggests restarting Assetto Corsa. This warning can be disabled under
Panel → Blocks. bridge_probereports which bridge is installed, which one is currently
running, and whether the overlay will work.--export-overlay <directory>exports the panel for manual installation.proton-setup.shis now included in the archive. It contains the
protontrickscommands required for CSP to load at all. No fonts are
included — and there never will be. The terminal uses its own font, while the
panel relies on CSP's DirectWrite renderer, and the fonts themselves must be
installed into the Proton prefix (corefonts), which is exactly what the
script does.