Entfernt den Windows-only-Guard in App.__init__, damit der Dialog mit
indeterminatem ttk.Progressbar auch unter Linux erscheint, wenn das Laden
länger als 500 ms dauert. Ersetzt das literale \u2026 im Label durch das
Zeichen … und passt Spec/Plan an den tatsächlichen Umsetzungsstand an
(Timeout-basierter Wartebalken statt tqdm-Monkey-Patch, da die Xet-Engine
Python-tqdm bypasst).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Beim Ersetzen des Media-Controllers (z. B. wenn der User die
Checkbox deaktiviert) wurden ggf. noch pausierte Player nicht mehr
fortgesetzt. Jetzt wird resume() auf dem alten Controller aufgerufen,
bevor er ersetzt wird.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
run() wartete auf den Hotkey-Task direkt; beim Neustart des Listeners
wurde dieser Task beendet und run() kehrte zurück. Jetzt wartet run()
auf ein asyncio.Event (_quit_event), das nur durch _quit() gesetzt wird.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>