2026-04-21 20:59:52 +08:00
|
|
|
|
<Project Sdk="Microsoft.NET.Sdk" TreatAsLocalProperty="Version;PackageVersion;InformationalVersion;AssemblyVersion;FileVersion">
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 导入 AOT 配置 -->
|
|
|
|
|
|
<Import Project="LanMountainDesktop.Launcher.AOT.props" Condition="Exists('LanMountainDesktop.Launcher.AOT.props')" />
|
|
|
|
|
|
|
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
|
<OutputType>WinExe</OutputType>
|
|
|
|
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
|
|
|
|
<Nullable>enable</Nullable>
|
|
|
|
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
2026-04-23 00:27:01 +08:00
|
|
|
|
<Version>0.0.0-dev</Version>
|
2026-04-21 20:59:52 +08:00
|
|
|
|
<PackageVersion>$(Version)</PackageVersion>
|
|
|
|
|
|
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
|
|
|
|
|
|
<!-- 应用程序图标 -->
|
|
|
|
|
|
<ApplicationIcon>Assets\logo.ico</ApplicationIcon>
|
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
|
|
|
|
|
|
|
<ItemGroup>
|
|
|
|
|
|
<!-- 只引用 Shared.Contracts(IPC 协议) -->
|
|
|
|
|
|
<ProjectReference Include="..\LanMountainDesktop.Shared.Contracts\LanMountainDesktop.Shared.Contracts.csproj" />
|
2026-05-28 10:43:30 +08:00
|
|
|
|
<ProjectReference Include="..\LanMountainDesktop.PluginPackaging\LanMountainDesktop.PluginPackaging.csproj" />
|
2026-04-22 14:55:30 +08:00
|
|
|
|
<ProjectReference Include="..\LanMountainDesktop.Shared.IPC\LanMountainDesktop.Shared.IPC.csproj" />
|
2026-04-21 20:59:52 +08:00
|
|
|
|
</ItemGroup>
|
|
|
|
|
|
|
|
|
|
|
|
<ItemGroup>
|
Avalonia12 (#7)
* ava12升级
* Enable centralized package versioning
Add <Project> and <PropertyGroup> with <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> to Directory.Packages.props to enable centralized package version management across the repository. This allows package versions to be controlled from this single file instead of individual project files.
* Migrate codebase to Avalonia 12 APIs
Apply Avalonia 12 migration changes: replace SystemDecorations with WindowDecorations and remove ExtendClientAreaChromeHints/ExtendClientAreaTitleBarHeightHint usages; update BindingPlugins removal logic (no-op); switch clipboard usage to ClipboardExtensions.SetTextAsync; update Bitmap.CopyPixels calls to the new signature. Replace TextBox.Watermark with PlaceholderText, convert NumberBox styles to FANumberBox and adjust templates, change Checked/Unchecked handlers to IsCheckedChanged, and adapt FluentIcons usages (SymbolIconSource -> FASymbol/FAFont/FluentIcon equivalents). Fix MainWindow partial classes to inherit Window and correct missing variables/fields/usings. Add migration docs/specs/tasks under .trae and include a small TestFluentIcons project for icon testing.
* 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.
* Update icon glyphs and symbol mappings
Replace and refine icon sources across settings pages and controls: many FAFontIconSource glyphs were updated to specific Seagull Fluent Icons codepoints, some FASymbolIconSource usages were replaced with FAFontIconSource, and a number of symbol-to-Symbol enum mappings were adjusted (e.g. "Bell" -> AlertOn, "Shield" -> ShieldLock). Also clarified a comment in SettingsWindow and fixed a trailing newline in StudySettingsPage. Changes standardize icon visuals and bridge FluentIcons glyphs into FluentAvalonia icon sources.
* fix.修复合并产生的问题。
2026-04-29 12:14:29 +08:00
|
|
|
|
<PackageReference Include="Avalonia" />
|
|
|
|
|
|
<PackageReference Include="Avalonia.Desktop" />
|
|
|
|
|
|
<PackageReference Include="FluentAvaloniaUI" />
|
|
|
|
|
|
<PackageReference Include="FluentIcons.Avalonia" />
|
|
|
|
|
|
<PackageReference Include="Avalonia.Fonts.Inter" />
|
|
|
|
|
|
<PackageReference Include="ClassIsland.Markdown.Avalonia" />
|
|
|
|
|
|
<PackageReference Include="CommunityToolkit.Mvvm" />
|
2026-05-28 11:13:14 +08:00
|
|
|
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
|
Avalonia12 (#7)
* ava12升级
* Enable centralized package versioning
Add <Project> and <PropertyGroup> with <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> to Directory.Packages.props to enable centralized package version management across the repository. This allows package versions to be controlled from this single file instead of individual project files.
* Migrate codebase to Avalonia 12 APIs
Apply Avalonia 12 migration changes: replace SystemDecorations with WindowDecorations and remove ExtendClientAreaChromeHints/ExtendClientAreaTitleBarHeightHint usages; update BindingPlugins removal logic (no-op); switch clipboard usage to ClipboardExtensions.SetTextAsync; update Bitmap.CopyPixels calls to the new signature. Replace TextBox.Watermark with PlaceholderText, convert NumberBox styles to FANumberBox and adjust templates, change Checked/Unchecked handlers to IsCheckedChanged, and adapt FluentIcons usages (SymbolIconSource -> FASymbol/FAFont/FluentIcon equivalents). Fix MainWindow partial classes to inherit Window and correct missing variables/fields/usings. Add migration docs/specs/tasks under .trae and include a small TestFluentIcons project for icon testing.
* 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.
* Update icon glyphs and symbol mappings
Replace and refine icon sources across settings pages and controls: many FAFontIconSource glyphs were updated to specific Seagull Fluent Icons codepoints, some FASymbolIconSource usages were replaced with FAFontIconSource, and a number of symbol-to-Symbol enum mappings were adjusted (e.g. "Bell" -> AlertOn, "Shield" -> ShieldLock). Also clarified a comment in SettingsWindow and fixed a trailing newline in StudySettingsPage. Changes standardize icon visuals and bridge FluentIcons glyphs into FluentAvalonia icon sources.
* fix.修复合并产生的问题。
2026-04-29 12:14:29 +08:00
|
|
|
|
<PackageReference Include="Tmds.DBus.Protocol" />
|
2026-04-21 20:59:52 +08:00
|
|
|
|
</ItemGroup>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 资源文件 -->
|
|
|
|
|
|
<ItemGroup>
|
|
|
|
|
|
<!-- 公钥文件 -->
|
|
|
|
|
|
<None Include="Assets\public-key.pem" CopyToOutputDirectory="PreserveNewest" />
|
|
|
|
|
|
<!-- Avalonia 资源文件 -->
|
|
|
|
|
|
<AvaloniaResource Include="Assets\logo.ico" />
|
Add startup visual modes and attempt registry
Implement startup visual behavior, de-duplicate startup attempts, and improve failure UX.
Key changes:
- Add spec and docs for startup visuals and timing contract (.trae/specs and docs/LAUNCHER_STARTUP_VISUALS.md).
- Introduce StartupVisualPreferences contract and resolver; create SplashWindow via resolved mode.
- Add StartupAttemptRecord model and a file-backed StartupAttemptRegistry to persist and coordinate in-progress startup attempts (attach/adopt, soft/hard timeouts, IPC/connect state, lifecycle updates).
- Update LauncherFlowCoordinator to: adopt/attach to existing attempts, track IPC connection and soft/hard timeouts (30s/120s), show delayed UI state, attempt foreground recovery via public IPC, compose detailed launch result metadata, and mark registry states (soft timeout, detached waiting, succeeded, failed).
- Add TryActivateExistingInstanceAsync to attempt activating an existing desktop via IPC.
- Change failure flow: ShowFailureWindowAsync now returns user choice; ErrorWindow updated to present Activate/Wait/Open Logs/Exit semantics and new layouts/styles; improved button wiring and debug/dev mode handling.
- Add UI and resource tweaks (ErrorWindow and SplashWindow changes), project asset link for nightly logo, and unit tests for StartupVisualPreferences.
These changes prevent duplicate desktop processes during slow startups, provide clearer UX for delayed startups, and persist startup attempt state across Launcher invocations for safer recovery/attach behavior.
2026-04-23 09:03:35 +08:00
|
|
|
|
<AvaloniaResource Include="..\LanMountainDesktop\Assets\logo_nightly.png" Link="Assets\logo_nightly.png" />
|
2026-04-21 20:59:52 +08:00
|
|
|
|
</ItemGroup>
|
|
|
|
|
|
|
|
|
|
|
|
<Target Name="CopyPublicKeyToLauncherDir" AfterTargets="Build">
|
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
|
<PublicKeySource>$(MSBuildProjectDirectory)\Assets\public-key.pem</PublicKeySource>
|
|
|
|
|
|
<PublicKeyDestDir>$(OutDir).launcher\update</PublicKeyDestDir>
|
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
|
<MakeDir Directories="$(PublicKeyDestDir)" />
|
|
|
|
|
|
<Copy SourceFiles="$(PublicKeySource)" DestinationFolder="$(PublicKeyDestDir)" SkipUnchangedFiles="true" />
|
|
|
|
|
|
</Target>
|
|
|
|
|
|
|
|
|
|
|
|
<Target Name="CopyPublicKeyToPublishDir" AfterTargets="Publish">
|
|
|
|
|
|
<PropertyGroup>
|
|
|
|
|
|
<PublishedKeySource>$(MSBuildProjectDirectory)\Assets\public-key.pem</PublishedKeySource>
|
|
|
|
|
|
<PublishedKeyDestDir>$(PublishDir).launcher\update</PublishedKeyDestDir>
|
|
|
|
|
|
</PropertyGroup>
|
|
|
|
|
|
<MakeDir Directories="$(PublishedKeyDestDir)" />
|
|
|
|
|
|
<Copy SourceFiles="$(PublishedKeySource)" DestinationFolder="$(PublishedKeyDestDir)" SkipUnchangedFiles="true" />
|
|
|
|
|
|
</Target>
|
|
|
|
|
|
|
|
|
|
|
|
</Project>
|