Skip to content

Ghostfox 0.9.1 β€” the hearing + smell release

Choose a tag to compare

@autokeren autokeren released this 03 Oct 22:20
· 31 commits to main since this release

67 tools. M3 AccEvent stream + M3.5 smell complete the senses.

M3 hearing β€” the a11y tree as a stream

  • page_a11y_events: compacted records from the engine's own accessible-event topic β€” focus moves, text inserted/removed (with modifiedText + offset), name/value/state changes, caret moves, live-region announcements. The incremental diff; no more full-tree re-walks. clear=true drains the buffer.

M3.5 smell β€” paint & timing sense

  • page_frame_stats: the jank detector β€” rAF frame-cadence stats from the privileged frame script (avg/p50/p95/p99/max delta, jankyFrames, throttledFrames). Clean page β‰ˆ16.7ms; busy main thread = delta spikes.
  • page_timing_report: Navigation Timing (dnsMs/tlsMs/connectMs/ttfbMs/domInteractive/loadEvent) + paint entries.
  • page_wait_visual: refresh-driver visual stability β€” blocks until frames flow at normal cadence for quiet_ms; the sleep-killer.
  • netcap entries now carry per-request timing {dnsMs, tlsMs, connectMs, ttfbMs, rawTiming} from nsITimedChannel.

Fixed while wiring the streams

  • t.Object was never defined in the Juggler protocol validator β€” every free-form-object tool (page_proprio, page_cookie_events, the new streams) threw ILLDEFINED SCHEME. Defined now.
  • Page.getProprioState returned the bare state instead of the declared {state} shape.
  • nsITimedChannel phases are epoch microseconds β€” timing math was 1000x off; converted to ms, unavailable phases nulled.
  • timing enrichment now runs in the primary page-open netcap listener too.

Plus everything from the 0.9.1 changelog (network interception broker, page_captcha_vision, identity_morph, HTTP transport, page_a11y_set_text, page_proprio, page_cookie_events, session_vitals).