Commit Graph

481 Commits

Author SHA1 Message Date
yz-yu
50998fae7f use prettier instead of node-libtidy (#638) 2026-04-01 12:00:00 +08:00
Justin Halsall
599e07d9a3 yarn typings (#635) 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
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
qun
6bdb40d711 Update index.zh_CN.md (#632)
wrongly written characters
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
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
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
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
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
Yanzhen Yu
a224fdd903 Release 1.0.1 2026-04-01 12:00:00 +08:00
Yanzhen Yu
8b7c36be3e add release to github 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
Yanzhen Yu
045e125e37 Release 1.0.0 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
8c17ef02ec add plugin API recipe 2026-04-01 12:00:00 +08:00
Yanzhen Yu
35c6f20164 update console recipes 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
00c568ea30 update slack channel link and core team members 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
Yanzhen Yu
de16040917 Release 1.0.0-beta.2 2026-04-01 12:00:00 +08:00
Yanzhen Yu
ed46394562 rename console replay plugin 2026-04-01 12:00:00 +08:00
Yanzhen Yu
bd89778315 do not bundle es module multiple times 2026-04-01 12:00:00 +08:00
Yanzhen Yu
8f57ba9808 Release 1.0.0-beta.1 2026-04-01 12:00:00 +08:00
Justin Halsall
4dcd674e34 Mask value attribute changes for elements in maskInputOptions (#602)
* mask value attribute changes for elements in maskInputOptions

* refactor initInputObserver to use maskInputValue

* add todo

* Fix typo

* upgrade rrweb-snapshot to 1.1.6

* move maskInputValue to rrweb-snapshot
2026-04-01 12:00:00 +08:00
Eoghan Murray
38a9e36b8f Fix an incorrected finish which halted playback prematurely. The scenario was that there were events being rapidly added to the recording. (#606) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
880cc3ab9e update yarn.lock 2026-04-01 12:00:00 +08:00
bachmanity1
059d492bea add keepIframeSrcFn option (#592)
* rename allowIframe to keepIframeSrcFn

* update rrweb-snapshot to 1.1.5
2026-04-01 12:00:00 +08:00
Yanzhen Yu
35a5a4ff34 improve https://github.com/rrweb-io/rrweb-player/issues/12 2026-04-01 12:00:00 +08:00
Justin Halsall
669446b480 Docs: update link to list of input values (#604)
* Update url to list of types

* Docs: Update list of inputs (zh_CN)
2026-04-01 12:00:00 +08:00
Justin Halsall
ae8ddcaa3a Fixes dist/plugins/console-record.min.js needed for tests #601 (#603) 2026-04-01 12:00:00 +08:00
dependabot[bot]
f5119c9b5d Bump color-string from 1.5.4 to 1.5.5 (#599)
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.4 to 1.5.5.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/compare/1.5.4...1.5.5)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
yz-yu
c550a4b088 plugin API (#598)
* temp: plugin API

* fix a bug in the replay handler and rename some type names.

* update integration test

* improve plugin types and handle legacy log data

* use different naming in record and replay bundles

* delete unreferenced types

Co-authored-by: Lucky Feng <294889365@qq.com>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
e7583f71b2 remove unsed variables 2026-04-01 12:00:00 +08:00
bachmanity1
6de0efa01f implement video seek feature (#593)
* implement video seek feature

* rm attribute from MediaInteractions

* resolve ts warning

* use getEventTarget
2026-04-01 12:00:00 +08:00
Yun Feng
2e0d981190 doc: update guide.zh_CN.md 2026-04-01 12:00:00 +08:00
Justin Halsall
a4426d2927 Add ability to mask passwords (#494)
* add ability to mask passwords

* remove duplicate mask snapshot

* make sure only one click happens at a time
2026-04-01 12:00:00 +08:00
Yanzhen Yu
53a2e8baa4 Release 1.0.0-beta.0 2026-04-01 12:00:00 +08:00
Justin Halsall
80e7307729 Tests: Iframe event order (#568)
* add failing test

* assert order of events

* defer attaching of iframe till FullSnapshot is done
Fixes: https://github.com/rrweb-io/rrweb/issues/567

* correct event order in iframe integration test snapshot

* trigger build

* trigger build

* Move settimeout responsibility to snapshot
https://github.com/rrweb-io/rrweb-snapshot/pull/78

* upgrade rrweb-snapshot to 1.1.4

* DRY record tests

* cleanup

* Upgrade puppeteer to 9.1.1
for (hopefully) more consistent behaviour between CI and development

* make input bigger to prevent triggering scroll events

* page.waitFor is deprecated
more info: https://github.com/puppeteer/puppeteer/issues/6214

* Set os and distro for Travis ci

Co-authored-by: yz-yu <yanzhen@smartx.com>
2026-04-01 12:00:00 +08:00
Yanzhen Yu
b9e1938951 fix registry 2026-04-01 12:00:00 +08:00
Yanzhen Yu
30f4aa20b3 update rrweb-snapshot 2026-04-01 12:00:00 +08:00
yashkumar18
a19893cdfa Handle Drag events in replayer (#587)
* Handle Drag events in replayer

* add touch move source as well

Co-authored-by: Yash Kumar <yashkumar@Yashs-MacBook-Pro-2.local>
2026-04-01 12:00:00 +08:00
yashkumar18
1539d35039 Fix order of ternary expression for mouse move source type (#586)
Co-authored-by: Yash Kumar <yashkumar@Yashs-MacBook-Pro-2.local>
2026-04-01 12:00:00 +08:00
Yun Feng
0235cd4d0a update typings and fix lint errors 2026-04-01 12:00:00 +08:00
Justin Halsall
e00ca2cbd9 add ability to stop listening 2026-04-01 12:00:00 +08:00
Yakko Majuri
ba33720104 Update canvas recording mechanism (#536) 2026-04-01 12:00:00 +08:00
Yanzhen Yu
c581cf68ca shadow DOM recording GA
1. record shadow DOM event target by parsing composed path
2. nested record scroll event in shadow DOM
2026-04-01 12:00:00 +08:00
Yanzhen Yu
24d65c7cb1 remove useless log 2026-04-01 12:00:00 +08:00
dependabot[bot]
a9a3e2849f Bump ws from 6.2.1 to 6.2.2 (#575)
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00
dependabot[bot]
1a05e51ee2 Bump browserslist from 4.14.5 to 4.16.6 (#569)
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.14.5 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.14.5...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-01 12:00:00 +08:00