Commit Graph

1311 Commits

Author SHA1 Message Date
Yanzhen Yu
cf54d7dab5 Release 0.6.5 2026-04-01 12:00:00 +08:00
Yanzhen Yu
6651877af9 Release 0.9.3 2026-04-01 12:00:00 +08:00
Yanzhen Yu
08bee23494 fix absolute to doc 2026-04-01 12:00:00 +08:00
Yanzhen Yu
9b097ad030 close #322 hook select element selectedIndex property 2026-04-01 12:00:00 +08:00
Yanzhen Yu
2ced819b40 Release 0.6.4 2026-04-01 12:00:00 +08:00
Yanzhen Yu
2501993f07 close #336 add pointer-events: null to mouse tail wrapper 2026-04-01 12:00:00 +08:00
Yanzhen Yu
286475f1c3 Release 0.6.3 2026-04-01 12:00:00 +08:00
Yanzhen Yu
3c7e28b951 update #324, fix typo 2026-04-01 12:00:00 +08:00
Yanzhen Yu
7cb33bfe80 fix css url regexp 2026-04-01 12:00:00 +08:00
Yanzhen Yu
11af001514 close #342 send SET_SPEED event when setConfig 2026-04-01 12:00:00 +08:00
Yanzhen Yu
188fe68081 Release 0.6.2 2026-04-01 12:00:00 +08:00
Yanzhen Yu
07d661f3a2 Release 0.9.2 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c936cb6626 absolute relative path in inline stylesheet 2026-04-01 12:00:00 +08:00
Yanzhen Yu
8f3ea2b76a close #330 implement more accurate finish event 2026-04-01 12:00:00 +08:00
Yanzhen Yu
25c1e4ef69 update bundle format and add sourcemap 2026-04-01 12:00:00 +08:00
Yanzhen Yu
048aadaec5 close #51 add mouse tail feature 2026-04-01 12:00:00 +08:00
Yanzhen Yu
f60f1d494f Release 0.6.1 2026-04-01 12:00:00 +08:00
Yanzhen Yu
867ba85049 hide iframe before first meta event 2026-04-01 12:00:00 +08:00
Yanzhen Yu
0f6d790a86 update bundle config 2026-04-01 12:00:00 +08:00
Yanzhen Yu
6ba84ee5d0 Release 0.9.1 2026-04-01 12:00:00 +08:00
Yanzhen Yu
6db067e2ea bump 0.6.0 2026-04-01 12:00:00 +08:00
Yanzhen Yu
f83f4e7b13 close #161 support "addEvent" in any state 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e9786e7596 check is svg when serialization 2026-04-01 12:00:00 +08:00
Yanzhen Yu
cd5720644f close #300 upgrade rrweb-snapshot 2026-04-01 12:00:00 +08:00
Yanzhen Yu
544ef0b3a3 bump 0.5.6 2026-04-01 12:00:00 +08:00
Yanzhen Yu
51863e9ce8 close #215 catch delete rule errors 2026-04-01 12:00:00 +08:00
Yanzhen Yu
2065e00c5d Fix the regexp performance issue
Also move the addHoverClass implementation into the rebuild stage.
So if there is still some corner case we have not handled, it will
only affect the replayer part of rrweb.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
dc782096cb close #319 handle undefined nextId
Looks like some serializer will omit field with null value, so we
do some checks in the replayer to avoid of dead loop.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
de8dc60b5e departed 0.5.4 and bump 0.5.5 2026-04-01 12:00:00 +08:00
Yanzhen Yu
0dff4e13fa close #320 use emitter handler to catch before load state 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e67ff9730a bump 0.5.4 2026-04-01 12:00:00 +08:00
Yanzhen Yu
4bf7bb9bb1 close #303 use a fork version of smooth scroll polyfill
The forked version support customize target window and document,
so we can polyfill it to the iframe.
2026-04-01 12:00:00 +08:00
Yanzhen Yu
efcbd0faf1 add hover class to :hover related css rules 2026-04-01 12:00:00 +08:00
Yanzhen Yu
04a5dfceef catch unexpected errors during replay media interactions 2026-04-01 12:00:00 +08:00
Yanzhen Yu
23eee58853 bump 0.5.3 2026-04-01 12:00:00 +08:00
Justin Halsall
1cec65f565 Only trigger waitForStylesheetLoad if not seeking (#326) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
b964d18ef7 allow skip child when serialize node and rebuild node 2026-04-01 12:00:00 +08:00
Justin Halsall
d15f4ce8ff Update lastPlayedEvent in live mode (#327)
* Update lastPlayedEvent in live mode

* tricking travis-ci into running again
2026-04-01 12:00:00 +08:00
Yanzhen Yu
9ff0ab9451 remove local test code 2026-04-01 12:00:00 +08:00
Justin Halsall
6ebfe69363 Fix live mode (#310)
* add failing test

* paused -> live now possible
2026-04-01 12:00:00 +08:00
Yanzhen Yu
6e786f0101 bump 0.5.2 2026-04-01 12:00:00 +08:00
yz-yu
6fad7f642c record canvas mutations (#296)
* record canvas mutations

close #60, #261

This patch implements the canvas mutation observer.
It consists of both the record and the replay side changes.

In the record side, we add a `recordCanvas` flag to indicate
whether to record canvas elements and the flag defaults to false.
Different from our other observers, the canvas observer was
disabled by default. Because some applications with heavy canvas
usage may emit a lot of data as canvas changed, especially the
scenarios that use a lot of `drawImage` API.
So the behavior should be audited by users and only record canvas
when the flag was set to true.

In the replay side, we add a `UNSAFE_replayCanvas` flag to indicate
whether to replay canvas mutations.
Similar to the `recordCanvas` flag, `UNSAFE_replayCanvas` defaults
to false. But unlike the record canvas implementation is stable and
safe, the replay canvas implementation is UNSAFE.
It's unsafe because we need to add `allow-scripts` to the replay
sandbox, which may cause some unexpected script execution. Currently,
users should be aware of this implementation detail and enable this
feature carefully.

* update canvas integration test
2026-04-01 12:00:00 +08:00
Yanzhen Yu
9a4c21c30f refactor rebuild implementation which mount DOM onto the target document object 2026-04-01 12:00:00 +08:00
Justin Halsall
4206203036 Add regression tests and pause(timeOffset) test (#288)
* increase timeout from 2 (default to 10 seconds

* add regression tests for playing multiple times

* add pause at tests
2026-04-01 12:00:00 +08:00
Yanzhen Yu
19eca4da6d use document object from params instead of the one in the current scope 2026-04-01 12:00:00 +08:00
yz-yu
6de74d7bca close #280. Improve the performance of the DOM mutation observer. (#284)
This issue was originally reported in #280 but may also relate
to #167 and other potential performance issues in the recording.

In #206 I implemented the new mutation observer which will defer
the serialization of DOM, which helps us to have a consistent DOM
order for the replay.

In this implementation, we use an array to represent the `addQueue`.
Whenever we need to consume the queue, we will iterate it to make
sure there is no dead loop, and then shift the first item to see
whether it can be serialized at the new timing.

But this implementation may be very slow when there are a lot of newly
added DOM since it will do an O(n^2) iteration.

For example, if we have three newly added DOM `n1`, `n2`, `n3`,
the iteration looks like this:
```
[n1, n2, n3]
	n1 -> n2 -> n3, consume n3
[n1, n2]
	n1 -> n2, consume n2
[n1]
	n1, consume n1
```
We should have a better performance if te iteration looks like this:
```
[n1, n2, n3]
	n3, consume n3
[n1, n2]
	n2, consume n2
[n1]
	n1, consume n1
```

Simply reverse the mutation payload does not work, because it does
not always as same as the DOM order.

So in this patch, we replace the `addQueue` with a double linked list,
which can:
1. represent the DOM order in its data structure
2. has an O(1) time complexity when looking up the sibling of a list item
3. has an O(1) time complexity when removing a list item
2026-04-01 12:00:00 +08:00
Yanzhen Yu
349d78e02b fix style content url normalizer and add some tests 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e1c0631eeb Release 0.9.0 2026-04-01 12:00:00 +08:00
Yanzhen Yu
bbf23157c5 export reset id function 2026-04-01 12:00:00 +08:00
Yanzhen Yu
3acaeadb93 close #268 subscribe latest player state before resume 2026-04-01 12:00:00 +08:00