Avatar for the Bluetooth-Devices user
Bluetooth-Devices
habluetooth
BlogDocsChangelog

feat(manager): add AUTO scanning mode with on-demand active windows

#448Merged
Comparing
auto-scan-mode
(
5f009c7
) with
main
(
7d7cc00
)
CodSpeed Performance Gauge
-2%
Untouched
16
Ignored
2
Skipped
5

Benchmarks

23 total
test_inject_100_different_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
220.9 µs231.2 µs
test_inject_100_rotating_manufacturer_data
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
230.9 µs241.4 µs
test_inject_100_raw_unchanged_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
152.8 µs159.7 µs
test_inject_100_different_manufacturer_data
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
317.7 µs331.6 µs
test_inject_100_simple_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
201.6 µs210 µs
test_inject_100_different_service_data
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-4%
218.5 µs227.3 µs
test_inject_100_complex_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-3%
185.2 µs191.2 µs
test_inject_100_bleak_unchanged_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-3%
445.5 µs457.4 µs
test_inject_100_bluez_raw_end_to_end_unchanged
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-2%
325.5 µs332.8 µs
test_inject_100_bluez_raw_end_to_end_changed
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-2%
575.9 µs587.1 µs
test_inject_100_bleak_changed_advertisements
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
-1%
464.5 µs471.2 µs
test_seed_name_cache_steady_state_identity
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
0%
342.9 µs342.8 µs
test_seed_name_cache_steady_state_equality
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
0%
385.1 µs385 µs
test_seed_name_cache_address_fallback
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
0%
349.8 µs349.8 µs
test_seed_name_cache_cold_first_name
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
0%
760.3 µs760.3 µs
test_seed_name_cache_prefix_rule_paths
tests/test_benchmark_base_scanner.py
CodSpeed Performance Gauge
0%
2.2 ms2.2 ms
test_filter_unwanted_apple_advs
tests/test_benchmark_base_scanner.py
Ignored
CodSpeed Performance Gauge
0%
151.9 µs152.3 µs
test_filter_wanted_apple_advs
tests/test_benchmark_base_scanner.py
Ignored
CodSpeed Performance Gauge
-4%
195.8 µs203.6 µs
test_update_name_cache_steady_state_equality
tests/test_benchmark_base_scanner.py
Skipped
385 µs*
test_update_name_cache_steady_state_identity
tests/test_benchmark_base_scanner.py
Skipped
342.7 µs*
test_update_name_cache_address_fallback
tests/test_benchmark_base_scanner.py
Skipped
349.8 µs*
test_update_name_cache_cold_first_name
tests/test_benchmark_base_scanner.py
Skipped
760.2 µs*
test_update_name_cache_prefix_rule_paths
tests/test_benchmark_base_scanner.py
Skipped
2.2 ms*

Commits

Click on a commit to change the comparison range
Base
main
7d7cc00
-15.67%
feat(manager): add AUTO scanning mode with on-demand active windows
0ed1602
3 months ago
by bdraco
+2.54%
fix(auto): address review feedback on scheduler and HaScanner stop
d71c8ef
3 months ago
by bdraco
+12.35%
perf(auto): cythonize AutoScanScheduler so on_advertisement is a C call
cfec48f
3 months ago
by bdraco
+0.06%
perf(auto): annotate on_advertisement locals and cdef _matches
6c0f3a0
3 months ago
by bdraco
-0.01%
feat(manager): replace BleakCallback kwargs with async_register_active_scan
7ab17b8
3 months ago
by bdraco
+0.17%
refactor(auto): drop service_uuid, simplify to address-only API
7797260
3 months ago
by bdraco
-5%
fix(auto): detect ACTIVE fallback to PASSIVE in async_request_active_window
d54f0b4
3 months ago
by bdraco
+0.28%
fix(auto): back off failed sweeps and hoist reschedule out of hot loop
4d3f3ba
3 months ago
by bdraco
+4.58%
refactor(auto): tighten cold paths and close active-window state races
056e2d1
3 months ago
by bdraco
+0.13%
refactor(auto): 12h sweep interval, 15s duration, 10min initial delay
b4e25aa
3 months ago
by bdraco
-0.05%
refactor(auto): one persistent worker task per scanner instead of per-dispatch
68b6515
3 months ago
by bdraco
+0.01%
fix(auto): break circular cimport triangle that broke macOS CI
e055ce5
3 months ago
by bdraco
-0.19%
refactor(auto): restore typed BaseHaScanner cimport in scheduler pxd
0eb280c
3 months ago
by bdraco
+0.04%
fix(auto): re-drop BaseHaScanner cimport to break 3-way cycle on macOS
3540555
3 months ago
by bdraco
-7.48%
fix(manager): drop AutoScanScheduler cimport to settle macOS Cython init
251518c
3 months ago
by bdraco
+7.54%
fix(auto): restore cimport via mutual cycle to recover hot-path dispatch
8c6f1cf
3 months ago
by bdraco
-0.24%
fix(auto): drop the BluetoothManager cimport from auto_scheduler.pxd
fc21c43
3 months ago
by bdraco
+0.14%
docs(auto): trim verbose comments and docstrings
1d2c995
3 months ago
by bdraco
+0.29%
perf(manager): keep typed on_advertisement dispatch via cython.locals cast
da771a0
3 months ago
by bdraco
-0.13%
test(auto): cover new AUTO scheduler / scanner code paths
4e467b9
3 months ago
by bdraco
+10.52%
test(auto): drive auto_scheduler coverage to 100% and expand coalesce cases
ee07cf2
3 months ago
by bdraco
-10.52%
test(scanner): cover BaseHaScanner default + HaScanner end-window edge cases
d419a9b
3 months ago
by bdraco
-0.03%
feat(auto): add is_tracking, mark_due, mark_sweep_due, async_tick APIs
9069dc9
3 months ago
by bdraco
+10.25%
Revert "feat(auto): add is_tracking, mark_due, mark_sweep_due, async_tick APIs"
d95c599
3 months ago
by bdraco
-10.24%
refactor(auto): use manager public accessors instead of _all_history/_sources
491cc94
3 months ago
by bdraco
+10.2%
refactor(auto): pass manager directly into _ScannerWorker
95a95ec
3 months ago
by bdraco
-14.59%
refactor(auto): drop the global sweep lock and stagger first sweeps
5e7cee6
3 months ago
by bdraco
+4.4%
fix(auto): advance next-due before the window await to close owner-flip race
4531049
3 months ago
by bdraco
-0.07%
fix(scanner): skip restart in async_request_active_window if still ACTIVE
2c2a58e
3 months ago
by bdraco
+0.12%
feat(manager): default scan_interval/scan_duration on async_register_active_scan
afeecef
3 months ago
by bdraco
+0.03%
feat(manager): bump DEFAULT_ACTIVE_SCAN_INTERVAL to 5 minutes
06ef79a
3 months ago
by bdraco
-4.82%
Merge branch 'main' into auto-scan-mode
c421373
3 months ago
by bdraco
+4.65%
docs(auto): note _next_event_at O(M) cost is intentional at HA scale
dd1520e
3 months ago
by bdraco
-0.01%
Merge branch 'main' into auto-scan-mode
84e1e06
3 months ago
by bdraco
-1.34%
fix(auto): wake new owner's worker when a device migrates between scanners
2c57faf
3 months ago
by bdraco
-0.24%
docs(auto): update scheduler diagram and add a Migration section
7428a88
3 months ago
by bdraco
+0.24%
docs(auto): clean up stale comments and tighten edge cases
472d953
3 months ago
by bdraco
-0.06%
fix(auto): only wake the owner's worker when add_request actually inserts
4636739
3 months ago
by bdraco
+7.8%
fix(auto): address bot suggestions on slots, stagger, and timer drift
cf00c17
3 months ago
by bdraco
-8.04%
test(scanner): lock in active-window timer drift fix
06c91a4
3 months ago
by bdraco
+0.03%
fix(auto): measure scan_interval between window starts, not after window end
23ab2df
3 months ago
by bdraco
+0.07%
fix(scanner): cancel pending timer in _arm_active_window_timer, deflake test
64e1e6c
3 months ago
by bdraco
-0.05%
fix(scanner): AUTO mode passive args + spurious fallback warning + doc fix
ffddf59
3 months ago
by bdraco
+0.22%
fix(auto): normalize address case and skip seed-then-prune kick-start
21b69eb
3 months ago
by bdraco
+8.16%
fix(auto): post-merge review polish
7d71e83
3 months ago
by bdraco
-8.31%
fix(auto): post-review polish - reset failure flag, restore eager import
719d92c
3 months ago
by bdraco
+0.44%
fix(auto): drop stale 'added' local from add_request pxd declaration
e8ccd76
3 months ago
by bdraco
-0.34%
fix(auto): make AutoScanScheduler.start() truly idempotent
5d127bc
3 months ago
by bdraco
-0.07%
test(auto): cover all branches of start() replay loop
3a5f9ad
3 months ago
by bdraco
-0.09%
fix(auto): deflake replay test, document scan_duration clamp, guard add_scanner
b70e8cf
3 months ago
by bdraco
+7.37%
fix(auto): prune orphan _needs on remove_scanner, reject empty address
8ef7014
3 months ago
by bdraco
-6.93%
fix(scanner): clear _scan_mode_override on any restart error, not just ScannerStartError
f26dbdc
3 months ago
by bdraco
-0.32%
fix(auto): reject non-finite scan_interval/scan_duration
da66e9c
3 months ago
by bdraco
-0.13%
revert(auto): drop per-tick isfinite check in _coalesce_duration
522181a
3 months ago
by bdraco
0%
fix(auto): tighten ActiveScanRequest.scan_duration to non-Optional
7f4aeac
3 months ago
by bdraco
+0.23%
docs(auto): trim verbose docstrings and address macOS-UUID correctness
17da0ca
3 months ago
by bdraco
-0.02%
perf(scanner): toggle scanning_mode in-place across active-window cycle
31677b3
3 months ago
by bdraco
+0.05%
test(auto): deflake first-sweep stagger assertion
67efc9b
3 months ago
by bdraco
-0.07%
refactor(scanner): extract _effective_mode() helper
04d4ff9
3 months ago
by bdraco
-0.19%
fix(scanner): apply shrink-prevention guard to the still-ACTIVE locked branch
960e426
3 months ago
by bdraco
+0.13%
refactor(scanner): rename active-window entry helpers
e74f49d
3 months ago
by bdraco
-0.03%
docs: trim verbose docstrings again
c3e93c5
3 months ago
by bdraco
-0.17%
refactor: DRY up active-window helpers
b44664b
3 months ago
by bdraco
+0.23%
fix(auto): cover sync-phase _tick errors, scanning flag on toggle fail, stale docstring
cf55c0b
3 months ago
by bdraco
-0.13%
fix(auto): guard private bleak attr, clear stale needs, validate duration; split stray test
5f009c7
3 months ago
by bdraco
© 2026 CodSpeed Technology
Home Terms Privacy Docs