Files
DorkNet/launcher/DorkNet.Launcher.csproj
T
Alexa de98ea694f launcher: side-by-side versions.json fallback + empty-state UX
The version dropdown sat silently empty when the GitHub manifest
fetch 404'd (private repo, network down, etc.) and there was no
DORKNET_LOCAL_MANIFEST to fall back to. Two fixes:

- csproj copies the repo-root versions.json next to dorknet.exe on
  build, and LocalOverrides.GetLocalManifestPath checks that path
  as a fallback after the env var. Dev checkouts against a private
  repo now Just Work — no env vars needed.
- When the manifest can't be loaded, RefreshManifestAsync now
  inserts a disabled placeholder "(no versions - check internet or
  set DORKNET_LOCAL_MANIFEST)" in the dropdown so the user sees the
  problem at a glance instead of a silent blank.
- LocalOverrides.DescribeManifestSource shows in Settings whether
  the active manifest came from the env var, the side-by-side
  fallback, or the live GitHub fetch.
2026-05-27 12:05:21 +03:00

44 lines
1.8 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net9.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<RootNamespace>DorkNet.Launcher</RootNamespace>
<AssemblyName>dorknet</AssemblyName>
<ApplicationManifest>app.manifest</ApplicationManifest>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<EnableCompressionInSingleFile>true</EnableCompressionInSingleFile>
</PropertyGroup>
<!-- WPF is built into the .NET 9 Windows SDK; no NuGet package needed.
The Backend/* classes (release downloader, server process, etc.) are
UI-framework-agnostic and stay unchanged from the PhotinoNET draft. -->
<ItemGroup>
<!-- QR rendering for the share panel — generates the code as raw
module bytes, MainWindow draws it onto a WPF Image. No System.Drawing
dependency that way, so it stays portable. -->
<PackageReference Include="QRCoder" Version="1.6.0" />
</ItemGroup>
<!-- Dev convenience: copy the repo-root versions.json next to dorknet.exe
on build, so a dev checkout works against the private repo without
needing DORKNET_LOCAL_MANIFEST set. LocalOverrides picks this up as
a side-by-side fallback. The file is harmless to ship in release
builds too — VersionsManifest still prefers the live GitHub fetch
when reachable. -->
<ItemGroup>
<None Include="..\versions.json" Condition="Exists('..\versions.json')">
<Link>versions.json</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>