- passive probes (new `static passive = true` device metadata): a pure
listener never drives an input and claims no pad, so it may clamp onto
ANY GPIO - including pads other devices own (an LED, an I2C pair, a
MAX7219 bus) and other analyzers. The runtime's pin-conflict check and
the wired-AND arbitration skip passive pads; the panel's usedPins
ignores them, so other devices' pickers never show them as "in use";
the analyzer's channel grid never disables a GPIO (pads owned elsewhere
get a dashed "shared" hint). Replaces the analyzer's sharedBus flag.
- trigger on any GPIO: trigCh (channel index) becomes trigPin (GPIO
number) - the trigger pad gets its own subscription and need not be an
analysed channel (off-channel triggers land in no lane, channel levels
still snapshot at capture start). The window dropdown lists every valid
GPIO. Tooltip documents the gpio_state visibility caveat: a trigger
fires only when the FIRMWARE drives the pad - pure-input pads (driven
by our button devices) never toggle the output registers.
- window cap lifted 1 s -> 1 h of guest time (was a conservative guard;
dense signals still freeze earlier at the 20 000-edge buffer with the
buffer-full note - the natural limit, since Saleae streams into host
RAM while we capture into a fixed buffer).
- tests: runtime-level passive sharing (probe onto an LED pad + I2C pair
+ second probe, zero conflicts), off-channel trigger, 1 h clamp,
trigger cases migrated to trigPin; device bumped to 1.1.0; GUI checked
(shared chip clickable, 23 trigger options, 5000 ms window accepted).
- docs (both languages): CHANGELOG 0.11.0 + device version table,
DEVICE-API passive metadata + instrument section, README capability
row, ROADMAP probe-freedoms bullet, AGENT rule 3.11; version synced to
0.11.0.