Commits
Click on a commit to change the comparison rangefeat(manager): add AUTO scanning mode with on-demand active windows fix(auto): address review feedback on scheduler and HaScanner stop perf(auto): cythonize AutoScanScheduler so on_advertisement is a C call perf(auto): annotate on_advertisement locals and cdef _matches feat(manager): replace BleakCallback kwargs with async_register_active_scan refactor(auto): drop service_uuid, simplify to address-only API fix(auto): detect ACTIVE fallback to PASSIVE in async_request_active_window fix(auto): back off failed sweeps and hoist reschedule out of hot loop refactor(auto): tighten cold paths and close active-window state races refactor(auto): 12h sweep interval, 15s duration, 10min initial delay refactor(auto): one persistent worker task per scanner instead of per-dispatch fix(auto): break circular cimport triangle that broke macOS CI refactor(auto): restore typed BaseHaScanner cimport in scheduler pxd fix(auto): re-drop BaseHaScanner cimport to break 3-way cycle on macOS fix(manager): drop AutoScanScheduler cimport to settle macOS Cython init fix(auto): restore cimport via mutual cycle to recover hot-path dispatch fix(auto): drop the BluetoothManager cimport from auto_scheduler.pxd docs(auto): trim verbose comments and docstrings perf(manager): keep typed on_advertisement dispatch via cython.locals cast test(auto): cover new AUTO scheduler / scanner code paths test(auto): drive auto_scheduler coverage to 100% and expand coalesce cases test(scanner): cover BaseHaScanner default + HaScanner end-window edge cases feat(auto): add is_tracking, mark_due, mark_sweep_due, async_tick APIs Revert "feat(auto): add is_tracking, mark_due, mark_sweep_due, async_tick APIs" refactor(auto): use manager public accessors instead of _all_history/_sources refactor(auto): pass manager directly into _ScannerWorker refactor(auto): drop the global sweep lock and stagger first sweeps fix(auto): advance next-due before the window await to close owner-flip race fix(scanner): skip restart in async_request_active_window if still ACTIVE feat(manager): default scan_interval/scan_duration on async_register_active_scan feat(manager): bump DEFAULT_ACTIVE_SCAN_INTERVAL to 5 minutes Merge branch 'main' into auto-scan-mode docs(auto): note _next_event_at O(M) cost is intentional at HA scale Merge branch 'main' into auto-scan-mode fix(auto): wake new owner's worker when a device migrates between scanners docs(auto): update scheduler diagram and add a Migration section docs(auto): clean up stale comments and tighten edge cases fix(auto): only wake the owner's worker when add_request actually inserts fix(auto): address bot suggestions on slots, stagger, and timer drift test(scanner): lock in active-window timer drift fix fix(auto): measure scan_interval between window starts, not after window end fix(scanner): cancel pending timer in _arm_active_window_timer, deflake test fix(scanner): AUTO mode passive args + spurious fallback warning + doc fix fix(auto): normalize address case and skip seed-then-prune kick-start fix(auto): post-merge review polish fix(auto): post-review polish - reset failure flag, restore eager import fix(auto): drop stale 'added' local from add_request pxd declaration fix(auto): make AutoScanScheduler.start() truly idempotent test(auto): cover all branches of start() replay loop fix(auto): deflake replay test, document scan_duration clamp, guard add_scanner fix(auto): prune orphan _needs on remove_scanner, reject empty address fix(scanner): clear _scan_mode_override on any restart error, not just ScannerStartError fix(auto): reject non-finite scan_interval/scan_duration revert(auto): drop per-tick isfinite check in _coalesce_duration fix(auto): tighten ActiveScanRequest.scan_duration to non-Optional docs(auto): trim verbose docstrings and address macOS-UUID correctness perf(scanner): toggle scanning_mode in-place across active-window cycle test(auto): deflake first-sweep stagger assertion refactor(scanner): extract _effective_mode() helper fix(scanner): apply shrink-prevention guard to the still-ACTIVE locked branch refactor(scanner): rename active-window entry helpers docs: trim verbose docstrings again refactor: DRY up active-window helpers fix(auto): cover sync-phase _tick errors, scanning flag on toggle fail, stale docstring fix(auto): guard private bleak attr, clear stale needs, validate duration; split stray test