diff --git a/frontend/app/components/Session/WebPlayer.tsx b/frontend/app/components/Session/WebPlayer.tsx index 94ed4f8b5..5a9280f55 100644 --- a/frontend/app/components/Session/WebPlayer.tsx +++ b/frontend/app/components/Session/WebPlayer.tsx @@ -84,6 +84,10 @@ function WebPlayer(props: any) { if (activeTab === '' && !showNoteModal && isPlayerReady) { contextValue.player && contextValue.player.play() } + const visualOffset = contextValue.player?.checkVisualOffset?.() || 0 + if (visualOffset !== 0) { + contextValue.player.jump(visualOffset) + } }, [activeTab, isPlayerReady, showNoteModal]) // LAYOUT (TODO: local layout state - useContext or something..) diff --git a/frontend/app/player/create.ts b/frontend/app/player/create.ts index 2d46c5b0e..67cde7453 100644 --- a/frontend/app/player/create.ts +++ b/frontend/app/player/create.ts @@ -23,6 +23,7 @@ export function createWebPlayer(session: Record, wrapStore?: (s:IWe } const player = new WebPlayer(store, session, false) + window.__or_player = player; return [player, store] } diff --git a/frontend/app/player/web/MessageManager.ts b/frontend/app/player/web/MessageManager.ts index fbce59bb0..4e07b4059 100644 --- a/frontend/app/player/web/MessageManager.ts +++ b/frontend/app/player/web/MessageManager.ts @@ -116,6 +116,7 @@ export default class MessageManager { private sessionStart: number; private navigationStartOffset: number = 0; private lastMessageTime: number = 0; + public firstVisualEvent: number = 0; constructor( private readonly session: any /*Session*/, @@ -467,6 +468,7 @@ export default class MessageManager { default: switch (msg.tp) { case MType.CreateDocument: + if (this.firstVisualEvent === 0) this.firstVisualEvent = msg.time; this.windowNodeCounter.reset(); this.performanceTrackManager.setCurrentNodesCount(this.windowNodeCounter.count); break; diff --git a/frontend/app/player/web/WebPlayer.ts b/frontend/app/player/web/WebPlayer.ts index c44ddc7b2..f83a6a832 100644 --- a/frontend/app/player/web/WebPlayer.ts +++ b/frontend/app/player/web/WebPlayer.ts @@ -66,7 +66,6 @@ export default class WebPlayer extends Player { // @ts-ignore window.playerJumpToTime = this.jump.bind(this) - } updateLists = (session: any) => { @@ -147,6 +146,10 @@ export default class WebPlayer extends Player { this.screen.cursor.showTag(name) } + checkVisualOffset = () => { + return this.messageManager.firstVisualEvent + } + clean = () => { super.clean() this.screen.clean() diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index 2cd9d01e4..c04c48bd4 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,5 +1,12 @@ +# 6.0.1 + +- fix webworker writer re-init request +- remove useless logs + # 6.0.0 + **(Compatible with OpenReplay v1.11.0+ only)** + - **[breaking]:** Capture mouse thrashing, input hesitation+duration, click hesitation - Capture DOM node drop event (>30% nodes removed) - Capture iframe network requests @@ -18,7 +25,9 @@ - Use `@medv/finder` instead of our own implementation of `getSelector` for better clickmaps experience ## 5.0.0 + **(Compatible with OpenReplay v1.10.0+ only)** + - **[breaking]:** string dictionary to reduce session size - Added "tel" to supported input types - Added `{ withCurrentTime: true }` to `tracker.getSessionURL` method which will return sessionURL with current session's timestamp diff --git a/tracker/tracker/src/main/modules/mouse.ts b/tracker/tracker/src/main/modules/mouse.ts index 5bba2ddda..e09955ced 100644 --- a/tracker/tracker/src/main/modules/mouse.ts +++ b/tracker/tracker/src/main/modules/mouse.ts @@ -142,7 +142,6 @@ export default function (app: App, options?: MouseHandlerOptions): void { const acceleration = (nextVelocity - velocity) / shakeCheckInterval if (directionChangeCount > 3 && acceleration > shakeThreshold) { - console.log('Mouse shake detected!') app.send(MouseThrashing(now())) }