Wenn die Bridge eine tray_info_idx sendet (z.B. GFL99 für Bambu Lab PLA)
die kein kompatibler Preset für den aktiven Drucker hat, wird jetzt
trotzdem der Vendor+Type+Color-Match versucht statt direkt auf Generic
zurückzufallen.
Behebt: Bridge sendet GFL99 (Bambu-ID) für Slot mit vendor='Bambu Lab'
→ kein Kobra-X-kompatibler Preset für GFL99 → bisher Generic PLA
→ jetzt Vendor-Match → findet besten Bambu-Lab-PLA-Preset
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pass 1: kompatible + sichtbare Presets (wie bisher)
Pass 2 (neu): wenn Pass 1 leer → alle Base-Presets des Vendors + Typs
durchsuchen, unabhängig von is_compatible/is_visible.
Behebt: Elegoo PLA (@base, instantiation=false) und ähnliche Hersteller
die ein globales Base-Preset haben aber kein druckerspezifisches Profil
für den Kobra X → bisher immer "Generic PLA", jetzt "Elegoo PLA".
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
KX-Bridge sendet bereits konkrete Filament-IDs und Vendor-Hints im
AMS-JSON, aber MoonrakerPrinterAgent überschreibt sie unbedingt mit
filament_id_by_type() → erstes sichtbares Preset alphabetisch gewinnt.
Patch:
- AmsTrayData um filament_vendor erweitert
- Liest tray_info_idx + filament_vendor aus Bridge-JSON
- Wenn tray_info_idx leer + vendor vorhanden: Vendor+Type+Color-Match
(gleiche Logik wie SnapmakerPrinterAgent)
- Sonst: alter filament_id_by_type-Fallback (unverändertes Verhalten)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Happy Hare now writes mmu lane data to the moonraker db similar to AFC, so we can normalize to the one implementation. For now, i've just re-ordered it so that the moonraker db is checked first. I want this because I've actually updated the happy hare data to include more data than we had access to via the "mmu" object. For happy hare we now have access to vendor name, which we can eventually use to further fine tune the auto-matched filament preset.