feat(recording): cap the touch overlay frame rate at the caller's --fps - #3241
Conversation
record start --fps now also caps the touch overlay's composited frame rate (at most 30), carried as a recording fact so a recovered stop honours it. An overlay export that runs out of its budget names that in overlayWarning. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Size Report
Startup median (7 runs, lower is better):
|
There was a problem hiding this comment.
All reported issues were addressed across 21 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…an out of it Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
At b08d6b9 the touch-overlay frame-rate cap has no live evidence yet, and the Apple finalize path has no test that protects it. There are no conflicts. The one cancelled check, Analyze (javascript-typescript), looks unrelated: the diff touches no CI config or dependency, and the other 20 checks pass. A re-run would confirm it. The Swift helper that composites the export gains The simulator route reads the live snapshot built at runtime.ts:489 and finalizes through Is the fan-out needed? The wire is already small: one conditional Not blocking, so take or leave these: the PR body describes #3234 (the The open inline threads still stand: recorded-fps test is fixed at this commit, so please resolve it. overlayTouches catches rejections does not apply, because I did not run the tests or compile the Swift helper, so its syntax and behavior are unverified. My check covered code paths only, not a live simulator or Android run. I also did not check whether Android |
…ize path Cover the simulator start snapshot and finalizeAppleRecordingFromCollected, the route simctl recordings take, and name the touch-overlay cap in --fps help. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Addressed in
|
There was a problem hiding this comment.
All reported issues were addressed across 3 files (changes from recent commits).
Tip: Review your code locally with the cubic CLI to iterate faster.
Re-trigger cubic
… fps ceiling Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
This PR is ready at 89b7f95. The fixes since the earlier review (#3241 (comment)) are in, and I found no remaining problems. CI is green: 21 checks, none failing, and the delta only changes a flag help string and two Apple tests. There are no conflicts. Not blocking, take or leave: no Android test asserts that On the other threads, the cubic-dev-ai P2 on the no-fps finalizer test (#3241 (comment)) and the P3s on the overlay budget message (#3241 (comment)), the recording runtime comment (#3241 (comment)) and the flag help text (#3241 (comment)) are fixed at this head, so please resolve them. The P2 on I did not re-run the live simulator probe, compile the Swift helper, or run the tests. The live numbers rest on the PR body and your comment, and the production code is unchanged since the commit that run covered. I checked the claim that deleting either fps spread fails the tests by reading the code and assertions, not by running a mutation. Android emulator and physical iOS are untested per the PR body, and neither is needed for this simctl route. |
Summary
Follow-up to #3219.
record start --fps <n>now also caps the touch-overlay export: the helper renders at mostmin(--fps, 30)frames a second (never above the source track's rate), so a lower--fpsmakesrecord stopfaster on long recordings. Without--fps, behavior is unchanged (≤30).fpsis a durable recording fact, so Apple recovery and the Android manifest keep the cap across a daemon restart. HarmonyOS is out of scope. When the export itself runs out of its 70 s budget, the overlay warning names the budget and suggests a lower--fps. A compile that ate the budget keeps the plain message.Validation
43e7b74fb:pnpm check:affected --runpassed (4,168 tests). New Apple tests cover the simctl start snapshot andfinalizeAppleRecordingFromCollected. Deleting eitherfpsspread makes them fail.Live: dedicated iPhone 17 simulator (iOS 27.0) with isolated
--state-dir, Settings, touches shown, three scrolls plus one tap, then stop. Probed with AVFoundation (AVAssetReaderframe count,minFrameDuration):Without scrolling, the default export came out at 15 fps. That is simctl's own source rate on a static screen, which the helper never exceeds. Not run: Android emulator, physical iOS.
🤖 Generated with Claude Code