Skip to content

Concat v0.2.8

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:18
· 32 commits to main since this release

Concat 0.2.8

What changed

  • 🐛 No effect cards are drawn on a software adapter, which froze CI's API 30 emulator
  • 🐛 On Windows the lock covers one far byte, so a refused process can read who holds the folder (#337)
  • ✨ The Audio page's Concat shelf - CC0 sounds from the assets repository, fetched when asked (#60)
  • ✨ Voices on the Audio page - saved clones, the models' speakers and styles (#60)
  • 🖥️ A home page - create row, a poster grid with search and sort, and learn-and-community cards
  • ✨ An Audio page with the user's own sounds, kept across projects (#60)
  • 🐛 One process at a time on a project folder - the window, concat --mcp and the CLI lock what they open (#337)
  • ✨ An Adjustments sheet beside Filters, and a layer's Adjust and Effects (#249)
  • ✨ An Adjustments page - an adjustment layer, and the LUTs, imported there now and no longer on Filters (#249)
  • 🐛 A layer laid without a lane goes over the picture, not under it (#249)
  • ✨ Masks, stabilization, fit and fill, backgrounds and laying clips end to end as tools (#337)
  • 🐛 Stabilization and backgrounds are in the schema, a job's status names the stabilize stage, and the CLI's server lists nothing (#337)
  • ✨ concat --mcp serves agents from the shipped app, and Automation lists itself for it (#337)
  • ✨ Concat-mcp, the Concat API as typed tools for AI agents over MCP stdio (#337)
  • 🤖 The window's server lists itself for local callers, and a blocking client for it (#337)
  • 🤖 A JSON Schema for every request and edit command, generated from the types (#337)
  • ⚙️ Automation waits for a strong token and stops without freezing (#337)
  • 🤖 A caller holds nothing until it is in, weak tokens are refused, wrong ones wait, and a stop cancels first (#337)
  • ✨ The transcribe switch sits under the script and says what it does
  • 🖥️ Enhance's Size is a dropdown
  • 🗣️ The voice picker shows who each voice is, and ends in Clone from a sample
  • ✨ Mask is a tool of its own, a sheet of shape tiles and sliders (#239)
  • ✨ A clip keeps a shape of its picture - line, mirror, circle, rectangle, heart or star - feathered, inverted and keyed (#239)
  • ✂️ A dragged clip snaps by its end as well as its start, and never to itself
  • ✂️ The tray's Captions, Text to speech and Voiceover buttons toggle their panels
  • 🐛 Several selected cards go onto the timeline together, end to end on one lane
  • 📱 Video decodes on MediaCodec, which it never did
  • 📁 A packet the codec refuses while full is sent again, not dropped
  • ⚙️ The Automation page in the settings' own style
  • 🐛 The SRT export's notices name their keys where they are used (#281)
  • 🐛 A stroke painted on a stabilized clip lands where the brush was (#253)
  • 🖥️ A Stabilize section under Video, with Smoothness, Max zoom and Tripod (#253)
  • 🤖 An export measures stabilized clips first, and says how far it has got (#253)
  • ✨ The stabilization analysis, one media at a time, only over the source clips show (#253)
  • ✨ A stabilized clip is drawn through its correction, on the monitor and in the export alike (#253)
  • ✨ Measure a camera's shake and work out the steadying correction (#253)
  • 🖥️ The background is a clip's Canvas with Apply to all, as in CapCut, not a Details group
  • ✨ Captions and Text to speech float over the editor on a desk
  • 🐛 SubRip on phones, a named and unique export, and the captions' lane (#281)
  • 🐛 A batch volume sets each clip's level, not a key at the playhead (#219)
  • 🖥️ Background and Fit and Fill on the desk and a Canvas sheet on the phone (#232, #255)
  • ✨ A background behind the main picture, and Fit and Fill (#232, #255)
  • ✂️ Delete left and Delete right are buttons on the timeline's toolbar, as in CapCut (#400)
  • 🐛 Rational::parse refuses a value past i64 instead of panicking
  • 🌍 The merge strings and the interface scale in Indonesian
  • 🐛 Space and the playhead move a take and its picture together, and an iPhone records (#213)
  • 🗣️ The tick turns Enhance on; a button runs it, and stops it
  • 🌍 The Shortcuts page and Delete Left/Right in all 25 languages
  • ✂️ Q and W delete left and right of the playhead, as in CapCut (#400)
  • ⚙️ A Shortcuts tab that lists every keybind and lets you set one (#400)
  • ✂️ Q and E cut the selected clip at the playhead
  • 🌍 The level meters' button in all 25 languages
  • ✨ A frame back and a frame on beside Play, held to repeat (#244)
  • ✨ The lanes glide after a throw, pinch to zoom, and a tap selects without seeking (#350, #243, #221)
  • 🖥️ A fresh window opens with the inspector down the whole right side
  • ✂️ The VU meters sit at the timeline's right edge, with a tray button to show or hide them
  • 🌍 Today's new lines in all 25 languages
  • ✨ Record Voiceover opens a floating panel with pause, retake, a meter and a teleprompter (#213)
  • 🖥️ Audio effects get their own page beside Audio's Basic
  • ⚡ Transcription runs AVX2 kernels again on CPUs that have them, and still starts on a Sandy Bridge (#388)
  • 📱 Import opens Photos or Files, and Files shows the app's Documents (#332)
  • 🐛 Intel Macs open on macOS 12 again, and the AI features say what they need (#372, #333, #342)
  • 🗣️ Size, Strength and a one-frame preview before the whole run
  • ⚙️ Interface scale multiplies the display's scale, not replaces it (#320)
  • 🖥️ A launch that dies while starting is followed by one that draws in software (#339, #378, #389, #242)
  • 🐛 A project that cannot be saved asks to quit without saving, not traps the window (#375)
  • ✂️ Ctrl+B splits the selected clip, not every track under the playhead
  • 🐛 A wide caption aligned left or right is drawn whole, not cut at its far end
  • 🐛 Background removal and Chatterbox no longer ask a CPU runtime for DirectML (#399)
  • 🐛 A project the app closed in while removing a background opens again
  • ✨ Effects and transitions draw on OpenGL ES, whose uniforms come in whole 16 bytes
  • ✨ CONCAT_GPU=software draws the window on the software rasteriser (#389, #242)
  • 📱 An import whose provider revokes access is skipped, not a crash
  • 🐛 Cancel is a cancel, not a failure, and whisper leaves room for playback (#388)
  • 📱 A phone without Vulkan opens the app on OpenGL ES instead of closing it
  • ✨ Halation is red-orange again, and it and Corona are built-ins by name
  • 🐛 Preserve short imported subtitle timings
  • ✨ Adjust volume for selected sound clips together
  • 🖥️ Remember the last successful project location between launches
  • ✨ The captions sheet imports and exports SubRip files
  • ✨ SubRip subtitles read into cues and written from a lane of titles
  • 📁 A variable-rate average too heavy to keep exactly is rounded, not dropped for the timestamp grid
  • 🐛 The window no longer crashes on its first frame of text
  • 🐛 The xkbcommon core library ships beside the module that drives it, so X11 opens
  • 🐛 Preserve project saves across concurrent writes and failed closes
  • 🐛 A folder dialog opens on a folder that exists (#331)
  • 🌍 Translate the 41 lines still in English
  • ✨ Add Corona and Halation custom effects
  • 📤 One bitrate field instead of three cards, and the resolution a fact, not a menu
  • 📤 A bitrate, not a quality tier: Higher, Recommended, Lower or typed, and a size that is the size written
  • 🖥️ New project asks a phone for no location
  • 🖥️ New project's frame rate is a dropdown, not twelve buttons
  • 🖥️ Escape closes the sheet on top
  • 🖥️ The Export sheet stays inside a phone's bars, and New Project's sizes wrap (#353, #356)
  • 📝 No "Apply to all" in the Text inspector
  • ⚙️ The dropdowns first, the switches under them
  • ⚙️ Language and Log level are a title with its dropdown at the far end
  • 🐛 A window that opens larger than its screen is maximised, so it can be reached and moved (#347)
  • 🖥️ Settings fits a phone: the whole screen, its pages as tabs, every model row whole (#354, #355)
  • ⚙️ "Remote" is "Automation", and its section "Scripts and apps"
  • ⚙️ Proxies are a switch, off by default, as in CapCut
  • 🐛 Captions and titles in Thai, Arabic, Hindi, Bengali, Korean and the rest draw their words, not boxes
  • 📱 The app no longer closes when dark mode, the font size or the language changes
  • 🌍 Effects, filters and transitions read in English, and the locales hold only the interface (#364)
  • 🐛 Centre overlap transitions on the cut
  • ✨ Add Fade to Black and Fade to White transitions
  • ✨ Apply caption style to all titles on its track
  • ✨ Consolidate selected video clips through rendered media
  • ✂️ A copy of a split clip shows the frames it was copied from (#335)
  • 🐛 The window's text is drawn with ClearType when the desk has it on
  • ⚙️ The scale row is the desk's, not the phone's
  • ⚙️ An interface scale, for a larger screen
  • ✨ A transcription's and a read's bar moves through each stage and says how long is left
  • ✨ A native crash writes what it was and where to the log, and every log starts with the machine it ran on (#326)

Before you install

  • Windows: this release is not code-signed yet. SmartScreen asks before it runs: More info › Run anyway. Where Smart App Control is on, Windows refuses unsigned programs; see the code signing policy.
  • Android: no automated check has started this APK: CI's emulators run x86_64 and it is built for arm64. If it does not open on your phone, say so.
  • Phones without Vulkan: the OpenGL ES path is new and has only run on an emulator, not on a real phone.
  • Blurred backgrounds on Windows: tested on Windows' software renderer only, not yet on a real graphics card.

Download

A self-contained build for every platform Concat ships on.

Apple silicon Intel / x86_64 arm64
macOS macos-arm64.dmg macos-x86_64.dmg
Windows windows-x86_64-setup.exe, .msi
Linux linux-x86_64.deb, .rpm, x86_64.AppImage linux-aarch64.deb, .rpm, aarch64.AppImage
Android android-arm64.apk
iOS / iPadOS ios-arm64.ipa

SHA256SUMS lists each file's checksum.