Files
enricobuehler 6694be9848
CI / exporter (push) Failing after 24s
CI / build (push) Failing after 25s
CI / publish (push) Has been skipped
feat: Playnite library sync plugin + exporter
A two-part Punktfunk plugin that syncs the Playnite library into the host
game library as the `playnite` provider:

- exporter/ — a minimal C# Playnite GenericPlugin ("Punktfunk Sync") that
  writes punktfunk-library.json on every library change. Reading Playnite's
  live-locked LiteDB from outside isn't robust, so this adapter runs inside
  Playnite. Builds net462 via reference assemblies; packaged as a .pext.
- src/ — the TS plugin (on @punktfunk/host, rom-manager shape): watches the
  export, embeds covers as data URLs, reconciles via
  PUT /library/provider/playnite, with a console-hosted web UI + standalone
  fallback + CLI. Launch = playnite://playnite/start/<id>, run by the host
  in the interactive session so Playnite performs the real launch.

Verified locally: backend tsc + 23 tests + biome clean, SPA build, C#
exporter build + .pext pack.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-18 23:35:35 +02:00

41 lines
1.6 KiB
XML

<Project Sdk="Microsoft.NET.Sdk">
<!--
The Playnite side of the plugin: a GenericPlugin that writes `punktfunk-library.json` into its own
plugin-data dir on every library change, for the Punktfunk `playnite` plugin to read and reconcile.
Targets .NET Framework 4.6.2 (Playnite's runtime). `Microsoft.NETFramework.ReferenceAssemblies`
lets `dotnet build` compile net462 on Linux/macOS (no Windows/MSBuild needed), so CI builds it on
the same ubuntu runner as the TS side. PlayniteSDK is a COMPILE-only reference — Playnite provides
it at runtime — so `ExcludeAssets=runtime` keeps it out of the packaged `.pext`.
-->
<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<AssemblyName>PunktfunkSync</AssemblyName>
<RootNamespace>PunktfunkSync</RootNamespace>
<LangVersion>latest</LangVersion>
<Nullable>disable</Nullable>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<Deterministic>true</Deterministic>
<DebugType>none</DebugType>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>0.1.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="PlayniteSDK" Version="6.11.0">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3">
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<None Include="extension.yaml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>