-
Universal Gaming 2.7.0 Stable
released this
2026-11-04 21:03:26 +01:00 | 27 commits to main since this releaseUniversal Gaming 2.7.0
Password-manager autofill
- Web: uses the browser Credential Management API. A Fill password
action appears on the sign-in card, and the first tap in a field asks the
browser for a saved credential. Successful sign-in offers to store the
credential again. - iOS/Android: username, e-mail and password fields expose native autofill
hints and trigger the platform save prompt. Android also uses Digital Asset
Links so credentials saved forhttps://games.emilyh.deare available to the
app. - iOS associated domains: the app carries
applinksandwebcredentials
entitlements. The web image serves the matching
apple-app-site-associationfile when built withAPPLE_TEAM_ID.
Links open in the app
- Android App Links open every
https://games.emilyh.deURL in the app. - iOS Universal Links are enabled, including the
/accountroute, once the
app is signed with a team ID that matches the served association file. - The web build uses clean URLs (
/account) and routes deep links to the
account screen.
Backend update safety (backend 1.3.0)
- Ordered, idempotent PostgreSQL migrations tracked in
schema_migrations. update.shtakes a pre-updatepg_dumpbackup, rebuilds, runs
node src/migrate.js, then starts the services.
Downloads
UniversalGaming-2.7.0-android.apk/.aabUniversalGaming-2.7.0-ios-unsigned.ipa(re-sign before installing)UniversalGaming-2.7.0-macos.dmgUniversalGaming-2.7.0-web.zipSHA256SUMS.txt
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Web: uses the browser Credential Management API. A Fill password
-
Universal Gaming 2.6.1 Stable
released this
2026-11-04 17:41:43 +01:00 | 31 commits to main since this releaseUniversal Gaming 2.6.1
Password-manager autofill is fixed across the web, Android, iOS and desktop builds.
- Sign-in fields now expose standard username, e-mail and password autofill hints, disable autocorrect/suggestions, and trigger the platform save prompt after a successful sign-in or registration.
- Android declares Digital Asset Links and App Links for
https://games.emilyh.deand includes theasset_statementsmetadata, so Android password managers can share credentials saved on the website. - iOS now carries the
webcredentials:games.emilyh.deassociated-domain entitlement. A signed build can use it once the web deployment serves/.well-known/apple-app-site-associationgenerated with your Apple Team ID (APPLE_TEAM_ID=...). The unsigned IPA cannot use associated domains. - The bundled Nginx and Caddy configs serve
/.well-knownfiles exactly and never fall back to the Flutter SPA.
Downloads
UniversalGaming-2.6.1-android.apk— universal release-signed APKUniversalGaming-2.6.1-android.aab— Google Play bundleUniversalGaming-2.6.1-ios-unsigned.ipa— unsigned iOS buildUniversalGaming-2.6.1-macos.dmg— ad-hoc signed macOS appUniversalGaming-2.6.1-web.zip— static web buildSHA256SUMS.txt
See INSTALL.md and WEB_HOSTING.md for details.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.6.0 Stable
released this
2026-11-04 16:12:11 +01:00 | 35 commits to main since this releaseUniversal Gaming 2.6.0
Chess
- Computer opponent is now the default. A depth-2 alpha-beta search replies after a short delay without blocking the UI.
- Local two-player and online by username remain available from the game-mode sheet.
- Online matches require a free account: challenge by username, accept/decline/cancel, play, resign. Moves are validated by the backend with
chess.js; the app polls for the opponent's move. - Move history moved to the upper-right header icon.
Accounts
- Register with an optional e-mail address, or sign in with either username or e-mail.
- Add, change or remove an e-mail from Account settings.
- Optional confirmation e-mail with resend support. Unverified accounts still work; the app shows the status.
- Existing accounts, UUIDs and local game data are unchanged.
Controls and polish
- Sudoku action buttons use a two-row layout on phones with larger tap targets.
- Hub, onboarding, help and privacy copy updated for computer/online chess and e-mail accounts.
- Fixed a narrow-screen overflow in the hub hero features.
Backend
Requires Universal Gaming Backend 1.2.0 for online chess and e-mail features:
https://git.emilyh.de/Emily/UniversalGamingApp-Backend/releases/tag/v1.2.0Downloads
Platform File Android UniversalGaming-2.6.0-android.apk/.aabiOS UniversalGaming-2.6.0-ios-unsigned.ipa(re-sign with Sideloadly/AltStore)macOS UniversalGaming-2.6.0-macos.dmgWeb UniversalGaming-2.6.0-web.zipPrebuilt web container:
git.emilyh.de/emily/universal-gaming-web:2.6.0(also:latest).SHA256SUMS.txtis attached. The hosted web build is live at https://games.emilyh.de. The default account server https://account.games.emilyh.de is running backend 1.2.0 with online chess and e-mail login enabled.Verification
flutter analyze: cleanflutter test --concurrency=1: 216 tests passing- APK signature verified with the release certificate
- DMG verified; web and IPA ZIPs tested
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.5.0 Stable
released this
2026-11-04 15:18:45 +01:00 | 36 commits to main since this releaseCompetitive leaderboard
- The leaderboard now opens in Competitive mode by default and shows the global top five per game and mode.
- Viewing is public; submitting a score requires a free account and happens automatically after a solo game while signed in.
- If the server is unreachable, disabled, or you are offline, the screen falls back to the on-device board and explains why. Switch to Local to keep every result on this device.
- Local results are always saved first, so a network failure never loses a score. Signed-in competitive results are also uploaded in the background.
- Chess remains local two-player and is not ranked.
Backend 1.1.0
- New public leaderboard endpoints, best-score retention, ranking and rate limits.
LEADERBOARD_ENABLEDcan disable competitive scores server-side.- Reorganized Docker Compose setup and
update.shfor easygit pullupgrades.
Other
- Account and onboarding copy now explains that only username and score metadata are uploaded when using the competitive board.
- Updated documentation for local/competitive privacy, leaderboard API and backend upgrades.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.4.0 Stable
released this
2026-11-04 14:14:34 +01:00 | 38 commits to main since this releaseUniversal Gaming 2.4.0
New
- Local leaderboard for every solo game. Results are ranked by time, then moves, stored on-device and never uploaded. Open it from the new Leaderboard card on the hub.
- Built-in How to play sheets for all eleven games, available from each hub card and from the in-game help button. Each sheet covers the goal, rules, controls and tips.
- TriPeaks card series — a played card now becomes the new waste top, so you can chain ascending and descending ranks until no option remains. The UI shows the current series, and the result records your best series.
Fixed game logic
- TriPeaks now correctly supports full ±1 series instead of only one card per draw. Ace/King wrap-around remains supported.
- Pyramid no longer reports game over when a King on the waste pile can still be removed with an empty stock.
- Spider now rejects mixed-suit multi-card runs; single cards can still move onto any descending card.
Notes
- Version 2.4.0+10.
- Existing saved games, stats and accounts keep working.
- Chess is local multiplayer and is not ranked; the leaderboard screen explains this.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.3.1 Stable
released this
2026-11-04 12:58:25 +01:00 | 39 commits to main since this releaseUniversal Gaming 2.3.1
Security update from the November 2026 review.
- Flutter 3.47.9 / Dart 3.13.7 — fixes GHSA-frr6-h895-5pxp (high), the eMudhra intermediate-CA TLS MitM issue affecting
dart:ioon Android, Windows and Linux. Rebuild native binaries with this SDK or newer. - External links are restricted to HTTP(S). Changelog, release and footer links can no longer launch
javascript:,file:,data:or other schemes. - Unencrypted account servers show a warning in Account settings when the URL uses HTTP outside localhost/emulator addresses.
- Web deployment headers — the bundled Nginx and Caddy configs now add
X-Content-Type-Options,X-Frame-Options,Referrer-PolicyandPermissions-Policy. - Version 2.3.1+9.
All games and offline generation are unchanged. Existing saved games and accounts keep working.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Flutter 3.47.9 / Dart 3.13.7 — fixes GHSA-frr6-h895-5pxp (high), the eMudhra intermediate-CA TLS MitM issue affecting
-
Universal Gaming 2.3.0 Stable
released this
2026-11-04 12:10:40 +01:00 | 40 commits to main since this releaseUniversal Gaming 2.3.0
- Account server connection test in Account settings. Enter or change a server URL and tap Test connection to verify it before signing in; the result shows the backend version and database.
- PostgreSQL-backed accounts in the self-hosted backend (1.0.2). Docker Compose now starts PostgreSQL 16 with a persistent volume and health check; SQLite remains for local development and tests.
- Transaction logging — every database operation is printed as a
[db]line indocker compose logs. GET /healthznow reports the active database backend.- Version 2.3.0+8.
All eleven games, Killer Sudoku, and offline generation are unchanged. Existing accounts keep working through the same API.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.2.0 Stable
released this
2026-11-04 11:46:05 +01:00 | 41 commits to main since this releaseHighlights
- Killer Sudoku is here. Dashed cages add up to their target and never repeat a digit. Five difficulties, notes, hints, undo/redo, resume support, separate records and a cage-aware conflict highlighter.
- Height-aware scaling in every game. Card tables, Mahjong, Pyramid, TriPeaks, Minesweeper, Chess and both Sudoku variants now size from the shorter viewport edge, so phone landscape and split-screen windows no longer waste space or clip boards.
- Mahjong tile labels now scale down cleanly instead of overflowing on small tiles.
- Account server default is now
https://account.games.emilyh.de. - Backend default port is now 6767 (Accounts 1.0.1).
- Docker web frontend now serves on port 6969 by default, with an included Compose file.
Fixes and polish
- Hub now lists eleven games and the onboarding copy is updated.
- Landscape layout tests added for every game at phone, tablet and desktop sizes.
- Killer Sudoku generation is verified to produce exactly one solution per puzzle, with complete cage coverage and valid sums.
- 177 Flutter tests pass;
flutter analyzereports no issues.
Downloads
UniversalGaming-2.2.0-android.apk— universal release-signed Android buildUniversalGaming-2.2.0-android.aab— Google Play bundleUniversalGaming-2.2.0-ios-unsigned.ipa— unsigned, re-sign with Sideloadly/AltStoreUniversalGaming-2.2.0-macos.dmg— universal macOS buildUniversalGaming-2.2.0-web.zip— static web buildSHA256SUMS.txt— checksums for all artifacts
Accounts backend: https://git.emilyh.de/Emily/UniversalGamingApp-Backend/releases/tag/v1.0.1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Universal Gaming 2.1.1 Stable
released this
2026-11-04 11:00:25 +01:00 | 42 commits to main since this releaseUniversal Gaming 2.1.1
A small patch release for safe, platform-specific update downloads.
Fixed
- Windows no longer offers the web ZIP as a native update. It only offers a
release asset whose name containswindows, otherwise it opens the release
page. - Linux only offers a
linux.tar.gzasset, otherwise it opens the release
page. - Android and macOS still select the APK and DMG directly.
This is the release to use if you build the app from source on Windows or
Linux. Everything else from 2.1.0 is included: startup update checks, the
changelog button, the web footer and outdated-build notice, optional
self-hosted accounts with stable UUIDs, the account page, and iPad support.Accounts backend
https://git.emilyh.de/Emily/UniversalGamingApp-Backend
Docker Compose, SQLite persistence, bcrypt hashes, JWT sessions, rate limiting,
CORS and a release proxy. Build the app with:flutter build apk --release \ --dart-define=UNIVERSAL_GAMING_API_URL=https://accounts.example.comDownloads
File Platform UniversalGaming-2.1.1-android.apkAndroid 7.0+ (universal, release-signed) UniversalGaming-2.1.1-android.aabGoogle Play upload UniversalGaming-2.1.1-ios-unsigned.ipaiOS 15+ (re-sign with Sideloadly/AltStore) UniversalGaming-2.1.1-macos.dmgmacOS 12+ (universal, ad-hoc signed) UniversalGaming-2.1.1-web.zipStatic web build SHA256SUMS.txtcontains the SHA-256 digest of every artifact. Windows and
Linux builds remain source-only; use the build commands inINSTALL.md.Notes
- Existing installs skip onboarding automatically.
- The iOS IPA is unsigned; no Apple distribution identity is available.
- The macOS app is ad-hoc signed and not notarized. Use Open Anyway on
first launch. - Games work offline. Network access is used only for update checks and the
account server you explicitly configure.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Windows no longer offers the web ZIP as a native update. It only offers a
-
Universal Gaming 2.1.0 Stable
released this
2026-11-04 10:48:18 +01:00 | 44 commits to main since this releaseUniversal 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 whenlatest.jsonreports 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.comOr leave it unset and configure Account → Account server at runtime.
Downloads
File Platform UniversalGaming-2.1.0-android.apkAndroid 7.0+ (universal, release-signed) UniversalGaming-2.1.0-android.aabGoogle Play upload UniversalGaming-2.1.0-ios-unsigned.ipaiOS 15+ (re-sign with Sideloadly/AltStore) UniversalGaming-2.1.0-macos.dmgmacOS 12+ (universal, ad-hoc signed) UniversalGaming-2.1.0-web.zipStatic web build SHA256SUMS.txtcontains the SHA-256 digest of every artifact.Windows and Linux builds are source-only in this release; the build commands
are inINSTALL.md.Notes
- Existing 2.0 installs skip the new onboarding screen automatically.
- The iOS IPA remains unsigned because no Apple distribution identity is
available. SeeINSTALL.mdfor 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Update checks — the app checks the public release feed on startup. The
forked from Emily/InfiniteSudoku