This repository was archived by the owner on Sep 10, 2026. It is now read-only.
Repository navigation
Let a game name its own host on the web sign-in screen - #34
Merged
Merged
Conversation
Web sign-in runs through Firebase's popup, which loads `https://<authDomain>/__/auth/handler`, so Google's account chooser reads "Sign in to continue to my-project.firebaseapp.com". `EngineConfig.authDomain` replaces that host. Optional, and unset is the right answer for almost every game: sign-in works on the Firebase project's own domain, and Android never shows the string at all, because it signs in through the native Google flow rather than the popup. Applied to the generated `FirebaseOptions` at startup rather than written into `firebase_options.dart`, which FlutterFire regenerates and would drop the edit on the next `configure_firebase`. Validated as a bare host like `appHost`: a malformed value would otherwise reach Firebase as the origin it builds the popup URL from, and surface as a sign-in that never returns. It is not `appHost`. The value must be a domain Firebase Hosting answers for, a sibling of the game's own Worker host rather than the host itself. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This was referenced Aug 12, 2026
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
On the web, sign-in runs through Firebase's popup, which loads
https://<authDomain>/__/auth/handler, and Google's account chooser names that host. Today every game reads:EngineConfig.authDomainreplaces that string.Optional, and usually left alone
Unset is the scaffolded value and the right answer for almost every game. Sign-in works on the Firebase project's own domain, needs no Firebase Hosting, and Android never shows the string at all: it signs in through the native Google flow rather than the popup, so this is web-only and cosmetic.
Why the config seam rather than an edit
firebase_options.dartis generated by FlutterFire and regenerated byconfigure_firebase, so a hand-editedauthDomainwould not survive the next run. The override is applied to the generatedFirebaseOptionsat startup instead, from ordinary deployment configuration, usingcopyWith(present in the resolvedfirebase_core_platform_interface8.0.0).It is not
appHostThe value has to be a domain Firebase Hosting answers for, because that is what serves
/__/auth/handler.appHostis the game's own Cloudflare Worker. They are siblings,auth.mygame.combesidemygame.com. Validated as a bare host for that reason: a value carrying its own scheme would reach Firebase as the origin it builds the popup URL from, and fail as a sign-in that never returns rather than as a configuration error.The name is only half the branding. The product name and logo on that screen come from the OAuth consent screen in Google Cloud, which needs no code and no domain; the docs cover both halves.
Release
Additive, so a patch pre-1.0: 0.4.1. The entry is under
## [Unreleased];cider releasestill has to run.This must publish before
create-eigen-game, whose companion PR raises the pinned floor to^0.4.1because the scaffoldedmain.dartpasses the new parameter.Verification
dart analyzeclean,dart formatclean🤖 Generated with Claude Code