Skip to content

chore: Release v0.12.0#818

Open
garyttierney wants to merge 1 commit into
mainfrom
release-v0.12.0
Open

chore: Release v0.12.0#818
garyttierney wants to merge 1 commit into
mainfrom
release-v0.12.0

Conversation

@garyttierney

@garyttierney garyttierney commented Jul 7, 2026

Copy link
Copy Markdown
Owner

[unreleased]

🚀 Features

  • 6593712 (host) Allow for user provided heap sizes in MB in #828

  • 1c8d699 (host) Allow deferring after game props init

  • 294e7ce (host-types) Add DLRF types and analysis

  • 4facce8 (linux) Add Proton launch verb override via env variable in #810

    Allows overriding the Proton launch verb to allow the game
    to start alongside any existing tools that are already running
    in the games own Proton prefix.

  • dc25769 (linux) Add support for Proton 11 in #764

    Fixes [Bug]: Proton 11 compatibility #763

  • 50dd1f2 Cli/profile prop overrides in #822

    Allows specifying debug game property overrides from the cli/profiles.

  • 73d83a4 Allow overriding properties via cli/profiles

🐛 Bug Fixes

  • e4be580 (cli) Use normalize_virtually for pipe path on windows in #761

    Fixes reaching an unimplemented function in Wine when running the
    Windows binary of me3-cli under WINE.

  • 4365f37 (deps) Don't eliminate debug tracing events

  • 2e39640 (host) Improve mem_patch stability

  • f95d8c6 (host) Use correct signature for Fd4StepFunction in #817

    The incorrect signature led to the second parameter potentially being
    cloberred by an arbitrary value from a hook routine, leading to crashes
    or other undefined behavior.

  • 04765d0 (host) Don't expose fully qualified UTF-8 paths to the game in #806

    Fixes [Bug]: Diacritic characters in file paths cause runtime load failure #804

    Uses a fake UNC path prefix \\me3 to indicate disk file paths
    internally managed by me3. This is a significant change to how file
    paths are handled and seen by the game and I would like this to be
    tested thoroughly before merging.

    Elden Ring (and likely the other games) forward file paths converted
    from UTF-16 to Shift JIS to the Scaleform UI middleware (which expects
    UTF-8). This conversion can only be valid for the ASCII subset of UTF
    and SJIS, and user paths that contain other characters are silently
    truncated at the first character that failed to be converted. What's
    worse is that the failed conversion does not nul-terminate the string.

    The conversion happens at eldenring.exe+d7106d (1.16.2) and the
    subsequent call consumes the string.

    The implementation in this PR leaves room for a future file reloading
    feature (with generation based indexing).


  • 266adf1 (linux) Create BHD stub in tmpdir, not cache dir in #831

    Fixes the "File not found" errors that occur when we try to create a
    temporary file under the host cache directory. Likely caused by the
    TEMPORARY attribute used in the tempfile Windows implementation:
    https://github.com/Stebalien/tempfile/blob/master/src/file/imp/windows.rs#L38

  • 7ff662d (linux) Search compat tool roots for manifests in #827

    Fixes [Bug]: Extra compat tools aren't picked up on NixOS #802

  • c998b06 (linux) Restore LD_PRELOAD injection for Steam overlay in compat tool launcher in #735

    In compat_tool.rs, setup_steam_linux_runtime_env builds LD_PRELOAD
    with gameoverlayrenderer.so but never sets it on the command, restore it
    to fix Steam Input compatibility and the Steam overlay.

  • e153f4f Include me3 profiles in taplo config

🚜 Refactor

  • e57a48a (host) Don't use hook to set game properties in #816

    Reworks the game property override logic to fetch
    CSControlAPI::SetGameProperty from DLRF data and use that instead of a
    getter hook. This allows supporting overrides for all property types, so
    that this functionality can be eventually exposed to users.

    As part of this, adds DLRF type definitions and a simple analysis for
    finding the DLRuntimeClass registry.

    Unfortunately, the game property map is not initialized during our
    AfterMain deferred execution step, so I had to add a third
    AfterPropsInit step that runs right after the map is constructed. This
    is done without AOBs or RTTI by:

    • Searching for LEA xrefs to Game.Debug.NearOnlyDraw. This is the
      first property queried after constructing the map by all supported
      games.
    • Inline hooking the LEA instruction using a RawDetour and a
      handrolled register context save/restore.

    The total analysis time for this new approach (finding runtime classes
    and hook point) for ER is just under 5ms on my machine.

    Tested successfully on all supported games.

  • 895f4ba Don't pin AwaitedRequest in #825

    pin!() is unsound due to coercions rust-lang/rust#153438

📚 Documentation

  • dcc3bb9 Disable Google Analytics in #821

    The only valuable information we get from here is the regions our users
    come from (for localization and internationalization) and the operating
    system versions for support, the rest is being siphoned to Google for no
    good reason.

    For the former we can rely on network metrics instead, and for the
    latter we can use the Steam survey.

@garyttierney
garyttierney requested a review from Dasaav-dsv as a code owner July 7, 2026 00:50
@github-project-automation github-project-automation Bot moved this to Todo in me3 Jul 7, 2026
@garyttierney
garyttierney force-pushed the release-v0.12.0 branch 6 times, most recently from f5ce2fd to 35109b5 Compare July 14, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

1 participant