Skip to content

4.2 - Stability & Bugs

Choose a tag to compare

@Comett1225 Comett1225 released this 28 Oct 13:01
· 224 commits to main since this release

AbsentMotion 4.2.0

Two versions: download the one for your phone (Settings > About phone > Android version)

  • Latest (AbsentMotion-4.2.0-foss.apk / AbsentMotion-4.2.0-play.apk): Android 13 and newer. Every feature.
  • Compatible (AbsentMotion-4.2.0-compatible.apk): Android 9 to 12. Some features are left out: Optical flow High, AI Smooth, AI Enhance and AI background removal 2.0.

Not sure which one? The download page picks it for you.

A stability and bug-fix update with new tools: Text Along Path, Puppet Pin, Crop and a Pivot tab, plus a long list of fixes.

Downloads: AbsentMotion-4.2.0-foss.apk has no Google libraries and removes backgrounds offline. AbsentMotion-4.2.0-play.apk adds Google ML Kit background removal. AbsentMotion-4.2.0-compatible.apk is the Compatible version of foss. SHA256SUMS.txt lists the checksums.

New and improved

  • Feature - a GitHub bug report form asks for the version, build, device and steps.
  • Feature - a GitHub feature and effect request form makes requests clear.
  • Feature - a GitHub issue chooser points to private security reporting and the guide; blank issues are off.
  • Feature - Text Along Path sets text along an arc, a circle or the outline of the layer beneath it.
  • Feature - Puppet Pin bends a layer with up to 32 pins that can be animated.
  • Feature - Crop for pictures and videos: drag the corners, edges or whole frame, pick a ratio, and animate it.
  • Feature - a Pivot tab in Transform with a marker you can drag; moving the pivot keeps the layer where it is.
  • Feature - in-app updates with a progress bar, a check that the file is genuine, automatic retry and resume.
  • Improvement - the Rotate tab always shows the 360 degree dial, also on tilted layers.
  • Improvement - the selection dots have a bigger grab area and work at the screen edge.
  • Improvement - the Size ruler keeps gliding after a flick.
  • Improvement - width and height can be unlinked per layer, and the choice is saved.
  • Improvement - the Curl preview rolls up and down smoothly, and the New tag only marks effects from the last five updates.
  • Improvement - cut-outs drop faint haze and stray specks.
  • Improvement - the Effects button (Paste All Effects) is now in the bottom bar when several layers are selected.
  • Improvement - the camera asks before discarding a recording, and Settings asks before clearing preview copies or deleting models.
  • Improvement - export shows clearer progress, option sheets have a Done button, and the done screen says when the picture could not be checked.
  • Improvement - support for devices with 16 KB memory pages.

Fixes

  • Bug - selection dots on a full-width picture could not be grabbed at the screen edge.
  • Bug - a photo, video or sound picked in the file picker was lost if Android closed the app meanwhile.
  • Bug - restoring a backup skipped a changed template or preset, or swapped in a different font of the same name.
  • Bug - a backup said "saved" after leaving out a file that disappeared.
  • Bug - importing a scene broke Move Along Path and other layer links.
  • Bug - the export check missed a short audio or video track and never compared the first frame.
  • Bug - saving an animated layer to My Elements could crop it.
  • Bug - adding many beat markers could freeze the editor for a moment.
  • Bug - cut-outs could read past their memory, use a grey placeholder after a low-memory moment, or ignore a cancel.
  • Bug - exporting a still or GIF on a low-memory phone could close the app.
  • Bug - cancelling and restarting an update download could delete the new download.
  • Bug - the speed panel's retime buttons and the point editor had no names for screen readers.
  • Bug - a stalled export could leave the app stuck; it is now stopped with a notice.
  • Bug - retained media with a name ending in .part or .tmp was deleted at start.
  • Bug - a cancelled layer reorder was still saved, and the preview restarted on every frame.
  • Small fix - the first keyframe is no longer a dead zone when trimming.
  • Small fix - importing keeps spaces in OBJ texture names, reads glTF strips and fans, and applies root SVG opacity.
  • Small fix - damaged or oversized project files no longer block cleanup or use up memory.
  • Small fix - large font sizes no longer cut off the new-project rows.

Known issues

  • HDR video can look too dark or too bright on phones whose decoder does not convert it.
  • Restoring a backup that contains a damaged project file can still bring back a broken project.
  • In WebM and MKV exports, a short video next to full-length sound is not flagged by the export check.
  • Tested on an Android emulator, a phone and a tablet.

Previous changelogs

4.1.2

New and improved

  • Improvement - Auto captions open as a panel over the lower part of the editor, not full screen.
  • Improvement - the text editor keeps the keyboard open while you type, move, resize or pick a size, colour or font.
  • Improvement - tap the timeline ruler just above the Add menu to close it.
  • Improvement - Version History has a square, themed look with clearer rows and buttons.
  • Improvement - the tutorial shows one red Add cue and a pointer that glides to the next control; drag and scrub steps finish when you lift your finger.
  • Feature - Settings shows the installed version under Check for update.
  • Improvement - Rays is redone and closer to Alight Motion, with Threshold Add, Blend and Style; saved projects keep their old look.

Fixes

  • Bug - a cancelled export or export-size estimate could leave the preview frozen.
  • Small fix - preparing preview frames in the background no longer redraws the unchanged picture after every frame.
4.1.1

Two versions: download the one for your phone (Settings > About phone > Android version)

  • Latest (AbsentMotion-4.1.1-foss.apk / AbsentMotion-4.1.1-play.apk): Android 13 and newer. Every feature.
  • Compatible (AbsentMotion-4.1.1-compatible.apk): Android 9 to 12. Some features are left out: Optical flow High, AI Smooth, AI Enhance and AI background removal 2.0.

Not sure which one? The download page picks it for you.

The 4.1 performance update: the editor prepares preview frames by itself, Motion Blur skips repeated work, video previews and timeline thumbnails no longer flash empty, and captions are redesigned.

Downloads: AbsentMotion-4.1.1-foss.apk has no Google libraries and removes backgrounds offline. AbsentMotion-4.1.1-play.apk adds Google ML Kit background removal. AbsentMotion-4.1.1-compatible.apk is for Android 9 to 12. SHA256SUMS.txt lists the hashes, and AbsentMotion-training-image-credits.txt credits the training pictures used by the offline background model.

New and improved

  • Feature - the editor prepares preview frames by itself while it is idle, starting at the playhead. An edit only clears the frames it changes, and preparation pauses during playback, gestures, export, high temperature and while the app is in the background.
  • Feature - captions open full screen with a choice of clip or whole project, a progress bar with the time left and a Cancel button, and Auto captions on video and audio clips.
  • Feature - an optional, higher-precision multilingual speech model for captions (about 82 MB download); the standard model stays the default.
  • Feature - Voice filters are a category of the audio effects.
  • Improvement - Motion Blur and Shutter Blur draw layers that do not change during the shutter once instead of once per sample; in desktop benchmarks of blur-heavy scenes, exports were 1.09 to 1.65 times faster.
  • Improvement - prepared preview frames follow the preview's Fast or Full motion blur choice, and exports keep the chosen quality.
  • Improvement - the tutorial only lets the current step's control be used, marks it in red, and hides the other editor controls from screen readers.
  • Improvement - error messages, default layer names and effect names follow the app language and change right away after a language switch.
  • Improvement - offline Help in all 14 languages, and many translations were corrected.

Fixes and tooling

  • Bug - the preview no longer shows an empty picture while a video frame is still loading, or a frame from an older seek.
  • Bug - photo and video thumbnails on the timeline no longer fall back to stripes for a moment when rows scroll back into view or another picture or font loads; a thumbnail is only reused while its file, the engine and the fonts are unchanged.
  • Bug - during the tutorial's play and scrub step, the clip tools and the add button can no longer be used.
  • Tooling - the build check runs the compat unit tests apart from lint, reports failing tests by name and keeps the test reports; the heavy SVG import test measures processor time.
4.0.1

Two versions: download the one for your phone (Settings > About phone > Android version)

  • Latest (AbsentMotion-4.0.1-foss.apk / AbsentMotion-4.0.1-play.apk): Android 13 and newer. Every feature.
  • Compatible (AbsentMotion-4.0.1-compatible.apk): Android 9 to 12. Some features are left out: Optical flow High, AI Smooth, AI Enhance and AI background removal 2.0.

Not sure which one? The download page picks it for you.

A small update to transition controls, motion thumbnails and export settings.

Downloads: AbsentMotion-4.0.1-foss.apk has no Google libraries and removes backgrounds offline. AbsentMotion-4.0.1-play.apk adds Google ML Kit background removal. AbsentMotion-4.0.1-compatible.apk is for Android 9 to 12. SHA256SUMS.txt lists the hashes, and AbsentMotion-training-image-credits.txt credits the training pictures used by the offline background model.

New and improved

  • Feature - swipe the Transition button left to hide it until another timeline scrub; scrubbing the same clip brings it back too.
  • Feature - Settings > Editor > Transition button in preview chooses between its usual position and the preview area, on phone and tablet layouts.
  • Feature - editable export filenames, starting with the project title whenever export is reopened.
  • Feature - random numeric export names for images and videos, with a fresh 16-digit name each time; current-frame PNG now has extra settings too.
  • Improvement - photo-based transition and animation thumbnails, reusing two small bundled images, with visible tiles composed as needed.
  • Cleanup - removed the temperature stat and successful Checked message from export; thermal protection and verification warnings remain.
  • Improvement - the new controls are translated into all 14 languages.

Fixes and tooling

  • Small fix - export names are sanitised and bounded by UTF-8 length so long names stay within filesystem limits.
  • Small fix - Pulse, Wobble and Float thumbnail amounts now match their presets.
  • Tooling - release APKs are checked for corruption, signatures across supported Android versions, native-library alignment and consistent versions/certificates; signing uses each APK's declared minimum Android version.
  • Bug - the animated GIF regression test now generates its own compressed fixture instead of relying on a removed documentation image.
4.0.0

Two versions: download the one for your phone (Settings > About phone > Android version)

  • Latest (AbsentMotion-4.0.0-foss.apk / AbsentMotion-4.0.0-play.apk): Android 13 and newer. Every feature.
  • Compatible (AbsentMotion-4.0.0-compatible.apk): Android 9 to 12. Some features are left out: Optical flow High, AI Smooth, AI Enhance and AI background removal 2.0.

Not sure which one? The download page picks it for you.

The biggest update yet: a 5-minute tutorial, a rendered preview when playback is choppy, AI background removal 2.0, exports that keep going in the background, Alight Motion projects that import far better, Bengali and Persian, and well over a hundred fixes.

Downloads: AbsentMotion-4.0.0-foss.apk has no Google libraries and removes backgrounds offline. AbsentMotion-4.0.0-play.apk adds Google ML Kit background removal and is published only here on GitHub. AbsentMotion-4.0.0-compatible.apk is for Android 9 to 12. SHA256SUMS.txt lists the hashes, and AbsentMotion-training-image-credits.txt credits the pictures the offline background model was trained on.

New

  • Feature - a 5-minute tutorial for beginners, in its own practice project (offered after the first start and in Settings)
  • Feature - Render preview: when playback is choppy, the editor offers to render the project so it plays smoothly, in sync with the sound
  • Feature - AI background removal 2.0 for pictures: much cleaner cut-outs (optional download of about 62 MB, asked once)
  • Feature - exports keep going in the background, with a progress notification and Cancel
  • Feature - move several clips at once: hold one selected clip and the others follow
  • Feature - Move to playhead with several clips: the first press keeps their gaps, the second lines them up
  • Feature - smoothing updates itself after small trims, and asks you after big changes
  • Feature - a new sound library: search, sort by name, date or length, and Albums, Artists and Folders
  • Feature - From Files: add videos, pictures, sounds and GIFs from any folder
  • Feature - animated GIFs import as looping clips, with transparency
  • Feature - fonts: TTF, OTF, TTC and WOFF, with a reason for every file that fails
  • Feature - type exact values, fine-tune by holding before you drag, double-tap to reset
  • Feature - Bengali and Persian (14 languages now)
  • Feature - Alight Motion projects: about 115 more Alight effects now import, plus new Noise, Raster Transform, Solid Matte, Smooth Edges and Simple Starfield effects
  • Feature - the update dialog has a Changelog button and downloads the right version directly
  • Feature - project packages now include your imported fonts
  • Feature - mouse and trackpad: scroll and zoom the timeline

Improvements

  • Improvement - exports with Motion Blur are about twice as fast (a heavy 60 fps edit: 28.9 s down to 12.9 s on a Galaxy S26 Ultra)
  • Improvement - tablets: text editing opens in a side panel next to the preview, and the app opens full screen when started sideways
  • Improvement - portrait exports on older tablets are about twice as fast (Compatible version)
  • Improvement - Glow renders about ten times faster on older devices and no longer makes weak GPUs fail
  • Improvement - big projects are quicker to edit: dragging a layer does about a third of the work it did
  • Improvement - the app follows your phone's font size
  • Improvement - Arabic and Persian text reads right to left in the editor
  • Improvement - screen readers can use the timeline rows and the value rulers
  • Improvement - a stuck export stops with a clear reason, and a failing encoder is tried again with another one
  • Improvement - the check after a video export also catches a black or frozen picture
  • Improvement - export time estimates are closer and learn from each export
  • Improvement - failed saves keep your newest edits, with Try Again or Close Without Saving
  • Improvement - the weekly backup waits until the app is idle and checks free space first
  • Improvement - a daily clean-up removes copies and AI files that nothing uses any more
  • Improvement - the Photos tab explains how to allow access after it was refused
  • Improvement - projects with text open without a stall on older devices
  • Improvement - silent projects no longer pause your music
  • Improvement - AI Enhance and AI Smooth keep 88.2 and 96 kHz sound
  • Improvement - tablets: the Transition button no longer covers the clips

Bugs

  • Bug - fixed exports freezing on older devices when Motion Blur or Echo sat on top of heavy effects
  • Bug - fixed backups made on Android 11 being damaged (older ones now show a clear message)
  • Bug - fixed unsaved edits being lost after a crash or a failed save
  • Bug - fixed damaged projects opening blank and being saved over
  • Bug - fixed Smooth losing the clip's sound
  • Bug - fixed Scatter Field using gigabytes of memory and getting the app closed
  • Bug - fixed long MKV and WebM exports running out of memory
  • Bug - fixed interrupted exports being left behind as broken files
  • Bug - fixed WAV exports over 4 GB being cut off (they now suggest FLAC)
  • Bug - fixed WebP lossless not being lossless on Android 9
  • Bug - fixed AV1 files carrying wrong format details
  • Bug - fixed custom export sizes being refused on some phones
  • Bug - fixed crafted project, SVG and font files crashing or freezing the app
  • Bug - fixed a shared project being able to show another project's pictures
  • Bug - fixed a sound starting inside a group being cut off in the preview, and looping sounds cutting out on each repeat
  • Bug - fixed looped clips such as GIFs freezing after a split or trim
  • Bug - fixed split path followers and split groups losing their path or timing
  • Bug - fixed Undo losing a step when a drag was cancelled with a full history
  • Bug - fixed double-tap reset on rulers going to zero instead of the default
  • Bug - fixed the number keypad ignoring Bengali, Hindi and Thai digits
  • Bug - fixed one tap outside the AI progress window cancelling a long run
  • Bug - fixed motion tracking going wrong when the parent layer had no size
  • Bug - fixed 3D model files with + or accents in their names not opening
  • Bug - fixed the tutorial offer covering the Import complete window

The 3.3.2, 3.3.1, 3.3.0 and 2.x releases are below, and every version is also in CHANGELOG.md in the repository.

3.3.2

Improvements

  • Improvement - touch editing now follows the camera and 3D layers
  • Improvement - tablets get the wide Home layout, with search
  • Improvement - AI Smooth works on trimmed clips
  • Improvement - AI Enhance and AI Smooth keep the clip's sound in more formats
  • Improvement - backup, weekly backup and the camera ask for storage permission on Android 9
  • Improvement - WebM and MKV are greyed out on phones without an Opus encoder
  • Improvement - Stroke now works on drawings and groups
  • Improvement - Thai, Lao, Khmer and Burmese text can animate by word

Bugs

  • Bug - fixed exports with sound failing on Android 9 and 10
  • Bug - fixed a shared file without read access crashing the app
  • Bug - fixed deleting a project removing AI results another project used
  • Bug - fixed version history stopping after a wrong phone date
  • Bug - fixed Static, Flicker and Glitch turning to stripes after about 20 seconds
  • Bug - fixed Glitch smearing a layer's edge across the frame
  • Bug - fixed Light, Edge and Soft Glow looking doubled and grey
  • Bug - fixed Film Grain Size and Speed doing nothing
  • Bug - fixed Timecode showing the wrong frame numbers
  • Bug - fixed Frame Rate and Random Jitter holding frames unevenly
  • Bug - fixed Count Up/Down misreading numbers like 1.000,5
  • Bug - fixed the outside border showing through see-through fills and text
  • Bug - fixed Repeat borders staying in place instead of following the copies
  • Bug - fixed splitting a group breaking echo, reverb and voice in exports
  • Bug - fixed editing shape points making open lines vanish
  • Bug - fixed speed presets landing in the wrong place on trimmed clips
  • Bug - fixed looping sound clicking in the preview
  • Bug - fixed Quick sharpen doing nothing
  • Bug - fixed AI Enhance Faces failing on 4K and rotated clips
  • Bug - fixed AI Smooth showing a frozen frame or "encoder busy"
  • Bug - fixed a stray keyframe from the fill tab
  • Bug - fixed text layers being renamed by opening a panel
  • Bug - fixed the colour editor staying open after Undo
  • Bug - fixed the Parent menu reopening by itself
  • Bug - fixed timeline zoom resetting, and the playhead stopping between frames
  • Bug - fixed Hindi and Tamil word endings swallowing spaces
  • Bug - fixed arrows pointing the wrong way in Arabic, and Filipino plurals missing the number
  • Bug - fixed a double tap starting two exports
  • Bug - fixed the GPU AI switch turning off after unrelated crashes
3.3.1

Improvements

  • Improvement - cut-out borders, strokes and shadows now follow the visible part of the picture
  • Improvement - tapping the empty area around a cut-out no longer selects it
  • Improvement - video cut-outs now move with the clip's effects, like shake and Random Displacement
  • Improvement - AI Smooth exports use far less memory
  • Improvement - SVG imports are more accurate (holes, fills, gradients) and big files import faster
  • Improvement - a failed media copy now shows a message
  • Improvement - the camera microphone notice can be tapped to ask again or open Settings
  • Improvement - Android 9 asks for storage permission before the first export
  • Improvement - the update check now ignores the AI models download

Bugs

  • Bug - fixed a crash when exporting with AI Smooth on some phones
  • Bug - fixed AI Smooth exports being closed by Android for low memory
  • Bug - fixed a crafted backup erasing app data when restored and then deleted
  • Bug - fixed a restored backup leaving projects without their media
  • Bug - fixed cut-off project files opening as half a project
  • Bug - fixed shared projects opening web addresses by themselves
  • Bug - fixed a cancelled export leaving video previews switched off
  • Bug - fixed leftover files from stopped exports and cancelled copies
  • Bug - fixed splitting a clip with a mask losing the mask
  • Bug - fixed moved clips gaining or losing a frame
  • Bug - fixed transitions leaving a gap after a split
  • Bug - fixed pasting a mask on its own clipping the wrong layer
  • Bug - fixed Motion Blur looking dark on the first frames
  • Bug - fixed drawings made of single taps disappearing
  • Bug - fixed text stroke outlining the whole text box instead of the letters
  • Bug - fixed the editor not recovering after the phone's graphics reset
  • Bug - fixed sound still playing after a quick pause, and sound leaks
  • Bug - fixed Mark beats running out of memory on very long clips
  • Bug - fixed huge SVG files crashing the app
  • Bug - fixed AI Enhance leaving half-written files, and Faces missing faces in rotated clips
  • Bug - fixed keyframes being missed on a layer's first frame
  • Bug - fixed list reordering scrolling by itself
  • Bug - fixed pinch zoom drifting off centre
  • Bug - fixed Reset Position and Flip on parented and animated layers
  • Bug - fixed a rare sound crash in Reverb and Echo
3.3.0

Features

  • Feature: 'A Compatible version for Android 9, 10, 11 and 12 with its own download; features it leaves out are shown with a lock' was added in 'build.gradle.kts, Tier.kt, cpp/encoder_copy.cpp'
  • Feature: 'The Frame Rate effect (was Time Quantization) makes any layer move at a lower frame rate for a choppy, stop-motion look, video included' was added in 'assets/effects/timequant.json'
  • Feature: 'Frame Interpolation has Low, Medium and High for Frame blending and Optical flow, with a help sheet that says which phones suit each' was added in 'export/ExportOptions.kt, ui/export/SmoothingHelp.kt'
  • Feature: 'A Motion Blur export option that makes moving video look smoother, even at the clip's own frame rate' was added in 'cpp/interpolation.cpp, export/ExportOptions.kt'
  • Feature: 'Smooth on a video clip: the smooth frames are made once and shown in the preview and every export; the original can be brought back' was added in 'ai/ClipSmooth.kt'
  • Feature: 'AI Smooth, made on the phone, as a fourth smoothing method' was added in 'ai/AiSmooth.kt'
  • Feature: 'AI Enhance for video clips' was added in 'ai/AiEnhance.kt'
  • Feature: 'A Help screen in Settings with the full guide offline, and a ? on every effect that opens its page' was added in 'ui/home/HelpScreen.kt, assets/help'
  • Feature: 'A documentation and download website that picks the right file for your phone, with a phone checker and a page for every effect' was added in 'site, tools/site_build.py'
  • Feature: 'A clear message instead of a crash when a phone's graphics cannot run the editor' was added in 'ui/home/UnsupportedPhone.kt, engine/EngineThread.kt'

Improvements

  • Improvement: 'Tablets: the Add menu shows many more videos, pictures and shapes per row, and in landscape the clip tools sit in a narrow column at the right edge' was improved in 'ui/editor/AddPopup.kt, ui/editor/EditorScreen.kt'
  • Improvement: 'Exports on phones with a small video chip free the editor's players first, fall back to another encoder when one is busy, and the result screen always shows the video' was improved in 'export/VideoExport.kt, ui/export/ExportPreview.kt'
  • Improvement: 'Exports below Android 13 are about a third faster, and the export time estimate accounts for heavy effects' was improved in 'cpp/encoder_copy.cpp, export/ExportTime.kt'
  • Improvement: 'Error messages say what went wrong in plain words instead of codes' was improved in 'export/Exporter.kt'

Bugs

  • Bug: 'Old effects saved without a frame rate showed 5 fps in the settings while playing at 8' was fixed in 'assets/effects/timequant.json'
  • Bug: 'The hardware video encoder on some phones refused to export at all' was fixed in 'export/VideoExport.kt'
  • Bug: 'The too-large project file message said 32 MB while the limit is 16 MB' was fixed in 'res/values/strings.xml'
  • Bug: 'Restoring an AI-changed clip lost its media details' was fixed in 'ai/AiMark.kt'
2.5.2

A fix update after more testing: playback and editing bugs you reported, plus the findings of a second code review.

Features

  • Feature: 'A red grip and one very light vibration when a video or audio clip is dragged past the end of its source' was added in 'ui/editor/Timeline.kt, model/VideoTiming.kt'
  • Feature: 'A Trim Limit Vibration switch in the Home settings' was added in 'ui/home/SettingsDrawer.kt, library/AppSettings.kt'
  • Feature: 'Effects, borders and shadows on a group are drawn on the composited group' was added in 'cpp/styles.cpp'
  • Feature: 'A privacy policy' was added in 'PRIVACY.md'

Improvements

  • Improvement: 'The next video clip is prepared before playback or scrubbing reaches it' was improved in 'media/VideoLibrary.kt'
  • Improvement: 'Removing or changing a parent link keeps the whole animation of the child in place' was improved in 'editor/StructureActions.kt'
  • Improvement: 'Save to My Assets keeps the full transform, animation and parent chain' was improved in 'editor/ElementActions.kt'
  • Improvement: 'Media is relinked only when exactly one file matches by name and size' was improved in 'library/MediaRelink.kt'

Cleanup

  • Cleanup: 'Four Android lint errors (break strategy constants, a literal byte order mark, a Compose reset)' was fixed in 'platform/AndroidPlatform.kt, fonts/TextLayout.kt, ui/editor/panels/BorderShadowPanel.kt, library/Importer.kt'

Tooling

  • Tooling: 'New engine checks for Invert, RGB Split and group effects, borders and shadows' was added in 'tools/remaining_engine_check.py'

Bugs

  • Bug: 'Audio stopped a few seconds into the second half of a split clip, or any clip that starts later than three seconds in its file' was fixed in 'audio/LayerStream.kt'
  • Bug: 'The picture vanished for a moment between two clips' was fixed in 'media/VideoLibrary.kt'
  • Bug: 'Pressing Play and Pause quickly sent the playhead back in time' was fixed in 'audio/AudioEngine.kt'
  • Bug: 'Invert painted white outside the layer' was fixed in 'assets/effects/invert.json'
  • Bug: 'RGB Split changed translucent colours even at distance 0' was fixed in 'assets/effects/rgbsplit.json'
  • Bug: 'Deleting a project could remove media shared with another project that could not be read at that moment' was fixed in 'library/ProjectStore.kt'
  • Bug: 'Replacing a trimmed text video fill with a shorter clip left an invalid trim' was fixed in 'ui/editor/panels/ColorFillPanel.kt'
2.5.1

A bug-fix update. The fixes come from a code review of 2.5.0 (about 55 claims, each re-checked against the real code: 7 were real bugs, 24 had a smaller real problem inside, the rest were not bugs and were left alone).

Features

  • Feature: 'GIF export flattens transparent areas onto the chosen background (white by default, black as the other choice)' was added in 'export/Exporter.kt, ui/export/ExportScreen.kt'
  • Feature: 'A message when a project cannot be saved (shown once, the save is retried at the next edit)' was added in 'editor/EditorState.kt, MainActivity.kt'
  • Feature: 'AI results (cut-outs, noise reduction, voices) are deleted with the last project that uses them' was added in 'library/ProjectStore.kt, ui/home/HomeScreen.kt'

Improvements

  • Improvement: 'The projects list reuses the details of projects that did not change' was improved in 'library/ProjectStore.kt'
  • Improvement: 'Home keeps at most 64 decoded project thumbnails' was improved in 'ui/home/HomeScreen.kt'
  • Improvement: 'The MP4 size estimate counts video and nested audio' was improved in 'ui/export/ExportScreen.kt'
  • Improvement: 'Imports with a frame rate outside 1 to 240 or a size over 16384 are refused, and imported layers with duplicate or missing ids get new ids' was improved in 'library/Importer.kt'
  • Improvement: 'Template and preset delete and rename run off the main thread and report failures' was improved in 'ui/home/TemplatesTab.kt, ui/editor/PresetScreen.kt, ui/editor/ElementUi.kt'
  • Improvement: 'Text to speech gives up when the system voice never answers' was improved in 'platform/AndroidPlatform.kt'
  • Improvement: 'The Vulkan 1.2 requirement is now stated in the manifest, README, build notes and store text (they said 1.1)' was improved in 'AndroidManifest.xml, README.md, docs/BUILD.md, fastlane/metadata/'

Tooling

  • Tooling: 'engine_check and remaining_engine_check expect missing pictures to draw nothing' was fixed in 'tools/engine_check.py, tools/remaining_engine_check.py'
  • Tooling: 'The xml test hook carries on when a video file is missing' was fixed in 'MainActivity.kt'
  • Tooling: 'New contracts for the retiming, GIF and camera changes, and the stale remaining-contract check was repaired' was added in 'tools/ui_contract_check.py, tools/remaining_contract_check.py'

Small fixes

  • Small fix: 'The scene was serialised twice per edit and parsed again by the engine' was fixed in 'editor/EditorState.kt, engine/EngineThread.kt'
  • Small fix: 'The eyedropper could crash when the preview closed while copying a pixel' was fixed in 'platform/AndroidPlatform.kt'
  • Small fix: 'The video thumbnail loader swallowed cancellation' was fixed in 'ui/editor/VideoThumbnails.kt'
  • Small fix: 'Creating a project from a template, saving an asset or renaming could crash when storage failed' was fixed in 'MainActivity.kt, ui/home/TemplatesTab.kt, ui/editor/PresetScreen.kt'
  • Small fix: 'The missing-media check before exporting ran on the main thread' was fixed in 'ui/export/ExportScreen.kt'
  • Small fix: 'The size estimate for XML and bundle exports was recomputed on every screen update' was fixed in 'ui/export/ExportScreen.kt'

Bugs

  • Bug: 'Returning from the picker, the share sheet or another app reloaded every picture and blanked every preview video' was fixed in 'media/MediaLibrary.kt, media/VideoLibrary.kt, engine/EngineThread.kt'
  • Bug: 'A picture that failed to decode was never tried again, and a failed video frame removed the last good frame' was fixed in 'media/MediaLibrary.kt, cpp/engine.cpp'
  • Bug: 'A project with a frame rate of 0 crashed when opened' was fixed in 'model/Scene.kt'
  • Bug: 'A project that could not be rewritten after a migration crashed the open' was fixed in 'MainActivity.kt'
  • Bug: 'Extending or trimming a clip from the Speed panel flattened a speed ramp to one speed' was fixed in 'model/VideoTiming.kt, editor/VideoActions.kt'
  • Bug: 'A layer of 36 minutes or more at 0.001x overflowed its end time' was fixed in 'model/VideoTiming.kt'
  • Bug: 'Extract Audio from a muted or already extracted video gave a silent audio layer' was fixed in 'editor/AudioActions.kt, audio/AudioClip.kt'
  • Bug: 'Replacing a template layer did not shift its speed-ramp keys or turn keyframed rotation' was fixed in 'ui/home/TemplateEditor.kt'
  • Bug: 'GIFs from a transparent project or an element came out on black with no choice' was fixed in 'export/Exporter.kt'
  • Bug: 'Camera ruler fields edited an older copy of the layer' was fixed in 'ui/editor/panels/CameraPanel.kt'
2.5.0

Features

  • Feature: 'Touch and hold a keyframe diamond, then drag it along the clip to retime it (all keyframes at that frame move, one undo step)' was added in 'ui/editor/Timeline.kt, editor/EditorState.kt, model/VideoTiming.kt'
  • Feature: 'Extend and move buttons for a single clip when the playhead is off the clip' was added in 'ui/editor/LayerTools.kt'
  • Feature: 'Export anyway when the project uses media that is missing' was added in 'ui/export/ExportScreen.kt'
  • Feature: 'Unsharp Mask effect' was added in 'assets/effects/unsharpmask.json'
  • Feature: 'Highlights & Shadows effect' was added in 'assets/effects/highlightshadow.json'
  • Feature: 'Denoise effect' was added in 'assets/effects/denoise.json'
  • Feature: 'Flicker effect' was added in 'assets/effects/flicker.json'
  • Feature: 'Alight Motion Unsharp Mask, Brightness & Contrast 2, Denoise, Highlights & Shadows and Flicker 2 convert when importing' was added in 'assets/effects/foreign.json'
  • Feature: 'Scale Brightness switch' was added in 'assets/effects/gradientmap.json'

Improvements

  • Improvement: 'Imported Alight Motion exposure, colour temperature, colour tune, saturation and vibrance, brightness and contrast, and gradient blend modes now match Alight (measured layer by layer)' was improved in 'assets/effects/foreign.json, exposure.json, temperature.json, brightnesscontrast.json'
  • Improvement: 'Light Glow keeps only the bright parts before blurring and Soft Glow blurs a grey copy, matching Alight' was improved in 'assets/effects/lightglow.json, softglow.json, cpp/effects.cpp'
  • Improvement: 'The four-colour gradient can place its colours at the layer corners like Alight' was improved in 'assets/effects/fourcolor.json'
  • Improvement: 'Missing pictures and videos draw nothing instead of a checkerboard over the picture' was improved in 'cpp/scene.cpp, cpp/styles.cpp, media/VideoLibrary.kt'
  • Improvement: 'The thumbnails of the effects whose look changed were regenerated' was improved in 'assets/effects/thumb/'

Tooling

  • Tooling: 'A debug hook that renders a list of projects in one launch' was added in 'MainActivity.kt'

Small fixes

  • Small fix: 'The edited scene was parsed twice on the main thread on every edit' was fixed in 'engine/EngineThread.kt'
  • Small fix: 'The display timing history grew without limit between playbacks' was fixed in 'cpp/engine.cpp'

Bugs

  • Bug: 'Sharpen darkened the picture (nine taps divided by eight)' was fixed in 'assets/effects/sharpen.json'
  • Bug: 'Dragging speed or trim sliders froze the video in the preview because every new edit cancelled the frame being decoded' was fixed in 'media/VideoLibrary.kt'
  • Bug: 'Video thumbnails restarted on every edit and piled up video readers that competed with the preview' was fixed in 'ui/editor/VideoThumbnails.kt'
  • Bug: 'Exposure applied its gain before the gamma instead of after' was fixed in 'assets/effects/exposure.json'
  • Bug: 'Colour temperature kept the picture brightness fixed instead of changing it like Alight' was fixed in 'assets/effects/temperature.json'
  • Bug: 'Brightness was added before the contrast instead of after' was fixed in 'assets/effects/brightnesscontrast.json'
  • Bug: 'Imported colour tune used the wrong hue angle and amount scale' was fixed in 'assets/effects/foreign.json'
2.4.0

Features

  • Feature: 'Remove Background works offline in the free (foss) build, with no Google libraries, using a 2.9 MB on-device model' was added in 'ai/BackgroundRemoval.kt (foss), cpp/absent_bg/, cpp/absent_bg_jni.cpp, app/src/foss/assets/absent_bg.abg'

Improvements

  • Improvement: 'Video thumbnails are no longer prepared for clips outside the visible timeline, so scrolling does less work' was improved in 'ui/editor/VideoThumbnails.kt'
  • Improvement: 'Theme files are read off the main thread' was improved in 'ui/home/SettingsDrawer.kt, ui/home/NewProjectSheet.kt'
  • Improvement: 'The GIF size estimate now measures real encoded samples instead of a fixed guess' was improved in 'export/GifEstimate.kt, ui/export/ExportScreen.kt'

Cleanup

  • Cleanup: 'Unused Receive from phone controls were removed' was removed from 'ui/home/HomeScreen.kt, ui/home/WideHome.kt, ui/home/HomeIcons.kt'
  • Cleanup: 'An extra blank line in the project formatting helpers' was removed from 'ui/home/ProjectFacts.kt'

Tooling

  • Tooling: 'Comment-free source policy is checked and APK checks find their files from the caller's directory' was changed in 'tools/source_policy.py, tools/publish_check.sh and other tools/*.py'
  • Tooling: 'Native helper builds now stop on patch conflicts and compiler failures' was changed in 'tools/build_skia.sh, tools/sksl_check/build.sh'
  • Tooling: 'Failed export timings are reported and the cached touch helper is sent to each device' was changed in 'tools/export_speed.sh, tools/export_timing.py, tools/touch.sh'
  • Tooling: 'Build notes were updated for the Debian CI and reproducible Android builds' was changed in 'docs/BUILD.md'
  • Tooling: 'Regression checks for tool failures and editor lifecycle contracts' was changed in 'tools/bug_regression_check.py, tools/ui_contract_check.py'
  • Tooling: 'Device export checks for AAC audio and export paths' was changed in 'tools/aac_check.py, tools/device_export_check.py, DeviceChecks.kt'
  • Tooling: 'Regression checks for rendering, editor and short exports' was changed in 'tools/remaining_engine_check.py, tools/remaining_contract_check.py'

Small fixes

  • Small fix: 'Project sizes that are rounded were not recognised' was fixed in 'ui/home/ProjectFacts.kt, ui/home/HomeScreen.kt, ui/home/TemplatesTab.kt'
  • Small fix: 'Stroke defaults and the cap selection did not match how the stroke is drawn' was fixed in 'model/Styling.kt, ui/editor/panels/BorderShadowPanel.kt'
  • Small fix: 'Layer menus could be out of reach' was fixed in 'ui/editor/EditorMenus.kt'
  • Small fix: 'A preset preview did not restart when played again' was fixed in 'ui/editor/PresetScreen.kt'
  • Small fix: 'The favourite fonts header was not shown' was fixed in 'ui/editor/TextEditor.kt, ui/editor/TextIcons.kt'
  • Small fix: 'Export and colour labels used different wording in different places' was fixed in 'ui/editor/CaptionsSheet.kt, ui/editor/effects/EffectBrowser.kt, ui/export/ExportDone.kt'
  • Small fix: 'Controls on the home screen could be out of reach' was fixed in 'ui/home/NewProjectSheet.kt, ui/home/SettingsDrawer.kt'
  • Small fix: 'An invalid transform tab was not reset' was fixed in 'ui/editor/LayerTools.kt, ui/editor/panels/CameraPanel.kt'
  • Small fix: 'Retrying an export used an out-of-date free storage figure' was fixed in 'ui/export/ExportScreen.kt'
  • Small fix: 'The Check Mark shape repeated its end-cap corner point' was fixed in 'assets/shapes.xml, tools/gen_shapes.py'
  • Small fix: 'Choice popups could go outside the window' was fixed in 'ui/editor/StructureUi.kt'

Bugs fixed

  • Bug: 'The export size estimate could overflow' was fixed in 'export/ExportOptions.kt'
  • Bug: 'Media style settings were lost when styles were copied' was fixed in 'editor/StructureActions.kt, editor/EditorActions.kt'
  • Bug: 'Copied layers and curves were used without being checked' was fixed in 'editor/EditorActions.kt, editor/StructureActions.kt'
  • Bug: 'Applying a preset overwrote text and media properties it should not change' was fixed in 'editor/PresetActions.kt'
  • Bug: 'Nested keyframes were damaged when a video was retimed' was fixed in 'editor/VideoActions.kt, model/VideoTiming.kt'
  • Bug: 'A stale speed map stayed on a clip after retiming' was fixed in 'editor/VideoActions.kt, model/VideoTiming.kt'
  • Bug: 'A custom size was applied more than once' was fixed in 'ui/editor/EditorMenus.kt'
  • Bug: 'An audio preview player was not released when its source failed to open' was fixed in 'ui/editor/AudioTab.kt'
  • Bug: 'Seeking in a preset preview could go past the current duration' was fixed in 'ui/editor/PresetScreen.kt'
  • Bug: 'Canvas gestures and selection handles could corrupt a layer's transform' was fixed in 'ui/editor/Preview.kt'
  • Bug: 'Template editing state was not reset when another template was opened' was fixed in 'ui/home/TemplateEditor.kt'
  • Bug: 'Replacement slots in sped-up clips were measured wrongly' was fixed in 'ui/home/TemplateEditor.kt'
  • Bug: 'Camera ruler changes did not add up' was fixed in 'ui/editor/panels/CameraPanel.kt'
  • Bug: 'Effect rulers dropped a step when snapping to a tick' was fixed in 'ui/editor/panels/EffectRuler.kt'
  • Bug: 'Warped edges of effects (Bulge, Wave Warp) were drawn wrongly' was fixed in 'cpp/scene.cpp, cpp/preview.cpp, assets/effects/bulge.json, assets/effects/wavewarp.json'
  • Bug: 'Camera lifetimes were wrong' was fixed in 'cpp/camera.cpp, cpp/scene.cpp'
  • Bug: 'Arrow widths were wrong' was fixed in 'cpp/shapes.cpp, cpp/styles.cpp'
  • Bug: 'Effects on grouped layers were wrong' was fixed in 'cpp/scene.cpp, cpp/styles.cpp'
  • Bug: 'Importing a package could treat XML media files as projects' was fixed in 'library/Importer.kt'
  • Bug: 'Template media were lost' was fixed in 'library/ProjectStore.kt'
  • Bug: 'Copied elements lost their transforms' was fixed in 'editor/ElementActions.kt, model/LayerCopies.kt'
  • Bug: 'Copied layers lost their identities' was fixed in 'model/LayerCopies.kt'
  • Bug: 'Projects saved before the orientation fix still showed some photos mirrored or turned' was fixed in 'model/ExifMigration.kt, library/MediaRelink.kt, media/MediaLibrary.kt'
  • Bug: 'Wheel scrubbing did not settle' was fixed in 'ui/editor/Timeline.kt, ui/editor/LayerTools.kt'
  • Bug: 'Border colours were lost when moving through the easing screens' was fixed in 'ui/editor/panels/BorderShadowPanel.kt'
  • Bug: 'Media inside nested scenes was drawn at the wrong time instead of its local time' was fixed in 'cpp/engine.cpp, model/NestedScenes.kt, model/VideoTiming.kt'
  • Bug: 'Video decoder colour settings were ignored' was fixed in 'media/VideoColor.kt, media/VideoDecoder.kt'
  • Bug: 'Video crop bounds were ignored' was fixed in 'media/VideoDecoder.kt, media/VideoLibrary.kt, cpp/engine.cpp'
  • Bug: 'AAC audio exports lost the encoder's priming and tail samples' was fixed in 'export/AacTiming.kt, export/VideoExport.kt'
2.3.0

Features

  • Feature: 'Hold an empty part of a timeline row and drag to reorder layers, with edge scrolling and a second finger to scroll while dragging' was added in 'Timeline (ui/editor/Timeline.kt, ui/editor/RowDrag.kt)'
  • Feature: 'Current Frame as... (JPEG, WebP lossy or lossless, BMP) next to Current Frame as PNG' was added in 'Export screen (ui/export/ExportScreen.kt, export/ImageEncode.kt)'
  • Feature: 'Frame Interpolation: Frame blending, smoothing video clips whose frame rate is below the export frame rate, for example 30 or 40 fps into 60 fps' was added in 'Export screen (ui/export/ExportScreen.kt, media/VideoLibrary.kt, cpp/interpolation.cpp)'
  • Feature: 'Frame Interpolation: Optical flow, the same smoothing with motion-guided in-between frames' was added in 'Export screen (ui/export/ExportScreen.kt, media/VideoLibrary.kt, cpp/interpolation.cpp)'
  • Feature: 'With interpolation on, every video clip is sampled at the export frame time, so a 60 fps clip in a 30 fps project exports at 60 fps' was added in 'model/VideoTiming.kt, media/VideoLibrary.kt'
  • Feature: 'Effect: Adjustment Layer' was added in 'assets/effects/backdrop.json'
  • Feature: 'Effect: Blink' was added in 'assets/effects/blink.json'
  • Feature: 'Effect: Lift Gamma Gain' was added in 'assets/effects/colorwheels.json'
  • Feature: 'Effect: Four-Color Gradient' was added in 'assets/effects/fourcolor.json'
  • Feature: 'Effect: Gradient Map' was added in 'assets/effects/gradientmap.json'
  • Feature: 'Effect: Gradient Overlay' was added in 'assets/effects/gradientoverlay.json'
  • Feature: 'Effect: Light Glow' was added in 'assets/effects/lightglow.json'
  • Feature: 'Effect: Soft Glow' was added in 'assets/effects/softglow.json'
  • Feature: 'Effect: Split Tone' was added in 'assets/effects/splittone.json'
  • Feature: 'Effect: Stretch Segment' was added in 'assets/effects/stretch.json'
  • Feature: 'Effect: Color Temperature' was added in 'assets/effects/temperature.json'
  • Feature: 'Choice parameters (pick one option from a list) for effects' was added in 'effects/EffectDefinition.kt, ui/editor/panels/EffectSettings.kt'
  • Feature: 'Thumbnails of all 51 effects made from freely licensed (CC0) photographs' was added in 'assets/effects/thumb/, tools/effect_thumbs.py'
  • Feature: 'Projects from other editors open with their effects turned into AbsentMotion's own effects, each editable, and effects keep working when the project is opened again' was added in 'compat/EffectMigration.kt, compat/ForeignEffectIds.kt, assets/effects/foreign.json, library/Importer.kt'
  • Feature: 'Send to Mac and the Wi-Fi transfer' was removed from 'Export and Settings screens (transfer/ deleted, ui/export/ExportDone.kt, ui/home/SettingsDrawer.kt)'

Bugs fixed

  • Bug: 'Layers with partial opacity blended with the wrong colours in many blend modes' was fixed in 'cpp/styles.cpp'
  • Bug: 'Overlapping strokes of a layer with opacity below 100% were drawn too opaque (75% instead of 50%)' was fixed in 'cpp/styles.cpp'
  • Bug: 'A shape's fill and stroke together were drawn too opaque under layer opacity' was fixed in 'cpp/styles.cpp'
  • Bug: 'A shape's centred border ignored the layer's blend mode and doubled its opacity' was fixed in 'cpp/styles.cpp'
  • Bug: 'The placeholder for missing media was drawn with doubled opacity' was fixed in 'cpp/scene.cpp'
  • Bug: 'A scene embedded in another scene used the outer frame rate for its layers' was fixed in 'cpp/scene.cpp'
  • Bug: 'The transparency checkerboard was drawn over the whole zoomed scene and made the preview slow' was fixed in 'cpp/preview.cpp'
  • Bug: 'The app aborted on a still image too large for memory' was fixed in 'cpp/jni.cpp'
  • Bug: 'Arrays allocated by native code were used without a check and could crash when memory ran out' was fixed in 'cpp/jni.cpp, cpp/whisper_jni.cpp'
  • Bug: 'Text laid out without a prepared layout ignored the line spacing' was fixed in 'cpp/text.cpp'
  • Bug: 'Tapping the end shape (arrowhead) of a stroke did not select the layer' was fixed in 'cpp/styles.cpp, MainActivity.kt'
  • Bug: 'Film Grain crashed the engine' was fixed in 'assets/effects/filmgrain.json'
  • Bug: 'Bulge shrank the picture for positive strength' was fixed in 'assets/effects/bulge.json'
  • Bug: 'Scan Lines darkness was inverted' was fixed in 'assets/effects/scanlines.json'
  • Bug: 'Colour Balance did nothing by default because its defaults were grey' was fixed in 'assets/effects/colorbalance.json'
  • Bug: 'Radial Blur smeared around the centre' was fixed in 'assets/effects/radialblur.json'
  • Bug: 'Wave Warp squeezed the picture instead of waving it' was fixed in 'assets/effects/wavewarp.json'
  • Bug: 'Effect centres were measured against the scene instead of the layer' was fixed in 'assets/effects (effect definitions)'
  • Bug: 'The thumbnails of the fixed effects were out of date and Blink's did not show its on and off frames' was fixed in 'tools/effect_thumbs.py, tools/effect_showcase.json'
  • Bug: 'A closed path that starts with a curve kept a duplicate closing point, and every point edit added another' was fixed in 'cpp/drawing.cpp, model/VectorPaths.kt'
  • Bug: 'Closing a path after turning its first point into a curve left the same duplicate point' was fixed in 'cpp/drawing.cpp, model/VectorPaths.kt'
  • Bug: 'A path's only point lost its curve handles when saved' was fixed in 'model/VectorPaths.kt'
  • Bug: 'Lower-case path commands (m, h, v, c, z) were read as absolute' was fixed in 'model/VectorPaths.kt'
  • Bug: 'S, T and A path commands were not read' was fixed in 'model/VectorPaths.kt'
  • Bug: 'A closed path with two points could not be opened again without losing its curves' was fixed in 'editor/PointActions.kt, model/VectorPaths.kt'
  • Bug: 'The end handles of an open path were lost' was fixed in 'model/VectorPaths.kt'
  • Bug: 'The X Mark shape had doubled corner points, so its inner corners were never rounded' was fixed in 'assets/shapes.xml, tools/gen_shapes.py'
  • Bug: 'A crafted XML file nested too deeply crashed the importer' was fixed in 'model/XmlNode.kt'
  • Bug: 'A failed multi-project import left the earlier projects saved' was fixed in 'library/Importer.kt'
  • Bug: 'Package media with the same file name in different folders overwrote each other' was fixed in 'library/Importer.kt'
  • Bug: 'An element linked inside a linked element showed stale content' was fixed in 'library/ProjectStore.kt'
  • Bug: 'Adopting a template on low storage deleted the project's media after a failed copy' was fixed in 'library/TemplateStore.kt, library/ProjectStore.kt'
  • Bug: 'Pasting a media fill's style into another project did not copy the media' was fixed in 'editor/StructureActions.kt, editor/EditorActions.kt'
  • Bug: 'The video decoder crashed on a clip's last frame and after a seek' was fixed in 'media/VideoDecoder.kt, media/VideoLibrary.kt'
  • Bug: 'One preview decode error hid a video layer for good' was fixed in 'media/VideoLibrary.kt'
  • Bug: 'A replaced picture file kept showing the old image' was fixed in 'media/MediaLibrary.kt'
  • Bug: 'A video replaced in place kept its old frame times' was fixed in 'media/VideoSources.kt, media/MediaLibrary.kt'
  • Bug: 'A video's frame rate was stored divided by 100' was fixed in 'media/VideoMetadata.kt, model/Media.kt'
  • Bug: 'Photos whose orientation tag mirrors or transposes them were shown mirrored or turned' was fixed in 'model/Media.kt, media/MediaLibrary.kt'
  • Bug: 'Background removal mirrored photos with those orientation tags (Play build)' was fixed in 'play/ai/BackgroundRemoval.kt, media/MediaLibrary.kt'
  • Bug: 'Resuming the app during an export dropped pictures (35 of 180 frames lost in a test)' was fixed in 'media/MediaLibrary.kt'
  • Bug: 'A looping audio clip without an end time restarted every block and buzzed' was fixed in 'audio/AudioClip.kt'
  • Bug: 'A cancelled touch on the timeline counted as a tap or a fling' was fixed in 'ui/editor/Timeline.kt'
  • Bug: 'The timeline's scroll range ignored the multi-select bar' was fixed in 'ui/editor/Timeline.kt'
  • Bug: 'The timeline's visible-rows range used the full height' was fixed in 'ui/editor/Timeline.kt'
  • Bug: 'Splitting a layer overlapped the two halves by one frame' was fixed in 'editor/EditorActions.kt, model/Scene.kt'
  • Bug: 'Trimming at some positions left a layer with no visible frame, so it vanished' was fixed in 'model/VideoTiming.kt, model/Scene.kt, ui/editor/Timeline.kt'
  • Bug: 'A font change could bring back an older scene in the preview' was fixed in 'engine/EngineThread.kt'
  • Bug: 'After a GPU failure the recreated engine had no surface or media' was fixed in 'engine/EngineThread.kt, MainActivity.kt'
  • Bug: 'Voice Preview during Add dropped the voice file being made' was fixed in 'platform/AndroidPlatform.kt'
  • Bug: 'Image sequence frames were numbered with local digits (Arabic, Persian, Bengali)' was fixed in 'export/ExportOptions.kt, export/Exporter.kt'
  • Bug: 'GIF size estimates were about 6 times too low for photos' was fixed in 'export/ExportOptions.kt'
  • Bug: 'Developer scripts ran adb without a device serial and could act on a real phone' was fixed in 'tools/shot.sh, tools/touch.sh, tools/export_speed.sh, tools/export_check.py, tools/sound_check.py'
2.1.1

Build changes only: the app itself is the same as 2.1.0. It can now be built from source on Linux, and the free build is reproducible.

2.1.0

First public release of AbsentMotion, a free, open-source motion graphics editor for Android. No account, no ads, no subscription.