Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: SysAdminDoc/NovaCut

NovaCut v3.74.100

15 Jun 06:27
@SysAdminDoc SysAdminDoc

Choose a tag to compare

What's Changed

Correctness Fixes

  • Fixed potential crash in WhisperEngine audio decode when a corrupt media file reports zero channels
  • Replaced force-unwrap on ModelDownloadManager SHA-256 field with requireNotNull for safer error reporting
  • Added zero-duration guard to Clip.relinkedTo() preventing IllegalArgumentException on degenerate media

I18n

  • Replaced hardcoded English media-read-failed toast with localized string resource

Diagnostics

  • Added logging to silent catch in ExportDelegate audio-conformance probe

Full Changelog: v3.73.2...v3.74.100

Assets 3
Loading

NovaCut v3.74.93

14 Jun 07:00
@SysAdminDoc SysAdminDoc

Choose a tag to compare

NovaCut v3.74.93 — Android video editor.

Install

Download NovaCut-v3.74.93.apk below and open it on your device to install.
You may need to allow "Install unknown apps" for your browser/file manager.

  • Works on Android 8.0 (API 26) and newer.
  • Universal APK — includes every CPU architecture (arm64-v8a, armeabi-v7a, x86, x86_64), so it installs on any compatible phone, tablet, or emulator.
  • Signed with the same key as previous releases, so it updates cleanly over an existing NovaCut install.

What's new

Feature

  • Opt-in update check for sideload / GitHub-release installs. A new Settings → Updates section can do a single, secure version lookup against the GitHub releases page and link you to a newer build. Off by default; it never downloads or installs an APK for you.

Reliability

  • Fixed a resource leak in the dotLottie loader: the animation stream is now closed on every path, including cancellation and load failures.

Data safety

  • Clearing detected beat markers is now undoable (and no-ops when already empty) instead of wiping silently.

Accessibility & localization

  • The caption-translation "Regenerate" control now meets the 48dp minimum touch-target size.
  • Completed the Spanish (es) locale — Project Inspector, before/after preview comparison, storyboard, audio-conformance notices and more no longer fall back to English.
  • Split content-description strings that were reused as visible text so spoken and visible copy can be translated independently.

SHA-256 (NovaCut-v3.74.93.apk): 20667f3c609d4d95b925cf85b5332a0d4d5c3d276076a449272f358f4bf00454

Loading

NovaCut v3.73.2

13 May 17:23
@SysAdminDoc SysAdminDoc

Choose a tag to compare

NovaCut v3.73.2

Premium project-home polish release.

  • First-run project home now focuses on creating, restoring, or sampling a project instead of showing inactive library controls.
  • Empty filtered views provide a single recovery action to show all projects, plus a secondary new-project path.
  • Filtered result headers now include filter name, visible/total counts, and sort context.
  • Mobile first-run layout keeps the empty state visible and moves filter chips into a compact rail.

Verification:

  • Built release APK with assembleRelease.
  • Verified package metadata: com.novacut.editor, versionCode 136, versionName 3.73.2.
  • Verified APK Signature Scheme v2 signature.
  • APK SHA-256: AE404C7DB2F2CF4F3109B65922EA1BB7EAFC3B97E4D3C806730F5069B40958A6.
Loading
SeanShaffer88 reacted with heart emoji
1 person reacted

NovaCut v3.72.0 — Hardening pass

13 May 15:07
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Hardening pass — Cut Assistant correctness, resource leaks, persistence guards

Critical bug fixes

  • Cut Assistant deleted the wrong slice. applyAcceptedCuts() looked up op.clipId AFTER the first splitClipAt(), but splitClipAt keeps the LEFT half on the original id — so the "middle" lookup matched the wrong slice and the engine erased content before the silence range instead of the silence itself. The new applier diffs per-track clip-id sets across both splits, deletes the correct middle slice, and ripple-shifts every subsequent clip back by the deleted span so the timeline closes without orphan gaps.
  • Cut Assistant proposeCutsForReview no longer trusts pre-IO state. Tracks are re-read after the IO waveform scan; clips deleted/moved/replaced mid-scan are filtered out, and CancellationException is propagated so cancelling actually tears down the scope.
  • Cut Assistant review drops on panel dismissal. dismissedPanelState() now resets cutAssistantReview = null alongside the other auxiliary state — opening other panels no longer leaks the ReviewSet (which can hold per-clip word transcripts).
  • TrackedObjectKeyframe rejects NaN/non-finite/out-of-range inputs. Adds require() guards for clipTimeMs >= 0, finite centerX/centerY, and [0, 1] bounds on the center — corrupt JSON can no longer slip NaN coordinates into the mosaic/blur shader pipeline.
  • ProjectArchive no longer swallows CancellationException. Both exportArchive and importArchiveWithReport re-throw after cleanup so a cancelled coroutine sees real cancellation.
  • VideoEngine.extractThumbnail bitmap leak fixed. Bitmap.createScaledBitmap throws OOM (an Error, not Exception); the source frame is now released on every exit path.
  • ModelDownloadManager deletes corrupt cached models on SHA-256 mismatch. Avoids paying for a full hash scan over known-bad bytes on every launch.

Security

  • keystore.properties added to .gitignore — release-signing credentials file was untracked but unprotected.

Tests

  • 22 new unit-test cases across TrackedObjectKeyframeTest and CutAssistantEngineTest covering the new guards, projection math, trim-clipping, merge tolerance, and apply-order ordering.

APK: NovaCut-v3.72.0.apk (118 MB, signed, v2 scheme, min SDK 26).

Loading

NovaCut v3.71.0 - Cut Assistant + TrackedObject + speed-ramp fixes

30 Apr 00:59
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Release v3.71.0 ships the Cut Assistant review UI, TrackedObject scaffolding for the mosaic effect, template compatibility validation, export color confidence checks, stream-copy export control, and speed-ramp duration integration fix.

Note: this APK is signed with a debug certificate (release keystore password was unavailable). To upgrade an installed v3.69.0 you must uninstall the old release-signed build first.

Loading

NovaCut v3.69.0 — 15-Feature Wave + Hardening

23 Apr 02:16
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Twelve new engines behind a composite v3.69 feature hub, real implementations
for stream-copy export / HDR preservation / text stroke export / keyframe
remap on text-based edits / transcript persistence, and a production
hardening pass that closes several latent crashes.

Highlights

  • Text-based editing (Descript/CapCut Script Editor style) — delete words
    in the transcript to delete the mapped clip ranges, with ripple and
    keyframe remap.
  • Karaoke captions — eight word-pop preset styles (MrBeast / Subway /
    Hormozi / TikTok / Pop / Typewriter / Neon / Minimal).
  • Auto-chapters — TextTiling segmentation over the Whisper transcript;
    exports as a YouTube description-ready clipboard block.
  • Stream-copy export via Android MediaMuxer. Around 50x faster than the
    Transformer path on eligible timelines (single clip or multi-clip same
    source, no effects / color grade / speed changes / audio fades).
  • Talking-head auto-framing — face tracking + one-euro smoothing, output
    as position keyframes.
  • Flash safety scan — WCAG-style photosensitive-epilepsy detector.
  • Color-blind preview — Deuteranopia / Protanopia / Tritanopia /
    Achromatopsia via a single shared GL shader with matrix uniforms.
  • HDR preservation on HEVC/AV1/VP9 exports via HDR_MODE_KEEP_HDR.
  • Text stroke export — Canvas-based stroke+fill pass so overlay strokes
    actually make it into the final render.
  • AI thumbnail picker — sharpness / face / rule-of-thirds scoring.
  • Content-ID fingerprint — local audio hash for pre-upload checks.
  • Direct publish — YouTube / TikTok / Instagram / Threads / X / LinkedIn.
  • S Pen + BT MIDI jog/shuttle controller.
  • Transcript persistence across app restart.
  • DeX / Chromebook desktop sidebar with media bin and quick actions.
  • One-handed compact layout toggle.

Production hardening in the same release

  • StreamCopyMuxer no longer emits overlapping timestamps between ranges and
    rethrows CancellationException instead of silently returning false.
  • StrokedTextBitmapOverlay double-buffers bitmaps so Media3's async GPU
    upload cannot race a recycle.
  • AiThumbnailEngine.saveThumbnail no longer recycles the input bitmap while
    the Compose panel is still rendering it.
  • ExportDelegate rethrows CancellationException so user-cancelled exports
    do not surface as ERROR.
  • ColorBlindGlEffect reuses a single compiled shader across all modes.
  • StreamCopyExportEngine compares URIs by toString so JVM unit tests work.
  • Nineteen new tests cover every eligibility branch of
    StreamCopyExportEngine.analyze; full suite green.

Install

Download the APK below. Allow installs from unknown sources if prompted.

Loading

NovaCut v3.68.0 — Performance & Responsiveness Pass

22 Apr 11:54
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Broad optimization sweep across recomposition hotspots, per-tick I/O, and hot-path allocation. No new features. No DB schema changes. No new dependencies.

Compose recomposition fixes

  • Per-clip Brush.verticalGradient overlay hoisted to remember — a 10-clip project recomposing at 30 Hz was churning 300+ Brush + List allocations/sec for a gradient whose contents never change.
  • Render-phase snap-target list memoized via remember keyed on the static inputs. The flatMap { filter { } flatMap { } }.distinct().plus(...).let { ... }.let { ... } chain previously ran on every playhead tick.
  • volumeKeyframesSorted memoized per-clip on clip.keyframes. Was O(n log n) per audio clip per recomposition.
  • previewTrackClips / previewClipAtPlayhead decoupled from playheadMs. The sort that built previewTrackClips was re-keyed on playheadMs via the downstream derive chain, so a static clip list was being re-sorted 30 times/sec during playback.

Per-tick I/O reduction

Eight slider/gesture paths no longer call saveProject() on every onValueChange tick. All have matching begin*/end* hooks so the full-project JSON serialize + disk write runs once per gesture instead of 60 times per second:

  • updateEffectendEffectAdjust()
  • setTrackVolumeendVolumeAdjust()
  • setTrackPanendPanAdjust()
  • setClipVolumeendVolumeChange()
  • setClipTransformendTransformChange()
  • setClipOpacityendOpacityChange() (new hook)
  • setClipFadeIn / setClipFadeOutendFadeAdjust()
  • beginSlideEdit/beginSlipEdit now also enable scrubbingMode(true) (previously only beginTrim did)

The preview-pan pinch gesture was rewritten from detectTransformGestures to awaitEachGesture so it actually has an end hook — the old implementation had no way to signal "gesture finished", which is why setClipTransform was calling saveProject() on every frame in the first place.

Playback loop

  • Playhead sync's per-5-frame state broadcast now gated on drift ≥200ms. During playback, every 5th frame previously emitted an unconditional 40-field state.copy(), invalidating every Compose subscriber of the state flow ~6 times/sec. The dedicated _playheadMs flow already serves live consumers; the full-state broadcast only needs to keep state.playheadMs fresh enough for user-triggered reads like splitClipAtPlayhead and autosave.

Usability

  • Clip-label picker close button 24dp → 44dp to meet Material 3 minimum touch target. Icon 16dp → 20dp.
Loading

NovaCut v3.67.0 — Snackbar Fix, Drag Responsiveness, Quieter Suggestions

22 Apr 11:31
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Follow-up fixes based on v3.66 user testing.

Snackbar covering the screen (also broke video playback)

PremiumSnackbar's accent stripe used fillMaxHeight() inside a height-unconstrained Row. Compose resolves fillMaxHeight against the nearest height-constrained ancestor — which was the screen-root Box — so a "Clips split" toast wasn't just visually oversized, its opaque-ish Surface absorbed touch input across the whole area. That's why the play button appeared unresponsive immediately after a split. Two-line fix: .wrapContentHeight() on the Surface + .height(IntrinsicSize.Min) on the Row so fillMaxHeight now resolves against the Row's wrap-content height (~52dp) instead of the screen.

Timeline drag responsiveness

trimClip, slideClip, and slipClip no longer call rebuildPlayerTimeline() on every tick. All three fire at touch-event rate (60–120 Hz) during a drag; tearing down and rebuilding ExoPlayer's MediaItem + ClippingConfiguration set on every tick was the primary cause of the clunky feel. The rebuild now runs exactly once per gesture in endTrim / endSlideEdit / endSlipEdit. beginSlideEdit and beginSlipEdit also enable scrubbingMode (previously only beginTrim did), so ExoPlayer skips intermediate seek/decode work across all three edit modes.

Suggestion banner cleanup

Removed the unsolicited "This clip could use color correction" suggestion banner that fired every time a long visual clip was selected with no effects. Users can still trigger auto-color from the AI tools panel.

Loading

NovaCut v3.66.0 — Timeline & Editing Overhaul

22 Apr 11:21
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Timeline & Editing Overhaul

Focused rework of the timeline gesture model and viewport framing. Addresses three long-standing usability issues.

Timeline gesture unification

  • Unified clip-body pointer input replaces three competing gesture detectors. Previously the clip body's slide/slip detectDragGestures and the nested trim-handle detectHorizontalDragGestures blocks all waited for drag slop on the same down event, and the parent body detector routinely consumed edge drags before the handle detectors could react — which is why pulling on the edge of a clip to trim often did nothing. A single detectDragGestures on the clip body now measures the touch X at drag start and routes the gesture to one of four zones: TRIM_LEFT, TRIM_RIGHT, SLIP, or SLIDE. Drag events are explicitly consumed so the ancestor pinch-zoom detector doesn't double-handle them.
  • Selected clip shows thicker edge handles with grip lines. When a clip is selected, the trim-handle visual width grows from 14dp to 18dp and three vertical grip lines appear — an unambiguous affordance cue. Matches CapCut / KineMaster edit UX.

Full-duration viewport framing

  • Minimum zoom lowered from 0.1 → 0.01. The old floor meant the fit-to-window calc couldn't actually fit videos longer than ~60 seconds on a phone screen. The new floor lets a 10-minute project fit cleanly.
  • Auto-fit on first layout. fitTimelineToWindow() now fires automatically when the timeline lays out with content present, after autosave/Room restore populates tracks, and after the first clip is added to an empty project. Guarded so subsequent user zoom preferences aren't overridden.
  • Viewport overview strip below the tracks. New TimelineOverviewBar renders a full-project-duration mini-strip with clip footprints, a highlighted viewport window, and a playhead tick. Tap or drag to scroll — centering the viewport on the tapped position. Primary purpose is discoverability: users can see at a glance that there is more content off-screen.

Cut / delete accessibility

  • Prominent "Cut at playhead" and "Delete selected" buttons added to the timeline toolbar row. Split was previously only reachable through a two-level tool sub-menu or a radial long-press menu. The split button uses the Peach accent + highlight border so it reads as a primary action. Delete auto-disables when no clip is selected. Both always visible, regardless of the current tool mode.

Notes

  • No DB schema changes. No new dependencies. No model changes.
Loading

NovaCut v3.65.0

22 Apr 10:57
@SysAdminDoc SysAdminDoc

Choose a tag to compare

Deep Audit Phase 27: Error-Path Allocation & OOM Cleanup

Targeted correctness fixes from continued engineering audit. No behaviour change on valid inputs, no new dependencies.

Bug fixes

  • AudioEngine.extractWaveform — exception path allocated unbounded FloatArray(sampleCount) — Every other return path allocates FloatArray(boundedSampleCount) (capped at 10,000). A caller that passed sampleCount=48_000 received a 192 KB array on decoder failure instead of the expected 40 KB, and the oversized result was cached in the LRU under its "uri|sampleCount" key. Now uses boundedSampleCount on the exception path, completing the v3.59.0 fix which only patched the audioTrackIndex < 0 path.

  • ContactSheetExporter.export — PNG-encoder OutOfMemoryError bypassed partial-file cleanupsheet.compress(...) allocates native PNG-encoder buffers and can raise OutOfMemoryError on very large contact-sheet grids. The outer catch (e: Exception) did not catch OutOfMemoryError (a Throwable subclass, not Exception), so outputFile.delete() was skipped. The finally still recycled the source bitmap (no native leak), but a half-written or 0-byte PNG was left on disk — subsequent opens silently served it as though the export had succeeded. Now catches Throwable but rethrows CancellationException first so coroutine cancellation still propagates.

Notes

  • No DB schema changes. No new dependencies. No UI changes.
Loading
Previous 1 3 4 5
Previous

AltStyle によって変換されたページ (->オリジナル) /