diff --git a/.github/workflows/platform-build-gates.yml b/.github/workflows/platform-build-gates.yml index aab2eb02..7722c30c 100644 --- a/.github/workflows/platform-build-gates.yml +++ b/.github/workflows/platform-build-gates.yml @@ -82,7 +82,7 @@ jobs: - name: Install Android SDK platform shell: bash run: | - yes | "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null + yes | "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null || true "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" "platforms;android-36" "build-tools;36.0.0" - name: Build Android @@ -107,7 +107,7 @@ jobs: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Install iOS workload - run: dotnet workload install ios --skip-manifest-update --disable-parallel --no-http-cache + run: dotnet workload install ios android --skip-manifest-update --disable-parallel --no-http-cache - name: Build iOS Simulator run: >- diff --git a/global.json b/global.json index 28628852..c35b9b9f 100644 --- a/global.json +++ b/global.json @@ -3,7 +3,7 @@ "Uno.Sdk": "6.5.36" }, "sdk": { - "version": "10.0.109", + "version": "10.0.103", "rollForward": "latestMinor", "allowPrerelease": false }, diff --git a/scripts/gates/wasm-focus-boundary-smoke.mjs b/scripts/gates/wasm-focus-boundary-smoke.mjs index 0ee90559..5b61f987 100644 --- a/scripts/gates/wasm-focus-boundary-smoke.mjs +++ b/scripts/gates/wasm-focus-boundary-smoke.mjs @@ -18,9 +18,9 @@ import { } from "./wasm-smoke-lib/settings-shell.mjs"; const baseUrl = normalizeBaseUrl(process.argv[2], "wasm-focus-boundary-smoke.mjs"); -const diagnosticsPagePattern = /Diagnostics and logs|诊断与日志|Live logs|日志|Gamepad input|手柄输入/; -const gamepadStart = { labels: [], automationIds: ["Diagnostics.GamepadStart"] }; -const gamepadRefresh = { labels: [], automationIds: ["Diagnostics.GamepadRefresh"] }; +const diagnosticsPagePattern = /Diagnostics and logs|诊断与日志|Live logs|日志|Gamepad input|手柄输入|Diagnostics_ConnectionTitle|连接|Agent:/; +const gamepadStart = { labels: [], automationIds: ["Diagnostics.GamepadStart"], elementTags: ["BUTTON"] }; +const gamepadRefresh = { labels: [], automationIds: ["Diagnostics.GamepadRefresh"], elementTags: ["BUTTON"] }; const browser = await chromium.launch({ headless: true }); try { diff --git a/src/SalmonEgg.Presentation.Core/ViewModels/Chat/Overlay/ChatConversationSurfaceStatePresenter.cs b/src/SalmonEgg.Presentation.Core/ViewModels/Chat/Overlay/ChatConversationSurfaceStatePresenter.cs index 2771e52d..217033f7 100644 --- a/src/SalmonEgg.Presentation.Core/ViewModels/Chat/Overlay/ChatConversationSurfaceStatePresenter.cs +++ b/src/SalmonEgg.Presentation.Core/ViewModels/Chat/Overlay/ChatConversationSurfaceStatePresenter.cs @@ -42,9 +42,6 @@ public static ChatConversationSurfaceState Resolve(ChatConversationSurfaceStateI && (!input.IsSessionActive || !MatchesCurrentSession(input.CurrentSessionId, input.PendingShellActivationConversationId) || !input.IsChatShellVisibleForRemoteUi); - var shouldPromoteLayoutLoadingToBlockingPresenter = - input.IsLayoutLoading - && (isVisibleTranscriptStaleForCurrentSession || isCurrentVisibleConversationSupersededByShellIntent); var activationOverlayVisible = shouldShowConnectionLifecycleOverlay @@ -69,13 +66,11 @@ public static ChatConversationSurfaceState Resolve(ChatConversationSurfaceStateI && (!hasVisibleTranscriptContent || isSessionSwitchOverlayBlockingVisibleTranscript || isVisibleTranscriptStaleForCurrentSession - || isCurrentVisibleConversationSupersededByShellIntent)) - || shouldPromoteLayoutLoadingToBlockingPresenter; + || isCurrentVisibleConversationSupersededByShellIntent)); var shouldShowLoadingOverlayStatusPill = activationOverlayVisible && !string.IsNullOrWhiteSpace(overlayStatusText); var shouldShowLoadingOverlayPresenter = - (activationOverlayVisible && (shouldShowBlockingLoadingMask || shouldShowLoadingOverlayStatusPill)) - || shouldPromoteLayoutLoadingToBlockingPresenter; + (activationOverlayVisible && (shouldShowBlockingLoadingMask || shouldShowLoadingOverlayStatusPill)); var isOverlayVisible = activationOverlayVisible || shouldShowLayoutLoading; var shouldShowActiveConversationRoot = input.IsSessionActive diff --git a/tests/SalmonEgg.Presentation.Core.Tests/Chat/Overlay/ChatConversationSurfaceStatePresenterTests.cs b/tests/SalmonEgg.Presentation.Core.Tests/Chat/Overlay/ChatConversationSurfaceStatePresenterTests.cs index 7fcbc83a..232594cf 100644 --- a/tests/SalmonEgg.Presentation.Core.Tests/Chat/Overlay/ChatConversationSurfaceStatePresenterTests.cs +++ b/tests/SalmonEgg.Presentation.Core.Tests/Chat/Overlay/ChatConversationSurfaceStatePresenterTests.cs @@ -199,4 +199,31 @@ public void Resolve_WhenShellIntentStartsBeforeSessionIsActive_UsesShellIntentAs Assert.True(state.ShouldShowLoadingOverlayStatusPill); Assert.Equal(ChatViewModel.LoadingOverlayStage.PreparingSession, state.OverlayLoadingStage); } + + [Fact] + public void Resolve_LayoutLoadingState_DoesNotOverrideVisibilityState() + { + var state = ChatConversationSurfaceStatePresenter.Resolve(new ChatConversationSurfaceStateInput( + IsSessionActive: true, + CurrentSessionId: "conv-1", + MessageHistoryCount: 1, + VisibleTranscriptConversationId: "conv-2", + IsChatShellVisibleForRemoteUi: true, + IsConnecting: false, + IsInitializing: false, + IsHydrating: false, + IsLayoutLoading: true, + IsSessionSwitching: false, + SessionSwitchOverlayConversationId: null, + SessionSwitchPreviewConversationId: null, + ConnectionLifecycleOverlayConversationId: null, + HistoryOverlayConversationId: null, + PendingShellActivationConversationId: null, + HydrationLoadedMessageCount: 0)); + + Assert.False(state.IsActivationOverlayVisible); + Assert.True(state.IsOverlayVisible); + Assert.False(state.ShouldShowBlockingLoadingMask); + Assert.False(state.ShouldShowLoadingOverlayPresenter); + } }