Files
enricobuehler f6d85f11e2 fix(install): the web console is named in every install line, and a host that has none gets one
Reported from the field: the guided installer (scripts/install.sh) left a Fedora box with a host
and no web console — and then printed the console's URL anyway. Reproduced with the real script
against a faked Fedora 44 os-release: with `punktfunk-host` on PATH the installer prints "already
installed — skipping the install" and never runs its dnf line, so `punktfunk-web` is never added.
The console is where you pair, approve a device and change every setting, so that box can stream
nothing and offers no way to fix it.

The registry was never the problem: `punktfunk-web` is present in the fedora-44 and bazzite RPM
groups, the debian repo and the arch repo (checked all four). The install step was gated on ONE
binary while installing THREE packages.

  * scripts/install.sh asks per package (host / punktfunk-web-server / punktfunk-scripting) instead
    of skipping everything the moment the host binary exists. A box that got the host by hand, from
    an older docs line, or from a package manager set to drop weak deps now gets its console on a
    re-run. Installing a package that is already there is a no-op, so re-running stays safe.
  * The install lines NAME the console on every family. apt relied on `Recommends: punktfunk-web`
    and pacman on an optdepend, both of which vanish under `APT::Install-Recommends "0"` /
    `install_weak_deps=False` / plain pacman. dnf already named it. The packages keep their weak
    deps — a hard Requires would break the COPR build, which has no bun and ships no console — but
    no documented path leans on them any more.
  * The installer stops lying when the console is absent: step 6 warns instead of silently dropping
    punktfunk-web from the units it enables, and the closing banner offers the install line rather
    than a URL nothing serves.

Verified unchanged on the channels that were already right: the Bazzite sysext bakes in web +
scripting, the NixOS module defaults `web.enable` to `host.enable`, the SteamOS script defaults
`WITH_WEB=1`, and the Windows installer bundles the console unconditionally behind a payload guard
added after 0.22.1/0.22.2 shipped without one. COPR is the documented exception (no bun in mock).

The gates that let this ship:
  * check-docs-drift.sh gate 7 asserted the install line only as far as the host package name, so
    a line that dropped the console still passed. It now names all three per family.
  * installer-smoke.yml asserted `punktfunk-host --version` and nothing about the console. It now
    asserts the binary and the user unit per family, and carries the reported failure as a test:
    remove punktfunk-web, re-run the installer, require it back.

data/platforms.json is the source for both the docs and the installer, so the per-distro pages,
the install landing page and the web-console page were updated with it — including a "no console on
a box that has the host?" recovery block for anyone already in this state.
2026-08-27 12:09:59 +02:00
..