v0.2.0
Homelable for Home Assistant — v0.2.0
The "scans actually find services on every install" release.
✨ The change
Phase 2 service detection now runs through a pure-Python TCP connect scan. The nmap path is gone.
Why: diagnostic logging in v0.1.3 confirmed that on HA OS, python-nmap would call the binary, the binary would run, and nm.all_hosts() would come back empty for every host — so every discovered device landed in the pending list with zero services. Even users with a working nmap binary in the container hit this. Switching scanning backends fixes it deterministically.
What you gain:
- Service detection works on every install — HA OS, Container, Core, dev container, doesn't matter.
- No external binary, no XML parsing, no root requirement, no capability headaches.
- Faster startup (no
shutil.which("nmap")probe, no python-nmap import).
What you lose:
- nmap's
-sVversion probe (replaced byHEADprobe + passive banner grab on connect — different but functional). - nmap OS detection (which only worked as root, which HA never runs as, so in practice: nothing).
The pending-list shape, the WS event protocol, the streaming UX — all unchanged.
🧰 Internal
- Removed:
_nmap_scan_single,_extract_os,_mock_scan,_NMAP_*flags, mode-detection log,python-nmaprequirement. - Renamed:
_nmap_scan→_scan_target. discovery_sourcevalue:tcp(wasnmap).- 93/93 backend tests, 767/767 frontend tests, ruff clean. ~150 lines deleted, ~50 added.
Install / upgrade
HACS → Homelable → Redownload → pick 0.2.0 → restart Home Assistant. Run a scan; services should populate live as each host enriches.
If you've been on v0.1.3+ with the [trace] debug logs, those are gone too — back to a clean log.