Skip to content

Releases: packstub/session-replay

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 18:02

The first stable release, with a "Report a problem" button, server errors on the replay and a long list of privacy and upload fixes.

Upgrading: run php artisan migrate (a column for the impersonator's type and an index for a workspace's list). Config keys were renamed to name their unit (idle_minutes, flush_seconds, on_error.ask_timeout_seconds, ingest.requests_per_minute); a published config with the old names keeps working, but config()->set() at runtime needs the new names (#42).

  • SessionReplay.send() for a "Report a problem" button, with a ReplayReported event to tell support (#39)
  • Server errors on the replay, marker details, and Open in logs through SessionReplay::logUrlUsing()
  • Failed fetch and XHR requests and client-side page changes are marked in apps without Livewire
  • Copy link to this moment under the player, and the on_error.ask question as a toast
  • A ReplaySession policy (Filament Shield's, say) authorizes the viewer when no gate is defined (#41)
  • The impersonator can be a model (#40), and a session-replay:session browser event for error trackers (#43)
  • Privacy fixes: hidden and file inputs always masked, URLs redacted in errors, stricter defaults for a misspelt consent or mode (#38), visibleUsing() kept to its scope
  • Sturdier uploads and times: the daily limit is obeyed, half-failed batches are stored in full, and times follow the app's timezone

Docs: https://packstub.dev/docs/session-replay

  • A page reached with wire:navigate is recorded as a fresh snapshot, like a page load: smaller recordings and quicker seeking

  • Stylesheets that finish loading after the page was recorded are stored once too

  • on_error.livewire_error_modal: the on_error.ask question can take the place of Livewire's error modal

  • The question is now a native <dialog>, always above the page, Livewire's modal included

Recording only when something goes wrong. Run php artisan migrate for the new replay_session_assets table.

  • mode = on_error: the browser keeps the last minute in memory and uploads it only after an error

  • on_error.ask: a small dialog asks the person before sending, with an option to send anonymously

  • The kept window survives a failed upload and goes up on the next page load (on_error.keep_pending)

  • Shared snapshots: pages that look the same for everyone can be stored once (snapshots.share_routes)

  • Failed uploads are retried for about four minutes instead of 14 seconds

  • The player works in Firefox 140 ESR. Thanks @VincentBean.

  • except_routes: route names that never get the recorder; password-reset and verification pages left out by default

  • privacy.anonymous: record signed-in people without storing who they are

  • privacy.store_user_agent = false drops the browser's user agent

  • A published except list with keyed entries no longer throws

First beta of Session Replay for Laravel: record what people do in your app with rrweb and watch it back. Names and config may still change before 1.0.

  • @sessionReplay records each tab across page loads, with sampling, opt-in consent and one recording per person and workspace
  • Private by default: every input masked, no IP address stored, sensitive query parameters redacted
  • Errors, failed Livewire requests, Web Vitals, rage clicks and page views as markers on the timeline
  • Small recordings: stylesheets stored once, batches gzipped in the browser, kept on any filesystem disk
  • A built-in list and player behind the viewSessionReplay gate, and a <x-session-replay::player> component
  • Replay links in Laravel's log context; the viewer in English, German, Spanish, Romanian and Russian

Docs: https://packstub.dev/docs/session-replay

What's Changed

  • Check every wire:navigate page like a page load by @icaliman in #19
  • Recorder privacy fixes before 1.0 by @icaliman in #21
  • Mark failed fetch/XHR requests and router page views by @icaliman in #23
  • privacy.unmask_text_selector: keep the app's interface readable with mask_all_text by @icaliman in #25
  • Harden ingest and the viewer: concurrent first batches, atomic batches, scoped visibleUsing, player under wire:navigate by @icaliman in #27
  • Player: copy link to this moment by @icaliman in #28
  • Server errors on the replay timeline, and a log link that opens at the moment by @icaliman in #30
  • Docs: before production and what to check when nothing shows up by @icaliman in #26
  • Run the recorder bundle once per tab with wire:navigate by @icaliman in #20
  • SessionReplay.send() for a report button, on_error.ask as a toast, on_error.max_buffer_mb by @icaliman in #31
  • Before 1.0: masked captions and meta text, stylesheets pruned by reference by @icaliman in #35
  • A marker where excluded pages were skipped, and no replay link in their log lines by @icaliman in #36
  • Marker details in the player, with a report id and an Open in logs link for server errors by @icaliman in #37
  • Before 1.0: config lists, strict consent, unit names, report marker, policies by @icaliman in #44
  • Before 1.0: config rename on boot, browser times in the app timezone, recorder stops, player strings, autoplay by @icaliman in #45
  • 1.0: drop the beta note and the @beta constraint by @icaliman in #34

Full Changelog: v1.0.0-beta.5...v1.0.0

v1.0.0-beta.5

v1.0.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:28
  • A page reached with wire:navigate is recorded as a fresh snapshot, like a page load: smaller recordings and quicker seeking
  • Stylesheets that finish loading after the page was recorded are stored once too

What's Changed

  • Deduplicate stylesheets that finish loading after the page was recorded by @icaliman in #15
  • Record a wire:navigate page as a snapshot instead of the body swap by @icaliman in #16

Full Changelog: v1.0.0-beta.4...v1.0.0-beta.5

v1.0.0-beta.4

v1.0.0-beta.4 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 14:03
  • on_error.livewire_error_modal: the on_error.ask question can take the place of Livewire's error modal
  • The question is now a native <dialog>, always above the page, Livewire's modal included

What's Changed

  • on_error.ask: a native dialog above or in place of Livewire's error modal by @icaliman in #13

Full Changelog: v1.0.0-beta.3...v1.0.0-beta.4

v1.0.0-beta.3

v1.0.0-beta.3 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 08:20

Recording only when something goes wrong. Run php artisan migrate for the new replay_session_assets table.

  • mode = on_error: the browser keeps the last minute in memory and uploads it only after an error
  • on_error.ask: a small dialog asks the person before sending, with an option to send anonymously
  • The kept window survives a failed upload and goes up on the next page load (on_error.keep_pending)
  • Shared snapshots: pages that look the same for everyone can be stored once (snapshots.share_routes)
  • Failed uploads are retried for about four minutes instead of 14 seconds
  • The player works in Firefox 140 ESR. Thanks @VincentBean.

What's Changed

  • Player not loading on Firefox by @VincentBean in #5
  • Record only on error: a rolling buffer in the browser, optionally asking first by @icaliman in #8
  • on_error: the window survives a failed upload, longer retries by @icaliman in #11
  • Store identical page snapshots once, shared by hash (opt-in per route) by @icaliman in #9

New Contributors

Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3

v1.0.0-beta.2

v1.0.0-beta.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 16:32
  • except_routes: route names that never get the recorder; password-reset and verification pages left out by default
  • privacy.anonymous: record signed-in people without storing who they are
  • privacy.store_user_agent = false drops the browser's user agent
  • A published except list with keyed entries no longer throws

What's Changed

  • Exclude routes by name, anonymous recordings, no user agent by @icaliman in #4

Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2

v1.0.0-beta.1

v1.0.0-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Oct 11:26

First beta of Session Replay for Laravel: record what people do in your app with rrweb and watch it back. Names and config may still change before 1.0.

  • @sessionReplay records each tab across page loads, with sampling, opt-in consent and one recording per person and workspace
  • Private by default: every input masked, no IP address stored, sensitive query parameters redacted
  • Errors, failed Livewire requests, Web Vitals, rage clicks and page views as markers on the timeline
  • Small recordings: stylesheets stored once, batches gzipped in the browser, kept on any filesystem disk
  • A built-in list and player behind the viewSessionReplay gate, and a <x-session-replay::player> component
  • Replay links in Laravel's log context; the viewer in English, German, Spanish, Romanian and Russian

Docs: https://packstub.dev/docs/session-replay

Full Changelog: https://github.com/packstub/session-replay/commits/v1.0.0-beta.1