blocfeed 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.19.0 — 2026-05-07
4
+
5
+ ### Signal accuracy fixes
6
+
7
+ - **rage-click** now emits a follow-up `final: true` event with the real total `click_count` after the click streak ends (default 1500 ms idle). Previously the count was capped at the threshold, so a 20-click rage looked identical to a 3-click rage. New `RageClickConfig.streakIdleMs` (default 1500).
8
+ - **dead-click** observation is now scoped to the click target's nearest interesting ancestor (button / a / form / [role=button]) instead of the entire document body. Unrelated re-renders elsewhere on the page no longer suppress real dead clicks.
9
+ - **httpFail** now catches fetch exceptions (network errors, CORS, abort) and emits with `event_data.http_status: 0` and `error_kind: "network" | "abort"`. Also adds `404, 408, 409, 429` to the default tracked status codes. New optional `treatJsonErrorAsFail` config to flag 2xx responses with `{ ok: false }` / `{ error }` / `{ success: false }` bodies.
10
+ - **formDataLoss** clears dirty state on `submit` and `reset` events, and suppresses bfcache emission for 60 s after a successful submit. Eliminates false "form abandonment" events on successful conversions.
11
+
12
+ ### Reliability fixes
13
+
14
+ - **Sampling consistency.** Behavioral and replay sampling now both use the same deterministic `simpleHash(session_id) % 100` decision. A sampled session is in both cohorts or neither — no more "signal exists but no replay" or vice-versa.
15
+ - **Replay restart after inactivity.** The 30-min inactivity timer now triggers a soft pause (uninstalls rrweb, keeps the controller alive). A one-shot pointerdown/keydown listener resumes recording when the user returns. The 4-hour absolute cap still terminates fully. New `pause_count` field appears in chunk POST bodies.
16
+
17
+ ### New: widget heartbeat
18
+
19
+ - New `installHeartbeat()` helper (auto-installed by `BehavioralTracker`) POSTs to `/api/heartbeat` every 5 minutes (and on pagehide) with `{ blocfeed_id, session_id, version, page_url, user_agent, sdk_features }`. Lets the dashboard surface a "last seen" indicator and detect silent SDK breakage.
20
+ - New exported constant `SDK_VERSION` from `blocfeed`.
21
+
22
+ ---
23
+
3
24
  ## 0.18.0 — 2026-04-30
4
25
 
5
26
  - **feat:** new `track(name, properties?, options?)` API on `BlocFeedApi` and exported as `BlocFeed.track()` for non-React usage. Send custom events to BlocFeed for funnels, conversion tracking, and segment filters.