Skip to content

v0.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Jun 13:35
0494d27

✨ Added

  • resoio launch runs multiple instances: launch no longer refuses when a
    Resonite is already running — start as many as you like by giving each its own
    --data-path (so they don't share a database). --name <label> is a
    convenience that auto-allocates an isolated data tree under
    ~/.resonite-io/instances/<label>/ — a separate WINEPREFIX, -DataPath /
    -CachePath / -LogsPath, and a private Camera IPC queue token (so concurrent
    instances neither share Resonite data nor cross-talk on the renderer frame
    queue). Explicit --prefix / --data-path still win over the label defaults;
    --name imposes no guard. Target a specific instance with
    --socket ~/.resonite-io/resonite-{pid}.sock.
  • resoio terminate-all: stop every running Resonite instance in one call
    (SIGTERMSIGKILL per process), printing one engine/renderer pair per
    instance (--format human|json). The multi-instance counterpart to the
    single-instance terminate (whose pid-only output is unchanged).
  • Typed Resonite launch options (resoio.LaunchOptions): pass Resonite's
    own command-line launch arguments to launch(options=...) as a typed,
    immutable value object — data_path (-DataPath), cache_path (-CachePath),
    logs_path (-LogsPath), screen, verbose, device, cloud_profile,
    load_assembly, and the rest of the documented flags — instead of
    hand-assembling raw extra_args strings. skip_intro_tutorial defaults to
    True (the previous always-on behaviour); extra_args remains the escape
    hatch for anything not modelled (including -Renderer / -AttachRenderer,
    which are intentionally not exposed because they break renderer-PID detection).
    The CLI gains resoio launch --data-path / --cache-path / --logs-path;
    other options still go after --.
  • resoio launch --prefix / --proton-path: choose the Wine prefix
    (WINEPREFIX) and the Proton build (PROTONPATH) per launch. --proton-path
    takes a compatibility-tools name like GE-Proton (the default) or a path.
  • resoio display set resolution presets and WIDTHxHEIGHT[@FPS] shorthand:
    set now takes an optional positional spec, so resoio display set fhd (1920×1080),
    resoio display set qhd@144, or resoio display set 1280x720@60 work instead of
    spelling out -W/-H/-F. Presets (case-insensitive): hd 1280×720, fhd 1920×1080,
    qhd 2560×1440, uhd 3840×2160; the @FPS suffix is optional. The classic
    -W/--width / -H/--height / -F/--max-fps flags still work and override the spec
    field-by-field (e.g. fhd -W 1024 keeps fhd's height but sets width 1024; fhd@30 -F 144 keeps fhd's resolution but caps fps at 144).

🐛 Fixed

  • Camera froze right after the engine and renderer came up (no --name, and
    on direct Gale / Steam launches)
    : the engine self-generated a Camera IPC
    queue token at runtime that the renderer (a separately-spawned Wine child)
    never inherited, so the two bound different queues and the client hung waiting
    for frames. The engine no longer self-generates a token. Instead the token is
    always placed in the environment before exec: resoio launch injects a
    unique one per instance (named or not), and a direct Gale / Steam launch sets
    nothing, so the engine and renderer both fall back to the same fixed default
    queue name. Either way both ends agree on one queue. (--name was already
    unaffected because it injected the token before exec.)
  • resoio terminate-all reported a single instance as two: it paired an
    engine with its renderer only when the renderer appeared in the engine's host
    process subtree, but Wine often reparents the renderer out of it, so one
    instance came back as two pid=0 rows. Pairing now keys off the Camera IPC
    queue token the engine and renderer share (falling back to the process tree),
    so a single instance is reported as one engine/renderer pair.
  • resoio launch hung on a host install under $HOME: the renderer never
    started (and the engine waited forever) when launching from a Steam install
    beneath $HOME. umu/Proton's game-drive feature maps $HOME onto a Wine drive
    letter, so the launch directory (the process's cwd) landed on a non-Z: drive
    and the renderer's absolute Unix paths (the renderer executable, the /dev/shm
    IPC) misresolved. launch now sets PROTON_SET_GAME_DRIVE=0 (and defaults
    GAMEID / PROTONPATH=GE-Proton) so the prefix exposes only c: / z: — the
    same layout Steam's prefix uses — and a $HOME-resident install launches. The
    dev container was unaffected (its install lives outside $HOME).
  • resoio launch rejected a relative mod profile: a relative --profile /
    MOD_PATH reached BepInEx as a relative --bepinex-target, which BepisLoader
    rejects ("is not an absolute path"). The profile is now resolved to an absolute
    path before launch.