chore(release): release v1.7.0 into main#134
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe application version in ChangesRelease metadata
Estimated code review effort: 1 (Trivial) | ~2 minutes 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
electron/native/wgc-capture/src/main.cpp (1)
616-623: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winRestore the pause gate in the encoder loop
wait_for(..., 100ms)now wakes while paused, and this loop still falls through tocaptureVideoSampleon the frozenlatestFrameTexture. BecausepausedDurationHns()subtracts the paused interval from the timestamp, each timeout emits a duplicate freeze-frame with a new timestamp instead of stalling until resume.Suggested fix
if (control.stopRequested || encodeFailed) { break; } + if (control.paused.load()) { + continue; + }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@electron/native/wgc-capture/src/main.cpp` around lines 616 - 623, Update the encoder loop around the condition variable wait and the control.stopRequested/encodeFailed check to restore the pause gate: after wake-up, continue waiting or skip capture while control.paused is true, and only call captureVideoSample when resumed with a valid latestFrameTexture. Preserve immediate exit for stop requests and encoding failures.
🧹 Nitpick comments (1)
src/components/video-editor/timeline/TimelineEditor.tsx (1)
323-340: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low valueRe-evaluate the dependency array to handle late prop binding.
Since the
useEffectuses an empty dependency array[]and checksgetPlaybackTimeMsRef.currenton mount, therequestAnimationFrameloop will never start ifgetPlaybackTimeMsis initially undefined and provided later.Consider adding
!!getPlaybackTimeMsto the dependency array to ensure the loop kicks off if the getter becomes available after the component has mounted.♻️ Proposed fix
- useEffect(() => { - if (!getPlaybackTimeMsRef.current) { - return; - } - + useEffect(() => { + if (!getPlaybackTimeMs) { + return; + } + let rafId: number; const tick = () => { const getter = getPlaybackTimeMsRef.current; if (getter) { const latest = getter(); setLiveTimeMs((previous) => (previous === latest ? previous : latest)); } rafId = requestAnimationFrame(tick); }; rafId = requestAnimationFrame(tick); return () => cancelAnimationFrame(rafId); - }, []); + }, [!!getPlaybackTimeMs]);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/video-editor/timeline/TimelineEditor.tsx` around lines 323 - 340, Update the useEffect managing the requestAnimationFrame loop to depend on the availability of getPlaybackTimeMs, using !!getPlaybackTimeMs in its dependency array so the loop starts when the getter is bound after mount. Preserve the existing cleanup and live-time update behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/launch/LaunchWindow.test.tsx`:
- Around line 476-479: Update the afterEach cleanup in LaunchWindow tests to
remove every HTMLElement.prototype property added by beforeEach, restoring the
shared jsdom environment before calling the existing global cleanup. Delete the
specific manually mutated properties directly, without introducing any or
changing unrelated teardown behavior.
In `@src/lib/exporter/audioEncoder.ts`:
- Around line 342-360: Replace the legacy demuxer.readAVPacket call in the
packetStream setup with the web-demuxer v4 readMediaPacket API, passing the
audio media type and equivalent start/end range arguments in the new signature.
Preserve the existing reader loop and timestamp/duration scaling.
---
Outside diff comments:
In `@electron/native/wgc-capture/src/main.cpp`:
- Around line 616-623: Update the encoder loop around the condition variable
wait and the control.stopRequested/encodeFailed check to restore the pause gate:
after wake-up, continue waiting or skip capture while control.paused is true,
and only call captureVideoSample when resumed with a valid latestFrameTexture.
Preserve immediate exit for stop requests and encoding failures.
---
Nitpick comments:
In `@src/components/video-editor/timeline/TimelineEditor.tsx`:
- Around line 323-340: Update the useEffect managing the requestAnimationFrame
loop to depend on the availability of getPlaybackTimeMs, using
!!getPlaybackTimeMs in its dependency array so the loop starts when the getter
is bound after mount. Preserve the existing cleanup and live-time update
behavior.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 328febf1-fafb-4436-b623-97d15363d4a1
⛔ Files ignored due to path filters (1)
tests/fixtures/sample-dual-audio.mp4is excluded by!**/*.mp4
📒 Files selected for processing (23)
.gitignoreelectron/native/wgc-capture/src/main.cppelectron/native/wgc-capture/src/mf_encoder.cppelectron/native/wgc-capture/src/mf_encoder.helectron/native/wgc-capture/src/wgc_session.cpppackage.jsonsrc/components/launch/LaunchWindow.test.tsxsrc/components/launch/LaunchWindow.tsxsrc/components/video-editor/VideoEditor.tsxsrc/components/video-editor/VideoPlayback.tsxsrc/components/video-editor/timeline/TimelineEditor.tsxsrc/components/video-editor/types.test.tssrc/components/video-editor/types.tssrc/components/video-editor/videoPlayback/rafCoalescer.test.tssrc/components/video-editor/videoPlayback/rafCoalescer.tssrc/components/video-editor/videoPlayback/videoEventHandlers.tssrc/components/video-editor/videoPlayback/zoomRegionUtils.test.tssrc/lib/exporter/audioEncoder.test.tssrc/lib/exporter/audioEncoder.tssrc/lib/exporter/audioMixExport.browser.test.tssrc/lib/exporter/streamingDecoder.tssrc/lib/exporter/videoExporter.test.tssrc/lib/exporter/videoExporter.ts
1074a89 to
ead9ffd
Compare
Sync main with the released snapshot (RC + cherry-picked bugfixes + version bump). Rebase-merged via PAT; bypass applies because EtienneLescot is a ruleset bypass actor.
Summary by CodeRabbit