FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

feat(shell): implement AppTaskInfo across platforms by morning4coffe-dev · Pull Request #23756 · unoplatform/uno · GitHub

feat(shell): implement AppTaskInfo across platforms - #23756

Open
morning4coffe-dev wants to merge 11 commits into
masterfrom
dev/doti/apptaskinfo
Open

feat(shell): implement AppTaskInfo across platforms#23756
morning4coffe-dev wants to merge 11 commits into
masterfrom
dev/doti/apptaskinfo

Conversation

morning4coffe-dev commented Jul 14, 2026
edited
Loading

Copy link
Copy Markdown
Member

GitHub Issue: closes #23752

PR Type:

✨ Feature

What changed? 🚀

This implements the Windows.UI.Shell.Tasks AppTaskInfo contract across Uno targets. Task identity, state, content, deep links, and generated assets are persisted in the application's local data and restored across app restarts.

Each platform maps tasks to its nearest native shell surface:

  • Skia on Windows uses taskbar progress.
  • Android and X11 use notifications.
  • iOS, Mac Catalyst, WebAssembly, and macOS use app or Dock badges.
  • Native Windows continues to use the Windows SDK feature when it is available.

Contract fidelity

Microsoft.Windows.SDK.NET.Ref does not project these experimental types, so the contract was established by calling the Windows.UI.Shell.Tasks activation factories directly on Windows 11 26200.9106 (IAppTaskInfoStatics, IAppTaskContentStatics, IAppTaskInfo, IAppTaskInfo2, IAppTaskResultAssetFactory) and matching every observed result:

  • AppTaskContent.MaxButtons is 2; exceeding it, a relative URI, or a null URI all produce E_INVALIDARG, projected as ArgumentException.
  • SetTextInput does not validate the template and is single-use.
  • CreateSequenceOfSteps requires a non-empty executingStep, accepts a null array, and projects null entries as empty strings; CreateGeneratedAssetsResult is the inverse — it rejects null/empty arrays but accepts null entries.
  • CreateTextSummaryResult rejects an empty string; Create accepts an empty title and subtitle.
  • Create accepts content: null, and the resulting task's GetCompletedSteps/GetExecutingStep fail with E_INVALIDARG; Update rejects content: null and leaves the task untouched.
  • NeedsAttention requires content carrying a non-empty question; otherwise the transition is rejected and the stored task is unchanged.
  • Values outside AppTaskState are accepted and kept on the handle, and the task is permanently dropped from FindAll.
  • EndTime tracks the current state, and Id is a braced GUID.

The two previously documented deviations (null content and out-of-range AppTaskState) are gone. The only differences left are the two cases where Windows has no defined result — a null Uri terminates the process with an access violation, and a remote CreatePreviewThumbnail URI returns E_POINTER (projected as NullReferenceException) — plus PlatformNotSupportedException on the reference assembly, which has no local storage. All three are documented with their evidence.

The change also adds automated contract and lifecycle coverage, an updated SamplesApp page, and user documentation. Explicit badges set through BadgeUpdater take precedence over the automatic app-task badge count, and the none badge glyph clears the override instead of suppressing it.

Validation

  • All 27 focused AppTaskInfo unit tests pass (Uno.UI.UnitTests, net10.0).
  • The Skia Desktop runtime test Given_AppTaskInfo.When_Task_Is_Managed_In_A_Running_App passes against the Win32 presenter.
  • Analyzer-enabled builds succeed for Uno.UI.UnitTests, Uno.UI.Runtime.Skia.Win32, Uno.UI.Runtime.Skia.X11, Uno.UI.Runtime.Skia.MacOS, Uno.netcoremobile (net10.0-android), Uno.Wasm, and SamplesApp.Skia.Generic (Release).
  • The new documentation renders successfully.

PR Checklist ✅

Copilot AI lite review requested due to automatic review settings July 14, 2026 08:31
github-actions Bot added platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform area/automation Categorizes an issue or PR as relevant to project automation labels Jul 14, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Adds an initial Windows.UI.Shell.Tasks surface (AppTaskInfo, task state, and task content models) and wires it into Skia desktop hosts via ApiExtensibility, with platform-specific shell integration for Win32 (taskbar progress) and macOS (Dock badge), plus a manual SamplesApp page to exercise the lifecycle.

Changes:

  • Introduces Windows.UI.Shell.Tasks API surface for creating/updating/removing app tasks and modeling task content.
  • Adds Win32 + macOS Skia desktop extensions and registers them in their respective hosts.
  • Adds a manual SamplesApp test page for exercising the new API and observing OS shell feedback.

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/Uno.UWP/UI/Shell/Tasks/IAppTaskInfoExtension.cs Defines the platform extension contract used by ApiExtensibility to integrate with taskbar/dock.
src/Uno.UWP/UI/Shell/Tasks/AppTaskState.cs Adds task state enum used by task instances and platform integrations.
src/Uno.UWP/UI/Shell/Tasks/AppTaskResultAsset.cs Adds model for “generated assets” content variant.
src/Uno.UWP/UI/Shell/Tasks/AppTaskInfo.cs Implements the core AppTaskInfo API (create/update/find/remove) and extension dispatch.
src/Uno.UWP/UI/Shell/Tasks/AppTaskContentKind.cs Adds internal discriminant for AppTaskContent variants.
src/Uno.UWP/UI/Shell/Tasks/AppTaskContent.cs Implements task content builder APIs (steps/preview/text/assets + buttons/question/input).
src/Uno.UI.Runtime.Skia.Win32/UI/Shell/Tasks/Win32AppTaskInfoExtension.cs Win32 implementation tracking tasks in-memory and mapping state to taskbar progress.
src/Uno.UI.Runtime.Skia.Win32/Native/TaskBarList.cs Adds helpers to set taskbar progress state/value via ITaskbarList3.
src/Uno.UI.Runtime.Skia.Win32/Hosting/Win32Host.cs Registers the Win32 IAppTaskInfoExtension implementation at host startup.
src/Uno.UI.Runtime.Skia.MacOS/UI/Shell/Tasks/MacOSAppTaskInfoExtension.cs macOS implementation tracking tasks in-memory and updating Dock badge.
src/Uno.UI.Runtime.Skia.MacOS/Hosting/MacSkiaHost.cs Registers the macOS IAppTaskInfoExtension implementation at host startup.
src/SamplesApp/UITests.Shared/Windows_UI_Shell/AppTaskInfoTests.xaml.cs Manual sample logic exercising task creation, updates, states, and content variants.
src/SamplesApp/UITests.Shared/Windows_UI_Shell/AppTaskInfoTests.xaml Manual sample UI for interacting with tasks and viewing current state/log.
src/SamplesApp/UITests.Shared/UITests.Shared.projitems Includes the new manual sample XAML + code-behind in the shared project items.

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

morning4coffe-dev and others added 2 commits July 30, 2026 18:20
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
morning4coffe-dev changed the title feat(shell): Implement AppTaskInfo on desktop feat(shell): implement AppTaskInfo across platforms Aug 1, 2026
morning4coffe-dev marked this pull request as ready for review August 1, 2026 08:56
Copilot AI review requested due to automatic review settings August 1, 2026 08:56
github-actions Bot added platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform area/skia ✏️ Categorizes an issue or PR as relevant to Skia area/build Categorizes an issue or PR as relevant to build infrastructure kind/documentation platform/x11 🐧 Categorizes an issue or PR as relevant to X11 labels Aug 1, 2026

github-actions Bot commented Aug 1, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @morning4coffe-dev's task in 6m 20s —— View job


Review Complete

  • Gather context and understand the request
  • Read core API surface (AppTaskInfo.cs, IAppTaskInfoExtension.cs, AppTaskContent.cs)
  • Read platform implementations (Win32, macOS, X11, Android, UIKit, WASM)
  • Read tests (Given_AppTaskInfo.cs unit & runtime)
  • Read registry/serializer/store (AppTaskInfoRegistry.cs, AppTaskInfoSerializer.cs, AppTaskInfoStore.cs)
  • Post inline review comments
  • Update summary comment

Summary

Verdict: fix-first — one blocking hazard and one security concern to address before merge.

Severity Count Files
High 2 AppTaskInfoStore.cs, AppTaskInfoPlatform.Android.cs
Medium 3 IAppTaskInfoExtension.cs, X11AppTaskInfoExtension.cs, AppTaskInfoTests.xaml.cs
Low 3 AppTaskInfoRegistry.cs (×2), AppTaskInfoSerializer.cs

Cross-cutting observations

Overall quality is high. The registry rollback pattern (rollback _tasks mutation on persist failure), the ??=-based lazy extension discovery (which correctly retries until the host registers), the lock-revision queue in AppTaskInfoExtensionBase, and the JSON source-generated serializer are all solid. Test coverage across the unit, runtime, and concurrent paths is thorough.

Two issues need attention before merge:

  1. UI-thread blocking hazard (AppTaskInfoStore.cs:92–99): AcquireLock() spins with Thread.Sleep(25) for up to 5 seconds while lock(Gate) is held. Every registry mutation (Create, Update, Remove) acquires Gate first, so a file-lock contention from a second process freezes the calling thread — which in the sample and typical app code is the UI thread. The fix is to acquire the file lock before entering lock(Gate).

  2. Android text-input security (AppTaskInfoPlatform.Android.cs:158): The PendingIntent for AppTaskTextInputReceiver is correctly marked Mutable (required by Android's RemoteInput API), but this means the ExtraUriTemplate extra in the broadcast intent can be tampered with. OnReceive uses the template without re-validating it. Add the same Contains("{userTextInput}") && Uri.TryCreate(...) check inside OnReceive before substituting user input into the URI.

Other notable findings (details in inline comments):

  • ProcessQueueAsync fire-and-forget discards the Task, losing shutdown-drain capability and any future unhandled exceptions.
  • X11 creates a new D-Bus connection on every sync — a persistent connection would be more efficient.
  • async void OnLoaded in the sample has no top-level try-catch; an exception after any await crashes the app silently.
  • UserTextInputPlaceholder is duplicated across AppTaskContent.cs and AppTaskInfoSerializer.cs.
  • FindAll() returns new wrapper instances per call with no Equals override, which can surprise callers comparing handles.

github-actions Bot commented Aug 1, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude finished @morning4coffe-dev's task in 7m 28s —— View job


PR Review Complete

  • Gather context and understand request
  • Review core API surface (AppTaskInfo.cs, IAppTaskInfoExtension.cs, AppTaskContent.cs)
  • Review persistence layer (AppTaskInfoRegistry.cs, AppTaskInfoStore.cs, AppTaskInfoSerializer.cs)
  • Review platform implementations (Win32, macOS, X11, Android, UIKit, WASM)
  • Review tests (unit tests, runtime tests)
  • Review SamplesApp page and documentation
  • Post inline comments
  • Post review summary

Review Summary

Verdict: fix-first — one high-severity locking issue, one CI blocker, and a medium-severity correctness gap to resolve before merge.

Issues by severity

# Severity File Finding
1 🔴 High AppTaskInfoStore.cs:101 Thread.Sleep runs while the caller holds the Gate lock — all registry operations in-process are blocked for up to 5 s when the cross-process file lock is contended
2 🟡 Medium X11AppTaskInfoExtension.cs:69 A new D-Bus connection is opened and torn down on every OnSynchronizeAsync call; costly for rapid step-by-step updates
3 🟡 Medium AppTaskInfoSnapshot.cs:21 AppTaskContentSnapshot is a record with string[] / AppTaskResultAssetSnapshot[] / AppTaskButtonSnapshot[] fields — record == compares arrays by reference, silently producing wrong results for any future equality-based logic
4 🟠 CI-blocker AppTaskInfoTests.xaml:16 XamlStyler "one attribute per line" rule violated on many elements — xaml-style-check.yml will fail; run dotnet xstyler -d src/SamplesApp -r
5 🔵 Low AppTaskInfoSerializer.cs:17 "{userTextInput}" is duplicated as an independent constant in three files (AppTaskContent.cs, AppTaskInfoSerializer.cs, AppTaskInfoPlatform.Android.cs)
6 🔵 Low AppTaskInfoStore.cs:82 Quarantine files accumulate without a size bound; repeated corruption events fill LocalFolder/UnoPlatform/ShellTasks/ indefinitely

Cross-cutting observations (no specific line)

  • Architecture & platform targeting are correct. The ApiExtensibility pattern for Skia, per-suffix files for Android/UIKit/WASM, and OperatingSystem.* runtime guards are all used appropriately. The queue-based AppTaskInfoExtensionBase cleanly decouples the registry from slow async presenters.
  • Persistence design is sound. Atomic temp-file-then-move, cross-process file locking, version checking, and quarantine-on-corruption are all good. The source-generated JsonSerializerContext is correct.
  • Tests are thorough. The unit-test suite covers concurrency, persistence round-trips, rollback on write failure, tamper detection, and the badge-precedence invariant. The runtime tests cover the live-app lifecycle.
  • [Experimental] / CS8305 suppression is appropriate for an API still in stabilization.
  • The async void OnLoaded in the SamplesApp code-behind is acceptable for a UI event handler but should at minimum have a top-level try/catch to prevent unhandled exceptions from being swallowed silently in the sample.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 43 out of 44 changed files in this pull request and generated 1 comment.

Suppressed comments (2)

src/Uno.UWP/UI/Notifications/BadgeUpdater.cs:50

  • SetExplicitBadge is called with a nullable value (Clear() passes null and GetAttribute(...) can be null). The parameter should be string? to match the call sites and nullable flow.
		private static void SetExplicitBadge(string value)

src/Uno.UWP/UI/Notifications/BadgeUpdater.cs:16

  • These static fields are declared non-nullable but are intentionally used as nullable (assigned null and checked via ??= / ??). Mark them nullable (or initialize them) to avoid nullable warnings and reflect the actual state machine.

This issue also appears on line 50 of the same file.

		private static readonly object BadgeGate = new();
		private static BadgeUpdater _coordinatorUpdater;
		private static string _explicitBadge;
		private static string _appTaskBadge;

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 43 out of 44 changed files in this pull request and generated 1 comment.

Suppressed comments (1)

src/Uno.UWP/UI/Notifications/BadgeUpdater.cs:57

  • SetExplicitBadge applies the platform badge backend while holding BadgeGate (via ApplyEffectiveBadgeLocked()), which can unnecessarily serialize badge updates and can deadlock if any backend path re-enters badge APIs. Compute the effective badge value under the lock, then call SetBadge after releasing the lock.
		private static void SetExplicitBadge(string? value)
		{
			lock (BadgeGate)
			{
				// The "none" glyph is how a badge notification asks for the badge to be removed, so it

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23756/wasm-skia-net9/index.html

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html

Copy link
Copy Markdown
Contributor

The build 230042 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11

Details
  • skia-linux-screenshots: 57 changed over 2348

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ClipboardTests.png-dark
    • CalendarView_Theming.png-dark
    • CalendarView_Theming.png
    • ElementLevelTheme.png-dark
    • ElementLevelTheme.png
    • Buttons.png-dark
    • Buttons.png
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • Gamepad_Enumeration.png
    • Image_AnimatedWebP.png-dark
    • Image_AnimatedWebP.png
    • DisplayInformation.png-dark
  • skia-windows-screenshots: 2348 changed over 2398

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AppBarButtonTest.png
    • AppWindowPositionAndSize.png-dark
    • AppXamlDefinedResources.png-dark
    • AutoBorderStretchwithbottommargin.png
    • AutoSuggestBox_BitmapIcon.png
    • BasicEnability.png-dark
    • BenchmarkDotNet.png-dark
    • BitmapImage_vs_SvgImageSource.png-dark
    • BorderRightwithmargins.png
    • BorderTopwithmargins.png-dark
    • Border_CornerRadius_Binding.png-dark
    • Border_CornerRadius_Binding.png
    • Border_LinearGradientBrush.png-dark
    • Border_LinearGradientBrush.png
    • ButtonClippingTestsControl.png
    • Buttons.png-dark
    • Capture with overlap.png-dark
    • Capture with overlap.png
    • Clipping652.png-dark
    • Clipping652.png
  • wasm: 11 changed over 1076

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • UITests.Windows_UI_Xaml_Media_Animation.ColorAnimation_Background
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • UITests.Windows_UI_Xaml_Controls.CalendarView.CalendarView_Theming
    • UITests.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_NavigationProperties
    • SamplesApp.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_EnableDevTools
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPage
    • UITests.Uno_Web.Http.CookieManagerTests
    • Uno.UI.Samples.Content.UITests.WebView.WebView_AnchorNavigation
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected

Copilot AI review requested due to automatic review settings August 25, 2026 13:09

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 18s —— View job


I'll analyze this and get back to you.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 43 out of 44 changed files in this pull request and generated no new comments.

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23756/wasm-skia-net9/index.html

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 18s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 28s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 23s —— View job


I'll analyze this and get back to you.

Copilot AI review requested due to automatic review settings August 25, 2026 14:07

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 13s —— View job


I'll analyze this and get back to you.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Choose a reason Spam Abuse Off Topic Outdated Duplicate Resolved Low Quality

Pull request overview

Copilot reviewed 43 out of 44 changed files in this pull request and generated no new comments.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 22s —— View job


I'll analyze this and get back to you.

Copy link
Copy Markdown
Contributor

🤖 Your WebAssembly Skia Sample App stage site is ready! Visit it here: https://unowasmprstaging.z20.web.core.windows.net/pr-23756/wasm-skia-net9/index.html

Copy link
Copy Markdown
Contributor

🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html

Copy link
Copy Markdown
Contributor

The build 230125 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11

Details
  • skia-linux-screenshots: 57 changed over 2348

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • ClipboardTests.png-dark
    • DisplayInformation.png-dark
    • Gamepad_CurrentReading.png-dark
    • Gamepad_CurrentReading.png
    • Gamepad_Enumeration.png-dark
    • Gamepad_Enumeration.png
    • ContextRequested.png-dark
    • ContextRequested.png
    • ImageIconPage.png-dark
    • Focus_FocusVisual_Properties.png-dark
    • Examples.png-dark
    • Examples.png
    • ExpanderColorValidationPage.png-dark
    • ExpanderColorValidationPage.png
    • Buttons.png-dark
    • Buttons.png
    • DropDownButtonPage.png-dark
    • DropDownButtonPage.png
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
  • skia-windows-screenshots: 2348 changed over 2398

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • AppBarButtonWithIconTest.png
    • AppWindowTitleBar Properties.png-dark
    • Arrange_Performance01.png
    • AuthenticationBroker_Demo.png
    • AutomationPropertiesExtensions_Role.png
    • AutoSuggestBox_Icons.png
    • Basics.png
    • BindableDrawerLayout_ChangePane.png
    • BorderCenteredwithmargins.png-dark
    • BorderCenteredwithmargins.png
    • BorderWithNullBrushAndNonZeroThickness.png
    • Border_AntiAlias.png-dark
    • Border_Simple_with_non_Uniform_Thickness.png-dark
    • Border_Simple_with_non_Uniform_Thickness.png
    • ButtonClippingTestsControl.png-dark
    • ButtonClippingTestsControl.png
    • CameraCaptureUISample.png-dark
    • CameraCaptureUISample.png
    • CheckBox_Button_UWA_Style.png-dark
    • CheckBox_Button_UWA_Style.png
  • wasm: 11 changed over 1076

    🚨🚨 Comparison Details (first 20) 🚨🚨
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Ogg_Extension
    • SamplesApp.Windows_UI_Xaml_Controls.ListView.ListViewSelectedItems
    • UITests.Uno_Web.Http.CookieManagerTests
    • UITests.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_NavigationProperties
    • UITests.Windows_UI_Xaml_Media_Animation.ColorAnimation_Background
    • UITests.Shared.Microsoft_UI_Xaml_Controls.ExpanderTests.WinUIExpanderPage
    • SamplesApp.Wasm.Windows_UI_Xaml_Controls.ListView.ListView_IsSelected
    • UITests.Shared.Windows_UI_Xaml_Controls.MediaPlayerElement.MediaPlayerElement_Minimal
    • Uno.UI.Samples.Content.UITests.WebView.WebView_AnchorNavigation
    • SamplesApp.Microsoft_UI_Xaml_Controls.WebView2Tests.WebView2_EnableDevTools
    • UITests.Windows_UI_Xaml_Controls.CalendarView.CalendarView_Theming

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 21s —— View job


I'll analyze this and get back to you.

morning4coffe-dev commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Member Author

CI note: the red review check is the Claude Code Review action failing on large diffs

Every Uno CI check on this PR is green — 71 pass, 0 fail, 1 skipping (Mergify queue): Uno.UI - CI build 230125, docs 230126. All 50 review threads are resolved.

The only red item is the review job (hosted Claude Code Review action). It fails before the agent runs: the job log contains a system/init record immediately followed by the result record, with zero assistant or tool output in between, and the action surfaces no diagnostic.

{ "type": "result", "subtype": "success", "is_error": true,
  "duration_ms": 25371, "num_turns": 2,
  "total_cost_usd": 0.77152055, "permission_denials_count": 0 }

Correction to my earlier note on this comment: I originally read this as a transient repo-wide outage. Overnight the pattern settled into a stable split that correlates with PR size, not with time:

Branch review today files additions
feature/breakingchanges (#23471) fail ×3 13799 +94669
005-mobile-a11y-automation (#23935) fail 96 +23043
dev/mazi/autosuggestbox-winui-port (#22432) fail ×3 20 +6110
this PR (#23756) fail 44 +4293
dev/mazi/keyboardinjection (#23970) success ×2 14 +1282
dev/mazi/dead-conditional-branches (#24089) success ×5 97 +170

Every failing PR is above ~4k added lines and every passing one below ~1.3k. This PR is the smallest failing one, i.e. just past the boundary — consistent with its own history: review passed on a715fc5, e75e28d and ccfe5179, and has failed on every attempt since 8e89350 pushed the diff over the line. The constant total_cost_usd of ~$0.77 at num_turns: 2 on every failing run is the signature of one oversized prompt erroring out rather than a flaky service.

.github/workflows/claude-code-review.yml (action pinned to v1.0.194, --model claude-sonnet-4-6, timeout-minutes: 20) has not changed since 2026-08-20, so no configuration change is involved, and the ~1 minute duration rules out the timeout.

Two earlier CI failures on this PR were genuine flakes and both passed on re-run of the identical commit:

  • Tests - WinAppSDK Runtime Tests — Given_InputInjector.When_MouseMove_PointerEventsAreRaised, an OS-level mouse-injection test. Nothing in this PR reaches that head: SamplesApp.Windows.csproj has no reference to Uno.UWP, and the AppTaskInfo runtime tests are #if HAS_UNO-guarded.
  • Tests - iOS Skia Runtime Tests 2 — passed on the pipeline's automatic re-run.

I have not changed any workflow, test or product code to work around this. The active Copilot ruleset declares no required status checks, so this job does not gate the merge; mergeStateStatus: BLOCKED reflects only the outstanding approval.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 22s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 25, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 20s —— View job


I'll analyze this and get back to you.

github-actions Bot commented Aug 26, 2026
edited
Loading

Copy link
Copy Markdown
Contributor

Claude encountered an error after 25s —— View job


I'll analyze this and get back to you.

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

Labels

area/automation Categorizes an issue or PR as relevant to project automation area/build Categorizes an issue or PR as relevant to build infrastructure area/skia ✏️ Categorizes an issue or PR as relevant to Skia kind/documentation platform/android 🤖 Categorizes an issue or PR as relevant to the Android platform platform/ios 🍎 Categorizes an issue or PR as relevant to the iOS platform platform/macos 🍏 Categorizes an issue or PR as relevant to the macOS platform platform/wasm 🌐 Categorizes an issue or PR as relevant to the WebAssembly platform platform/x11 🐧 Categorizes an issue or PR as relevant to X11

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement AppTaskInfo for Skia desktop

4 participants


Back | FazBrowse Home | New Git URL