The first-run screen said "double-click punktfunk-sync.pext" and stopped there — no hint the file is a download, let alone where from. Nothing in the console linked to it on any screen. The only copy that existed was in the README, and it pointed at the repo's Actions tab: sign in to Gitea, find the newest run, download a zip artifact, unzip it. That is not a download link, and it is not something a user discovers. (The README of the very first commit did promise the console "can also deploy the exporter for you", dropping the extension into %APPDATA%\Playnite\ Extensions\. No commit ever implemented it — `git grep -i deploy` finds that sentence and nothing else — and the claim was later deleted. So there is no lost capability here to restore; the discoverability gap has been there since day one.) Two halves to the fix, because a link needs somewhere to point: - **Real releases.** A `v*` tag now creates a Gitea release with the freshly built `punktfunk-sync.pext` attached, plus a `.sha256` sidecar so the download can be verified, and a body that carries the install instructions — that page is now the destination for every "where do I get this" link, so it has to answer on its own. `scripts/ci/gitea-release.sh` is a trimmed sibling of the monorepo helper, carrying over its two hard-won behaviours: a plain asset POST 409s on a duplicate name (so re-running a tag fails after publishing fine), and every asset gets a checksum sidecar. The branch-build artifact stays, for testing an unreleased exporter. It is just no longer where users are sent. - **Links in the console.** Overview's first-run state and the Library empty state both grow a "Download punktfunk-sync.pext" button pointing at /releases/latest. Gitea serves that as a 303 to the current tag; it has no GitHub-style /releases/latest/download/<file> route (that 404s), so this lands on the page rather than faking a direct file link that would break the moment it was clicked. The console frames plugin UIs cross-origin with `allow-popups`, so a new tab is the one navigation that works from in there. Also surfaces the `launcher` toggle in Settings. It was config-file-only, which made it a dead end: a host that cannot open Playnite's Fullscreen app refuses that tile, and until the host learned to drop just the tile, that refusal cost the entire library. The escape hatch existed and nobody could find it.