• v2.1.0 cc4481b6d6

    Emily released this 2026-11-04 10:48:18 +01:00 | 44 commits to main since this release

    Universal Gaming 2.1.0

    Ten offline games, now with update checks, a changelog, and optional
    self-hosted accounts.

    What's new

    • Update checks — the app checks the public release feed on startup. The
      changelog button in the upper-right corner opens release notes, the release
      page, and a platform-appropriate download link (APK, DMG, ZIP, or package).
    • Changelog tooltip — the button shows a red dot and an
      "Update available" tooltip when a newer release exists.
    • Web footer — every hosted build links to the source repository and shows
      an "outdated hosted build" notice when latest.json reports a newer version.
    • Optional accounts — username/password accounts on your own server.
      Accounts use stable UUID identities, so renaming never changes the account.
      Account creation is offered during onboarding but is never required.
    • Account page — sign in or create an account, copy the UUID, rename the
      account, change the server URL, sign out, or delete the account.
    • iPad ready — the iOS target is universal (iPhone + iPad) with all four
      iPad orientations and layout tests at iPad portrait and landscape sizes.
    • Network permission — Android now declares INTERNET; macOS adds the
      network-client entitlement. Games still work fully offline.

    Accounts backend

    The backend is a separate repository:

    https://git.emilyh.de/Emily/UniversalGamingApp-Backend

    It ships with Docker and Docker Compose, SQLite persistence, bcrypt password
    hashing, JWT sessions, rate limiting, CORS configuration, and a release proxy.
    The README documents every environment variable, reverse-proxy examples,
    backups, and curl examples.

    Build the app with your server URL baked in:

    flutter build apk --release \
      --dart-define=UNIVERSAL_GAMING_API_URL=https://accounts.example.com
    

    Or leave it unset and configure Account → Account server at runtime.

    Downloads

    File Platform
    UniversalGaming-2.1.0-android.apk Android 7.0+ (universal, release-signed)
    UniversalGaming-2.1.0-android.aab Google Play upload
    UniversalGaming-2.1.0-ios-unsigned.ipa iOS 15+ (re-sign with Sideloadly/AltStore)
    UniversalGaming-2.1.0-macos.dmg macOS 12+ (universal, ad-hoc signed)
    UniversalGaming-2.1.0-web.zip Static web build

    SHA256SUMS.txt contains the SHA-256 digest of every artifact.

    Windows and Linux builds are source-only in this release; the build commands
    are in INSTALL.md.

    Notes

    • Existing 2.0 installs skip the new onboarding screen automatically.
    • The iOS IPA remains unsigned because no Apple distribution identity is
      available. See INSTALL.md for signing options.
    • The macOS app is ad-hoc signed and not notarized. Use Open Anyway on first
      launch.
    • Passwords are sent only to the account server you configure, over HTTPS, and
      stored as bcrypt hashes. There is no telemetry, advertising SDK, or gameplay
      upload.
    Downloads