Commit Graph

704 Commits

Author SHA1 Message Date
Mark-fenng
404309ba14 Merge branch 'rrweb-snapshot' into monorepo 2026-04-01 12:00:00 +08:00
Justin Halsall
7c2d04cbb5 add idRemoved to TreeIndex (#640) 2026-04-01 12:00:00 +08:00
Mark-fenng
392c4bd871 moved rrweb-snapshot into packages/rrweb-snapshot 2026-04-01 12:00:00 +08:00
Yanzhen Yu
88248459cb Release 1.0.2 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c208a40e8e Release 1.1.7 2026-04-01 12:00:00 +08:00
Yanzhen Yu
056e78af09 fix typings 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ec8473b5e4 ignore prefetch and preload script links
related to:
1. https://github.com/rrweb-io/rrweb/issues/52
2. https://github.com/rrweb-io/rrweb/issues/297
3. https://github.com/rrweb-io/rrweb/issues/597
2026-04-01 12:00:00 +08:00
Eoghan Murray
6f6c688058 Add more concrete "node not found" warnings (#620)
* Show whether a node was not found because it was never there, or because some other mutation already removed it

* Be more careful applying mutations as replay-stopping things can go wrong, e.g. node removal parent belongs to a different FullSnapshot and has e.g. a text nodeType

* Don't warn when a modified node has been removed in the same mutation - or the parent node for a removed node has been already removed
2026-04-01 12:00:00 +08:00
AssafKr
3c7aeb3b13 Handle quoted strings in data url (#84)
* handle quoted strings in data url

* unrefactor

* update package json

* Revert "update package json"

This reverts commit 9446109b0f94d9e569a961642f1e57b1a67793ee.

* change background-image to border-image
2026-04-01 12:00:00 +08:00
Yanzhen Yu
d144f29f71 upgrade rrweb-snapshot to 1.1.7
ignore prefetch and preload script links
close #52, #297, #597

Handle quoted strings in data url
2026-04-01 12:00:00 +08:00
Yanzhen Yu
d9133fd7ac Release 1.1.6 2026-04-01 12:00:00 +08:00
yz-yu
50998fae7f use prettier instead of node-libtidy (#638) 2026-04-01 12:00:00 +08:00
Justin Halsall
9fdd8cd2dc move maskInputValue to rrweb-snapshot (#83)
More info: https://github.com/rrweb-io/rrweb/pull/602#discussion_r660434998
2026-04-01 12:00:00 +08:00
Justin Halsall
599e07d9a3 yarn typings (#635) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
30f82a891b Release 1.1.5 2026-04-01 12:00:00 +08:00
Justin Halsall
fd76a7bcd8 Fixes to #628 to help it pass typescript's type checking (#634)
* My best interpretation of what the typings should look like after merge of #464

* Apply variable name changes as per Juice10 review

Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>

* fix types

Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
63cec44c10 format code 2026-04-01 12:00:00 +08:00
Justin Halsall
5de802912a Remove userTriggeredOnInput in player config (#633)
The flag is only used on record, not replay
2026-04-01 12:00:00 +08:00
bachmanity1
9110664ca2 add keepIframeSrcFn option (#81)
* add allowIframe option to snapshot

* rename allowIframe to keepIframeSrcFn
2026-04-01 12:00:00 +08:00
qun
6bdb40d711 Update index.zh_CN.md (#632)
wrongly written characters
2026-04-01 12:00:00 +08:00
Yun Feng
61074a2303 style(rebuild.ts snapshot.ts): format code 2026-04-01 12:00:00 +08:00
Justin Halsall
34ef34469a Add check-types to package.json (#627)
* Add type checking to ci

* Update @types/node to version 12

We are using node 12 on ci

* Add check-types to package.json
2026-04-01 12:00:00 +08:00
bachmanity1
5fbb459a8e fix media playback bug (#80) 2026-04-01 12:00:00 +08:00
Justin Halsall
a891d141d2 Add type checking to ci (#626)
* Add type checking to ci

* Update @types/node to version 12

We are using node 12 on ci
2026-04-01 12:00:00 +08:00
Yanzhen Yu
17b79ca210 Release 1.1.4 2026-04-01 12:00:00 +08:00
Eoghan Murray
afe6ec9dd1 Compact style mutation (#464)
* Don't store the full style attribute change, as small mutations to single style properties result in storage of a rewrite for the full style attribute, which may be very large.

Had an example of a website using http://schillmania.com/projects/snowstorm/ where many direct style changes were happening every second across many 'snowflake' elements, with each attribute change looking like:
"style":"color: rgb(255, 255, 255); position: absolute; width: 8px; height: 8px; font-family: arial, verdana; overflow: hidden; font-weight: normal; z-index: 0; display: block; bottom: auto; opacity: 1; padding: 0px; margin: 0px; font-size: 10px; line-height: 10px; text-align: center; vertical-align: baseline; left: 242.807px; top: 85.7332px;"
even though maybe just the left/top position had been changed

* More compact storage for the much more common attribute value without an `!important` flag - saves 6 chars per style attr in the json :)

* Fix bug: attributes weren't getting removed after changes to treatment of 'style' attributes
2026-04-01 12:00:00 +08:00
Lucky Feng
68b39c82c4 fix: "Uncaught TypeError: Cannot read property 'insertRule' of null" caused by CSP style-src (#79) 2026-04-01 12:00:00 +08:00
Justin Halsall
59b7a39ce1 Buffer modifications to virtual stylesheets (#618)
* Fix sheet insertion

Restore skip duration

Use virtualStyleRulesMap to re-populate stylesheet on Flush event

Clear virtualStyleRulesMap after flush applied

* Support rule deletion in virtual processing

* Simply restoreNodeSheet with early aborts

* Encountered a bug where firstFullSnapshot was played twice because timer was immediately started and reached the snapshot before the setTimeout returned

* Ignoring a FullSnapshot needs to be a one-time only thing, as otherwise we'll ignore it after scrubbing (restarting play head at a particular time). This is a problem if mutations have altered the player state, and we try to replay those mutations, so we e.g. try to remove an element that has already been removed because we haven't reset the FullSnapshot state

* Some `npm run typings` related fixups

* add basic html snapshot functionality

* move restoreNodeSheet to it's own module

* Refactor virtual style rules to buffer changes.
Only applies changes on flush.

`virtualStyleRulesMap` now works with strings instead of CSSRules.
CSSRules can only be via made `.insertRule` on CSSStyleSheet in most browsers.
And `new CSSStyleSheet()` only works in Chrome currently.

* remove unused code

* move VirtualStyleRules from CSSRule to string in tests

* correct paths for tests

* naming

* create and restore style snapshots for virtual nodes

* update replayer snapshot

* move storeCSSRules to virtual-styles.ts

* try/catch access to .sheet in case of access errors

* clean up tests

Co-authored-by: Vladimir Milenko <vladimir.milenko@uber.com>
Co-authored-by: Eoghan Murray <eoghan@getthere.ie>
2026-04-01 12:00:00 +08:00
Justin Halsall
1849943d48 Fixes https://github.com/rrweb-io/rrweb/issues/567 (#78) 2026-04-01 12:00:00 +08:00
Justin Halsall
9df2aa8e0e Add userTriggered (#495)
* add `userTriggered`

* update snapshots to add userTriggered

* add `userTriggered`

* update snapshots to add userTriggered

* update snapshot to include userTrigger

* only set userTriggered on `userTriggeredOnInput: true`

* What is user triggered?

* correct snapshot

* add second radio to demonstrate userTriggered
2026-04-01 12:00:00 +08:00
mgoshorn
42273eb2e4 Updates regex used to validate tagnames to allow for tagnames that include namespace information (esp: svg tags) (#77)
Co-authored-by: Mitch Goshorn <mitch.goshorn@calmid.com>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
a224fdd903 Release 1.0.1 2026-04-01 12:00:00 +08:00
Yanzhen Yu
6e144d13b3 Release 1.1.3 2026-04-01 12:00:00 +08:00
Yanzhen Yu
8b7c36be3e add release to github 2026-04-01 12:00:00 +08:00
Yanzhen Yu
41e5082c08 related to #75 mask password input by default 2026-04-01 12:00:00 +08:00
Eoghan Murray
fb381a1254 Ignore firstFullSnapshot once only after initial 'poster' build (#608)
* Encountered a bug where firstFullSnapshot was played twice because timer was immediately started and reached the snapshot before the setTimeout returned

* Ignoring a FullSnapshot needs to be a one-time only thing, as otherwise we'll ignore it after scrubbing (restarting play head at a particular time). This is a problem if mutations have altered the player state, and we try to replay those mutations, so we e.g. try to remove an element that has already been removed because we haven't reset the FullSnapshot state

* Some `npm run typings` related fixups
2026-04-01 12:00:00 +08:00
Justin Halsall
b75140dc62 Allow password to be maskable instead of ignorable (#65)
* Add password to maskInputOptions on types

* Add password on maskInputOptions to types definition
2026-04-01 12:00:00 +08:00
Yanzhen Yu
045e125e37 Release 1.0.0 2026-04-01 12:00:00 +08:00
Eoghan Murray
f2c5ab096e Improve parsing of srcset according to whatwg spec (#74)
* Improve parsing of srcset according to whatwg spec; e.g. srcset="http://example.com/size400,300/img.jpg 640w"

* Trim/normalise the output in order to conform to prior version; solely to keep tests happy

* Add test case for embedded commas in a srcset url as well as support for future possible parenthesis in descriptor string

* Drop 'future proof' test as it causes an error message in test output
2026-04-01 12:00:00 +08:00
Yanzhen Yu
e7d23755a4 close #489 add v1.0.0 changelog 2026-04-01 12:00:00 +08:00
Yanzhen Yu
628fee9292 Release 1.1.2 2026-04-01 12:00:00 +08:00
Yanzhen Yu
8c17ef02ec add plugin API recipe 2026-04-01 12:00:00 +08:00
re-fort
89cdf67234 Enable to mask texts (#73)
* chore: reorder options

* feat: enable to mask texts

* feat: add the default mask function

* refactor: rename options to identify the difference between  mask text and mask input

* test: add tests about masking
2026-04-01 12:00:00 +08:00
Yanzhen Yu
35c6f20164 update console recipes 2026-04-01 12:00:00 +08:00
Justin Halsall
74706eeac6 Speed up addHoverClass on large stylesheets (#72)
* speed up addHoverClass on large style sheets

* longer strings first to prevent accidental partial matches

* can add hover class when there is a multi selector with the same prefix

* tweak performance
2026-04-01 12:00:00 +08:00
Yanzhen Yu
789533382b update roadmap and remove v1.0 warning 2026-04-01 12:00:00 +08:00
Yanzhen Yu
19038fe593 Release 1.1.1 2026-04-01 12:00:00 +08:00
Yanzhen Yu
00c568ea30 update slack channel link and core team members 2026-04-01 12:00:00 +08:00
Yanzhen Yu
e92d92b0b6 add isShadow flag if a node is under shadow root 2026-04-01 12:00:00 +08:00
Omair Nabiel
ac1b7caa2c Update pagination.md (#610)
fix: typo lool to loop
2026-04-01 12:00:00 +08:00