Match the version that Gazelle's MVS already resolved transitively,
silencing the "implicitly updated to higher versions" debug warning.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Register eagle0:// URL scheme on Windows for OAuth deep links
The Windows installer now registers the eagle0:// URL scheme in the
registry (HKEY_CURRENT_USER\Software\Classes\eagle0) pointing to the
game executable. This allows OAuth callbacks to redirect back to the
app automatically.
Also updated OAuthManager to check command line arguments for deep
links since Windows passes URL scheme launches as command line args.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add golang.org/x/sys dependency for Windows registry access
The Windows installer uses golang.org/x/sys/windows/registry to register
the eagle0:// URL scheme. This adds the required dependency to go.mod,
go.sum, and MODULE.bazel.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add WebView GUI to Windows installer
Adds a native GUI window to the Windows installer using the webview
library which embeds Microsoft Edge WebView2. The installer now shows
a modern HTML/CSS/JS interface with progress bar and status updates.
Key changes:
- Add llvm-mingw toolchain for macOS → Windows CGO cross-compilation
- Add webview_go dependency for WebView2 integration
- Create UIInterface abstraction with ConsoleUI and WebViewUI impls
- Build tags select stub (non-Windows/non-CGO) vs real WebView impl
- Genrule handles CGO cross-compilation within Bazel sandbox
Build targets:
- eagle_installer_windows_amd64: Pure Go console version (5.8 MB)
- eagle_installer_windows_amd64_webview: CGO WebView GUI (13.7 MB)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Fix WebView genrule to use Bazel Go SDK
The CI doesn't have Go in PATH, so the genrule needs to use Bazel's
Go SDK explicitly. This change:
- Exposes @go_default_sdk via use_repo in MODULE.bazel
- Adds @go_default_sdk//:files as a srcs dependency to the genrule
- Uses absolute paths for GO and GOROOT so they work after cd
- Filters out Go SDK files when copying source files
- Updates go.mod version to 1.23 to match the Bazel SDK
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Extract OAuth to Go service (Phase 1)
Move OAuth authentication handling from Eagle Scala server into a separate Go
service running in its own container. This simplifies Eagle, enables independent
deployment, and sets up for future JWT validation extraction.
Architecture:
- Go auth service handles OAuth flows, JWT creation, state management
- Eagle proxies Auth gRPC calls to Go service when configured
- Go service calls Eagle's InternalUserService for user persistence
- Shared JWT keys via volume mount
New files:
- src/main/go/net/eagle0/authservice/ - Go auth service
- auth_internal.proto - Internal gRPC for Go→Eagle communication
- InternalUserServiceImpl.scala - User service wrapper for internal gRPC
- ExternalAuthClient.scala - Client for forwarding to Go service
Backward compatible: Eagle runs in standalone mode without --auth-service-url
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add unit tests for Go auth service
- jwt_test.go: Tests for JWT token creation, validation, and refresh
- oauth_test.go: Tests for OAuth state management and status checking
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* Add Go admin server for Eagle game management
- Add GetRunningGames and GetGameHistory RPC endpoints to eagle.proto
- Implement admin methods in EagleServiceImpl.scala
- Create Go HTTP admin server at src/main/go/net/eagle0/admin_server/
- Add gRPC dependency to go.mod and MODULE.bazel
- Fix Go proto compilation with gazelle-compatible '# keep' directives:
- api_go_proto uses go_grpc (not go_grpc_v2) to generate message types
- common_go_proto uses go_proto and excludes shardok_internal_interface_proto
- admin_server_lib keeps proto dependency that gazelle doesn't detect
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Use hex format for game IDs in admin server
- /games endpoint returns game_id in hex format
- /games/{id}/history expects game ID in hex format
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix hex game ID format and restore full game info
- Use unsigned hex format (uint64 cast) to avoid negative values
- Restore all RunningGameInfo fields: current_round, action_count, players, run_status
- Include full player info: faction_id, faction_name, leader_name, is_human, user_name
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Fix hex game ID parsing for large unsigned values
Use ParseUint instead of ParseInt to handle game IDs that exceed
max signed int64 when represented as unsigned hex.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* add the DO funciton
* working test
* tests pass
* first passing insideBalanced
* import go-cmp
* oneof working
* optional support
* ordinal working
* substitution tokens
* larger test
* nested passing
* quotes working correctly
* test passes
* import paths
* use an interface instead of the whole Rand v2
* go.mod
* old rand
* name generator function works on DO
* more unicode bugs
* add the deps
* getting there with the s3 deps
* seems to be working
* remove the prints
* clean up unused imports
* use the new script
* delete the python file
* do the build
* not pull requests
* what