Repository navigation
·
2 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
- Importing an FCPXML file works on phones again. Android's XML parser rejects one of the safety switches ClearCut set on it, so every FCPXML import on a phone failed with an error naming that switch. ClearCut now refuses a file that declares its own entities or points to an outside DTD before any parser reads it, which works the same on every phone, and a plain
<!DOCTYPE fcpxml>as Final Cut writes it is fine. A file saved with a byte-order mark imports now too. - A project archive can't bring app or code files onto your phone. Files named like an Android package, a Java or native library, or a shell script are skipped with a warning, and an archive that hides one under a media, LUT, font or watermark name is refused whole, leaving nothing behind. A
.lottieanimation, which is a ZIP inside, still comes through. - Previewing a shared project archive reads only as much of it as its two small metadata files can take up, so a crafted file can't keep the preview reading forever, and a folder entry that carries data is refused.
- LUT files over 32 MB are refused before they're read, and a LUT stops being read at the first row past what its grid holds. That covers LUTs that arrive inside a project archive or a shared effect, which had no size limit of their own. A file full of unreadable rows no longer fills the log either.
- Dragging a clip that sits alone on its track slides it again. With nothing after it, its slide range has no right-hand limit, and the frame math for that open end overflowed to a negative number, so the editor threw every slide away.
- Handles now grab what's under your finger. The timeline clip, keyframe, speed curve, color curve and transform handles worked out what you'd grabbed from where the drag started to register, a few pixels from where you touched. Near a small handle that could miss it, or pick the wrong part of a clip.
- Dragging a keyframe adds one undo entry, and only when the keyframe actually moved. Grabbing a keyframe you hadn't tapped first now moves it from the first movement, instead of waiting for the screen to catch up.
- Typing a trim In or Out time and pressing Done now commits it as one undo entry and saves it, and a hardware keyboard's arrow keys go back to moving the playhead. A typed trim used to stay open until you tapped into the other field, so it could end up with no undo entry and unsaved. Switching clips or closing the trim tool mid-edit commits what you typed.
- The Android 17 test lane now drags, swipes and pinches the real editor. It slides a clip, drags a trim edge, pinches and scrolls the timeline, and drags keyframe and mask handles, checking each against the saved project and the Version history list. The QA editor test, which hadn't been compiling at all, runs again too.
- Export history now tells you whether each finished file is what you asked for. After an export ClearCut reads the file back and compares its format, video and audio codecs, size, frame rate and fast-start layout with your settings. The row then says it matches, that it was made with a fallback encoder or path, that it differs from your settings (naming each difference, like "Video codec: asked for H.265/HEVC, got H.264"), that it carries differences you accepted before exporting, or that the file failed the check and why. It also lists what the file actually holds. Videos, audio-only exports, GIFs, contact sheets and the first file of a stems export all get this, and rows saved by older versions say they weren't checked instead of guessing.
- When Android closes ClearCut for memory, the diagnostic ZIP now says what it was holding. Each low-memory kill, and each Android 17 memory-limit kill (kept apart from the plain low-memory kind), is saved with the phone's RAM size, ClearCut's memory class and the last state of its two biggest memory users: how much decoded audio its latest decode had buffered against its cap, and which Whisper, ONNX and segmentation models were open. On Android 17 and later ClearCut also asks Android for a heap dump when it runs out of memory, and for a profile when it hits its limit. The ZIP always lists those dumps by trigger, result, file name and size. The dump itself goes in only when you turn on Include the last memory dump in Settings, since it can't be redacted, and ClearCut keeps only the newest one on the phone.
- Importing edit-decision JSON now lists every entry it skipped because it wasn't an object (an effect, keyframe, mask, audio effect, caption, marker, text overlay or color grade), instead of dropping it without a word.
- When ClearCut crashes, or Android closes it for not responding or for running out of memory while you're using it, the next launch says so at the top of the projects screen. Save report writes the same redacted diagnostic ZIP that Settings makes, with a ready-to-paste GitHub issue inside. Copy summary puts that issue text on the clipboard: what happened and when, the ClearCut version, the phone, the Android version and the ABI. Nothing leaves the phone unless you share it, and once you save, copy or dismiss, that crash won't come up again. Android quietly closing ClearCut in the background to free memory doesn't count.
- Normalize audio now measures loudness the way EBU R128 says to. ClearCut averaged the two stereo channels instead of adding them, so stereo clips read about 3 dB quieter than they were and got turned up too far. It also treated every file as 48 kHz stereo, used a rough stand-in for the K-weighting filter, and reported the loudest sample as the true peak. It now measures at the rate and channel layout the audio decodes to, leaves the LFE channel out of a 5.1 mix, finds peaks that fall between samples, and matches the EBU's reference test signals within 0.1 LU.
- Beat detection gets the tempo right. A 120 BPM song came out as 122.4 BPM, because the tempo was read off the bottom of a 10 ms range, and every beat was placed about 12 ms early. Beats are now timed at the middle of each analysis window, and the tempo comes from the actual gaps between them, so every whole tempo from 60 to 200 BPM reads within a quarter of a beat per minute. It also uses the rate the audio decodes at, which isn't always the one the file states (HE-AAC decodes at twice it).
- Multicam sync no longer stalls on long clips. Lining up two recordings tried every offset sample by sample, which for a pair of one-minute clips meant more than a hundred billion multiplications. It now cross-correlates through an FFT and reads only as much of each clip as the search can use. It also smooths the audio before downsampling it, uses the decoder's real sample rate and channel count, and keeps the end of the audio the decoder was still holding when the file ran out.
- Edit-decision JSON (
.clearcut-edl.json) now carries clip and effect keyframes, masks, speed curves, transitions, color grades, audio effects on clips and tracks, compound clips, and every text overlay setting (glow, gradient, text path, keyframes). A round trip through the file used to drop all of these without a word, and a clip with a speed curve came back a different length. Anything the importer can't read is now listed in its warnings. - When Android stops a batch export partway through (its time limit for media processing), the batch now stops there and keeps that item's unfinished file so it can resume. It used to mark the item failed and start the next one, because the batch checked the result before the export had finished saying why it stopped. Each batch item also waits for the one before it to wrap up, captions burned in and all, before starting, and Cancel stops the render right away. A mixed export stopped during its final join now stops FFmpeg too and reports the interruption instead of a failure, and it can no longer finish as complete after a cancel.
- Burned-in captions, constant frame rate exports and reversed clips no longer come out without video on phones whose hardware encoder quietly writes nothing. ClearCut took the encoder's word that it had finished, so a captioned export could save as an audio-only file and still say it worked, and a constant frame rate export could fail with "Asset loader error". It now checks each file for its video and encodes again with the software encoder when the video is missing. A reversed clip whose trimmed range has no sound in the source still comes out, just without audio.
- The export sheet now has an EDL button next to OTIO and FCPXML. A 29.97 or 59.94 project writes drop-frame timecode (
FCM: DROP FRAME, with;before the frame field), so cuts no longer drift about 3.6 seconds an hour in Resolve or Premiere. Other rates write non-drop timecode counted in frames. The EDL carries the first video track and the first audio track, and every named source gets its own reel of 8 characters or fewer, so phone clips that share aVID_2026...prefix stop collapsing onto one reel. Files with no usable name share theAXaux reel, which editors match by clip name. An audio clip that a sync offset pulls before the start of the timeline now skips the media that would have played before it, following its speed ramp, so it stays in sync. A reversed clip drops the end of its source there instead of the start. - OTIO and FCPXML exports use the project's own frame rate instead of the render setting, so a 29.97 timeline goes out as 30000/1001 rather than a rounded 30 (or whatever the export sheet was set to).
- EDL import reads drop-frame timecode written with
;, Sony's,or., or plain colons under anFCM: DROP FRAMEline, and recognizes 59.94 drop-frame on its own. - Exports no longer fail on phones whose video decoder reports a frame rate of 0, which hit many Samsung Galaxy A, OPPO, Realme, Xiaomi and vivo models. ClearCut now ships Media3 1.11.1, which carries the upstream fix, and a test fails if the app ever goes back to 1.11.0.
- When a phone's first-choice video or audio decoder refuses to start, export and proxy generation now move on to the next decoder instead of failing. The export record notes which decoder took over, so a run that needed the fallback isn't reported as an exact one.
- Cancelling a multi-file import, or one that fails part way, now deletes the copies it already made instead of leaving them in app storage with no project using them. Files that were already in ClearCut's media folder are reused and never deleted. A cancel that lands just as the import finishes no longer strands the copies either: they either reach the timeline or get cleaned up.
- The caption translation panel no longer lists hundreds of target languages that tapping can't translate into. Until a translation model can be installed, it says once that translation isn't available in this version and shows no language picker.
- Proxies are now a fraction of each clip's own height instead of a fixed 1080p, so 1/2 on a 720p clip makes a 360p proxy and a portrait phone clip keeps its portrait shape. A clip that's already at or below the chosen proxy size is edited as is, and the toast says how many were. Asking again for a proxy that's already built no longer stalls every later proxy request for that clip.
- When Android stops a long export because its background processing time ran out, or won't let one start (usually because ClearCut was in the background), the export history now shows it as Interrupted with the reason instead of a generic failure. If the export can resume, its partial file is kept and Resume picks up where it stopped. Otherwise Start again renders it from the beginning. A batch stops at the interrupted item and keeps the rest of its queue for later.
- Resuming a cancelled export now finishes the file. ClearCut handed Media3 the old partial and the new output in the wrong order, so the resumed render was written over the partial and the export was reported as an empty file.
- Auto captions now produce text. Ever since they were added, the English speech model came back empty for every clip. ClearCut prompted it with token numbers that belong to Whisper's multilingual models, and then dropped the untimed text the model answered with. It now uses the English model's own tokens and asks for timed segments, and a device test transcribes a spoken sentence to prove it. The sound features handed to the model now match the ones Whisper was trained on, too. They used to put every frequency about 28% too high on a different pitch scale, which costs accuracy on real-world recordings.
- Auto captions keep quiet speech. ClearCut threw away a whole 30 seconds of audio whenever the speech model's top guess for it was "no speech", even when it was only about 30% sure. It now follows Whisper's own rule and drops a stretch only when the model is over 60% sure nobody's talking and unsure of the words it did hear. Stretches too quiet to hold speech are skipped before the model runs, so silence no longer comes out as "you" or "[BLANK_AUDIO]". Captions also leave out the brackets, music notes and other symbols Whisper is told never to write.
- Auto captions and object removal now run on ONNX Runtime 1.28.0 instead of 1.26.0. That release fixes model output that could come out silently wrong on Snapdragon 8 Elite Gen 5 phones. A phone that installs the APK for its own processor downloads about 1 to 1.5 MB more. The universal APK carries all four (arm64-v8a, armeabi-v7a, x86_64 and x86), so it grows by about 5 MB.
- Each project now saves its own color setting. New projects start in SDR, and Keep HDR in the export sheet switches a project to HDR delivery. Preview and export used to decide this separately. Media3 keeps HDR by default, so an HDR clip could preview one way and export another, and fast trim or stream copy could pass an HDR clip into an SDR export untouched. Now one plan decides for both. In an SDR project, HDR clips are tone-mapped, by the phone's decoder when its graphics driver can't do it, or read as SDR with a warning that they'll look washed out when neither can. With Keep HDR on, the export comes out HLG or PQ to match the footage. Anything that can't stay HDR stops the export before it renders, and the message says what to change. That covers SDR clips, photos or gaps on the video track, stacked video tracks with HDR clips, H.264, overlays that only render in SDR, captions burned into the picture, and phones whose graphics driver can't handle HDR. A transparent export is checked as the VP9 file it renders. Export history shows the color each export asked for and flags it when the finished file came out different. Projects from older versions open in SDR, and clips imported before this version are checked for HDR when they export. Batch exports follow the project's color setting, the same as the preview.
- ClearCut now builds with Android Gradle plugin 9.4.1 and Gradle 9.8.0, up from 9.1.1 and 9.3.1. Building from source needs Android Studio Quail 4 (2026.1.4) or newer. Nothing changes in the app itself.
- The changelog and README no longer list three versions that were never published as releases of their own. Their notes now sit under v3.81.0, the first release that carried that work, and the release check refuses any changelog version without a tag.