feat: Moves compression before buffer (Optimization)#144
Merged
abelonogov-ld merged 24 commits intomainfrom Mar 5, 2026
Merged
feat: Moves compression before buffer (Optimization)#144abelonogov-ld merged 24 commits intomainfrom
abelonogov-ld merged 24 commits intomainfrom
Conversation
(cherry picked from commit 78ad485)
…anvas buffer limit. Updated makeExportFrame to accept keyFrameId and isKeyframe parameters. Adjusted canvasBufferLimit to account for keyframe logic. Added test to verify mutation appending when canvas buffer limit is exceeded for non-keyframes.
- Added support for command-line options including scheme, destination, only-testing, skip-testing, and test-file. - Introduced a usage function to display help information. - Implemented a function to derive test identifiers from file paths. - Refactored the test execution command to accommodate new options and improve readability. (cherry picked from commit cd1e1e2)
(cherry picked from commit 54853ad)
… allowing multiple runs. Updated BenchmarkExecutor to return execution time alongside bytes, and modified BenchmarkView to display execution time in results.
- Updated the ExportFrame structure to replace TileSignature with ImageSignature in AddImage and RemoveImage. - Adjusted RRWebEventGenerator and related methods to accommodate the new image signature handling. - Modified unit tests to ensure compatibility with the updated ExportFrame parameters.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Vadman97
approved these changes
Mar 5, 2026
Contributor
Vadman97
left a comment
There was a problem hiding this comment.
Well-structured refactor moving compression before the buffer with new ExportDiffManager, benchmark harness, and expanded test coverage for keyframe/buffer behavior.
abelonogov-ld
pushed a commit
that referenced
this pull request
Mar 5, 2026
🤖 I have created a release *beep* *boop* --- ## [0.22.0](0.21.0...0.22.0) (2026-03-05) ### Features * Moves compression before buffer (Optimization) ([#144](#144)) ([5bda445](5bda445)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Release bookkeeping only (version/changelog updates) with no functional code changes in this diff. > > **Overview** > Cuts the `0.22.0` release by bumping version metadata across the repo (`.release-please-manifest.json`, both `.podspec`s, and `Sources/LaunchDarklyObservability/Version.swift`). > > Updates `CHANGELOG.md` with the `0.22.0` entry noting the optimization to move compression before buffering. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 9fac85e. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
abelonogov-ld
added a commit
that referenced
this pull request
Mar 5, 2026
* main: chore(main): release 0.22.0 (#145) feat: Moves compression before buffer (Optimization) (#144) chore(main): release 0.21.0 (#143) feat: Bridging hooks calls from MAUI (#142) # Conflicts: # Sources/LaunchDarklySessionReplay/BenchMark/BenchmarkExecutor.swift # Sources/LaunchDarklySessionReplay/ScreenCapture/TileSignatureManager.swift # TestApp/Sources/BenchmarkView.swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Matching Android in File Structure
Note
Medium Risk
Touches core capture/compression and rrweb event generation logic, so regressions could impact replay fidelity or payload size; changes are reasonably scoped and backed by new targeted tests and a benchmark harness.
Overview
Refactors the session replay pipeline so screen capture now produces
ExportFramediffs via a newExportDiffManager(trackingaddImages/removeImagesandkeyFrameId) instead of exporting from aTiledFrameinline, enabling optional tile backtracking via a newCompressionMethod.overlayTiles(layers:backtracking:)option.Updates RRWeb event generation to emit DOM mutations based on these add/remove commands, track known keyframes (dropping frames that can’t be reconstructed), and slightly lowers the canvas buffer threshold; related payload costing/stats, session exporter session-update handling, and RRWeb type visibility are adjusted accordingly.
Adds a UIKit-only benchmark harness (raw frame CSV/PNG IO, benchmark executor, sample Mastodon walk data, and a TestApp Benchmark UI) and expands unit tests to cover keyframe/buffer-limit behavior and backtracking rollbacks.
Written by Cursor Bugbot for commit c67581b. This will update automatically on new commits. Configure here.