# glasswatch — Changelog

## v1.0.1 — 2026-06-22

- Add `--full` extended-help flag per SUITE_STANDARDS.md §3.

## v1.0.0 — 2026-06-14

Initial release.

- Two subcommands: `scan` (passive BLE listen + table/JSON output),
  `list-ids` (print catalogue).
- Catalogue of 4 Bluetooth SIG company IDs: `0x01AB`
  (Meta/Oculus, `possible`), `0x058E` (Meta, `likely`), `0x0D53`
  (EssilorLuxottica, `likely`), `0x03C2` (Snap, `likely`).
- Device-name substring heuristics: `rayban`, `ray-ban`, `ray ban`,
  `spectacles`, `meta glass`, `meta glasses`, `meta ai glass`,
  `oakley meta`.
- Severity grading: `low | medium | high | none`, default scan emits
  `low` and above.
- BLE backend: `btleplug` on Linux/BlueZ via D-Bus (passive scan only;
  no transmit).
- Output: human table (ANSI-coloured by severity in a TTY) or JSON Lines.
- Filters: `--duration` (0 = until Ctrl-C), `--min-severity`,
  `--min-rssi`, `--include-unmatched`.
- Ethical warnings printed at start of every scan and embedded in
  `--help`: false positives are likely, do not harass anyone.
- Mandatory tagline footer on every `--help` and successful run:
  `[ glasswatch ] ─ an independent project by johlem.net`.
- 24 unit tests; zero compiler warnings.
- Clean-room Rust implementation; catalogue choice borrowed (as
  factual data) from the AGPLv3 `yj_nearbyglasses` project.

Out of scope for v1.0 (future): audible alert / desktop notification on
high-severity hits, persistent log file, direction estimate via signal
strength gradient, RSSI smoothing for proximity classification, ANY
active probing (mediagrab is the only tool in the suite that may emit
on the air).
