Skip to content

ModSync 0.1.0-rc2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Sep 01:50
· 33 commits to main since this release
b6a0703

Install on Steam Deck / Linux

Download ModSync-0.1.0rc2-x86_64.flatpak, then in Desktop Mode either
open it with Discover, or run:

flatpak install --user ModSync-0.1.0rc2-x86_64.flatpak
flatpak run io.github.skjiisa.ModSync

Full instructions, including the from-source route, are in the README.

Changes

Everything the first real desktop ↔ Steam Deck pass turned up. Pairing through
a desktop firewall, a receiving machine that syncs before it checks the game
version, SKSE installed from the Game card, and MO2 installs from the Flatpak.
Not yet exercised on the Deck itself: the join-then-auto-refresh flow and the
desktop-hosts pairing direction — this build is for that.

Fixed

  • Joining a vault no longer carries this machine's own game-version record into
    it. Choosing an instance records the local runtime in modsync-vault.json;
    on a machine about to copy its mods from another one that file was newer than
    the vault's and won Syncthing's conflict resolution, so the two machines could
    end up disagreeing about the version the setup was built for.

  • "Install MO2…" works from the Flatpak. It refused with "protontricks is not
    installed" because it looked inside the sandbox, and would then have run
    MO2-LINT inside the sandbox, where Steam and Proton aren't visible. The
    check now asks the host for what MO2-LINT really needs (pgrep, xdg-mime;
    protontricks is bundled in MO2-LINT) and the install runs on the host.

  • Reinstalling MO2 into a folder MO2-LINT still lists (after "Reset setup" and
    deleting the instance) no longer fails with "An instance with the specified
    directory already exists": ModSync has MO2-LINT forget the stale entry first.
    A folder that really holds a registered instance is refused with a pointer
    to "Use" instead, and a failed install no longer leaves an empty folder.

  • Network pairing behind a firewall. The PIN handshake now listens on a fixed
    port (TCP 21029, the same number as the UDP discovery port) instead of a
    random one, so a single firewall rule covers pairing. Announcements also go
    to each interface's own broadcast address, not only 255.255.255.255.

Changed

  • The setup wizard asks about sync before the game version, and a machine that
    copies its mods from another one finishes there: it can't know which version
    the mods need until they've arrived. The dashboard's Game card now re-checks
    by itself when the vault's version record changes and when the folder first
    finishes syncing, so the downgrade / SKSE advice appears without a manual
    refresh.
  • Network pairing is harder to get lost in: the machine with the mods shows
    the PIN large inside the Sync card (with the joiner's steps and its own
    address) instead of only in the status line, and on the other machine
    picking a listed machine opens a "Pair with …" dialog that asks for that
    PIN. The first-run wizard numbers the same two steps.

Added

  • On this machine detects a running ufw/firewalld at launch and reads
    whether ModSync's ports are allowed (firewall-cmd --query-port /
    /etc/ufw/user.rules, falling back to the rules file's mtime where it isn't
    readable). Allow in firewall… adds the rules through pkexec; once
    they're in, the same button becomes Remove firewall rules… so the ports
    can be closed again after a sync or before uninstalling. Also
    modsync firewall status | allow | remove.
  • After LAN pairing, Syncthing is told the peer's address directly instead of
    relying on its own LAN discovery, so a firewalled machine only needs to dial
    out.
  • The joiner can type the host's address when the scan finds nothing (the host
    shows its address next to the PIN), and "No machines found" / "could not
    reach" messages now say which ports to open. The README documents the ports.
  • Pairing logs what it announces, receives and connects to, so a bug report
    can show where discovery broke.