Release Candidate v8.0.0#464
Open
kirre-bylund wants to merge 33 commits into
Open
Conversation
- Add .doxygen/ with Doxyfile, Doxygen Awesome theme, custom CSS, nav JS,
layout, header/footer, and LootLocker branding
- Add .github/workflows/generate-docs.yml: validates on PR, uploads artifact
on push to main, attaches docs-{version}.zip to releases
- Add .gitattributes: export-ignore for .doxygen/, .github/, Tests/ etc.
- Update .gitignore: exclude docs/html/ generated output
- Add @InGroup and XML doc annotations to source files for featured coverage
Closes lootlocker/index#1461
Part of lootlocker/index#1203
- Split workflow into two jobs: generate-docs (contents: read) and attach-release (contents: write) to avoid giving write access on PR runs - Add apt-get update before doxygen install to avoid stale package index failures - Add --clobber to gh release upload to make re-runs idempotent - Fix duplicate visible attribute in DoxygenLayout.xml namespace and file sections - Fix CRLF line-ending handling in sync-nav.sh regex lookahead - Fix 'id' -> 'ID' in mainpage.md response conventions table - Remove duplicate scripts/Sync-DocsNavigation.ps1 (not referenced anywhere, duplicated .doxygen/sync-nav.sh)
- Only upload artifact on release and workflow_dispatch, not push to main
- Name artifact sdk-docs-{version} from package.json instead of sdk-docs-{sha}
- Pass version between jobs via job outputs
Fixes all undocumented and empty-summary public types in the Game/Requests directory so that Doxygen emits no warnings. Files with new or completed documentation: - ProgressionsRequest.cs - LootLockerCommonRequestTypes.cs - ClassRequests.cs - AssetRequest.cs (also converts // to /// for EnumFilter properties) - LeaderboardRequest.cs (also converts // to /// for single-slash summary tags) - LeaderboardDetailsRequest.cs - PlayerRequest.cs - BalanceRequests.cs - CatalogRequests.cs - ConnectedAccountRequest.cs - CurrencyRequests.cs - EntitlementRequests.cs - FollowerRequests.cs - MetadataRequests.cs - NotificationRequests.cs - RemoteSessionRequest.cs - TriggersRequests.cs Resolves #1462
header.html: - Make 'Unity SDK' product name a link to docs.lootlocker.com - Add 'Docs' nav tab linking to docs.lootlocker.com groups.dox: - Add docs.lootlocker.com links to 27 groups across all feature areas (skipped groups with no clear docs page: RemoteSessions, MultiUserManagement, PlayerStorage, AssetInstanceProgressions, Collectables, Missions, Maps, Messages, Reports, Misc, EventSystem)
Read each feature's docs.lootlocker.com page and updated every @brief and expanded description to reflect the actual feature scope, key concepts, use cases, and cross-references to related groups. Groups updated: MultiUserManagement, Authentication, WhiteLabel, RemoteSessions, ConnectedAccounts, Presence, Friends, Followers, Player, PlayerFiles, PlayerProgressions, Hero, CharacterProgressions, Currency, Balances, Catalog, Purchasing, Entitlements, DropTables, Assets, AssetInstance, Progressions, Leaderboard, Triggers, Metadata, Notifications, Broadcasts, Feedback
Customers sometimes show SDK error messages directly to end users, who are unaware of LootLocker as a middleware provider. Replaced all LootLocker-branded strings in user-surfaced error messages with neutral wording. Changes: - LootLockerErrorData.ToString(): Remove 'LootLocker Error:' prefix, replace 'LootLocker support' with 'support', improve empty-error text - LootLockerResponse.SDKNotInitializedError: Replace 'LootLocker SDK' with 'game client' in user-facing message - LootLockerEventSystem: Remove 'LootLocker' from event system reset msg - LootLockerPresenceManager: Remove 'LootLocker SDK' from presence disabled message, keep developer context intact Closes #1438
Fixes lootlocker/index#1412 Previously, LootLockerConfig.cs used hardcoded paths relative to Assets/LootLockerSDK, breaking the file-based configuration system when the SDK is installed anywhere other than that exact path (e.g. from a .unitypackage placed in a custom folder, or when embedded in a publisher package). Changes: - Add GetSdkRootAssetsPath() helper that locates the SDK root at runtime by finding LootLockerConfig.cs in the AssetDatabase via FindAssets and walking up four directory levels. Results are cached and cleared on play mode entry. - For Package Manager installs (Packages/ is read-only), the helper automatically redirects writable paths (asset creation) to Assets/. - Convert ConfigAssetsPath, ConfigResourceFolder and ConfigFilePath from hardcoded readonly fields to dynamic editor-only properties. - Replace CheckForFileConfig() with a 3-tier fallback chain: 1. Resources.Load<TextAsset> -- works in builds and editor, no path 2. AssetDatabase.FindAssets by name -- editor only, covers the race window where the Resources database is not yet warmed up 3. GetSdkRootAssetsPath()-relative File.Exists + forced AssetDatabase reimport -- last resort for files outside a Resources folder - Replace File.Exists(ConfigFilePath) guard in StoreSDKVersion with AssetDatabase.FindAssets so it works regardless of install path. - Replace hardcoded Assets/LootLockerSDK/package.json path in ListInstalledPackagesRequestProgress with GetSdkRootAssetsPath(). - Add AssetDatabase.FindAssets t:VisualTreeAsset fallback in LootLockerLogViewerWindow and LootLockerAdminExtension before the final error log, covering custom install paths for UXML files.
- CheckForFileConfig fallback A: match exact path including extension
(/{ConfigFileName}{ConfigFileExtension}) instead of just base name, so
a .json or .txt with the same base name cannot be loaded as config
- StoreSDKVersion guard: use Array.Exists with the same extension-aware
path check instead of .Length > 0, to avoid false positives from
unrelated TextAssets sharing the config file base name
- LootLockerLogViewerWindow fallback: iterate guids and match exact
/LootLockerLogViewerWindow.uxml path suffix instead of taking guids[0]
blindly, which is non-deterministic when multiple VisualTreeAssets match
- LootLockerAdminExtension fallback: same fix as LogViewerWindow
LootLockerLogViewerWindow.cs and LootLockerAdminExtension.UI.cs do not have 'using System;', causing CS0103 on StringComparison.Ordinal in Unity 2021 and earlier. Use System.StringComparison.Ordinal instead.
Agent-Logs-Url: https://github.com/lootlocker/unity-sdk/sessions/c3e36869-4767-4792-9e30-a57cc773fbcd Co-authored-by: JohannesLoot <97440747+JohannesLoot@users.noreply.github.com>
Agent-Logs-Url: https://github.com/lootlocker/unity-sdk/sessions/8194a8b3-3c24-4da9-a71f-05cebce40df9 Co-authored-by: JohannesLoot <97440747+JohannesLoot@users.noreply.github.com>
… response Agent-Logs-Url: https://github.com/lootlocker/unity-sdk/sessions/7d3ae7c5-28f9-4f77-8c74-b2a71d66cd29 Co-authored-by: JohannesLoot <97440747+JohannesLoot@users.noreply.github.com>
…ore sending report
…er C# compatibility
… beta error reporting feature flag
- Add push-to-main trigger to generate-docs.yml so latest/ auto-deploys on merge - Add deploy-pages job: deploys docs to gh-pages branch under latest/ (every push to main) and under the release tag (e.g. v2.5.0/) on release events - Maintain versions.json at the site root; sorted semver descending with latest always first - Add root index.html that meta-redirects to latest/ - Add version-picker.js: fetches versions.json and replaces the static #ll-topnav-version badge with a <select> dropdown for navigating between published versions; gracefully falls back to static badge when versions.json is unavailable (local builds) - Register version-picker.js in Doxyfile HTML_EXTRA_FILES - Load version-picker.js in header.html via <script defer> - Add <select> styles to lootlocker-theme.css matching the existing nav badge Part of lootlocker/index#1465
… dir URLs, hash preservation; fix dispatch-on-main to deploy latest/
JohannesLoot
approved these changes
May 19, 2026
Contributor
JohannesLoot
left a comment
There was a problem hiding this comment.
Release the kraken!
🐙
Previously each of the 16 AssetTests ran ~90 sequential API calls in setup (create game, enable platform, create 5 assets with data entities, metadata and storage). This commit creates the game and assets once for the whole test class and reuses them, cutting setup overhead by ~94%. Implementation - UnitySetUp gates on gameUnderTest == null for one-time shared setup - TearDown deletes the game after the last test (TestCounter >= 16) or on shared setup failure - 15/16 tests recategorized to LootLockerCI only; only ListAssets_IncludeEverything stays in LootLockerCIFast (it covers the shared setup adequately on its own) Orphaned game safety net - LootLockerOrphanedTestGameRegistry (new): tracks games created with shared setup; fires fire-and-forget DELETE requests via HttpClient on Application.quitting so games are cleaned up even when a partial run (e.g. CIFast) never reaches the last test that would normally delete - LootLockerTestGame.CreateGame: auto-Register + store AdminToken on the instance so callers never need to capture it manually - LootLockerTestGame.DeleteGame: auto-Unregister + fall back to AdminToken when LootLockerConfig.current.adminToken has been cleared by ClearSettings (fixes the ordering bug from PR review) CI manifests - Add com.unity.test-framework 1.1.33 to compile-check.yml, run-tests.yml, verify-compilation.ps1/.sh and run-tests.ps1 so test assemblies resolve correctly in minimal CI projects
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.
LootLocker_UnitySDKv8.0.0
Features
• Open UPM Package Signing - The SDK package is now signed following the official Open UPM signing practice, improving supply chain security for UPM consumers.
• Remote Session Provider Parameter - Remote session lease functions now accept an optional
providerparameter, allowing you to specify which authentication provider to use when initiating a lease. The provider is appended to both theredirect_urlanddisplay_urlin the lease response.• Reference Documentation - The SDK now ships with Doxygen-generated reference documentation published to GitHub Pages, complete with a version picker for browsing docs across releases.
Bug Fixes
• Fixed SDK asset loading to be path-agnostic, so the SDK now works correctly regardless of where it is installed in your project (custom folders, embedded packages, etc.)
• Sanitized SDK error messages to remove internal LootLocker-specific wording from user-facing errors
• Sensitive headers are now redacted before being included in error reports
Breaking Changes
• Removed Missions and Collectables - The
MissionsandCollectablesfeatures have been discontinued and all related API methods, request classes, and endpoints have been removed from the SDK. If your project usesGetAllMissions,GetMission,GetCollectables, or related methods, you will need to remove those calls.Full Changelog: v7.2.1...v8.0.0