Repository navigation
Releases: jub0t/concat
Release list
Concat v0.2.6
Concat 0.2.6
A release for the hands. The timeline gains a razor, a scrollbar and a
volume line you can drag; titles can be styled many at a time; the
library has a Stickers page of shapes; the export sheet shows the picture
and follows the timeline's own size and rate. Windows and Linux get
menus that work from the keyboard, shortcuts labelled for their own keys,
hardware encoders, and on Windows a GPU for Chatterbox. An export now
survives its GPU device dying under it.
Editing
- B turns on the razor: a click on a clip cuts it on the frame under the
pointer, and a hairline shows where. Ctrl+B (⌘B on a Mac) still splits
every clip under the playhead (#241). - Every sound on the lanes wears a volume line at the clip's level. Drag
it to set the volume; it snaps at 100%, and a drag is one undo step. - A scrollbar under the lanes shows which part of the cut is in view and
drags the view along it (#237). - Select two clips that meet and click a transition to put it on the cut
between them, in either order. - A Stickers page in the library, with a Shapes shelf: square, circle,
triangle, parallelogram, trapezoid, line and arrow, placed with a click
or dragged onto a lane. - Deleting a track asks first, whether it holds clips or not, and says how
many go with it. - One Delete in the menus. Whether it closes the gap is the tray's
magnetic switch; Shift+Delete still ripples once. - Dragging a keyed position or scale on the monitor keeps the key instead
of springing back on release (#228). - Ctrl-click adds to the selection on the monitor, as on the lanes; Alt
drag pans it.
Text
- Select several titles and the Text tab styles them all at once: font,
size, colours, stroke, shadow, background, box and alignment, one undo
step. Position, turn and scale move them together and keep their
spacing (#224). - "Use for new titles" keeps a title's look for every new title and every
generated caption, so a CJK face set once is used from then on. - A title with no box wraps at the frame's edge instead of running off it.
- A title's plate has round ends when it is pill-shaped.
Monitor and playback
- Save Video Frame As, from a right-click on the picture: the frame at
the playhead at full output size, as a PNG, placed in the bin (#238). - Full quality plays the files themselves; Half and Quarter play the
proxies. - On MPEG-TS and the MTS files cameras write, the preview's sound no
longer runs up to 1.4 s ahead of the picture, and captions land where
the words are. Exports were already right.
Transitions and effects
- A dissolve into a clip with nothing before its in-point holds the
clip's first frame over the cut instead of starting the clip early and
running off its end into black (#236). - Spins, Swirl, Iris and the shape and clock wipes keep their shapes on a
wide frame. RGB Split and Glitch keep a title's transparency. Glows and
halation light past white. A hue turn of nothing changes nothing, so
Clean, Fair and Peach read truer. - A package of your own can no longer claim to replace a built-in that is
still installed; one that tries is refused at load with the reason. A
retired effect that opens as its stand-in keeps its keyframes, and the
project says which effects were replaced. - A package whose shader hangs at install no longer takes the monitor's
picture with it, and the install trial now runs every knob at its least
and its most as well as at its default.
Export
- The resolution is the timeline's own, and the other sizes on the ladder
read as this project would come out at each: 1080 × 1920 on a 9:16 edit
(#109). - The frame rate starts at the timeline's own. A 25 fps or 23.976 cut
used to export at 30 unless you changed it. - The sheet shows the picture with a strip that scrubs the playhead, and
its bitrate and colour groups open outright on a wide window. - An export whose GPU device dies goes on, on a fresh device or then the
software adapter, and the frame that came back black is drawn again
(#223). - NVENC, Quick Sync and AMF encode HEVC and AV1 on Windows and Linux,
ahead of the software encoders, when the machine has the chip.
Windows and Linux
- F10, Alt+F, Alt+E and Alt+V open the menus, and the arrows, Return and
Escape work in them. - Shortcut labels name each platform's keys: Ctrl+Shift+Z, not ⇧⌘Z.
Shortcuts no longer stop working with Caps Lock on. Ctrl+Y redoes, and
Ctrl+O and Ctrl+W open and close a project. - File ends in Exit (Alt+F4) on Windows and Quit (Ctrl+Q) on Linux.
- Chatterbox runs on the GPU on Windows through DirectML, falling back to
the CPU. - On Windows: the window and the .exe carry Concat's icon, Settings ›
About no longer flashes a console, the setup speaks eight more
languages, an .msi install updates from the .msi, and releases also go
to the Microsoft Store. - On Linux: files dropped on the window import on native Wayland
(#158, #196); the frameless window resizes from its edges; the running
window belongs to its desktop entry in docks; the AppImage is named
Concat--.AppImage. - New projects default to the desktop the system names, including one
OneDrive has moved or one named in the session's language. - The x86_64 builds launch on CPUs without AVX2, such as Ivy Bridge
(#193).
Phone
- A sheet closes on a swipe down (#221).
- The Android app stays upright, and its launch screen drops Open project
and Choose location, which could not work there (#222).
Settings and logs
- A Log level row on Settings' first page, from errors only to everything.
It applies to Concat's own lines; the libraries underneath stay at
warnings. - The log is a trail of what you did - sheets opened, edits by kind,
imports, exports and their results - without quoting anything typed.
A burst of zooms or keystrokes is one line and a count. - When a GPU device dies, the log says why, on which frame, and what the
export went on with. - Lime is the default accent; the blue is off the list. A colour already
picked is kept. - Settings has one door, the gear on the title strip (#206).
Changes to note
- On Windows, models, caches and logs move from %APPDATA% to
%LOCALAPPDATA% on first launch, so a roaming profile no longer carries
gigabytes of models. Settings, recents, templates and looks stay where
they were. - Projects with shapes do not open correctly in 0.2.5 or earlier.
- A project naming a retired effect that a newer one stands in for says
so as it opens; saving keeps the change. - The playback sound cache is rebuilt once, as projects are opened.
- The README is in twenty more languages (#38).
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 |
windows-aarch64-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.
Concat v0.2.5
Concat 0.2.5
The release where the picture pipeline moves onto the GPU end to end.
Every picture effect, transition and colour tool is now a shader drawn in
linear light; HDR footage keeps its light from the file through to an HDR
export; a Scopes pane reads the picture; and a phone gets an editor of its
own instead of a shrunken desktop. It is also the first release the app can
update itself from: Settings › Version lists every release from this one
on and installs the one you pick.
Colour and HDR
- A timeline has a colour: SDR (Rec. 709), HDR (HLG) or HDR (PQ), set in
the Modify sheet. The first HDR clip dropped on an SDR timeline turns it
HLG in the same undo step, and a notice says where to set it back. - HDR clips - an iPhone's HLG, HDR10's PQ - are decoded at ten bits and
converted on the GPU. 4K iPhone HLG previews about five times faster
than in 0.2.4, where the CPU tone-mapped every frame. - On an HDR timeline the clips keep their light above white. The monitor
shows it tone-mapped for now; a true HDR preview is next. - An HDR timeline exports as HDR - HEVC or AV1, ten bits, BT.2020 with HLG
or PQ, a PQ file carrying its mastering-display, MaxCLL and MaxFALL
metadata - or as tone-mapped SDR, chosen on a Colour row of the export
sheet. The API takeshdrtoo. - A proxy of an HDR file stays HDR (HEVC, ten bits), so a paused HDR
timeline matches the original. The tone-mapped proxies earlier builds
wrote of HDR files are made again. - A Scopes pane: waveform, RGB parade, vectorscope and histogram, counted
on the GPU from the picture before anything is clipped. It is in the
pane switcher and docks like the others, scaled in percent on an SDR
timeline and in nits on an HDR one. - Adjust works in light. Exposure is in true stops, contrast is in stops
about middle grey, white balance is a proper chromatic adaptation, and a
highlight past white is carried on rather than clipped. - Colour wheels (lift, gamma, gain) and RGB and luma curves, as sections
of the Adjust tab and as Color Wheels and Curves effects for an
adjustment layer. A wheel can be keyframed. - Contrast, Saturation and White Balance as effects of their own.
- Import LUT reads a .cube saved with a byte-order mark and DaVinci
Resolve'sLUT_3D_INPUT_RANGE(#208, by theworker02). Tables are kept
in float, and one named for ACEScct is read in log, so a graded sky does
not band.
Effects
- Every picture effect and transition is drawn by its own shader on the
GPU, in linear light. The FFmpeg chains for pictures are gone, and so is
the CPU compositor: a machine without a GPU draws the same picture on a
software adapter. Sound effects keep their FFmpeg chains. - New: Chroma Key with spill suppression, Luma Key, Zoom Blur, Motion Blur
with an angle, Color Wheels, Curves, Contrast, Saturation, White Balance
and Exposure. - Gaussian Blur is two to four times faster and no longer bleeds colour out
of transparent pixels; glows and blooms draw at a quarter of the layer;
Fisheye no longer leaves black holes at the edges. - The effect cards in the library are drawn by each effect's own shader,
so a card shows what the effect does. Before, nine effects had no
preview and sixteen showed another effect's. - Grain and glitch effects are the same on every GPU and in an export.
- Green Screen and Blue Screen open as Chroma Key keyed to that colour,
and Box Blur as a Gaussian Blur of the same spread. The other old-format
effects are retired; see Changes to note.
Compositing and playback
- The compositor blends in linear light at half-float precision: opacity,
dissolves, fades, Screen and Add behave as light does, as in Resolve and
Final Cut. A picture with nothing on it comes out exactly as it went in. - Fades to black or white and wipes are drawn in the monitor as the export
draws them. Before, the monitor showed a dissolve for a wipe and nothing
for a fade. - A packaged transition is drawn whole on the GPU, with no round trip
through memory, and the GPU keeps the frames it uploaded, so a scrub
back finds them there. - Each stream is decoded by whichever of the CPU and the chip is faster
for it: 8-bit H.264 on the CPU, everything else on the device. Hardware
decode is on by default on Windows and Android now.
Phone
- Android and iOS get an editor shell of their own: the monitor over lanes
that slide under a centred playhead, Play under the thumb, and a bar of
tools that opens the inspector and the library as sheets over the lanes. - The start screen keeps its heading clear of the top edge, and New
project is a row in the accent colour. - The Settings page column starts narrow on a phone, scrolls under a
finger and drops the Remote page; on a desk it can be dragged to size. - A ProMotion iPhone animates at 120 Hz.
Editing
- The playhead can follow a trimmed edge, so the monitor shows the frame
the cut lands on: a toggle on the tray beside the hand tool, off by
default (#194, by Raphael Bernardo). - Reverse writes the clip's span backwards into the project's cache, sound
included, so a reversed clip plays like any other. Freeze, Reverse,
Mirror and a new Rotate - a quarter turn clockwise, keyable - sit behind
one mark on the tray. - A title can be set in any font on the machine, or in one of your own,
imported from the Text inspector and kept for every project. - Eleven frame rates to pick from on the launch sheet and the project
sheet alike, 10 to 60 with the NTSC rates as exact fractions, plus a
typed rate and a typed frame size up to 8192 (#199). A 23.976 project
no longer opens the project sheet on 30 fps. - "Render the sound as a file" is Export Audio: a save dialog asks where
the file goes, and it comes into Media, selected.
Export
- A constant-bitrate export gets its bitrate: H.264 holds it, and a CBR
HEVC export through libx265 no longer fails to open (#104). - The export draws on the window's GPU device. On Windows laptops with
NVIDIA chips, pressing Export could take the app down at the first frame
(#202). The log names the adapter and API an export drew on.
Settings and updates
- Settings › Version says which release this is, checks GitHub for a newer
one, and lists every stable release from 0.2.5 on. Install downloads the
package for this machine, checks its SHA-256 and puts it in place: the
installer runs on Windows, the app bundle is replaced on macOS, an
AppImage is written over itself, and a .deb, .rpm or pacman package
opens in the desktop's installer. Flatpaks and phones are told why the
button is off. - Speech voices run on CoreML on every Mac and fall back to the CPU on
their own; the Engine switch is gone. Chatterbox's first load takes
about eleven seconds longer per run while CoreML compiles it. - The Timeline shortcuts section is gone: J no longer flips a clip.
Flipping is on the inspector and the clip menu's Mirror.
Fixes
- Delete on a right-click menu over several selected clips left an empty
menu standing (#160). - The Captions and Speech sheets lose the stray note in their header's
corner (#152). - On Windows the launch sheet's Location came up empty, and a folder
chosen with Choose... did not show (#203). - The Traditional Chinese locale is revised (by Peter Dave Hello).
Changes to note
- Old-format effects are retired. Fifty-six built-in picture effects with
no GPU twin are gone; a project that used one opens with a notice naming
them and keeps the link, marked not installed. A picture effect package
of your own written for format 1, or as an FFmpeg chain, is refused at
load with a message saying why. Sound packages are unaffected. - Exposure is in true stops. A project that pushed Exposure in an earlier
release looks less pushed in this one. - Dissolves, and the mixes inside spins, zooms and glitches, are brighter
at the middle, as light is. - Hardware decode is on by default on Windows and Android, and the
Decoding switch is gone from Settings. - The new Concat mark replaces the cat in every icon.
- Under the hood: Slint 1.18, wgpu 30, and locales keyed by ids rather
than by the English (see TRANSLATING.md). The developer docs and the
roadmap now live at https://concatenate.pages.dev.
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 |
windows-aarch64-setup.exe, .msi |
|
| Linux | linux-x86_64.deb, .rpm, .AppImage |
linux-aarch64.deb, .rpm, .AppImage |
|
| Android | android-arm64.apk |
||
| iOS / iPadOS | ios-arm64.ipa |
SHA256SUMS lists each file's checksum.
Concat v0.2.4
Concat 0.2.4
A self-contained build for every platform Concat ships on.
What changed
- Version 0.2.4
- 🖥️ Speed keeps only Rate, the pitch switch moves to Audio, and Reverse goes with its plumbing
- 🖥️ The launch screen is a grid of projects, and the form is a sheet its first card opens
- 🖥️ A press anywhere but the field being typed into takes the focus back
- 📝 The colour field types its hex, the background has padding with a lock, and a box side is px or Auto
- 📝 The plate is the Background, with an opacity dial and a corner radius of its own
- 🖥️ The pane menus count five rows, offer Keyframes from the title bar, and scroll when the window is short
- ⚙️ The playhead's colour - lime by default, and any colour from Settings › Appearance
- 🌍 Simplified and Traditional Chinese retranslated as two catalogues
- 🎞️ A Keyframes pane of its own - a dopesheet and a curve editor beside the other four panes
- ✂️ Keyframe diamonds on the ruler, scrolling at the edge, a drop that slots in, a waveform about the centre, and a detached pair that moves together
- 🖥️ A Keyframes tab - every knob that rides, its keys along the clip, and the ease into the next one
- 🎞️ A keyed property is edited as a key, from the knobs and the stage alike
- 🖥️ The built-in animations go, and the Animation section with them
- ⚡ The window stops scanning on every pointer event, and the per-frame copies and graph builds go
- 🐛 The document's maths - a ripple copies only what it moves, every command leaves a tidy clip, a late-starting stream reads from its first frame, Lighten and Darken weigh the layer in by its alpha
- ✨ A hostile package is refused for real - tried on the GPU at install, its pipeline errors caught, its bindings typed, its chain kept off files
- 📦 Every download is checked against a digest, and the upstreams are pinned
- 🤖 Writes stay under the server's roots, sizes are bounded, the transport has limits, the window and its Remote page share one export slot and one register of open projects
- 🐛 A half-written project is refused, a panicking decode job is survived, a closed project's results are dropped
- 📁 A clip's sound rendered as a file, under Generated › Processed
- 🗣️ Run the voices on the Mac's GPU, from Settings › Speech
- 🗣️ Chatterbox needs five seconds of a voice, and reads as Resemble does
- 🗣️ Chatterbox reads the text the way its export expects
- 🗣️ The sheet shows each model its own controls, and a sample voice
- 🖥️ A title's words land before the selection moves
- ⚙️ The Remote token is dots until the eye is pressed
- ✨ A transition's named shape, drawn on the CPU
- ✨ The range is the media's, set from the bin, and Auto reads the codec
- 🖥️ Accent colours in Settings › Appearance
- ✂️ The preview axis, a brighter tray and titles on top
- 📁 Shelve read-aloud voices under Generated › Speech
- 🖥️ Rebuild the launch screen as a launcher
- Update and improve zh-TW Traditional Chinese locale
- 🐛 Resolve GitHub issues #177, #111/#99, #156, #102 and shader singularities
- ✨ A media's colour range named over its tag, and full-range export
- 🌍 Translate the lines that still read in English
- Arch linux pacman build
- The xorg package set has been deprecated by nixpkgs
- 🗣️ Pocket TTS and Chatterbox Turbo beside Kokoro, and the selected clip's voice
- 🗣️ Enhance on a clip's right-click menu, an ML-restored copy the clip then shows
- ✨ The filter allowlist is one sorted run, so the search finds picture filters
- ✨ Packages the community can write, check, share and load live
- ✨ Clip-relative time in the shader frame uniform
- 🖥️ A vertical swipe scrolls the stack, and the lane names take a wheel
- 🐛 The proxy and the perf table build after the advanced export
- ✨ CapCut-parity transitions, effects, filters, animations, and text-effects engine
- ✨ Advanced export settings - VBR/CBR and target bitrate
Download
| Apple silicon | Intel / x86_64 | arm64 | |
|---|---|---|---|
| macOS | macos-arm64.dmg |
macos-x86_64.dmg |
|
| Windows | windows-x86_64-setup.exe, .msi |
windows-aarch64-setup.exe, .msi |
|
| Linux | linux-x86_64.deb, .rpm, .AppImage x86_64.pkg.tar.zst |
linux-aarch64.deb, .rpm, .AppImage aarch64.pkg.tar.zst |
|
| Android | android-arm64.apk |
||
| iOS / iPadOS | ios-arm64.ipa |
SHA256SUMS lists each file's checksum.
Concat v0.2.3
Concat 0.2.3
A self-contained build for every platform Concat ships on.
What changed
- Version 0.2.3
- A waveform's bars are one pitch on screen at every zoom
- Create ARCHITECTURE-TODO.md
- A Kbd primitive, and the timeline shortcuts shown as keycaps
- The Remote address is two fields around a colon, the port a number
- Thinner, denser candles on the lanes; the bin's cards keep theirs
- Waveforms at unity, scaled by the volume where they are drawn, a bar every four pixels
- Delete TODO.MD
- One way to split, at the playhead; the razor tool is gone
- Waveforms stand on the floor, and the part over -6 dBFS goes amber
- Text preset cards are square, with one sample size for every look
- Lane switches on the left, the cross on the right, and a wider column
- Drop FFmpeg's log lines below the level before formatting them
- FFmpeg's log goes through the log facade, not standard error
- Words typed into Content are never lost on the way out
- Air above and below the library's page chips
- Taller lanes, so frames and waveforms have room
- A recent project's poster is never a black frame
- The active timeline tab loses its lime top bar
- The sound band under a video is the video's blue, not a sound clip's green
- The Text tab remade, with a colour picker worth the name
- A title is a box, sized by width and height, and never stretched
- The magnetic timeline, a switch that closes every gap
- Ripple delete, ⇧⌫ closes the gap a deletion leaves
- Open on a software adapter, and say why when the window cannot start
- One face, Hanken Grotesk, for the window and the titles
- Waveforms at the resolution of the zoom, and a sound band under every video
- Sound is green
- The tests say whether a drop ripples
- The launch screen takes three shapes by its width
- A table of how fast the parts that matter are, against budgets
- One title bar on Linux, the strip's own
- A constant-rate stream is indexed at its base rate, and the end is remembered
- One frame plan describes the frame, and both compositors draw it alike
- The locale table counts the Persian file, and every locale covers the inventory
- One scheduler decodes for the screen, and a large file gets a proxy
- The frame cache keys on the source frame, and a scheduler decodes ahead
- Bump BUILT_IN locale array length for fa
- Add Persian (fa) locale
- Captions land above the video, not under it
- Ripple existing clips right when a drop would overlap them
- Has_non_finite catches transition_in and text in UpdateClip
- Create timeline.rs
- A Settings switch for decoding on the hardware
- I18n: the token hint reaches every locale
- A pass carries its package and the values it was written from
- Video decodes on the platform's hardware behind a toggle
- The Remote page shows the token the server made up
- Every connection presents a token, minted when none is set
- Home and End stay in the text field being typed into
- A title's words reach the monitor as they are typed
- A single JPEG is a still, not a one-frame video
- Pan tool for the timeline
- A null crop in a patch takes the crop off
- Decode on every core
- Settings toggle for flip and reverse shortcuts
- Remove dead editor-shortcut callback from lib.rs
- Add flip/reverse keyboard shortcuts and Settings context menu toggle
- A key stays on its instant of the picture through split, trim, freeze and merge
- Cuts keep a reverse, numbers must be finite, the reader clamps like a command
- The Remote page and the Hologram effect reach every locale
- Watch only package files that exist
- A branching effect chain opens on the CPU renderer
- The mix ends by sample count, and cuts each clip at its in-point
- The mux hands the interleaver whichever packet is due next
- A Hologram effect, from holo-stage
- Update issue templates
- A freeze leaves reversed and curved pieces the way a split does
- Compare mux PTS in a common unit, not raw ticks
- Mux video and audio by timestamp, not one packet each
- Stamp mix input PTS from sample count, ignore source timestamps
- Keep in-point trim in graph, move out-point trim to Rust
- Trim audio in Rust by sample count, not by PTS in the graph
- Heal source timestamp discontinuities before the per-clip trim
- Treat filtergraph EOF as graceful input end in audio mix
- Clamp with crossed bounds is an error, not a panic
- A Remote page in Settings serves the API while the window is open
- The Concat API on a socket, JSON-RPC lines and gRPC
- Revise security policy for supported versions
- Ids, error codes, exports as jobs, and frames inline
- A title being dragged is painted in memory, not to disk
- A title's side grips set where its words wrap
- The select's list scrolls, tips wrap, and two tray tips say less
- A download source setting, hf-mirror, and downloads that resume
- A document picker on Android, and a compact dock for narrow windows
- The window keeps out of the system's bars
Download
| Apple silicon | Intel / x86_64 | arm64 | |
|---|---|---|---|
| macOS | macos-arm64.dmg |
macos-x86_64.dmg |
|
| Windows | windows-x86_64-setup.exe, .msi |
windows-aarch64-setup.exe, .msi |
|
| Linux | linux-x86_64.deb, .rpm, .AppImage |
linux-aarch64.deb, .rpm, .AppImage |
|
| Android | android-arm64.apk |
||
| iOS / iPadOS | ios-arm64.ipa |
Every bundle runs with nothing else installed.
- macOS: open the
.dmgand drag Concat to Applications. If macOS says
the app cannot be checked, right-click it and choose Open once. - Windows: run the
-setup.exe; it puts Concat in the Start menu and
can take it out again. The.msiis the same program for an
administrator to deploy, machine-wide. - Linux: install the
.debor the.rpmwith your package manager,
orchmod +xthe.AppImageand run it; no install needed. - Android: open the
.apkon the phone and allow the install from
this source; Android 8.0 or newer, 64-bit. - iOS / iPadOS: sideload the
.ipawith AltStore, Sideloadly or
Xcode's Devices window, which sign it with your Apple ID; iOS 15 or
newer.
SHA256SUMS lists each file's checksum.
Licences
Concat is AGPL-3.0-or-later with a plugin exception
(LICENSE-EXCEPTIONS.md).
The bundles carry FFmpeg (GPL, with x264), compile in whisper.cpp (MIT) and
link sherpa-onnx with espeak-ng (GPL-3.0); Slint is used under its GPL-3.0
option. Sources and licences:
THIRD_PARTY_NOTICES.md.
Concat v0.2.2
Concat 0.2.2
A self-contained build for every platform Concat ships on.
What changed
- The OS drop handler is the desktop's, and only the desktop's
- Terminate process on window close (orphan concat.exe leak)
- AppImage, .deb, .rpm and .msi beside the archives
- A long clip asked the GPU for a texture it refuses
- Add OS-level drag-and-drop media import
- HEVC and AV1, ten-bit, colour tags, and HDR sources brought in right
- Transcription aborted itself before the first encode
- A Windows installer beside the zip
- A tray that spends its width on nothing it need not say
- The preview's Fit joins the inventory, in every locale
- A drag on a percent row moves it by its step, not by 100%
- The stage sits on a canvas you can pan and zoom
- Detach audio moves from the tray to the clip's own menu
- A short cut tiles its body with its own frames, never black
- Give each library page a mark over its label
- Add openssl to buildInputs to fix openssl-sys build
- Version 0.2.2
- Centre text in its control, and give the tray and lanes their space back
- Write every run down to a file
- Mirror every downloadable model on our own releases
- Draw the monitor frame on the thread that owns the device
- Widen sort popup and complete i18n coverage
- Add UpdateMediaPath command and fix ModelRc wrapper
- Implement relink_all with recursive folder search
- Implement relink_all with folder picker and recursive search
- Correct Button property names and Glyph enum in relink dialog
- Add RelinkState and wire dialog to open on project load
- Wire MissingMedia dialog to open on project load
- Add MissingMedia dialog component
- Log missing media when opening project
- Add missing_media() detection method
- Clear project cache command in the File menu
- Simplify project folder validation logic
- Add Open Project handler in File menu
- Veryfast preset + real-time ETA
- Sort and Filter dropdowns beside Import Media button
- Add check closure for sort menu items
- Add sort options (Added/Name/Type) to View menu
- Auto-sort media bin by kind (video/audio/image) then name
- Cache media artwork as project JPEGs
- Bump BUILT_IN locale array length for hr
- Add Croatian (hr) locale
- Add total downloads badge to README
- Update and improve zh-TW Traditional Chinese locale
- System requirements table
- Delete ARCHITECTURE.md
- Let the selection decide what Captions captions
- Open Captions and Speak without a selection, and let the transcriber hear the language
- Put Add track at the front of the timeline tray
- Load the README images through jsDelivr
- Give the README images fresh names
- Name the logo in the README header
- Refresh the editor screenshots and README preview
- The interface language is a dropdown
- Two choices in Settings: what a clip plays of a file with several audio tracks, and a playhead that goes past the end
- Keys that survive a field, a bin that imports quietly, titles that grow from their edge, audio tracks apart, four motion transitions
- Set the interface in Helvetica Neue
- Add the Concat API as one dispatcher crate
- Float the README preview on a gradient card
- Credit Concat's keyframes in the comparison
- Keep one comparison table at the end of the README
- Rate the editor comparison with traffic lights
- Lead the editor comparison with a high-level scorecard
- Compare Concat with CapCut and OpenCut in the README
- A still is read repeating and never sought
- Add zh-TW Traditional Chinese localization
- The README marks the phones as to be tested, and the inspector's one-line blocks unfold
- A draw has a name
- A frame the device already holds is not uploaded again, and jobs run on kept workers
- A frame reuses the document's plan, a knob drag is one commit, a publish rebuilds less
- A filter layer is applied where the stack is drawn, on the GPU
- Delete on a selected clip's menu deletes the selection it is part of
- A second pass over every look, and fourteen more from CapCut's own shelves
- A look can be a table: .cube files import as packages and bind as 3D textures
- The help mark sits level with its row and explains on hover
- Falling Dust, drawn rather than pasted: the twenty looks are all in
- The library learns to target and to texture, and seven more looks ship on it
- A filter layer is indigo on the lanes, not teal
- A grading library in the shader prelude, and twelve looks written on it
- The dark grounds lift into mid-dark grey, the kind hues step down, a filter is one bar
- Every Adjust knob can be keyed, and a keyed chain is drawn frame by frame
- A knob is its number field: the fader under every row is gone
- The inspector's Effects tab is one section: filters have no chain to sit in
- A filter from the library is a layer on the timeline, never a change to a clip
- A Filters card shows its look on the monitor before it adds it
- Every text preset card says Aa, on a grey ground rather than black
- Add CapCut-style freeze frame at the playhead.
- The Library's Effects and Filters pages read the catalogue, and search it
- No Applied section: a link's card sits in its own library
- Units on every row: the field says the number once, the segment the unit
- Adjust: a unit segment on the number field, tried on Temperature
- A smart stroke's region follows its thing along the clip
- The monitor renders cutouts: its flattening now knows the project folder
- The brushes paint against a tinted cutout, and a smart stroke stays put
- Smart brushes name a thing: SlimSAM reads the region under a stroke
- Three cutout models: a person matte, an object model, a subject to choose
- Cutout inference on ONNX Runtime, with the platform's accelerator
- Remove background as three blocks: auto, custom, chroma key
- Whites and blacks on the Adjust tab
- Adjust tab in three groups: Color, Lightness, Effects
- Adjust rows on one line under a Color header
- Crop rows on one line, the number field alone
- Keyframe cluster trails the number field on a one-line Param
- Transform rows on one line: the number field alone, no fader
- Duplicate every selected clip from the context menu.
- Per-timeline video settings, own window buttons off macOS, UTF-8 locale script
- Keyframes on six properties, eased by bezier, and the audio panel after CapCut
- Languages: the interface in eleven, each a JSON file
- Remove background: automatic and custom cutouts on a person mask
- Android starts: the activity names the app's folders and logs to logcat
- Inspector sections are a header and a spaced block
- Text presets: nine looks on the Text page, and a folder that adds more
- A picture stretches along one axis
- Remove background in the inspector, through the chroma key packages
- Copy chips on failures, snapping for a resize, and the TODO brought up to date
- Nix checks the lock rather than committing one
- The tray names its sound and word tools, and each opens a sheet
- Keys, focus, the Details panel and a project sheet, and tabs that reorder
- Quieter surfaces: the stage, the menus, the bin cards and the title clips
- Name concat-render's compositor feature wgpu as well, so --features wgpu resolves across the workspace
Download
| Apple silicon | Intel / x86_64 | arm64 | |
|---|---|---|---|
| macOS | macos-arm64.dmg |
macos-x86_64.dmg |
|
| Windows | windows-x86_64.zip |
windows-aarch64.zip |
|
| Linux | linux-x86_64.tar.gz |
linux-aarch64.tar.gz |
|
| Android | android-arm64.apk |
||
| iOS / iPadOS | ios-arm64.ipa |
Every bundle runs with nothing else installed.
- macOS: open the
.dmgand drag Concat to Applications. If macOS says
the app cannot be checked, right-click it and choose Open once. - Windows: unzip and run
concat.exe. The FFmpeg libraries beside it
stay beside it. - Linux:
tar xzfthe archive and run./concatfrom the folder;
concat.desktopis there for a launcher. - Android: open the
.apkon the phone and allow the install from
this source; Android 8.0 or newer, 64-bit. - iOS / iPadOS: sideload the
.ipawith AltStore, Sideloadly or
Xcode's Devices window, which sign it with your Apple ID; iOS 15 or
newer.
SHA256SUMS lists each file's checksum.
Licences
Concat is AGPL-3.0-or-later with a plugin exception
(LICENSE-EXCEPTIONS.md).
The bundles carry FFmpeg (GPL, with x264), compile in whisper.cpp (MIT) and
link sherpa-onnx with espeak-ng (GPL-3.0); Slint is used under its GPL-3.0
option. Sources and licences:
THIRD_PARTY_NOTICES.md.
Concat v0.2.1
Concat 0.2.1
A self-contained build for every platform Concat ships on.
What changed
- Version 0.2.1
- Build the phones into the nightly and the releases
- updates
- Export at the project's own aspect
- Fix what reading the code turned up
- Write ARCHITECTURE.md from the code
- Update TODO.MD
- Sign the release APK
- Set the interface in Inter
- Colour the media kinds from the brand palette
- Add the phone targets to the pinned toolchain, and keep FFmpeg once built
- Pin down what FFmpeg on iOS links
- Build the window for Android and iOS
- Build the engine for Android and iOS
- Build the library crates for the web, and keep them building
- Spell the Windows arm64 exception flag so Git's bash leaves it alone
- Fetch sherpa-onnx outside target/, key the cache on the build environment, and build ggml portable
- Build on every target: compiler-rt on macOS, clang-cl on Windows arm64, no tar for bzip2
- workflows updates
- Find FFmpeg the same way on every platform, and let a red build explain itself
- Release notes from the commits, and no changelog file
Download
| Apple silicon | Intel / x86_64 | arm64 | |
|---|---|---|---|
| macOS | macos-arm64.dmg |
macos-x86_64.dmg |
|
| Windows | windows-x86_64.zip |
windows-aarch64.zip |
|
| Linux | linux-x86_64.tar.gz |
linux-aarch64.tar.gz |
|
| Android | android-arm64.apk |
||
| iOS / iPadOS | ios-arm64.ipa |
Every bundle runs with nothing else installed.
- macOS: open the
.dmgand drag Concat to Applications. If macOS says
the app cannot be checked, right-click it and choose Open once. - Windows: unzip and run
concat.exe. The FFmpeg libraries beside it
stay beside it. - Linux:
tar xzfthe archive and run./concatfrom the folder;
concat.desktopis there for a launcher. - Android: open the
.apkon the phone and allow the install from
this source; Android 8.0 or newer, 64-bit. - iOS / iPadOS: sideload the
.ipawith AltStore, Sideloadly or
Xcode's Devices window, which sign it with your Apple ID; iOS 15 or
newer.
SHA256SUMS lists each file's checksum.
Licences
Concat is AGPL-3.0-or-later with a plugin exception
(LICENSE-EXCEPTIONS.md).
The bundles carry FFmpeg (GPL, with x264), compile in whisper.cpp (MIT) and
link sherpa-onnx with espeak-ng (GPL-3.0); Slint is used under its GPL-3.0
option. Sources and licences:
THIRD_PARTY_NOTICES.md.