Port main's live fixes into feat/ai-edition, and rewire the capabilities the V4 shell dropped - #156
Closed
EtienneLescot wants to merge 0 commit into
Closed
Port main's live fixes into feat/ai-edition, and rewire the capabilities the V4 shell dropped#156EtienneLescot wants to merge 0 commit into
EtienneLescot wants to merge 0 commit into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ 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 |
EtienneLescot
force-pushed
the
claude/ai-edition-remediation
branch
from
July 26, 2026 10:43
dcfa38b to
a1b0bdc
Compare
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.
Rebuilt from the divergence point (
68d3a685, 2026-07-15) rather than from the earlier rebase attempt, which is superseded and can be closed without merging (#154).What the audit found
Comparing
mainagainstfeat/ai-editionthrough the descriptions of the 15 PRs merged into main since the divergence, rather than a commit diff:Full write-up in
docs/engineering/main-vs-ai-edition-audit.mdandai-edition-remediation-spec.md.Shared fixes brought over (cherry-picks)
main.cppwas merged by hand to keep this branch's real-clock CFR webcam pacing while taking main's capture/submit split.Bugs fixed here
The microphone was missing from exports. Native macOS recordings write system audio and mic as two separate AAC tracks;
decode_clip_audiotook one viaav_find_best_stream— the first, silent whenever nothing plays through the system. This is issue #108, which PR #109 fixed in the browser exporter — a path this app no longer uses. Reimplemented in Rust: every audio stream decoded off a single demux pass, then mixed. 7 new tests.Playback jumped back a clip at a reordered junction. A stale closure: the rAF loop is re-created only on asset swap, but called
seekToVirtualTime, whose deps includeclips. It picked the right next clip from fresh refs, then resolved it against the pre-reorder layout. Routed through the ref the seek effect already used.A manual zoom drifted during its ease-in. The port fed
lerp(0.5, f, strength)as the crop centre, which adds ascalefactor the reference transform doesn't have — the focus point hangs away from centre mid-ramp, then snaps back. It reads as if a manual region were following the cursor. Fixed by inverting the crop mapping; a test sweeps the ease-in window and derives progress back out of the rendered scale.Auto follow was jittery.
cursorFollowUtils' adaptive exponential smoothing was never ported — only the sampling was. Ported, but applied once over the telemetry at load instead of per frame, so a rendered image never depends on the path taken to reach it (preview and export stay identical across seeks).New text annotations were born filled with
"New annotation", so the placeholder never showed.Capabilities rewired to the V4 shell
Each already existed, with translations shipping in all 13 locales and no consumer:
MAX_PLAYBACK_SPEEDis 100; the inspector offered a preset select capped at 3. Restored the preset ladder plus a free field.focusModewas read but never writable — "auto" only arrived from the suggestion pass.Bottombar. While on, it overrides every region and the per-zoom control goes read-only with an explanation, so a zoom can no longer display "Manual" while the compositor follows the cursor. It never writesfocusMode, so turning it off restores each zoom's own value.Also removed the "above 16×" hint: it described the legacy editor's frame-stepped, silent preview, not this one.
Verification
tscandbiomeclean. 1239 front-end tests across 101 files, 28 Rust tests — 20 of them new. Native helper and compositor addon both rebuilt and run.Exercised in the running app: manual ease-in ramp, smoothed auto pan, the global toggle lock, multi-clip reorder, and webcam recording.
Not verified end to end: exporting a real multi-track macOS recording. The mixing logic is covered by unit tests, including the #108 case itself, but no such file was available to export.
Still open
Zoom rotation preset and non-text annotations remain unwired.
preferSoftwareEncoderhas no UI, and the D3D engine has no software fallback (D3D_DRIVER_TYPE_HARDWAREonly) — both need a product call. MSIX packaging (#142) is ready on the superseded branch but pointless until this branch ships releases.