Concat 0.2.7
What changed
- 🐛 An export from the window draws on a device of its own on Vulkan, so it no longer loses the GPU part way through (#324)
- 🖥️ An event loop that could not run says why, and the process exits 1
- 📤 A phone's encoder that says "try again" is waited for, frame by frame and at the end (#286)
- 🐛 A closing app ends with _exit, so v0.2.7-rc.2's arm64 bundle no longer segfaults on its way out
- ✨ A "Use voice from timeline" switch in the Generate Captions sheet (#302)
- 🐛 No DXC in 0.2.7, and the GPU suites that drew for minutes on WARP skip there (#297)
- 🐛 Shaders compile through DXC, not FXC, so a blur or a glow no longer stalls an export; and no Microsoft Store (#297)
- 🖥️ A dropdown's list scrolls under a finger, not only by its scrollbar
- ✂️ Generate captions on a sounding clip's right-click menu (#302)
- 🐛 The installer speaks the app's languages
- 🌍 The app speaks 25 languages, the same 25 its READMEs are in, and every script has a face to fall back on
- 🌍 Arabic, Hebrew, Urdu, Ukrainian, Dutch and Polish
- 🌍 The check prints on a Windows console, and counts the lines still in English
- 🖥️ New projects on an iPhone, a second Untitled project, a click that moved a clip, Detach that said nothing, and no dialog under the studio borrow (#299, #151, #247, #310, #283)
- 📱 Settings, logs and caches live where an iPhone app may write (#299)
- 🖥️ The section strip's highlight follows the section shown (#250)
- 🖥️ A title's words field follows the clip that is selected, and a blur writes only to the clip it was typed for (#139)
- 🐛 A timeline with more titles than the cache held is painted once, not every frame (#261)
- 🗣️ A voice the GPU cannot read is read again on the CPU (#291)
- ✨ An export that the GPU stops answering ends instead of freezing, and a phone's GPU draws with the limits it has (#297, #312)
- 📁 Opening the app opens no hardware encoder, so a CUDA driver cannot crash it before the window (#309)
- ✨ Open a GUI project with --project on launch
- 🌍 BUILT_IN holds 16 locales, and the README counts them
- 🌍 Add the Vietnamese locale (#304)
- 🌍 Add Bengali (bn) translation (1016 strings)
- 🌍 Register Bengali (bn) in BUILT_IN locale table
- ✂️ The add-track menu's rows take their clicks
- ✨ A ruler with ticks and numbers, wider bars, the clip light over the bars, a peak readout
- ✂️ Copy and paste a selection, between timelines too, as one undo step
- 📤 The sheet asks before replacing a file, refuses a name that is not a file's, and no dialog opens under the studio borrow
- 📤 An export never leaves a broken file, and nothing a document says can panic the GPU
- 📝 The CJK fallback face covers every character the locales use
- 🐛 Text sits on whole pixels on a low-density screen
- ✂️ A detached sound is a clip of its own, and goes where it is dragged
- 📝 Chinese and Korean have a face to fall back on, and the setup speaks them
- 🐛 A still keeps its own shape, instead of being stretched across the frame
- 📝 Colour emoji render in their own colours, not the words'
- 📱 A finished export goes into the phone's Movies, where the gallery shows it
- 📤 The folder the file goes in is made, and a phone's sheet has no Browse
- Update Japanese translations
- ✨ VU meters beside the timeline, so you can see how loud it plays
- ✨ A preset card shows a word of its own writing, not "Aa"
- 🐛 Languages sits beside Styles on the Text page, not under it
- ✨ The Text page's Presets shelf is Styles, with Languages under it
- 📝 A searchable font picker that says when a font is missing
- 📝 Base fonts every title can use, and presets that are data
- ✨ A click previews a file without putting it on the timeline
- ✂️ A click anywhere on the timeline sends the playhead there
- ✨ Record from the microphone over the picture, onto the timeline
- ✨ Effects drops its category pills, and reload is a square before the search
- 🐛 The AppImage carries the X11 keyboard library, so it opens where that is missing
- ✂️ A clip never lands on top of another
- 🐛 Read what is held under the queued lock, so nothing is queued twice
- 🐛 The run-on clock reads one word, so a torn read cannot step back
- 🐛 A frame that raises a toast publishes it during playback
- 🐛 Open the file a cut leads to once, not once a frame
- 🐛 A checked rate is judged in lowest terms
- 🐛 Let AMF make ten-bit HEVC, as Main 10
- ⚡ Decode the full window ahead and open the next cut early
- ⚡ Keep the queue while playback runs on
- ⚡ Leave the font list alone when no font changed
- ⚡ Publish only the picture for a frame during playback
- ⚡ Ask for each frame on time during playback
- ⚡ Carry the clock between the device's buffers
- ⚡ Count how smoothly playback's frames arrive
- 🤖 A method that panics fails that call, not the API
- 📤 A frame rate no video has is an error, not a panic
- 🐛 A folder named with either slash is one entry in the recents
- 🐛 A layer's filter graph runs on one thread
- 🐛 The encoder lets go of its file before the copy is moved into place
- ⚡ The caches are sized to the machine, and let go of what is idle
- 🐛 The page strip sits on the pane's top bar, with no dark track of its own
- 🖥️ A sound clip's Speed sits under its Sound page
- 🖥️ Adjust opens on its wheels and curves, and Speed sits under Basic
- 🖥️ Enhance has a page of its own, and Enhance and background removal switch from their headers
- ✨ A transition is selected on its own, with its own inspector panel
- ✂️ The tray's plus opens an Add track menu, with top or bottom beside it
- ✂️ A track's header keeps Delete in a More menu, and its marks are white
- 🐛 Clips that were reversed or animated in 0.2.4 say so as the project opens
- ✂️ A volume drag no longer drops words typed into a title
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.