@lightworkai.official/debug-capture 0.19.8 → 0.19.10

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/README.md CHANGED
@@ -146,10 +146,9 @@ replays exist to see exactly what happened:
146
146
  (passwords stay masked — that floor is rrweb's).
147
147
  - `recordCanvas: true` records what canvases show — a PDF viewer, a signature
148
148
  pad, a chart — as a WebP frame up to once a second whenever the picture
149
- changed, encoded in a worker. It is the one thing that can make a replay
150
- large: over `maxBytes`, the canvas frames are dropped first and the rest of
151
- the replay still goes (`context.replay.canvasDropped`). `{ fps, quality }`
152
- tunes it.
149
+ changed, encoded in a worker. Safari cannot make WebP and hands back PNG,
150
+ several times the size. It is the one thing that can make a replay large;
151
+ see the size cap below for what happens then. `{ fps, quality }` tunes it.
153
152
  - URLs in links and images go through the same redaction as the network log
154
153
  (`token`, `signature`, `code`, …), and nothing that could run travels:
155
154
  inline handlers (`on*`), `javascript:` URLs and `srcdoc` are dropped from
@@ -161,9 +160,26 @@ Whether an app records at all is the host's decision, made once in config.
161
160
 
162
161
  On the way out it is gzipped in the browser (about ten to one) and attached
163
162
  as `session-replay.json.gz`, its own file beside the screenshot and the
164
- bundle, capped at `maxBytes` (4 MB): a report always files, with or without
165
- its replay, and the ticket says which (`context.replay` — the length, or
166
- `omitted: "too-large" | "empty"`). The support host keeps replays for
163
+ bundle, capped at `maxBytes` (4 MB). Over the cap a report still carries a
164
+ recording, giving up the least it can, one step at a time until it fits:
165
+
166
+ 1. Safari's PNG canvas pictures are saved again as JPEG, the opaque ones
167
+ only (a transparent layer would play back as a solid box);
168
+ 2. canvas pictures are kept from the latest moment that fits, the earlier
169
+ ones left out (`canvasDropped`), then all of them;
170
+ 3. large pictures embedded in the page — a `data:` image, an inlined font —
171
+ are swapped for an empty one (`picturesDropped`);
172
+ 4. the oldest part goes: the recording is kept in stretches that each start
173
+ from a full picture of the page, and the newest that fit are sent
174
+ (`recordedSeconds`, the whole length);
175
+ 5. the latest stretch from its start, as far as fits (`endsEarlySeconds`,
176
+ how long before the report it stops);
177
+ 6. long text and styles are shortened (`simplified`).
178
+
179
+ The desk says under the player what was left out. Only a page whose one
180
+ picture is over the cap after all of that — millions of elements — goes
181
+ without (`omitted: "too-large"`); a host that records nothing sends
182
+ `omitted: "empty"`. The support host keeps replays for
167
183
  `REPLAY_RETENTION_DAYS` (30) and shows them to the desk only — never on the
168
184
  reporter's own ticket page, never through the MCP tools.
169
185
 
@@ -499,8 +515,9 @@ under it is not in the way. `chat: { avoid: false }` turns this off,
499
515
  also give a page its own place — hidden there, or a corner and a height — by
500
516
  its path (ปุ่มแชท › ตำแหน่งปุ่ม); a person who moved the button keeps their
501
517
  place, except where it is hidden. The bubble's look is the support desk's to set (0.19.5, its
502
- ปุ่มแชท settings page): its face, colour and words, read with the first answer;
503
- your own `label` in code still wins. A desk can turn the bubble off for every
518
+ ปุ่มแชท settings page): its face, colour and words, and its size (0.19.10:
519
+ 44–72 px, 56 until set — the panel and a call's card measured from it), read
520
+ with the first answer; your own `label` in code still wins. A desk can turn the bubble off for every
504
521
  host at once. `chat: { show: () => boolean }` decides per person or per page
505
522
  (asked before every read; call `refreshSupportChat()` after a sign-in). Your
506
523
  own button instead of ours: `openSupportChat()` /