Migrate to Avalonia 12 and Plugin SDK v5

Upgrade project to the Avalonia 12 baseline and Plugin SDK v5: centralize Avalonia packages, remove legacy WebView.Avalonia usage (use NativeWebView/WebView2 EnvironmentRequested), and update Fluent/Material icon/package usages. Bump multiple package/project versions to 5.0.0 and Avalonia 12.0.1, update plugin template and README/docs to SDK v5, and add PLUGIN_SDK_V5_MIGRATION.md.

Also fix runtime/behavior bugs: make DataLocationResolver use a fixed bootstrap launcher data path and avoid recursive ResolveDataRoot; add legacy-state handling and extraction in OobeStateService; and update component settings tests to reflect migrated storage (DB/backup) and reset cache for test reloads. Various csproj, tests, and docs updated to reflect the migration and ensure build/test compatibility.
This commit is contained in:
lincube
2026-04-29 10:16:25 +08:00
parent 9fb41378eb
commit 93d6d93815
25 changed files with 197 additions and 156 deletions

View File

@@ -1,14 +1,21 @@
# Checklist
- [ ] `SettingsWindow.ApplyChromeMode()` 不再使用 `ExtendClientAreaChromeHints``SystemDecorations`
- [ ] `ComponentEditorWindow.ApplyChromeMode()` 不再使用 `ExtendClientAreaChromeHints``SystemDecorations`
- [ ] 所有 `.axaml` 文件中的 `SystemDecorations` 已替换为 `WindowDecorations`
- [ ] `MainWindow.ComponentSystem.cs``centerLeft``positions` 变量已正确定义
- [ ] `MainWindow.DesktopPaging.cs``child``_isThreeFingerOrRightDragSwipeActive` 变量已正确定义
- [ ] `App.axaml.cs``BindingPlugins.DataValidators` 代码已移除
- [ ] `DesktopComponentFailureView.cs` 使用 `ClipboardExtensions.SetTextAsync`
- [ ] `MonetColorService.cs` 使用正确的 `Bitmap.CopyPixels` 签名
- [ ] `SettingsWindow.axaml.cs` 使用 `FluentIcons.Avalonia.FluentIcon` 替代 `SymbolIconSource`
- [ ] 所有 `TextBox.Watermark` 已替换为 `PlaceholderText`
- [ ] `dotnet build LanMountainDesktop.slnx -c Debug` 0 errors, 0 warnings过时 API 警告)
- [ ] `dotnet test LanMountainDesktop.slnx -c Debug` 全部通过
- [x] `Directory.Packages.props` contains the Avalonia 12 dependency baseline.
- [x] Main host references `Avalonia.Controls.WebView`.
- [x] Source no longer references `WebView.Avalonia`, `AvaloniaWebView`, or `.UseDesktopWebView()`.
- [x] `BrowserWidget` uses `NativeWebView.Source`, `Navigate`, `Refresh()`, `NavigationStarted`, and `EnvironmentRequested`.
- [x] WebView blanking navigates to `about:blank`.
- [x] Plugin SDK package version is `5.0.0`.
- [x] `PluginSdkInfo.ApiVersion` is `5.0.0`.
- [x] Plugin template package version default is `5.0.0`.
- [x] Plugin template manifest `apiVersion` is `5.0.0`.
- [x] Launcher data location config resolution cannot recurse through `ResolveDataRoot()`.
- [x] `OobeStateServiceTests` pass.
- [x] `dotnet build LanMountainDesktop.slnx -c Debug` has 0 errors.
- [x] `dotnet test LanMountainDesktop.slnx -c Debug` completes without a test host stack overflow.
- [ ] Windows host smoke test completed.
- [ ] Windows Launcher smoke test completed.
- [ ] Settings window FluentAvalonia 3 smoke test completed.
- [ ] Component editor Material smoke test completed.
- [ ] BrowserWidget navigation/refresh/page activation smoke test completed.
- [ ] WebView2 missing-runtime diagnostic smoke test completed.