Web console - Pairing/Library/Stats refactored into self-contained subsections that each own their own queries + mutations; a shared slot-based layout (view.tsx) is filled by the live page (containers) and Storybook (pure cards + fixtures) so the layout can't drift. - All paired devices in one list on Pairing with a protocol column (punktfunk/1 + Moonlight), routing each unpair to the right endpoint; the redundant Clients page is removed. - Library: overview grid split from the add/edit form into separate files. - Login screen links out to the docs. Docs - "Console login password" section on every host page (apt/RPM/Bazzite/SteamOS/Windows) plus a new "Forgot your Password?" troubleshooting page, linked from the login screen. - Console served as HTTP/1.1 over TLS (drop the unusable HTTP/3 advertising) across the Bun entry, launchers, systemd units, and packaging. Tooling - Biome now respects .gitignore (stops linting generated code), config migrated to 2.5.1; all lint issues fixed cleanly. Also includes this branch's in-progress host, Apple client, packaging, and CI changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
COPR build-from-SCM settings
COPR builds the RPM from this git repo (no manual SRPM upload). Configure the project
once in the COPR web UI (or with copr-cli):
Project → New Build → SCM
- Clone URL:
https://git.unom.io/unom/punktfunk - Committish:
main(or a release tag) - Subdirectory: (repo root)
- Spec File:
packaging/rpm/punktfunk.spec - Source build method:
rpkg(ormake_srpm)
Project settings
- Chroots:
fedora-43-x86_64,fedora-44-x86_64(match your Bazzite Fedora base;rpm -E %fedoraon the host tells you which). Addaarch64if needed. - External repositories (so
ffmpeg-develresolves at build time):https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$releasever.noarch.rpmand the matching-free-repo. - Enable network during build (cargo fetches crates from crates.io) — COPR allows this by default.
copr-cli equivalent:
copr-cli create punktfunk --chroot fedora-44-x86_64 \
--repo 'https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$releasever.noarch.rpm' \
--repo 'https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$releasever.noarch.rpm'
copr-cli buildscm punktfunk \
--clone-url https://git.unom.io/unom/punktfunk \
--commit main --spec packaging/rpm/punktfunk.spec --method rpkg
Note: COPR caps build time/RAM; a full cargo build --release of the host (FFmpeg/PipeWire
sys-crates + aws-lc-rs) is heavy but within the default COPR limits. If a chroot OOMs, lower
parallelism with CARGO_BUILD_JOBS in the spec's %build.
The web console subpackage (punktfunk-web)
The spec can also build the management web console as a punktfunk-web subpackage, but it's
gated behind %bcond_with web and OFF by default — building (and now running) the Nitro
console needs bun, which COPR's mock chroot does not provide. The package vendors the build env's
bun binary (the console serves HTTPS — HTTP/1.1 over TLS — via Bun.serve), so it is arch-specific, not noarch.
A stock COPR build produces only punktfunk + punktfunk-client.
Two ways to get the console:
- Recommended: install it from the Gitea RPM registry (
packaging/rpm/README.md, Option A), whose CI builder image hasbunand builds--with web. (This is whatbootc/Containerfiledoes.) - In COPR: add
bunto the chroot (a custom mock config / external repo) and set the build option--with webon the project, thendnf install punktfunk-web.