Skip to content

Comments

v1.13#377

Merged
luskaner merged 15 commits intomainfrom
v1.13
Feb 21, 2026
Merged

v1.13#377
luskaner merged 15 commits intomainfrom
v1.13

Conversation

@luskaner
Copy link
Owner

No description provided.

@luskaner luskaner added this to the v1.13.0 milestone Jan 30, 2026
@luskaner luskaner self-assigned this Jan 30, 2026
luskaner and others added 13 commits February 10, 2026 14:45
#398)

* Launcher: add config option to disabling automatically adding cert to game's store and consolidated cert info in 'Config.Certificate'

* Update launcher/internal/cmd/root.go

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>

---------

Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
#399)

* Launcher: add Server.StartWithoutCorfirmation (default false) to user input is not needed when Start is auto and no server is found

* Update launcher/resources/config.toml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>

---------

Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
#400)

* Launcher: try reverting changes for all games at the start if revert args cannot be read
* Server: Added support for auth. Fixed persistent data reading

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>

---------

Signed-off-by: David Fernández Aldana <luskaner@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@luskaner luskaner requested a review from Copilot February 21, 2026 16:45
@luskaner luskaner marked this pull request as ready for review February 21, 2026 16:46
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the project to “v1.13” by upgrading the Go toolchain baseline to 1.26 and expanding the LAN server ecosystem to support Age of Empires IV (age4) end-to-end (server APIs/resources, launcher workflow, battle-server-manager integration), along with introducing configurable authentication behavior.

Changes:

  • Bump Go/toolchain references to Go 1.26 across modules, Dockerfiles, workspace, CI and build tasks.
  • Add AoE IV (age4) support across server routes/models/resources and update launcher + battle-server-manager to handle AoE4-specific paths/cert/battle-server behavior.
  • Introduce Authentication configuration (required/cached/adaptive/disabled) and connectivity detection, plus new item/presence/profile-property endpoints used by newer clients.

Reviewed changes

Copilot reviewed 185 out of 204 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
tools/server-replay/go.sum Removes server-replay module sums (module dependency tracking changes).
tools/server-replay/go.mod Bumps server-replay Go version to 1.26.
tools/server-docker/server/go.work.template Bumps workspace Go/toolchain versions to 1.26.
tools/server-docker/server/Dockerfile Uses golang:1.26 alpine image for server docker build.
tools/server-docker/genCert/go.work.template Bumps workspace Go/toolchain versions to 1.26.
tools/server-docker/genCert/Dockerfile Uses golang:1.26 alpine image for genCert docker build.
tools/scripts/internal/goreleaser/project.go Adjusts macOS target detection to use Goos().
tools/scripts/internal/goreleaser/os.go Splits Windows targets into legacy/modern; introduces toolchain selection hook.
tools/scripts/internal/goreleaser/constants.go Updates OS target set to include Windows legacy/modern.
tools/scripts/internal/goreleaser/config.go Adjusts Windows naming override + OS keying for script ignore rules.
tools/scripts/internal/goreleaser/binary.go Refactors BinaryTargets initialization (currently broken per review comments).
tools/scripts/go.mod Bumps Go version; updates/extends indirect dependencies.
server/resources/windows/start_age4.bat Adds AoE4 server start script for Windows.
server/resources/unix/start_age4.sh Adds AoE4 server start script for Unix.
server/resources/responses/athens/itemLocations.json Adds item location responses for athens.
server/resources/responses/age4/presenceData.json Adds AoE4 presence definitions data.
server/resources/responses/age4/levelRewardsTable.json Adds AoE4 level rewards table asset.
server/resources/responses/age4/itemLocations.json Adds AoE4 item locations responses.
server/resources/responses/age3/itemLocations.json Adds AoE3 item locations responses.
server/resources/responses/age2/itemLocations.json Adds AoE2 item locations responses.
server/resources/config/config.toml Adds Authentication config + age4 game hosts section; updates supported games list.
server/resources/config/age4/login.json Adds AoE4 login/config key-value data.
server/internal/runtime.go Adds runtime flags for connectivity/authentication.
server/internal/routes/wss/wss.go Adjusts comm logging and error handling (currently broken per review comments).
server/internal/routes/router/playfabapiMiddleware.go Supports AoE4 auth header differences (X-Sessionticket vs X-Entitytoken).
server/internal/routes/router/playfabapi.go Enables PlayFab API for AoE4 and gates routes by game type.
server/internal/routes/router/loginMiddleware.go Adds middleware to bind login request and create user prior to handlers.
server/internal/routes/router/authMiddleware.go Adds upstream-auth/cached-auth middleware with CA pinning and item refresh.
server/internal/routes/router/apiAgeOfEmpires.go Simplifies proxy initializer closure args.
server/internal/routes/playfab/Client/LoginWithSteam.go Refactors login flow into shared helper and supports multiple games/sessions.
server/internal/routes/playfab/Client/LoginWithCustomID.go Adds AoE4 LoginWithCustomID handler.
server/internal/routes/playfab/Client/GetUserData.go Adds AoE4 GetUserData handler exposing RLinkProfileID.
server/internal/routes/game/relationship/setPresenceProperty.go Implements SetPresenceProperty with presence notifications.
server/internal/routes/game/relationship/setPresence.go Refactors presence change notifications + adds presence data encoding.
server/internal/routes/game/relationship/ignore.go Switches to EncodeProfileInfo.
server/internal/routes/game/relationship/getRelationships.go Adds AoE4 relationship response handling + presence-aware profile encoding.
server/internal/routes/game/relationship/clearRelationship.go Changes return code for ClearRelationship.
server/internal/routes/game/relationship/addfriend.go Switches to EncodeProfileInfo.
server/internal/routes/game/party/updateHost.go Enforces host-only host-update with locking and success/error codes.
server/internal/routes/game/party/peerUpdate.go Uses UnsafeGetHostId for host check under lock.
server/internal/routes/game/party/peerAdd.go Extends peer creation to include party id.
server/internal/routes/game/login/platformlogin.go Moves request/user creation to middleware; presence + relationships now presence-aware.
server/internal/routes/game/login/logout.go Adds AoE4 handling for logout notifications + presence definitions usage.
server/internal/routes/game/leaderboard/shared/leaderboard.go Switches to EncodeProfileInfo / EncodeExtraProfileInfo.
server/internal/routes/game/leaderboard/setAvatarStatValues.go Adds TODO regarding AoE4 fixed stats.
server/internal/routes/game/leaderboard/getStatGroupsByProfileIDs.go Changes include-extra-profile-info logic to AoE2 only.
server/internal/routes/game/leaderboard/getRecentMatchSinglePlayerHistory.go Adds stub handler for recent single-player match history.
server/internal/routes/game/item/updateItemLoadout.go Adds item loadout update endpoint.
server/internal/routes/game/item/updateItemAttributes.go Adds endpoint to update item metadata attributes and versions.
server/internal/routes/game/item/moveItem.go Adds endpoint to move items between locations/slots.
server/internal/routes/game/item/getScheduledSaleAndItems.go Adds stub endpoint for scheduled sale.
server/internal/routes/game/item/getPersonalizedSaleItems.go Adds stub endpoint for personalized sale items.
server/internal/routes/game/item/getLevelRewardsTableJson.go Adds signed asset serving for levelRewardsTable.json.
server/internal/routes/game/item/getItemPrices.go Adds stub endpoint for item prices.
server/internal/routes/game/item/getItemLoadouts.go Implements retrieval of persisted item loadouts.
server/internal/routes/game/item/getInventoryByProfileIDs.go Implements inventory + item locations response plumbing.
server/internal/routes/game/item/equipItemLoadout.go Adds equip item loadout endpoint.
server/internal/routes/game/item/detachItems.go Adds detach items endpoint updating item state.
server/internal/routes/game/item/createItemLoadout.go Adds create item loadout endpoint with validation.
server/internal/routes/game/invitation/replyToInvitation.go Switches to EncodeProfileInfo.
server/internal/routes/game/invitation/extendInvitation.go Switches to EncodeProfileInfo.
server/internal/routes/game/invitation/cancelInvitation.go Switches to EncodeProfileInfo.
server/internal/routes/game/communityEvent/getAvailableCommunityEvents.go Adds AoE4 handling for community event response shape.
server/internal/routes/game/cloud/getTempCredentials.go Adds TODO for AoE4 replay download behavior.
server/internal/routes/game/cloud/getFileURL.go Improves multi-name behavior + error aggregation; handles nil cloudFiles.
server/internal/routes/game/chat/sendWhisper.go Extends AoE4 to AoM-style whisper payload shape + EncodeProfileInfo usage.
server/internal/routes/game/chat/leaveChannel.go Switches to EncodeProfileInfo.
server/internal/routes/game/chat/joinChannel.go Switches to EncodeProfileInfo.
server/internal/routes/game/advertisement/updateTags.go Uses UnsafeGetHostId under write lock.
server/internal/routes/game/advertisement/updatePlatformLobbyID.go Adjusts metadata source + message shape for AoE2/AoE4/AoM.
server/internal/routes/game/advertisement/update.go Alters per-game joinable/platform-session behavior and response encoding set.
server/internal/routes/game/advertisement/shared/advertisementRequest.go Adds ServiceType field.
server/internal/routes/game/advertisement/join.go Adds AoE4 “party” constraints and peer party propagation.
server/internal/routes/game/advertisement/host.go Adds AoE4 semantics (matchmaking allow, party linking, response shape changes).
server/internal/routes/game/advertisement/findAdvertisements.go Enables tag filtering for AoE4.
server/internal/routes/game/account/setAvatarMetadata.go Switches to EncodeProfileInfo.
server/internal/routes/game/account/getProfileProperty.go Implements property fetch by profile + key.
server/internal/routes/game/account/getProfileName.go Switches to users.EncodeProfileInfo API.
server/internal/routes/game/account/findProfilesByPlatformID.go Adds presence-aware profile encoding.
server/internal/routes/game/account/findProfiles.go Adds presence-aware profile encoding.
server/internal/routes/game/account/clearProfileProperty.go Adds endpoint to delete a profile property.
server/internal/routes/game/account/addProfileProperty.go Adds endpoint to set a profile property.
server/internal/models/resources.go Refactors resources initialization opts; adds SignedAssets; improves signature parsing.
server/internal/models/profileProperty.go Adds persistent default data type for profile properties.
server/internal/models/profileMetadata.go Adds AoE4 default avatar metadata format.
server/internal/models/presence.go Adds presence definitions model (currently broken per review comments).
server/internal/models/playfab/static.go Updates PlayFab static id value.
server/internal/models/playfab/session.go Refactors session token fields and adds CreateWithUserId; Token() accessor.
server/internal/models/playfab/game.go Adds PlayFab-capable Game interface/base wrapper.
server/internal/models/playfab/data/data.go Adjusts marshaling format (currently broken per review comments).
server/internal/models/persistentJsonData.go Refactors wrapper read path for persistent string JSON map metadata.
server/internal/models/peer.go Adds party to peers and updates constructor signature.
server/internal/models/mainGame.go Removes old MainGame implementation (moved/refactored elsewhere).
server/internal/models/itemLoadout.go Adds item loadout model + persistence defaults.
server/internal/models/initializer/initializer.go Wires age4 game initialization.
server/internal/models/game.go Reintroduces/refactors MainGame with opts; adds Items + PresenceDefinitions into Game interface.
server/internal/models/chatChannel.go Switches channel user encoding to EncodeProfileInfo.
server/internal/models/battleServerLoader.go Requires battle servers for AoE4/AoM; simplifies error message.
server/internal/models/battleServer.go Refactors battle server init into opts struct.
server/internal/models/avatarStats.go Adds TODO note regarding AoE4 benefits.
server/internal/models/auth.go Adds persistent auth-cache timestamp model.
server/internal/models/athens/user/user.go Updates user generation signature to include item definitions.
server/internal/models/athens/game.go Refactors athens game to use PlayFab BaseGame and new CreateMainGame opts.
server/internal/models/age4/game.go Adds AoE4 game wiring (PlayFab + resources + battle-server opts).
server/internal/models/age3/game.go Refactors AoE3 CreateGame to new CreateMainGame opts.
server/internal/models/age2/game.go Refactors AoE2 CreateGame to new CreateMainGame opts.
server/internal/models/age1/game.go Refactors AoE1 CreateGame to new CreateMainGame opts.
server/internal/logger/commLog.go Changes uptime calculation (currently broken per review comments).
server/internal/http.go Filters schema decode errors via typed matching helper usage.
server/internal/errors.go Adds ErrInvalidAuthentication exit code.
server/internal/config.go Adds age4 config + Authentication config field.
server/internal/cmd/root.go Adds Authentication config validation + connectivity detection; fixes viper binding call.
server/internal/boolInt.go Adds generic bool<->number mapping helper type for JSON.
server/internal/Map.go Adds SafeOrderedMap.First and refactors ro map store (currently broken per review comments).
server/go.mod Bumps Go version; dependency updates; adds x/exp version.
server/README.md Updates docs for Go 1.26 and AoE4 resources/cert behavior.
server/BattleServers.md Adds AoE4 battle server guidance + port examples; fixes game list.
server-genCert/go.sum Updates sums after Go/toolchain changes.
server-genCert/go.mod Bumps Go version to 1.26.
launcher/resources/windows/start_age4.bat Adds AoE4 launcher start script for Windows.
launcher/resources/unix/start_age4.sh Adds AoE4 launcher start script for Unix.
launcher/resources/config.toml Restructures certificate config; adds StartWithoutConfirmation and other server start controls.
launcher/resources/config.game.toml Updates config comments to new cert config keys + AoE4 path rules.
launcher/internal/server/ssl.go Adds User-Agent header to CA cert fetch request (leaves stale TODO).
launcher/internal/server/server.go Adds User-Agent header when probing server.
launcher/internal/config.go Adds nested certificate config + StartWithoutConfirmation.
launcher/internal/cmdUtils/game.go Updates message pointing to new certificate config key.
launcher/internal/cmdUtils/cert.go Simplifies manual-trust warning message.
launcher/internal/cmdUtils/caCert.go Threads “canAddCert” flag through game CA-store update logic.
launcher/internal/cmd/root.go Adds AoE4 in CLI behavior; config restructure; AoE4-specific constraints and auto-start prompt control.
launcher/go.sum Updates sums after Go/toolchain/dependency changes.
launcher/go.mod Bumps Go version; dependency updates.
launcher/README.md Updates doc wording for certificate-store exceptions (AoE4).
launcher-config/internal/cmd/setUp.go Adds AoE4 CA-store restore exception logic + help text update.
launcher-config/internal/cmd/root.go Updates help text for AoE4 CA-store behavior.
launcher-config/internal/cmd/revert.go Adds AoE4 CA-store restore exception logic + help text update.
launcher-config/go.sum Updates sums after Go/toolchain changes.
launcher-config/go.mod Bumps Go version to 1.26.
launcher-config/README.md Updates supported games list to include age4/athens.
launcher-config-admin/go.sum Updates sums after Go/toolchain changes.
launcher-config-admin/go.mod Bumps Go version to 1.26.
launcher-config-admin-agent/go.sum Updates sums after Go/toolchain changes.
launcher-config-admin-agent/go.mod Bumps Go version to 1.26.
launcher-common/userData/userData.go Adds AoE4 user-data root path differences (My Games) and path prefix rules.
launcher-common/userData/profiles.go Treats AoE4 like AoE1 for profile folder naming.
launcher-common/userData/metadata.go Adds AoE4 metadata folder path.
launcher-common/userData/backup_windows.go Adds AoE4 base-path resolution using KnownFolder(Documents).
launcher-common/serverKill/serverKill_windows.go Adds User-Agent to shutdown calls; modifies wait logic (currently broken per review comments).
launcher-common/go.sum Updates sums after Go/toolchain changes.
launcher-common/go.mod Bumps Go version to 1.26.
launcher-common/configRevert.go Refactors revert flow to support “all games” and unified flag generation.
launcher-agent/main.go Excludes AoE4 from Windows broadcast-battleserver behavior.
launcher-agent/internal/gameLogs/gameLogs.go Adds AoE4 game log copying; refactors glob constants.
launcher-agent/internal/gameLogs/age4.go Implements AoE4 log discovery/copying.
launcher-agent/internal/gameLogs/age1.go Simplifies error handling for glob results.
launcher-agent/go.sum Adds missing go.mod sum entry.
launcher-agent/go.mod Bumps Go version to 1.26.
go.work Bumps workspace Go/toolchain to 1.26 and reorders modules.
common/resolve.go Adds DNSConnectivity() helper for auth/connectivity decisions.
common/http.go Adds common User-Agent helper.
common/go.sum Updates sums after Go/toolchain/dependency changes.
common/go.mod Bumps Go version; updates x/mod and x/tools versions.
common/game/steam/steam.go Adds Steam AppID for AoE4.
common/game/appx/appx_windows.go Adds AoE4 AppX suffix; adjusts install location resolution flow.
common/game.go Adds AoE4 to SupportedGames.
common/executor/exec/executor.go Switches to typed error matching helper usage.
common/domain.go Adds AoE4 domains + host resolution; updates release domain patterns; adjusts self-signed cert rules.
common/announce.go Minor comment wording update.
battle-server-manager/resources/windows/start_age4.bat Adds AoE4 battle-server-manager start script for Windows.
battle-server-manager/resources/unix/start_age4.sh Adds AoE4 battle-server-manager start script for Unix.
battle-server-manager/resources/config.game.toml Documents AoE4 battle-server exe sourcing and SSL file rules.
battle-server-manager/internal/cmdUtils/ssl.go Uses default cert/key for AoE4 like AoM.
battle-server-manager/internal/cmdUtils/executor.go Uses AoE2 BattleServer.exe for AoE4; adjusts simulation period.
battle-server-manager/internal/cmd/start.go Fixes config-not-found detection and conditional config logging.
battle-server-manager/go.sum Updates sums after Go/toolchain/dependency changes.
battle-server-manager/go.mod Bumps Go version; dependency updates.
Taskfile.yml Passes legacy GOROOT argument to goreleaser config generator.
Taskfile.debug.yml Adds debug task dependencies/build steps for battle-server-manager.
README.md Updates top-level docs for AoE4 support, Go 1.26, and revised launcher behavior.
DEVELOPMENT.md Updates dev requirements and env setup for legacy GOROOT; adds CGO guidance.
.gitignore Stops ignoring go.work; ignores tools/**/go.sum; minor formatting.
.github/workflows/releaser.yml Updates Go version; uses go.work.sum cache path; adds legacy Go setup step; runs goreleaser config generator with argument.
.github/workflows/codeql.yml Adds build of generateGoreleaserConfig tool in manual build script.
.github/ISSUE_TEMPLATE/bug_report.md Adds AoE4 checkbox; clarifies OS field wording.
.env.example Adds GOROOT_LEGACY env var placeholder.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@luskaner luskaner merged commit 0fe38d7 into main Feb 21, 2026
2 of 3 checks passed
@luskaner luskaner deleted the v1.13 branch February 21, 2026 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant