Repository navigation
Fix game session delivery and modernize platform dependencies - #147
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Starting a game could return no frame to its creator, imported bot actions could return the bot's view to the human caller, and stopped connections could leave the app showing a spinner. Return complete sessions projected for the authenticated recipient, feed HTTP responses into the same serialized client coordinator as socket updates, and show actionable connection failures.
This change also fixes generator cleanup and account deletion, adopts the released Firebase registration APIs, and updates the platform's dependencies and generated artifacts. The disposable Rival Courts game used to exercise the platform stays outside the repository.
Changes
GameRepositoryautomatically delivers HTTP sessions into its serialized session/gap pipeline. Remove the caller-suppliedinjectstream. Retry transient transport/service errors with backoff, stop on permanent errors, retain HTTP status in diagnostics, and disable the second Riverpod retry loop. Show a persistent error with Retry even when a cached frameless session exists. A same-sequence reconnect clears the error without replaying a move.register,onRegisteredandonUnregistereddirectly and delete four custom compatibility files. Keep Installations for device cleanup. Add coverage for registration, unregistration and account changes; no legacy token fallback is introduced.workbox-cliwith the supportedworkbox-buildNode API, preserving precaching and removing the obsoletetmpoverride. Update the scaffold harness, FVM pins, lifecycle-script policies, Biome configuration and CI package-manager pins. Keep bot registration manual and fix documented inserts to supplycreated_at.Dependency updates
Updates were made with package-manager/framework CLIs and reviewed against upstream release notes. Key selections:
Compatible transitive ranges were refreshed. TypeScript stays at 6.0.3 because stable TS7 cannot satisfy the current declaration/docs toolchain. Dart analyzer upgrades and Android built-in Kotlin remain blocked by their owning dependencies; no overrides force incompatible graphs. Drizzle itself is unchanged.
See the complete dependency review and remaining upstream/tooling audit blockers.
Validation
Validated locally after rebasing onto main
23932b73:./tool/check.sh: server build/typecheck and 733 tests; Dart client 191 tests plus 21 Chrome tests; codegen 16; Flutter framework 175 and example 37; shell 120; Firebase 44.Real Firebase/APNs push delivery still requires configured credentials and is not established by these tests. Existing non-failing upstream lint/doc warnings and development-tool audit findings are documented; no hosted application was deployed.
Release notes
This PR retains published package versions; release workflows own version changes.
GameRepository.sessionsremovinginject, the generator's exclusive fixture-directory ownership, and the Firebase dependency/API transition require a breaking Dart release.After this PR merges, dispatch Version Dart packages with
bump=major(the next minor version for these pre-1.0 packages), merge its generated PR, and wait for pub.dev uploads. Then merge the refreshed npm version PR so one scaffolder release includes the new Dart floors. Current Dart changes use the already-publishedeigen_apimodels, so Dart can publish first.Expected releases, absent intervening changes:
eigen_client0.9.0,eigen_codegen0.2.0,eigen_flutter0.17.0,eigen_shell0.8.0,eigen_firebase0.7.0; engine packages andeigen_api0.12.1;create-eigen-game0.17.8. Finish by verifying registry versions and a fresh scaffold without local overrides.