v1.5.1 — LAN RCP READ fix + coverage & CI hardening
v1.5.1 — LAN RCP READ fix + coverage & CI hardening
Bug fix
_fetch_rcp_lan(LAN RCP READ) never worked. The helper usedaiohttp.DigestAuth, which does not exist — aiohttp exposes onlyDigestAuthMiddleware, never a publicDigestAuthclass. The call raisedAttributeErroron every invocation; a broadexceptswallowed it and returnedNone. The two tools that depend on this path —bosch_camera_onvif_scopes(RCP0x0a98) andbosch_camera_rcp_version(0xff00/0xff04) — therefore always failed with a misleading "camera may be offline or credentials invalid" error, even on a reachable camera with valid LAN credentials. Now useshttpx.DigestAuth, mirroring the workinglan_rcp.pymodule. Unusedaiohttp/sslimports dropped.- Bug was MCP-only: the Python CLI (
requests.HTTPDigestAuth) and Home Assistant integration (urllib HTTPDigestAuthHandler) were already correct.
Internal
- Test coverage 83% → 98% (335 → 461 tests):
cli_bridge67→93,server88→99,lan_rcp77→99,resources80→97,maintenance97→100. - Two
_fetch_rcp_lantests were mockingaiohttp.ClientSession— a path the helper never reached — and only passed because of the bug; rewritten to mockhttpx.AsyncClient. - Test fixtures sanitized: real device identifiers replaced with fake values (RFC-5737
192.0.2.x,aa:bb:ccMACs,AABBCCDD-…UUIDs). - CI bumped to Node-24-native action majors (
checkoutv6,setup-pythonv6,upload/download-artifactv7/v8) ahead of GitHub's 2026-06-16 cutover.
No API or tool-surface changes — 20 tools, 3 resources, 2 prompts, same as v1.5.0.