16 Commits

Author SHA1 Message Date
098b53744d chore: update Cargo.lock for v0.1.1 v0.1.1 2026-04-09 17:17:20 +02:00
960bc60b20 feat: show sidetone level in Waybar tooltip
Tooltip now shows "HS80: 42% — Discharging | Sidetone: 10/23" when
the ALSA sidetone control is available. Falls back gracefully to
battery-only tooltip when sidetone cannot be read.

Bump version to 0.1.1.
2026-04-09 17:13:41 +02:00
46978af7b8 fix: Waybar-Modul ausblenden statt "?" wenn Headset nicht erreichbar
Leerer text-Wert lässt Waybar das Modul automatisch verstecken.
Cache-TTL zurück auf 300s.
v0.1.0
2026-03-28 01:35:56 +01:00
25eacfc02d fix: Audit-Befunde in Protokoll-Parsing, Error-Handling und Eingabe-Validierung
BragiResponse-Felder korrekt zugeordnet (endpoint=raw[1], command=raw[2],
status=raw[3]) gemäß Protokoll-Doku. PropertyNotSupported durch DeviceError
ersetzt, parse_response_validated in device.rs aktiviert, flush() mit
Iterationslimit gegen Endlosschleifen, Sidetone-Range per clap validiert
statt clamp, JSON-Escaping im hidpp-battery-waybar.sh, udev auf uaccess
umgestellt. 52 Tests grün.
2026-03-28 00:37:36 +01:00
05d138e922 chore: makepkg Build-Artefakte in .gitignore 2026-03-27 23:49:10 +01:00
186a65ee86 fix: Waybar-Wrapper gibt immer Output aus
Fallback-JSON wenn corsairctl fehlschlägt oder Cache leer ist.
flock -w 5 statt -n damit der zweite Prozess wartet statt
sofort aufzugeben. Atomares mv statt direktem Schreiben in Cache.
2026-03-27 23:46:19 +01:00
95802c5d37 feat: Waybar-Wrapper mit File-Locking und Cache
Waybar startet pro Monitor eine eigene corsairctl-Instanz.
Mehrere Prozesse auf demselben HID-Gerät verursachen Response-Mixups.
Der Wrapper cached den JSON-Output für 10s und nutzt flock
damit nur ein Prozess gleichzeitig das Gerät anspricht.
2026-03-27 23:41:08 +01:00
dd410de49d fix: Flush vor jeder Property-Query gegen Response-Mixups
Der HID-Puffer kann veraltete Antworten von vorherigen Queries
enthalten. Flush vor jedem send_recv stellt sicher, dass wir
die Antwort auf unsere aktuelle Anfrage lesen.
2026-03-27 23:33:04 +01:00
f3a4bf82a8 fix: 5ms Sleep vor HID-Read gegen Response-Mixups
Komplett ohne Sleep kam es sporadisch zu vertauschten Antworten
(267% Batterie = PID-Response statt Battery-Response). 5ms reicht
als Verarbeitungszeit für das Gerät, ist aber 10x schneller als
die ursprünglichen 50ms aus der Python-Referenz.
2026-03-27 23:27:50 +01:00
348b7c95e5 fix: hidapi auf linux-shared-hidraw Backend für Arch Linux
Das Default-Feature (linux-static-hidraw) linkt statisch gegen
gebundelte hidapi-Quellen. Arch stellt libhidapi-hidraw.so als
Shared Library bereit — linux-shared-hidraw linkt dagegen.
2026-03-27 23:19:39 +01:00
4cf4ff217f feat: PKGBUILD für Arch Linux hinzugefügt
Installiert Binary nach /usr/bin/ und udev-Regel nach
/usr/lib/udev/rules.d/. Dependencies: hidapi, alsa-lib.
2026-03-27 23:16:53 +01:00
87e4566315 docs: Waybar-Integrations-Beispiel mit Config und Styling 2026-03-27 23:15:13 +01:00
a9d526023d fix: Audit-Findings behoben (Perf, Security, Quality)
- Sleep vor HID-Reads entfernt — read_timeout reicht als
  Synchronisation, spart ~300ms pro Aufruf
- udev-Regel: MODE 0660 + GROUP plugdev statt world-writable 0666
- Eigener CorsairError::SidetoneNotFound für fehlende ALSA-Controls
- Response-Validierung vorbereitet (parse_response_validated),
  Korrelation noch deaktiviert da Response-Format andere Endpoint-IDs
  nutzt als das Request-Format (0x00/0x01 vs 0x08/0x09)
- Protokoll-Doku zum Response-Format korrigiert
- 18 neue Tests für output.rs (Waybar-JSON Formatierung + Grenzwerte)
2026-03-27 23:11:50 +01:00
488c4c2631 fix: BatteryStatus-Mapping empirisch korrigiert
Byte-Zuordnung am echten HS80 verifiziert (Kabel ein/aus):
  0x01 = Charging, 0x02 = Discharging, 0x03 = Low, 0x04 = Full
Weicht vom ckb-next-Mapping ab. Verbose-Flag zeigt jetzt auch
Property-Queries für weitere Diagnose.
2026-03-27 22:16:50 +01:00
812d14b81a fix: Device-Discovery und Sidetone gegen echte Hardware korrigiert
- PID-Filter in find_and_open(), damit nicht die Harpoon-Maus statt
  dem HS80 geöffnet wird
- ALSA Sidetone: Card-Suche über Sidetone-Control statt Kartenname
  (war abgeschnitten zu "Gamin")
- Verbose-Flag (-v) für Debug-Output der Init-Sequenz
2026-03-27 22:10:40 +01:00
c5f8625345 feat: initiale Implementierung von corsairctl
Rust CLI-Tool für Corsair Bragi-Geräte (HS80 RGB Wireless, etc.).
Implementiert Protokoll-Kern, HID-Kommunikation, BragiDevice mit
RAII-Lifecycle, CLI-Subcommands (battery, sidetone, led, info, json,
udev), ALSA-Sidetone-Steuerung und Waybar-JSON-Output.

24 Unit-Tests für Packet-Bau, Response-Parsing und Property-Enums.
2026-03-27 17:34:37 +01:00