feat(web): consolidate paired devices, self-contained sections, docs + lint
apple / swift (push) Successful in 1m6s
ci / rust (push) Successful in 5m51s
android / android (push) Successful in 6m21s
ci / web (push) Successful in 49s
ci / docs-site (push) Successful in 58s
windows-host / package (push) Successful in 8m6s
release / apple (push) Successful in 8m17s
deb / build-publish (push) Successful in 3m26s
decky / build-publish (push) Successful in 25s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
ci / bench (push) Successful in 4m42s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 30s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 2m36s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 2m17s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Failing after 19s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 51s
apple / screenshots (push) Successful in 5m45s
docker / deploy-docs (push) Successful in 22s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Failing after 22s
apple / swift (push) Successful in 1m6s
ci / rust (push) Successful in 5m51s
android / android (push) Successful in 6m21s
ci / web (push) Successful in 49s
ci / docs-site (push) Successful in 58s
windows-host / package (push) Successful in 8m6s
release / apple (push) Successful in 8m17s
deb / build-publish (push) Successful in 3m26s
decky / build-publish (push) Successful in 25s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
ci / bench (push) Successful in 4m42s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 30s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 2m36s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 2m17s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Failing after 19s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 51s
apple / screenshots (push) Successful in 5m45s
docker / deploy-docs (push) Successful in 22s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Failing after 22s
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>
This commit is contained in:
@@ -92,6 +92,21 @@ systemctl --user enable --now punktfunk-web
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
```
|
||||
|
||||
### Console login password
|
||||
|
||||
The console is password-protected. On first start `punktfunk-web-init` generates a random login
|
||||
password and saves it to `~/.config/punktfunk/web-password` (as `PUNKTFUNK_UI_PASSWORD=…`). Read it
|
||||
back at any time — from the init service's journal, or straight from the file:
|
||||
|
||||
```sh
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password
|
||||
```
|
||||
|
||||
To set your own password, edit that file (`PUNKTFUNK_UI_PASSWORD=<your-password>`) and restart the
|
||||
console: `systemctl --user restart punktfunk-web`. Forgot it? This is the recovery path linked from
|
||||
the console login screen — see [Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
## Good to know
|
||||
|
||||
- **gamescope 3.16.22 or newer is required.** Older versions can deadlock during capture. Bazzite's
|
||||
|
||||
@@ -111,6 +111,30 @@ journalctl --user -u punktfunk-host -f # watch a client connect
|
||||
The host now listens on `9777` (native punktfunk/1) + the GameStream ports, and advertises over
|
||||
mDNS. It requires **PIN pairing** by default (secure on a LAN); pair once from your client.
|
||||
|
||||
### Web console
|
||||
|
||||
The console (status, paired devices, arm pairing) ships as `punktfunk-web` — enable it, then open
|
||||
`http://<host-ip>:3000`:
|
||||
|
||||
```sh
|
||||
systemctl --user enable --now punktfunk-web
|
||||
```
|
||||
|
||||
#### Console login password
|
||||
|
||||
The console is password-protected. On first start `punktfunk-web-init` generates a random login
|
||||
password and saves it to `~/.config/punktfunk/web-password` (as `PUNKTFUNK_UI_PASSWORD=…`). Read it
|
||||
back at any time — from the init service's journal, or straight from the file:
|
||||
|
||||
```sh
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password
|
||||
```
|
||||
|
||||
To set your own password, edit that file (`PUNKTFUNK_UI_PASSWORD=<your-password>`) and restart the
|
||||
console: `systemctl --user restart punktfunk-web`. Forgot it? This is the recovery path linked from
|
||||
the console login screen — see [Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
## 4. Connect a client
|
||||
|
||||
From any [client](/docs/clients) — `punktfunk-client --discover` finds the host on the LAN. On
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Forgot your Password?
|
||||
description: Where the punktfunk web console login password lives — and how to read or reset it — on each host platform.
|
||||
---
|
||||
|
||||
The punktfunk **web console** (status, paired devices, PIN pairing) is protected by a login
|
||||
password. That password is generated — or, on Windows, chosen — when the console is first set up, and
|
||||
it lives on the **host**. So if you can't get past the login screen, you recover or change it on the
|
||||
host machine itself, not from the browser.
|
||||
|
||||
> This is **only** the web console login. It is **not** your client/device pairing — if a client
|
||||
> won't connect, that's [Pairing](/docs/pairing), not this password.
|
||||
|
||||
## Find your host
|
||||
|
||||
Jump to your host platform for exactly where the password lives and how to read or reset it:
|
||||
|
||||
| Host | Where the password lives | Section |
|
||||
|------|--------------------------|---------|
|
||||
| **Ubuntu — GNOME** | `~/.config/punktfunk/web-password` | [Console login password](/docs/ubuntu-gnome#console-login-password) |
|
||||
| **Ubuntu — KDE Plasma** | `~/.config/punktfunk/web-password` | [Console login password](/docs/ubuntu-kde#console-login-password) |
|
||||
| **Fedora — KDE Plasma** | `~/.config/punktfunk/web-password` | [Console login password](/docs/fedora-kde#console-login-password) |
|
||||
| **Bazzite — gamescope** | `~/.config/punktfunk/web-password` | [Console login password](/docs/bazzite#console-login-password) |
|
||||
| **SteamOS (host)** | `~/.config/punktfunk/web.env` | [Console login password](/docs/steamos-host#console-login-password) |
|
||||
| **Windows host** | `%ProgramData%\punktfunk\web-password` | [Console login password](/docs/windows-host#console-login-password) |
|
||||
|
||||
## The short version
|
||||
|
||||
**Linux packages (apt / RPM / Bazzite).** The password is generated on first start and saved to
|
||||
`~/.config/punktfunk/web-password`. Read it back:
|
||||
|
||||
```sh
|
||||
# from the init service's journal (printed once, when it was generated):
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
# …or straight from the file:
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password
|
||||
```
|
||||
|
||||
Change it by editing that file (`PUNKTFUNK_UI_PASSWORD=<your-password>`) and restarting the console:
|
||||
`systemctl --user restart punktfunk-web`.
|
||||
|
||||
**SteamOS / Steam Deck.** Same idea, but the installer writes it to `~/.config/punktfunk/web.env`
|
||||
and prints it at the end of the install run:
|
||||
|
||||
```sh
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web.env
|
||||
```
|
||||
|
||||
Edit that file and `systemctl --user restart punktfunk-web` to change it.
|
||||
|
||||
**Windows.** You pick the password during install (a secure random default is pre-filled and shown
|
||||
on the installer's final page). It lives in `%ProgramData%\punktfunk\web-password`. To change it,
|
||||
edit the file and restart the **PunktfunkWeb** task — in an **elevated** PowerShell:
|
||||
|
||||
```powershell
|
||||
notepad "$env:ProgramData\punktfunk\web-password" # set PUNKTFUNK_UI_PASSWORD=<your-password>
|
||||
schtasks /End /TN PunktfunkWeb; schtasks /Run /TN PunktfunkWeb
|
||||
```
|
||||
|
||||
Still stuck? See [Troubleshooting](/docs/troubleshooting).
|
||||
@@ -23,7 +23,9 @@
|
||||
"---Configuration---",
|
||||
"configuration",
|
||||
"host-cli",
|
||||
"---Troubleshooting---",
|
||||
"troubleshooting",
|
||||
"forgot-password",
|
||||
"---Project---",
|
||||
"roadmap",
|
||||
"channels",
|
||||
|
||||
@@ -91,6 +91,20 @@ By default the host **requires PIN pairing** (secure). Two ways to pair:
|
||||
|
||||
On a trusted home LAN you can instead install with `--open` and skip pairing entirely.
|
||||
|
||||
### Console login password
|
||||
|
||||
The installer generates a random console login password and writes it to
|
||||
`~/.config/punktfunk/web.env` (as `PUNKTFUNK_UI_PASSWORD=…`); it's also printed at the end of the
|
||||
install run (step 2). Read it back with:
|
||||
|
||||
```sh
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web.env
|
||||
```
|
||||
|
||||
To set your own password, edit that file and restart the console:
|
||||
`systemctl --user restart punktfunk-web`. Forgot it? This is the recovery path linked from the
|
||||
console login screen — see [Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
## 4. Verify
|
||||
|
||||
```sh
|
||||
|
||||
@@ -107,6 +107,21 @@ systemctl --user enable --now punktfunk-web
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
```
|
||||
|
||||
#### Console login password
|
||||
|
||||
The console is password-protected. On first start `punktfunk-web-init` generates a random login
|
||||
password and saves it to `~/.config/punktfunk/web-password` (as `PUNKTFUNK_UI_PASSWORD=…`). Read it
|
||||
back at any time — from the init service's journal, or straight from the file:
|
||||
|
||||
```sh
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password
|
||||
```
|
||||
|
||||
To set your own password, edit that file (`PUNKTFUNK_UI_PASSWORD=<your-password>`) and restart the
|
||||
console: `systemctl --user restart punktfunk-web`. Forgot it? This is the recovery path linked from
|
||||
the console login screen — see [Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
To run the host automatically at boot — including on a **headless** machine with no monitor — see
|
||||
[Running as a Service](/docs/running-as-a-service).
|
||||
|
||||
|
||||
@@ -80,6 +80,21 @@ systemctl --user enable --now punktfunk-web
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
```
|
||||
|
||||
#### Console login password
|
||||
|
||||
The console is password-protected. On first start `punktfunk-web-init` generates a random login
|
||||
password and saves it to `~/.config/punktfunk/web-password` (as `PUNKTFUNK_UI_PASSWORD=…`). Read it
|
||||
back at any time — from the init service's journal, or straight from the file:
|
||||
|
||||
```sh
|
||||
journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
|
||||
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password
|
||||
```
|
||||
|
||||
To set your own password, edit that file (`PUNKTFUNK_UI_PASSWORD=<your-password>`) and restart the
|
||||
console: `systemctl --user restart punktfunk-web`. Forgot it? This is the recovery path linked from
|
||||
the console login screen — see [Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
To run it at boot — including fully **headless**, with KWin brought up automatically and no login —
|
||||
see [Running as a Service](/docs/running-as-a-service); the headless appliance is built around KDE.
|
||||
|
||||
|
||||
@@ -51,10 +51,24 @@ Packaging internals live in
|
||||
### Web console & pairing
|
||||
|
||||
The installer also sets up the **web management console** (status, paired devices, the PIN pairing
|
||||
flow): it bundles the console plus its own runtime and runs it as the **`PunktfunkWeb`** service on
|
||||
**`http://<this-PC>:3000`**, starting at boot. During setup you choose the console **login password**
|
||||
(pre-filled with a secure random default and shown again on the final page); change it later in
|
||||
`%ProgramData%\punktfunk\web-password`.
|
||||
flow): it bundles the console plus its own runtime and runs it as the **`PunktfunkWeb`** task on
|
||||
**`http://<this-PC>:3000`**, starting at boot.
|
||||
|
||||
#### Console login password
|
||||
|
||||
During setup you choose the console **login password** — it's pre-filled with a secure random default
|
||||
and shown again on the installer's final page. It's stored in `%ProgramData%\punktfunk\web-password`
|
||||
(as `PUNKTFUNK_UI_PASSWORD=…`), readable only by Administrators and SYSTEM.
|
||||
|
||||
To change it, edit that file and restart the console task. In an **elevated** PowerShell:
|
||||
|
||||
```powershell
|
||||
notepad "$env:ProgramData\punktfunk\web-password" # set PUNKTFUNK_UI_PASSWORD=<your-password>
|
||||
schtasks /End /TN PunktfunkWeb; schtasks /Run /TN PunktfunkWeb
|
||||
```
|
||||
|
||||
Forgot it? This is the recovery path linked from the console login screen — see
|
||||
[Forgot your Password?](/docs/forgot-password).
|
||||
|
||||
The host **requires PIN pairing** by default (secure on a LAN). To connect the first time, open the
|
||||
console from any browser on the LAN, log in, go to **Devices → arm pairing**, and enter the PIN on
|
||||
|
||||
Reference in New Issue
Block a user