| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
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:
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.
Sorry, something went wrong.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Claude finished @morning4coffe-dev's task in 6m 20s —— View job Review Complete
SummaryVerdict: fix-first — one blocking hazard and one security concern to address before merge.
Cross-cutting observationsOverall 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:
Other notable findings (details in inline comments):
|
Sorry, something went wrong.
|
Claude finished @morning4coffe-dev's task in 7m 28s —— View job PR Review Complete
Review SummaryVerdict: fix-first — one high-severity locking issue, one CI blocker, and a medium-severity correctness gap to resolve before merge. Issues by severity
Cross-cutting observations (no specific line)
|
Sorry, something went wrong.
There was a problem hiding this comment.
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
private static void SetExplicitBadge(string value)
src/Uno.UWP/UI/Notifications/BadgeUpdater.cs:16
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;
Sorry, something went wrong.
There was a problem hiding this comment.
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
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
Sorry, something went wrong.
|
🤖 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 |
Sorry, something went wrong.
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html |
Sorry, something went wrong.
|
The build 230042 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11 Details
|
Sorry, something went wrong.
|
Claude encountered an error after 18s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html |
Sorry, something went wrong.
|
🤖 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 |
Sorry, something went wrong.
|
Claude encountered an error after 18s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 28s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 23s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 13s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 22s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
🤖 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 |
Sorry, something went wrong.
|
🤖 Your Docs stage site is ready! Visit it here: https://unodocsprstaging.z13.web.core.windows.net/pr-23756/docs/index.html |
Sorry, something went wrong.
|
The build 230125 found UI Test snapshots differences: skia-linux-screenshots: 57, skia-windows-screenshots: 2348, wasm: 11 Details
|
Sorry, something went wrong.
|
Claude encountered an error after 21s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
CI note: the red review check is the Claude Code Review action failing on large diffsEvery 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:
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:
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. |
Sorry, something went wrong.
|
Claude encountered an error after 22s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 20s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
|
Claude encountered an error after 25s —— View job I'll analyze this and get back to you. |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
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:
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:
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
PR Checklist ✅