Release 1.2.1#27
Merged
Merged
Conversation
…with the API and project library structure
…me-compatible helpers asmdef TestUiPresenter and TestDataUiPresenter were owned by GameLovers.UiService.Tests.asmdef, which has includePlatforms: ["Editor"]. Unity refuses AddComponent<T> on MonoBehaviours compiled into editor-only assemblies, so TestHelpers.CreateTestPresenterPrefab<T> was silently attaching null and logging "Can't add script behaviour 'TestPresenter' because it is an editor script" for every prefab-loader EditMode test. The tests passed because they only inspected GameObject-level state, but the presenter wiring was never exercised. Introduce Tests/Helpers/GameLovers.UiService.Tests.Helpers.asmdef (includePlatforms: [], gated by UNITY_INCLUDE_TESTS) and move TestPresenter.cs into it. The .cs.meta GUID is preserved so existing asset references survive. Reference the new asmdef from both the EditMode and PlayMode test assemblies; no test source changes are required because TestPresenter.cs stays in the GameLovers.UiService.Tests namespace. Update AGENTS.md Tests section to document the three-asmdef layout and the editor-only MonoBehaviour pitfall that motivated the split. Made-with: Cursor
…iet ThemeStyleSheet noise
UiService logs warnings by design on:
- LoadUiAsync for an already-loaded presenter ("was already loaded")
- OpenUiAsync for an already-open presenter ("is already open")
- CloseUi for a not-open presenter ("but is not open")
The affected PlayMode integration tests exercised these paths without
declaring them, so the Unity console was littered with warnings alongside
the green results. Add matching LogAssert.Expect calls at each site.
TestMultiFeatureToolkitPresenter and TestUiToolkitPresenter now assign an
empty ThemeStyleSheet before handing the PanelSettings to the UIDocument,
silencing Unity's "No Theme Style Sheet set to PanelSettings" warning
that otherwise fires twice per test (on assignment and on SetActive).
Refactor Perf_LoadUi_SinglePresenter and Perf_UnloadUi_SinglePresenter so
each measured iteration performs a real load/unload rather than a cache
hit that would trigger an "already loaded" warning inside the measurement
scope; introduces Measure.CleanUp for the load case and tightens the
unload case to only measure the unload itself.
Also refreshes Runtime/AssemblyInfo.cs.meta with a regenerated GUID.
Made-with: Cursor
- Add CLAUDE.md + .meta at package root; thin @AGENTS.md import wrapper - AGENTS.md: add Companion-files blockquote - README.md: trim Contributing to one paragraph + AGENTS.md link; add Related docs footer linking to docs/, AGENTS.md, and CHANGELOG.md Made-with: Cursor
Bump package.json to 1.2.1 and consolidate the post-1.2.0 work (CLAUDE.md wrapper, sample READMEs, shared test helpers asmdef, PlayMode test reorg, doc/AGENTS.md updates, expected-warning fixes) into the existing 1.2.1 CHANGELOG section, dated 2026-04-26. Made-with: Cursor
…menus
Aligns with the GameLovers Services/GameData package family conventions.
- package.json displayName: "UiService" -> "GameLovers UiService"
(UPM name "com.gamelovers.uiservice" and GitHub repo unchanged)
- Editor menus moved under Tools/GameLovers/...:
Tools/UI Service/Presenter Manager -> Tools/GameLovers/UI Presenter Manager
Tools/UI Service/Select UiConfigs -> Tools/GameLovers/UI Configs/Select UI Configs (100)
Tools/UI Service/Layer Visualizer -> Tools/GameLovers/UI Configs/Layer Visualizer (200)
- [CreateAssetMenu] paths reparented:
ScriptableObjects/Configs/UiConfigs/{Addressables,Resources,PrefabRegistry}
-> GameLovers UiService/UiConfigs/{Addressables,Resources,PrefabRegistry}
GameLovers/UiService/Samples/UiSets Sample Configs
-> GameLovers UiService Samples/UiSets Sample Configs
- Fix UiConfigsEditorBase<TSet>.OnEnable reentrancy crash that surfaced when
invoking the Layer Visualizer: SyncConfigs() ends with AssetDatabase.SaveAssets
which synchronously triggers Selection_CallSelectionChanged ->
InspectorWindow.OnSelectionChanged -> reentrant CreateInspectorGUI() before
ConfigsProperty/SetsProperty are assigned. Reordered OnEnable to init the
SerializedProperty fields and resize _sets before SyncConfigs, with a final
serializedObject.Update() after the sync path mutates the asset directly.
- README/AGENTS/CHANGELOG updated; folded into existing 1.2.1 (not yet published)
Made-with: Cursor
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.
New:
CLAUDE.mdwrapper at the package root that importsAGENTS.mdfor Claude Code integrationREADME.mddocumentation for every entry underSamples~/(BasicUiFlow, DataPresenter, DelayedPresenter, UiToolkit, DelayedUiToolkit, UiSets, MultiInstance, CustomFeatures, AssetLoadingStrategies)Changed:
Changed:
displayNamefromUiServicetoGameLovers UiServiceto align with the GameLovers GameData and GameLovers Services packages (UPMnamecom.gamelovers.uiserviceand the GitHub repository name are unchanged)Tools/GameLovers/...to align with the GameLovers Services package layout:Tools/UI Service/Presenter Manager→Tools/GameLovers/UI Presenter Manager;Tools/UI Service/Select UiConfigs→Tools/GameLovers/UI Configs/Select UI Configs;Tools/UI Service/Layer Visualizer→Tools/GameLovers/UI Configs/Layer Visualizer[CreateAssetMenu]paths fromScriptableObjects/Configs/UiConfigs/...toGameLovers UiService/UiConfigs/...forAddressablesUiConfigs,ResourcesUiConfigs, andPrefabRegistryUiConfigs; moved theUiSetssample's[CreateAssetMenu]toGameLovers UiService Samples/UiSets Sample ConfigsTests/PlayMode/so unit tests live underTests/PlayMode/Unit/alongside the existingIntegration/,Performance/,Smoke/subfoldersTestPresenterand other MonoBehaviour-based test fixtures fromTests/EditMode/Helpers/toTests/Helpers/(runtime-compatible) so PlayMode tests canAddComponent<T>()them without hitting the editor-script restrictionREADME.mdandAGENTS.mddocumentationFixed:
LogAssert.Expect(loading/open-close/UI-set tests) and assigning an emptyThemeStyleSheetto runtime-createdPanelSettingsin UI Toolkit test helpers to silence theNo Theme Style Sheet set to PanelSettingswarning