fix: harden desktop recording and rendering for v0.6 - #2172
fix: harden desktop recording and rendering for v0.6#2172richiemcilroy wants to merge 97 commits into
Conversation
Manage your Superagent protectionSuperagent has paused scans for this repository because this unlinked GitHub App installation has used all three included PR scans. You have 0 of 3 included PR scans remaining. Create a free account to continue protection, manage scan settings, review security history, and control which repositories are protected. |
|
@greptileai please review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
@greptileai Please run a fresh end-to-end review of PR #2172 at exact head This follow-up only runs the existing cap-recording library unit tests serially in the two CI workflows, after the macOS queue-recovery fixture timed out under parallel native tests. Production queue deadlines, recording behavior and every test assertion are unchanged. Please review the full final PR, including the GPUI interaction batch, and report any actionable correctness, lifecycle or regression issues. Release publication remains on HOLD pending native acceptance. |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
|
hey @greptileai, please re-review the PR |
Recording failures must preserve local media and requested tracks, and Stop, Quit, editor close and upload completion must not report success before their work is settled. This PR hardens those boundaries for v0.6 while retaining the existing capture engine, codecs and media layout. Ambiguous upload completion keeps the local recording and retry information; confirmed track failures keep the media and show an error instead of opening an incomplete recording.
GPUI and Tauri now share persisted device preferences and feed reconfiguration rules. Preferred formats remain distinct from negotiated formats, stale readiness results are rejected, and device changes are blocked while recording owns the inputs. Camera preview restoration, camera-only preview, window/area placement, microphone warnings and meters, zoom creation, Scene hover, and record-new-clip navigation are corrected. The main recorder, onboarding, settings menus, labels, tooltips, pause/resume feedback and teleprompter follow the existing Tauri behavior. Temporary camera sizes update the preview mask without changing saved sizes or recording geometry. Area selection gains drag guidance and snapping; macOS retains a capture-excluded passive area outline while recording. Windows/Linux keep their existing close-before-capture behavior until a passive overlay is qualified. GPUI automation compatibility now explicitly reports that shared rules can be saved but are not executed by the experimental app.
Startup recovers malformed camera preferences at the camera field, retaining microphone, target, mode and device settings. Tauri hydration replaces camera enum variants instead of merging them. Editor titles support text selection without moving the window, repaint while typing, and save on close and Quit. Failed saves retain the draft and keep the editor open; Tauri waits for editor title-save acknowledgements before admitting Quit. Windows deletion accepts canonical extended-length paths while retaining traversal, symlink-escape and recordings-root protection.
Both editors now offer optional text backgrounds. They default to absent for existing projects, persist with the text layer, and share preview/export rendering. Backdrops cover wrapped and multiline text, follow opacity and animation, preserve segment order, and draw only within their own bounds. The GPUI export page retains Windows caption controls above progress and file-selection overlays. The timeline minimap supports panning, click-to-center and edge resizing with release, Escape and focus-loss cleanup. Minimap presses are captured before timeline seeking, and window drag listeners are installed before the press so fast gestures cannot outrun the next redraw. Editor buttons gain hover feedback, source/chevron icons specify theme colors, and compact device-row spacing follows Tauri. GPUI applies the saved countdown before constructing a recording actor and permits cancellation during the countdown.
GPUI copies exported files and screenshot images through native clipboard formats on macOS, Windows, X11 and Wayland. Failed clipboard copies retain the completed export and offer Retry Copy without encoding again. Screenshot copying uses the rendered image bytes directly; copy failures are surfaced without opening modal dialogs inside a GPUI update. Wayland transfers use nonblocking pipes, and X11 retains valid empty-text clipboard support. SVG cursor textures now use filtered, premultiplied-alpha mip levels so thin details survive minification; recorded PNG cursors and cursor hotspots are unchanged. Native cross-platform paste and the reported Windows cursor appearance still need verification.
macOS uses the correct native panel class at construction and releases accessibility/glass ownership during teardown. Main windows stay within usable screen bounds; mixed-DPI hit testing preserves recording-control input. GPUI Dock hides are delayed after a show, matching Tao's workaround, and Tauri retires its Dock presence only after admitting the handoff. Dock reopen uses bounded authenticated IPC and falls back to the main recorder when an editor is gone. Quit waits for recording, export cancellation and Wayland window-restoration acknowledgements; uncertainty, failure or timeout leaves the app open. Windows uses an opaque rectangular client surface inside its native frame, avoiding a second rounded client edge.
Release packaging adds independent DMG notarization/stapling/Gatekeeper gates and signs all five Windows executables before rebundling the NSIS installer. The extracted final installer must contain the exact signed payload hashes and valid signatures. Both SignPath actions are pinned to a commit. These are package-integrity gates, not a guarantee that antivirus reputation services will immediately trust a new binary. GPUI dependency patches retain LF line endings on Windows checkouts, with an isolated real-checkout regression before compilation. macOS retries packaging at most twice only for recognized secure-timestamp signing failures; the first build, credentials, timestamp requirement, notarization and final verification remain unchanged. Historical nightly promotion retains its original command when the new wrapper is absent.
Release HOLD at
b02cf38a813223ff9a150c837d035989cd3007ad. Public release remains disabled. The comparison baseline is officialcap-v0.5.9(c6b83804d2e9fa8757b75268e573b8ff113141bb); compilation and review do not establish the complete native acceptance matrix.Validation:
b02cf38a813223ff9a150c837d035989cd3007adand remains unpublished; build success is still pending. Fresh Greptile review completed at this head with 5/5, 276 files reviewed, no new comments and no unresolved review threads. Neither build success nor review clears the native release gates. The separate contributor-trust check requires maintainer review.6560beb6a; recording-library tests run serially after a parallel native queue-recovery timeout. No production deadline or assertion was relaxed. This head needs its own CI result.290dafcbee: Stop returned success for 244 submitted frames while only 180 decoded. The terminal-error and capture-acknowledgement contract passes focused tests; the same native diagnostic remains required on this head.Remaining release gates:
Earlier native Linux recording/edit/export results apply only to their recorded packages and device configurations. Temporary Windows/Linux compute is stopped with evidence disks retained; final resource cleanup remains required. Recording research and scenario contract.
Greptile Summary
This PR hardens desktop recording settlement, device handling, editor persistence, rendering, clipboard integration, and release-package verification.
Confidence Score: 5/5
The PR appears safe to merge from the eligible follow-up findings reviewed here.
No blocking failure remains.
Important Files Changed
Reviews (34): Last reviewed commit: "fix: retry transient macOS package times..." | Re-trigger Greptile