Add English localization and MIT-licensed public release documentation
Tests / unit (de, 3.10) (push) Has been cancelled
Tests / unit (de, 3.14) (push) Has been cancelled
Tests / unit (en, 3.14) (push) Has been cancelled
Tests / unit (en, 3.10) (push) Has been cancelled

This commit is contained in:
Justin
2026-09-05 21:02:14 +02:00
parent 3579667c6e
commit dd0809e877
31 changed files with 1261 additions and 377 deletions
+49 -33
View File
@@ -1,37 +1,53 @@
# Validierung am 5. September 2026
# Validation — 5 September 2026
Getestetes System: Bazzite, GNOME, Python 3.14, GTK 4.22, libadwaita 1.9.
Angeschlossener BTD 700: USB `3542:3001`, Firmware 3.11.0.
This document separates observed hardware behavior from simulated tests.
The project was developed using AI (OpenAI Codex); these results are not a warranty.
- 21 Tests mit `python3 -m unittest discover -s tests -q`: bestanden.
- Fenster-/Infobereich-Test `python3 tools/check_gui.py`: bestanden, ausschließlich
mit einem simulierten Dongle. Aktionen wurden über `com.canonical.dbusmenu.Event`
ausgelöst, nicht nur direkt gegen Controller-Methoden.
- Geprüfte Demo-Abläufe: Standard/Gaming/Auracast, Codec, Transport, Trennen/Verbinden,
öffentliche Auffindbarkeit, Broadcastqualität, Name/Passwort speichern,
Passwortschutz ausschalten, Fenster schließen/aus Menü wieder öffnen,
ungespeicherte Eingaben bei Statusabfragen erhalten und verwerfen.
- Eigene Fensterbilder bei 620 × 800 und 420 × 600 Pixeln gerendert und visuell
geprüft. Oberfläche scrollbar, Bedienelemente erreichbar. Die zuvor überlange
Passwortbeschriftung wurde gekürzt und um einen sichtbaren Hinweis ergänzt.
- Echte Hardwareabfragen: erfolgreich, siehe PROTOCOL.md. Anzeige:
Gaming / aptX Adaptive / 24 Bit / 48 kHz / laufende Musikwiedergabe.
- Live-Symbol exportiert StatusNotifierItem mit aktuellem Tooltip und einem
D-Bus-Menü. GNOME-StatusNotifierWatcher nimmt die Registrierung an.
- App über persönlichen Desktop-Eintrag installierbar; Desktop-Datei validiert.
Dauerhafter Start in der Benutzersitzung mit transienter Unit
`btd700-control.service`; kein Systemdienst und kein aktivierter Autostart.
- Zweiter USB-Zugriff während laufender App: korrekt mit verständlicher Meldung
abgelehnt, ohne die laufende Instanz zu beeinträchtigen.
- Extraktionsskript gegen die offizielle Windows-EXE geprüft; SHA256 der
extrahierten Assembly entspricht der bei der Analyse verwendeten Datei.
## Environment
Der Nutzer hat anschließend bestätigt, dass die App am eigenen Dongle funktioniert.
Welche einzelnen Funktionen dabei getestet wurden, wurde nicht näher aufgeschlüsselt.
Bazzite / GNOME, Python 3.14, GTK 4.22, libadwaita 1.9.
Connected BTD 700: USB `3542:3001`, firmware 3.11.0.
**Noch offen:** automatisierte Hardware-Schreibtests sowie eine systematische
Prüfung mit Audio-/Auracast-Empfängern. `tools/check_hardware.py --run` wurde bisher
nicht ausgeführt. Dieser Test unterbricht kurz Audio und verändert vorübergehend
Auracast-Einstellungen einschließlich des Passworts; anschließend versucht er,
die ursprünglichen Werte wiederherzustellen. Ein Werksreset wird dabei nicht
ausgeführt; Firmware-Updates sind nicht implementiert.
## Observed on the real device
- Correct control-interface discovery and opening without detaching audio drivers.
- Successful state, mode, codec, quality, transport, Auracast configuration/name
and firmware-version reads. See [PROTOCOL.md](PROTOCOL.md) for response bytes.
- Reported live state: Gaming, aptX Adaptive, 24-bit / 48 kHz, audio playing.
- Native GTK window and registered GNOME tray item with a live status tooltip.
- A second USB client is rejected with a clear message while the app owns the device.
- The device owner subsequently confirmed that the app works. The individual
functions exercised by the owner were not enumerated.
## Automated verification
- Protocol/controller/transport tests: command allowlist, malformed frames, response
correlation, event acknowledgements, readback, capability checks, input validation,
reset confirmation and password handling using a simulated device.
- Localization tests: English/German detection, explicit CLI override, message
placeholders, localized status/errors and unchanged numeric protocol data.
- Desktop integration tests: isolated installation/uninstallation and autostart
behavior without changing the real user's launchers.
- `tools/check_gui.py` exercised English and German windows and actual D-Bus menu
events against a demo device: modes, codec, transport, connection, broadcast
discovery/quality, name/password saving, encryption, closing/reopening and
preserving/discarding unsaved edits.
- Window layouts rendered and inspected at 620 × 800 and 420 × 600 pixels.
- README screenshots captured from the real English GTK window at 620 × 880 with
fictional demo data. No real USB access or generated mockups were used.
- Extraction helper output matched the SHA256 of the original assembly used for
protocol research. No vendor binaries were added to the distribution.
The CI workflow runs the unit tests on Python 3.10 and 3.14, in both languages.
It does not run real hardware tests or claim that a particular receiver works.
## Not yet systematically verified
- Hardware writes across different firmware revisions and all individual commands.
- Real Auracast receiver compatibility, audio quality and reconnect behavior.
- Other distributions/desktops beyond the tested Bazzite/GNOME setup.
`tools/check_hardware.py --run` has not been executed. It deliberately interrupts
audio, changes settings including the broadcast password, and attempts to restore
the original values. It does not perform a factory reset and cannot perform
firmware updates. Unplugging midway can prevent restoration.