profile
viewpoint

RecordReplay/devtools 172

Web app with developer tools built on the Record Replay Protocol

RecordReplay/gecko-dev 25

Record Replay gecko based browser source

RecordReplay/node 14

Integration of the node.js runtime with the record/replay driver

RecordReplay/playwright-tests 9

Playwright harness and tests used by replay CI

RecordReplay/chromium 7

The official GitHub mirror of the Chromium source

RecordReplay/protocol 3

Definition of the Record Replay Protocol

RecordReplay/types-viewer 3

Viewer for type information in a recording

RecordReplay/playwright 2

Replay enabled fork of the Playwright library

RecordReplay/chromium-webrtc 1

Fork of Google's WebRTC repository needed to build chromium

RecordReplay/cloud-browser 1

Remote control of a recording chromium/linux browser in the cloud

issue openedRecordReplay/devtools

Chat with us is broken

https://user-images.githubusercontent.com/254562/144718954-bc7dc478-26f5-4c03-b0f0-8365e5881da4.mov

created time in 6 hours

push eventRecordReplay/gecko-dev

Brian Hackett

commit sha 96bfb6baf607b981ef4e2a98db71445eae1d35c6

Add diagnostic for backend issue 3659 (#612)

view details

github-actions[bot]

commit sha 390a2015c3bf485808d4daee2307fd9232be6993

view details

push time in 10 hours

issue openedRecordReplay/devtools

Update Accordion component

Our current accordion has a couple of issues:

  1. the panels can be awkward sizes
  2. the panels cannot be resized

this library should be a good starting point https://github.com/DanFessler/react-panelgroup

created time in 17 hours

Pull request review commentRecordReplay/devtools

Redact print statements

 const highlightText = memoize( );  function Highlighted({ expression, editor }) {-  return <span dangerouslySetInnerHTML={highlightText(expression, editor)} />;+  return <RedactedSpan dangerouslySetInnerHTML={highlightText(expression, editor)} />;

Setting HTML from code is risky because it’s easy to inadvertently expose your users to a cross-site scripting (XSS) attack. (typescript.react.security.audit.react-dangerouslysetinnerhtml.react-dangerouslysetinnerhtml from Rule board)

<a href="https://semgrep.dev?utm_campaign=finding_notification&utm_medium=review_comment&utm_source=github&utm_content=logo"> <img align="right" src="https://r2c.dev/semgrep_icon_text_horizontal.svg" height=16px alt="" /> </a>

<sup>This comment is advisory. You do not need to address it before merging this pull request.</sup> <sup>How do I suppress this? · Report a broken rule · Manage rules</sup>

jasonLaster

comment created time in 17 hours

PullRequestReviewEvent

pull request commentRecordReplay/devtools

Protect onRefreshGraphics while hot reloading

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/recordreplay/devtools/FEriGPJugtAH8Cn2kk4us9BAdiAp
✅ Preview: In Progress

jasonLaster

comment created time in 17 hours

PR opened RecordReplay/devtools

Protect onRefreshGraphics while hot reloading

small hot-reloading fix

+13 -11

0 comment

4 changed files

pr created time in 17 hours

Pull request review commentRecordReplay/devtools

Memoize outline view

  .content.open {   height: auto;+  display: flex;+  flex-direction: column;+  overflow-y: hidden;

this is probably the riskiest part, but it helps keep the outline filter input at the top

jasonLaster

comment created time in 17 hours

PullRequestReviewEvent

pull request commentRecordReplay/devtools

Memoize outline view

This pull request is being automatically deployed with Vercel (learn more).
To see the status of your deployment, click below or on the icon next to each commit.

🔍 Inspect: https://vercel.com/recordreplay/devtools/FUdjrEuX21LujZqgcnBX2Rv6tdxZ
✅ Preview: In Progress

jasonLaster

comment created time in 17 hours

PR opened RecordReplay/devtools

Memoize outline view
  • Memoizes the utils that fetch the function lists
  • also limits the list that is shown to 500 global functions and 50 class functions. Using a virtualized list will help
+35 -14

0 comment

5 changed files

pr created time in 17 hours

issue openedRecordReplay/devtools

Material Icons are occassionally missing

Description: Screen Shot 2021-12-03 at 9 04 23 PM

created time in 18 hours

pull request commentRecordReplay/devtools

More visible +/- button

I'd love to pick this up again and see if we can get it across the finish line

jaril

comment created time in a day

pull request commentRecordReplay/devtools

Show the unwrapped react events in the events filter/dropdown count

lets drop this... it feels a bit too unwieldy

jaril

comment created time in a day

issue commentRecordReplay/gecko-dev

Rebase: Remove dock nag

Clicking not now then cycles through two more nags to make replay the default browser and change the theme, which also need to be removed. Related, some of the changes we made to disable the new install and tour pages were removed in upstream and presumably replaced with stuff like this. We'll need to track down what is going on again to fix these.

bhackett1024

comment created time in a day

issue openedRecordReplay/gecko-dev

Rebase: Remove dock nag

When opening up the ESR rebase of replay (https://github.com/RecordReplay/backend/issues/3826) this is how the browser looks:

Screen Shot 2021-12-03 at 3 52 18 PM

This nag should be disabled.

created time in a day

push eventRecordReplay/gecko-dev

Brian Hackett

commit sha 5a094a9649d06427cf565a5d55b9cd8e30176e55

Fix build breaks

view details

push time in a day

issue closedRecordReplay/devtools

Implement an indeterminate loading UI

Our loading screen should be flexible enough to handle different states without needing to reload based on different if statements.


Zypsy passed along a loading animation. Can we please put this on our loading screen? loader.html.zip

closed time in a day

jaril

issue commentRecordReplay/devtools

Implement an indeterminate loading UI

closing in favor of #4541. We can revisit a more generic spinner later

jaril

comment created time in a day

issue commentRecordReplay/devtools

Put Loom link behind experimental flag

https://github.com/RecordReplay/devtools/pull/4487

will try and wrap soon

jonbell-lot23

comment created time in a day

Pull request review commentRecordReplay/devtools

Add content security policy headers

 const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const self = "'self' https://*.replay.io wss://*.replay.io";+const csp = `+  frame-ancestors ${self};+  default-src ${self};+  style-src ${self} 'unsafe-inline';+  script-src ${self} 'unsafe-eval' data: blob: https://*.stripe.com https://*.lr-ingest.io https://*.intercom.io https://*.intercomcdn.com https://*.launchdarkly.com;+  connect-src ${self} https://webreplay.us.auth0.com https://*.launchdarkly.com/ https://*.stripe.com https://*.sentry.io https://*.intercom.io wss://*.intercom.io;

I'll check the docs. There were all based on observations.

ryanjduffy

comment created time in a day

PullRequestReviewEvent

delete branch RecordReplay/gecko-dev

delete branch : text-diagnostic

delete time in a day

push eventRecordReplay/gecko-dev

Brian Hackett

commit sha 96bfb6baf607b981ef4e2a98db71445eae1d35c6

Add diagnostic for backend issue 3659 (#612)

view details

push time in a day

PR merged RecordReplay/gecko-dev

Reviewers
Add diagnostic for backend issue 3659

For https://github.com/RecordReplay/backend/issues/3659. This adds back an assert removed in https://github.com/RecordReplay/backend/issues/2666, but for which we've still seen related mismatches in at least one user recording.

+9 -0

0 comment

1 changed file

bhackett1024

pr closed time in a day

issue openedRecordReplay/devtools

Put Loom link behind experimental flag

Our Loom functionality doesn't look particularly ready for prime time yet. We originally pushed it out to gather information, but there's a branding overhead to having something feel half-baked in the UI like this. Everything a new user sees needs to feel polished and relevant.

image

I recommend putting it behind an experimental flag while we work out what to do with this feature idea.

created time in a day

Pull request review commentRecordReplay/devtools

Add content security policy headers

 const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const self = "'self' https://*.replay.io wss://*.replay.io";+const csp = `+  frame-ancestors ${self};+  default-src ${self};+  style-src ${self} 'unsafe-inline';

I think it'd be worth some comments about why we need unsafe-inline and unsafe-eval.

ryanjduffy

comment created time in a day

Pull request review commentRecordReplay/devtools

Add content security policy headers

 const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const self = "'self' https://*.replay.io wss://*.replay.io";+const csp = `+  frame-ancestors ${self};+  default-src ${self};+  style-src ${self} 'unsafe-inline';+  script-src ${self} 'unsafe-eval' data: blob: https://*.stripe.com https://*.lr-ingest.io https://*.intercom.io https://*.intercomcdn.com https://*.launchdarkly.com;+  connect-src ${self} https://webreplay.us.auth0.com https://*.launchdarkly.com/ https://*.stripe.com https://*.sentry.io https://*.intercom.io wss://*.intercom.io;

Have we looked at the docs for these services, or are these based on observations of network traffic? For example https://www.intercom.com/help/en/articles/3894-using-intercom-with-content-security-policy include https://uploads.intercomusercontent.com, among others.

I'd guess Sentry and other services have official docs for what they expect.

ryanjduffy

comment created time in a day

Pull request review commentRecordReplay/devtools

Add content security policy headers

 const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const self = "'self' https://*.replay.io wss://*.replay.io";+const csp = `+  frame-ancestors ${self};+  default-src ${self};+  style-src ${self} 'unsafe-inline';+  script-src ${self} 'unsafe-eval' data: blob: https://*.stripe.com https://*.lr-ingest.io https://*.intercom.io https://*.intercomcdn.com https://*.launchdarkly.com;

Same here for why blob: is needed.

ryanjduffy

comment created time in a day

Pull request review commentRecordReplay/devtools

Add content security policy headers

 const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const self = "'self' https://*.replay.io wss://*.replay.io";

Do we expect to run scripts from other subdomains? If not, I'd code to be specific with https://app.replay.io wherever possible.

ryanjduffy

comment created time in a day

more