diff --git a/.gitignore b/.gitignore index 4379833..f5ed8fd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ ## Local agent/contributor notes (not for GitHub) AGENTS.md +build.md ## Build directories build/ diff --git a/README.md b/README.md index 40c7b1d..c4d726a 100644 --- a/README.md +++ b/README.md @@ -41,17 +41,23 @@ For security (sandboxing) and ease of updates, we recommend installing BearWave **Prerequisite:** [Flatpak](https://flatpak.org/setup/) must be installed on your system. On many distributions it is already present; otherwise install it from your package manager first. -**Install:** +**Install (recommended):** ```bash -# Add the BearWave repository (GPG-signed) -flatpak remote-add --user bearwave-repo https://flatpak.bearwave.app/bearwave.flatpakrepo - -# Install the application (first run also pulls the KDE Platform 6.10 runtime) -flatpak install --user bearwave-repo de.nerdbear.bearwave +# One-step install from the signed Flatpak ref (adds the remote automatically) +flatpak install --from https://flatpak.bearwave.app/bearwave.flatpakref ``` -Confirm the prompts when Flatpak asks to install the runtime and app. +The ref file is also included in this repository as [`bearwave.flatpakref`](bearwave.flatpakref). + +Confirm the prompts when Flatpak asks to install the runtime and app (first install also pulls the KDE Platform 6.10 runtime). + +**Alternative (manual remote):** + +```bash +flatpak remote-add --user bearwave-repo https://flatpak.bearwave.app/bearwave.flatpakrepo +flatpak install --user bearwave-repo de.nerdbear.bearwave +``` **Launch:** @@ -355,6 +361,7 @@ rm -f "$HOME/.config/autostart/de.nerdbear.bearwave.desktop" ### Flatpak install or update fails - verify Flatpak is installed: `flatpak --version` +- retry the one-step install: `flatpak install --from https://flatpak.bearwave.app/bearwave.flatpakref` - if the remote already exists: `flatpak remote-modify --user bearwave-repo --url=https://flatpak.bearwave.app/bearwave.flatpakrepo` - check installed build: `flatpak info de.nerdbear.bearwave` - signature errors usually mean the repository on the server is out of date; retry later or report an issue diff --git a/bearwave.flatpakref b/bearwave.flatpakref new file mode 100644 index 0000000..1b36240 --- /dev/null +++ b/bearwave.flatpakref @@ -0,0 +1,8 @@ +[Flatpak Ref] +Name=de.nerdbear.bearwave +Branch=stable +Title=BearWave +Url=https://flatpak.bearwave.app/ +IsRuntime=false +Suggestremote=bearwave-repo +GPGKey=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 \ No newline at end of file diff --git a/build.md b/build.md deleted file mode 100644 index 058bccf..0000000 --- a/build.md +++ /dev/null @@ -1,276 +0,0 @@ -# BearWave – Build, Deploy & Fehlerprotokoll - -Stand: 2026-06-22 · Release-Version: **1.0.5** (AUR + Flatpak) - -## Versionspolitik - -| Was | Regel | -|-----|--------| -| **App-Version** (`CMakeLists.txt`, About, Flatpak-Manifest) | Nur bei echtem Release erhöhen (aktuell **1.0.5**, siehe `CHANGELOG.md`) | -| **AUR** (`PKGBUILD`) | `pkgver=1.0.5` beibehalten, bei Bugfixes nur **`pkgrel`** erhöhen (aktuell **8**) | -| **Flatpak** (`de.nerdbear.bearwave.json` → `version`) | Gleiche Versionsnummer wie Release (**1.0.5**), neuer Build = neuer OSTree-Commit | -| **Build identifizieren** | Git-Hash im About-Dialog (`BEARWAVE_GIT_HASH`), nicht die App-Version hochzählen | - -**Fehler (2026-06-22):** Mehrfach fälschlich 1.0.6–1.0.8 eingeführt, obwohl GitHub/AUR bei 1.0.5 bleiben. Bugfixes brauchen **keine** neue Minor-Version. - ---- - -## AUR bauen - -```bash -# Im PKGBUILD-Verzeichnis (AUR) oder lokal: -cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -cmake --build build -``` - -- Version kommt aus `project(bearwave VERSION 1.0.5)` in `CMakeLists.txt` -- Git-Hash: `src/CMakeLists.txt` → `git rev-parse --short HEAD` (lokal vorhanden) - ---- - -## Flatpak bauen & deployen - -```bash -# Vollständiger Build + Repo + optional Deploy -scripts/build-flatpak.sh --deploy - -# Nur Re-Export (kein neuer Source-Build; finish-args ändern sich damit NICHT) -scripts/build-flatpak.sh --reexport-deploy -``` - -**Wichtig:** `--reexport` übernimmt **keine** Änderungen aus `de.nerdbear.bearwave.json` (z. B. `--device=dri`). Nach Manifest-Änderungen immer **vollen** Build ohne `--reexport`. - -### Deploy-Ziel - -- Server: `ragnar@hosting:/srv/www/flatpak.bearwave.app/index/public/` -- Es wird **`flatpak_repo/`** per rsync deployed, **nicht** `flatpak_build/` -- `bearwave.flatpakrepo` auf dem Server bleibt unverändert -- SSH-Host `hosting` hat `RemoteCommand` → rsync nutzt `-e 'ssh -o RemoteCommand=none -o RequestTTY=no'` - -### GPG-Signierung - -- Key: `AA1D2F0170800855` (über `BEARWAVE_FLATPAK_GPG_KEY` überschreibbar) -- `flatpak-builder --gpg-sign=…` und `flatpak build-update-repo --gpg-sign=…` -- Ohne `summary.sig` / `summary.idx.sig` schlagen Client-Updates fehl („BAD signature“) - -### Git-Hash im Flatpak-Binary - -`flatpak-builder` kopiert **kein** `.git` in die Sandbox → `git rev-parse` in CMake liefert sonst `unknown`. - -Lösung: `scripts/build-flatpak.sh` schreibt `BEARWAVE_GIT_HASH` per generiertem Manifest (`.flatpak-builder-manifest.json`) in `build-options.env`. `src/CMakeLists.txt` liest `ENV{BEARWAVE_GIT_HASH}`. - -### Runtime - -- KDE **6.10** (`org.kde.Platform`), ersetzt EOL 6.6 / Freedesktop 23.08 (Issue #5) -- Branch im Repo: **`master`** (nicht `stable`) - -### Finish-Args (aktuell) - -- `--device=dri` – GPU/EGL-Zugriff (`/dev/dri`), ohne diesen: MESA/ZINK/EGL-Warnungen -- `--socket=wayland`, `--socket=fallback-x11`, `--share=ipc`, `--share=network` -- MPRIS: `--own-name=org.mpris.MediaPlayer2.bearwave` - ---- - -## Installation (Endnutzer) - -```bash -flatpak remote-add --user bearwave-repo https://flatpak.bearwave.app/bearwave.flatpakrepo -flatpak install --user bearwave-repo de.nerdbear.bearwave -flatpak update de.nerdbear.bearwave -flatpak run de.nerdbear.bearwave -``` - -Nach Update bei seltsamen QML-Fehlern Cache leeren: - -```bash -rm -rf ~/.var/app/de.nerdbear.bearwave/cache/BearWave/BearWave/qmlcache -killall bearwave -``` - ---- - -## Bekannte Fehler & Fixes - -### 1. AUR: `qrc:/qml/Main.qml not found` - -**Ursache:** QRC-Prefix `/qml` + Pfad `qml/Main.qml` → Ressource unter `qrc:/qml/qml/Main.qml`. - -**Fix:** Commit `a725430` – Prefix `/` in `src/qml.qrc`. Regressionstest: `tests/qrc_resources_test.cpp`. - ---- - -### 2. About zeigt 1.0.3, `flatpak info` zeigt 1.0.6+ - -**Ursache:** Zwei getrennte Quellen: - -- `flatpak info` → AppStream-Metainfo -- About → laufendes Binary (`BEARWAVE_VERSION` / `Qt.application.version`) - -Typische Fälle: - -1. **Alte Instanz läuft noch** (Single-Instance über MPRIS/DBus) – Update ersetzt Dateien, Prozess bleibt alt -2. **AUR-Binary** (`/usr/bin/bearwave`) statt Flatpak gestartet -3. Früher: Metainfo aktualisiert, Binary auf Server noch alt (Commit-Mismatch) - -**Prüfen:** - -```bash -flatpak info de.nerdbear.bearwave | grep -E 'Version|Commit' -which bearwave -killall bearwave && flatpak run de.nerdbear.bearwave -``` - ---- - -### 3. About / Manual+ / Edit öffnen nicht - -**Symptom:** - -``` -HeaderNavigation.qml:112: TypeError: Cannot call method 'open' of undefined -``` - -**Ursache:** Seit QML-Refactor (2026-06-20) fehlten `property alias` in `Main.qml`. `HeaderNavigation` nutzt `app.aboutDialog`, `app.addDialog` – IDs allein exportieren keine Properties. - -**Fix:** Commit `2de7706` (pkgrel 4): - -```qml -property alias addDialog: addDialogPane -property alias editDialog: editDialogPane -property alias aboutDialog: aboutDialogPane -``` - ---- - -### 4. About: `String.arg(): Invalid arguments` - -**Symptom:** Zeile in `AboutDialog.qml`, App startet teilweise (`Loaded 100 stations`). - -**Ursachen (mehrere übereinander):** - -1. **QML:** `qsTr("…%1…%2").arg(a, b)` – in QML nur **ein** Argument pro `.arg()`; korrekt: `.arg(a).arg(b)` -2. **Stale QML-Disk-Cache:** Altes kompiliertes QML in - `~/.var/app/de.nerdbear.bearwave/cache/BearWave/BearWave/qmlcache` - → Fehler bleibt trotz neuem Binary -3. **Fix im Code:** String-Verkettung statt `.arg()`; `QML_DISABLE_DISK_CACHE=1` in `main.cpp` - -**Cache leeren** (siehe oben) oder App neu installieren. - ---- - -### 5. Flatpak: EGL / MESA / ZINK-Warnungen - -``` -libEGL warning: failed to get driver name for fd -1 -MESA: error: ZINK: failed to choose pdev -``` - -**Ursache:** Kein `--device=dri` im Manifest → kein `/dev/dri` in der Sandbox. - -**Fix:** `--device=dri` in `de.nerdbear.bearwave.json` (voller Rebuild, nicht `--reexport`). - ---- - -### 6. `flatpak run` – „es passiert nichts“ - -**Ursachen:** - -1. **Single-Instance:** Zweiter Start ruft nur `Raise` auf und beendet sich (`main.cpp`). Wenn `raiseRequested` nicht verbunden war (nur über Tray), passiert nichts Sichtbares. -2. **Fix:** `raiseRequested` immer an Hauptfenster binden; `show()` / `requestActivate()` nach QML-Load; MPRIS-Registrierung **nach** erfolgreichem QML-Load (Commit `872670b`). - -```bash -killall bearwave -busctl --user list | grep bearwave -``` - ---- - -### 7. About: `build unknown` - -**Ursache:** Flatpak-Build ohne `.git` → `BEARWAVE_GIT_HASH=unknown`. - -**Fix:** `BEARWAVE_GIT_HASH` via `build-flatpak.sh` → Manifest-`env` (siehe oben). - ---- - -### 8. About-Dialog: Crash beim Öffnen - -**Symptom:** About zeigt kurz „Version 1.0.5 · build unknown“, dann Absturz. - -**Vermutliche Ursache:** `ScrollView` + `licenseScroll.availableWidth` unter KDE-Dialog/Flatpak (ungültige Breite beim ersten Layout). - -**Fix (minimal, Layout unverändert):** Commit `315b5b6` - -- `width: licenseScroll.availableWidth` → `width: Math.max(licenseScroll.width, 1)` -- `ScrollBar.AlwaysOn` → `ScrollBar.AsNeeded` - -**Nicht tun:** Komplettes About-UI durch vereinfachtes Layout ersetzen (fehlerhafter Versuch in `a9f286b`, zurückgenommen in `315b5b6`). - ---- - -### 9. PipeWire-Warnung - -``` -Failed to connect to pipewire instance "Der Rechner ist nicht aktiv" -``` - -Harmlos, wenn PulseAudio verfügbar ist. Kein BearWave-Bug. - ---- - -### 10. Flatpak-Deploy: rsync exit 23 - -``` -rsync: failed to set times on "...": Operation not permitted -``` - -Meist nur Timestamp/Owner auf dem Webserver – **Deploy-Inhalt ist trotzdem angekommen**. `--no-group --no-owner` ist gesetzt. - ---- - -### 11. GPG Pinentry-Timeout beim Build - -``` -Failure signing commit file: Pinentry: Timeout -``` - -Build-Umgebung braucht funktionierendes GPG-Agent/Pinentry (interaktiv oder `loopback`). - ---- - -## QML / Architektur-Hinweise - -- Version im About: `Main.qml` → `appVersion` / `appBuildId` als Properties an `AboutDialog` (nicht auf globale Context-Properties im Modul verlassen) -- `setApplicationVersion()` **nach** `QApplication app(argc, argv)` in `main.cpp` -- Dialoge: immer `property alias` in `Main.qml`, wenn Kind-Komponenten sie über `app.*` ansprechen - ---- - -## Commit-Übersicht (Bugfix-Serie 2026-06-22) - -| Commit | Inhalt | -|--------|--------| -| `a725430` | QRC-Pfade | -| `ccb2152` | Flatpak KDE 6.10 | -| `15691bc` / `a8815cd` | GPG-Signierung Repo | -| `75313d7` | SSH Deploy RemoteCommand | -| `448aa13` | Version wieder auf 1.0.5 vereinheitlicht | -| `fe0591e` | `--device=dri` | -| `872670b` | Fenster show/Raise, MPRIS nach QML-Load | -| `2de7706` | Dialog-Property-Aliase | -| `2224307` / `818efc0` | About-Version, QML-Cache aus | -| `a9f286b` | Git-Hash Flatpak (About-UI-Vereinfachung – **zurückgenommen**) | -| `315b5b6` | About Original-Layout + minimaler ScrollView-Fix | - ---- - -## Checkliste vor Release/Deploy - -- [ ] `CMakeLists.txt` Version = Release-Nummer (1.0.5) -- [ ] `PKGBUILD` nur `pkgrel` erhöhen, wenn kein neues Release -- [ ] `de.nerdbear.bearwave.json` `version` = gleiche Nummer -- [ ] Voller Flatpak-Build (`scripts/build-flatpak.sh --deploy`), kein `--reexport` nach Manifest-Änderungen -- [ ] GPG-Signatur auf Repo prüfen -- [ ] Lokal: `flatpak update`, Cache ggf. leeren, About + Manual+ testen -- [ ] `killall bearwave` vor Test, nicht AUR- und Flatpak-Binary gleichzeitig laufen lassen \ No newline at end of file