Skip to content

v1.5.1 — LAN RCP READ fix + coverage & CI hardening

Choose a tag to compare

@mosandlt mosandlt released this 03 Jun 06:39
· 10 commits to main since this release

v1.5.1 — LAN RCP READ fix + coverage & CI hardening

Bug fix

  • _fetch_rcp_lan (LAN RCP READ) never worked. The helper used aiohttp.DigestAuth, which does not exist — aiohttp exposes only DigestAuthMiddleware, never a public DigestAuth class. The call raised AttributeError on every invocation; a broad except swallowed it and returned None. The two tools that depend on this path — bosch_camera_onvif_scopes (RCP 0x0a98) and bosch_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 uses httpx.DigestAuth, mirroring the working lan_rcp.py module. Unused aiohttp / ssl imports 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_bridge 67→93, server 88→99, lan_rcp 77→99, resources 80→97, maintenance 97→100.
  • Two _fetch_rcp_lan tests were mocking aiohttp.ClientSession — a path the helper never reached — and only passed because of the bug; rewritten to mock httpx.AsyncClient.
  • Test fixtures sanitized: real device identifiers replaced with fake values (RFC-5737 192.0.2.x, aa:bb:cc MACs, AABBCCDD-… UUIDs).
  • CI bumped to Node-24-native action majors (checkout v6, setup-python v6, upload/download-artifact v7/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.