Repository navigation
Conversation
|
I tested #82 and #92 together in the full signed-in Telegram Master Test client on current master I also confirmed that seeking and the playhead stay inside the range selected with the left and right trim handles. I added two real-client screenshots to the description: playing and paused, separate from the native Before/After comparison. The combined full build, signature verification and all 15 editor tests pass. |
|
Issues: REQUIRED CHANGE: VideoRecorderModalController.swift:195 - keep the pipeline status observer (or call stopCapture) when the modal closes; the camera now stays on until deinit (major, CONFIRMED) |
|
Fixed in
Keeping this PR in Draft. |
|
Manual follow-up on master
All five checks passed. This follow-up covers video editing and cancellation. Media sending and recording pre-upload remained disabled by the local-only guard, which is excluded from the PR. Normal send/upload/export and completion at the recording time limit were not tested. Keeping the PR in Draft. |
|
Updated the PR with an intentional change at the 60-second limit: recording now pauses in the editor instead of sending the entire video automatically. This prevents accidental sends caused by reaching the limit and lets users review or trim the video and explicitly send only the selected fragment, or discard it. All 22 focused native tests, the full Debug arm64 build and signature checks pass on master Ready for review. |
Keep Send pending while the native writer finishes so the final segment is preserved. Replace the manually primed resume case with real pipeline trim/resume coverage. Verified with 29 native tests, a targeted resume mutation, a full Debug arm64 build and manual Send/resume checks.
Record the failing race regression, 29 passing native tests, targeted resume mutation and full Debug build. Separate the latest manual Send/resume confirmation from earlier physical camera and delivery checks.
|
Updated the pending-pause Send path and strengthened resume coverage.
Verification: 29 native tests pass and the full Debug arm64 build passes. The new Send test fails before the fix; removing the production resume duration publication makes the new resume test fail at 60 instead of 10. I also confirmed Send after 60 seconds and continuation after trimming in the installed client. The 60-second limit still opens the editor without sending: users can review, trim and choose what to send, avoiding accidental submission of the full recording. Automated tests use controlled writer I/O, not physical capture or delivery; the manual check does not measure race frequency. Device-disconnect/error paths were not newly confirmed. Details and scope are recorded in the PR description and verification file. |
|
Fixed the camera shutdown issue. The pipeline status observer stays active after The three regression tests failed before the fix and now pass with the controller still retained. All 29 focused native tests and the full Debug arm64 build pass. I also manually checked pause/discard in the client: the recorder closed and the camera indicator switched off. The retained-controller tests use capture probes. |
|
Issues:
|
Key change
Prevent accidental sends at the 60-second limit and let users review, trim and explicitly send their video. Reaching the limit now pauses in the editor instead of automatically sending the entire unedited recording. Users can send only the selected fragment, discard it, or shorten it and choose Record More.
The recorder also handles the actions around that pause:
This intentionally changes the previous macOS limit behavior. Releasing the original recording gesture does not send the paused video.
Reason
Previously, reaching 60 seconds chose Send for the user, leaving no opportunity to review or trim. The editor also had pointer-routing and video-playback failures. A further race allowed Send to inspect the recording before pause finalization had added the current segment: a complete first take could produce no finished video, or a resumed take could omit its newest segment.
The follow-up fixes that race and replaces a resume test that manually supplied the expected duration with a test of the actual pipeline. Related #82 optimizes thumbnail allocation in the same preview flow; the original editor failures reproduced with and without it. This PR does not include that optimization or a dictation implementation.
Screenshot/video result (before/after)
Before
After
These native AppKit fixture captures use the same generated placeholder, 10-second duration, 2–8 second selection and 4-second position. They show editor controls, not the new timing scenarios. Earlier full-client captures show the editor playing and paused.
Timing and submission behavior are compared by regression output rather than static screenshots:
Confirmation
Environment: macOS 27.0.1 (26A434), Apple M4 Pro arm64, Xcode 27.1 / Swift 6.4; Telegram Master Test 13.1.0 (283357), Debug arm64. Master base:
e1883098; latest code:1a6e4032.resume()fails at 60 versus the expected 10 seconds; the source was restored before the final passing run.Reproduction and scope · Verification