Skip to content

v0.3.4 - 2026-08-05

Choose a tag to compare

@github-actions github-actions released this 05 Aug 18:23

⚠️ Overlay in This Release Is a DEMO

This 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 every ui.* 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:, and B: 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, and shm-bridge.exe must 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.Icons and
    ui.Icons.Settings were accessed at file scope: as long as ui.Icons was
    truthy, it was indexed immediately, and the argument table was constructed
    before pcall, meaning pcall could not protect it. Every window displayed
    an error message instead of the panel.
  • Both developer mode switches crashed with nil. applyDemo and
    DEMO_ADVICE were 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.ini reported
    version 1.0 for 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.info and 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_probe reports 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.sh is now included in the archive. It contains the
    protontricks commands 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.