Skip to content

chore: Skia Wasm initial a11y support#22736

Open
morning4coffe-dev wants to merge 138 commits intofeature/a11yfrom
002-wasm-a11y-advanced
Open

chore: Skia Wasm initial a11y support#22736
morning4coffe-dev wants to merge 138 commits intofeature/a11yfrom
002-wasm-a11y-advanced

Conversation

@morning4coffe-dev
Copy link
Member

GitHub Issue: closes #

PR Type:

  • ✨ Feature

What is the current behavior? 🤔

What is the new behavior? 🚀

PR Checklist ✅

Please check if your PR fulfills the following requirements:

ajpinedam and others added 30 commits February 11, 2026 01:08
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Library-compiled templates (Release mode) set isHotReloadSupported=false,
so their {ThemeResource} bindings only carry the ThemeResource flag.
UpdateResourceBindingsForHotReload() was passing only HotReload, causing
the filter in DependencyObjectStore to skip all library bindings.

Adding ResourceUpdateReason.ThemeResource to the update reason ensures
library resource bindings are also refreshed during Hot Reload.

Fixes: unoplatform/Uno.Themes#1580
Co-authored-by: MartinZikmund <1075116+MartinZikmund@users.noreply.github.com>
Co-authored-by: MartinZikmund <1075116+MartinZikmund@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Replace MSBuild-based add-in discovery (2x dotnet build, 10-30s) with direct .targets XML parsing from the NuGet cache (~110ms).

- Add TargetsAddInResolver that parses packages.json and buildTransitive/*.targets
- Fix NUGET_PACKAGES="" producing dangerous relative paths in GetNuGetCachePaths
- Add --addins flag to Host to skip MSBuild discovery when paths are pre-resolved
- Forward --addins from controller to child server process
- Resolve add-ins in CLI start and MCP paths before launching the host
- Add --addins-only flag to disco command for pipe-friendly output
- Show add-ins section with discovery method and duration in disco output
- Add 18 unit tests for TargetsAddInResolver
…fixes

- Add DotNetVersionCache to avoid repeated `dotnet --version` subprocess
  calls during startup (disk cache with 24h TTL + global.json sdk.version
  invalidation key)
- Integrate cache into UnoToolsLocator and register in DI
- Add EntryPoint regression tests to lock VS extension reflection-probed
  type names and constructor signatures
- Fix MCP notification name in dev-server.md (tools/list_changed)
- Add missing tools to using-the-uno-mcps.md (uno_app_start, Business tier)
- Add --mcp-wait-tools-list to Antigravity setup guide
- Add antigravity to ClientsWithoutListUpdateSupport in McpProxy
- Create devserver-agent.md and reference it in AGENTS.md
… diagnostics

- Enable tool cache unconditionally in --mcp-app mode for < 1s first list_tools
- Add 30s bounded timeout to list_tools and EnsureRootsInitialized (no more infinite blocking)
- Fix McpClientProxy TCS completion on connection error (prevents permanent deadlock)
- Fix DisposeAsync hang by canceling TCS before awaiting client disposal
- Remove incorrect ResourceUpdatedNotificationParams deserialization for ToolListChanged
- Always invoke toolListChanged callback even with 0 tools to unblock waiters
- Return structured MCP error responses for premature tool calls instead of exceptions
- Add uno_health built-in tool with HealthReport model for startup diagnostics
- Add 17 unit tests covering serialization, timeout patterns, and cache integration
…overy

Add 17 unit tests (addins flag parsing, controller forwarding, NuGet
cache path guard) and 5 PowerShell integration test functions (disco
JSON output, addins-only, cleanup, Host --addins flag, package content).
Upgrade ModelContextProtocol SDK from 0.4.1 to 0.8.0. Add uno://health
MCP resource, HealthReport fields (UnoSdkVersion, DiscoveryDurationMs),
cache invalidation metadata (workspace hash, SDK version), and atomic
cache writes.
- Link AmbientRegistry and CsprojUserGenerator sources into CLI project
- Check AmbientRegistry for existing DevServer before launching
- Write .csproj.user files CLI-side before server launch
- Launch Host directly without --command start (2-process chain)
- Manage long-running server process lifecycle and cleanup
- Call StopMonitoringAsync on MCP proxy shutdown
- Add Phase 1b unit tests for AmbientRegistry and direct launch args
- Document IDEChannel single-connection limitation
- TCS resettable via ResetConnectionAsync (bugs 1+4)
- Monitor loop continues after ServerStarted, raises ServerCrashed (bug 2)
- Notification handler awaits async callback (bug 3)
- Add 11 regression and bug-exposing tests
Extract health reporting into a dedicated HealthService class:
- BuildHealthReport(), BuildHealthToolResponse()
- HealthTool static Tool definition
- HealthResourceUri constant

McpProxy now delegates all health logic to HealthService via DI.
Extract tool caching and list operations into ToolListManager:
- GetCachedTools(), PersistToolCacheIfNeeded(), RefreshCachedToolsFromUpstreamAsync()
- ListToolsWithTimeoutAsync(), FetchToolsFromUpstreamAsync(), AppendBuiltInTools()
- InitializeToolCachePath(), MarkShouldRefresh()

HealthService now uses ToolListManager.CachedToolCount directly.
Pure rename for clarity — McpUpstreamClient better describes its role
as the connection to the upstream DevServer MCP host.
Extract MCP Host building and handler registration into McpStdioServer:
- BuildHost() constructs the stdio MCP server with all 4 handlers
- Lifecycle-specific behavior injected via delegates
- McpProxy now calls BuildHost() then wires callbacks and runs
@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@nventive-devops
Copy link
Contributor

The build 198843 did not find any UI Test snapshots differences.

@unodevops
Copy link
Contributor

⚠️⚠️ The build 198843 has failed on Uno.UI - CI.

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@nventive-devops
Copy link
Contributor

The build 198921 did not find any UI Test snapshots differences.

2 similar comments
@nventive-devops
Copy link
Contributor

The build 198921 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198921 did not find any UI Test snapshots differences.

@unodevops
Copy link
Contributor

⚠️⚠️ The build 198921 has failed on Uno.UI - CI.

@unodevops
Copy link
Contributor

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

@nventive-devops
Copy link
Contributor

The build 198940 did not find any UI Test snapshots differences.

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@nventive-devops
Copy link
Contributor

The build 198940 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198948 did not find any UI Test snapshots differences.

@unodevops
Copy link
Contributor

⚠️⚠️ The build 198948 has failed on Uno.UI - CI.

@unodevops
Copy link
Contributor

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

@unodevops
Copy link
Contributor

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

@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

5 similar comments
@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

@nventive-devops
Copy link
Contributor

The build 198954 did not find any UI Test snapshots differences.

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/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

Projects

None yet

Development

Successfully merging this pull request may close these issues.