What's Changed
- Honor CARGO_BUILD_TARGET in FreeBSD packaging for aarch64 release builds by @dylanmtaylor in #2555
- Export: convert H.264 frames to YUV 4:2:0 on the GPU by @MatejKozlovsky in #1631
- Face tracker: find polygon crossings once per window row by @vangel76 in #2334
- Camera tracking: validate solver input and bound workspaces by @vangel76 in #2341
- av1enc: reuse scratch buffers in the transform path, the coefficient writer and the level search by @vangel76 in #2405
- vp9enc: loop filter in 8-lane groups by @vangel76 in #2448
- Shapes: Wiggle Paths has Spatial Phase, which slides its wiggle along the path by @dotCooCoo in #2450
- Skip whole CSS at-rule blocks in the SVG parser by brace depth by @Silvertree2010 in #2547
- Fix Align Video to Data panic on multi-byte char in timestamp by @Silvertree2010 in #2548
- Disk cache: 20 GB default and a free-space reserve, so it no longer fills the disk (#2551) by @arnav-hiwarkar in #2553
- Glow, Radial Blur, Venetian Blinds, Radial Wipe, Fractal Noise and the Transform effect render as in After Effects by @vangel76 in #1873
- Cryptomatte pick: keep a hover probe, built off the UI thread (#473) by @MatejKozlovsky in #2517
- Scripts: Recent Script Files lists the last ten scripts and Cmd+Alt+Shift+D reruns the newest by @dotCooCoo in #2291
- Fix #341: on macOS, a quit goes through
terminate:by @dotCooCoo in #1762 - GPU: Classic 3D builds with FXC, so the GPU compositor starts on DirectX 12 (#613) by @MatejKozlovsky in #1571
- SVG, FCP XML: bound XML entity expansion (#2129) by @bflatastic in #2597
- Camera tracking: avoid per-view triangulation allocations by @vangel76 in #2338
- i18n: two labels that already had a catalog row were formatted in English by @zitann2020 in #1669
- Fix HexTile centerline cell selection by @sanyamsingh001 in #1776
- Keep FrameRate::from_f64 nonzero for tiny positive fps by @Silvertree2010 in #2287
- Bound SVG arc segment count for huge radii by @Silvertree2010 in #2288
- Require hex digits in glTF uri_decode percent escapes by @Silvertree2010 in #2460
- Reject '+' signs in Lottie text stroke colour hex pairs by @Silvertree2010 in #2542
- macOS: declare the UI languages so the open and save panels are translated by @Atalantis in #2470
- Scripts: socket tests wait for the buffers to stay full on macOS by @dotCooCoo in #2533
- EffectCraft — start the window surface from eframe's default (frame latency 2 → 1) by @ZJHeepfixer in #2370
- Lottie: import a layer's time stretch below 1 % as 100 %, with a warning by @marcoarnulfo in #2308
- vp9enc: forward transform accumulates all outputs together by @vangel76 in #2446
- i18n(ka): shorter Georgian for 14 labels that didn't fit by @devius in #2422
- Lottie: size an imported precomp from its precomp layer's w/h when the asset has none by @marcoarnulfo in #2306
- opusenc: eight partial sums in the 48 kHz decimator by @vangel76 in #2404
- Web: keep Duplicate from opening browser bookmarks by @nanox333 in #2538
- CLI: log warnings to stderr by default by @MatejKozlovsky in #1651
- fix(render): use pixel units for text animator tracking amount by @kk376 in #1822
- Docking: reject raw panel opens through command aliases by @nanox333 in #2527
- i18n: Russian, German and French follow Match System and translate the menus (#1449) by @JaffarSk24 in #2507
- vp9enc: fixed-size SAD kernels and a revisit cache in the motion search by @vangel76 in #2447
- opusenc: radix-2/3/4 FFT kernels for the MDCT by @vangel76 in #2403
- Camera tracking: skip unused SVD output work in null-vector queries by @vangel76 in #2345
- Camera tracking: keep bundle-adjustment Jacobians on the stack by @vangel76 in #2340
- Mask tracker: keep only the cropped previous frame by @vangel76 in #2337
- Share the Warp Stabilizer luma pyramid with trajectory tracking by @vangel76 in #2350
- Reuse the validated Warp Stabilizer plan on first render by @vangel76 in #2347
- Workspaces: wait for migrated window positions before saving by @nanox333 in #2526
- ScriptUI: fix script-drawn colours showing too bright by @onlykshitij in #2272
- Lottie: import every Dash/Gap pair of a stroke, not only the first dash and the last gap by @marcoarnulfo in #2302
- Menus: a pointer coming back into the window over another title switches menus (#1290) by @tylerjenningsw in #1297
- Classic 3D Shadow Diffusion blurs instead of stamping copies (#2444) by @HEOJUNFO in #2463
- engine: a template's footage entry can't name a file outside the folder (#2123) by @Anubhav-Rai in #2523
- MCP: list_commands and list_effects take compact: true (#2020) by @becauseno7 in #2344
- Fixes: macOS quit crash, soft shadow jitter, Interpret Footage params, preset upgrade, composition proxies, font menu names by @dotCooCoo in #2466
- Advanced 3D: shadow jitter blends across its lattice cell, so GPU penumbrae match the CPU by @dotCooCoo in #2283
- Font menu: a name the interface fonts cannot draw shows in English by @dotCooCoo in #2453
- Reject legacy workspace stacks beyond the layout depth limit by @dotCooCoo in #2515
- Interpret Footage: the params docs list every key the commands read by @dotCooCoo in #2309
- Animation presets: effects saved by an earlier version are upgraded on apply, as in a project by @dotCooCoo in #2336
- Proxies: a composition proxy draws with Separate Fields, Invert Alpha, linear light and Frame Blending by @dotCooCoo in #2352
- Use frozen Object Matte in sessions without the freezing model by @Silvertree2010 in #1852
- av1enc: build the three half-sample reference planes in one pass by @vangel76 in #2401
- Keep rgb_to_hsl saturation finite for over-range colours by @Silvertree2010 in #2462
- Return identity from Mat3::square_to_quad for a degenerate quad by @Silvertree2010 in #1947
- Fix "-0.000" in seconds time display for tiny negative times by @Silvertree2010 in #2467
- Shape Size gets the Constrain Proportions chain, off by default (#2489) by @ashokram-si in #2550
- Draw a line to the end point of degenerate SVG arcs by @Silvertree2010 in #2181
- vp9enc: vectorised phase-plane filters and a predict fast path by @vangel76 in #2445
- opusenc: tabulate the a2nlsf cosine grid, halve its bisection, memoise pitch contour correlations by @vangel76 in #2398
- Camera tracking: factor narrow camera systems within their band by @vangel76 in #2342
- Tracker: Lucas-Kanade resolves its bilinear taps once per window by @vangel76 in #2331
- vp9enc: probability delta table, linear bool-encoder carry, clamp oversized frames by @vangel76 in #2449
- av1enc: fix the bitrate overshoot of the bitrate mode rate control by @vangel76 in #2408
- automation: a confined agent can't start a script's code (#2131 F-11, "Running code") by @Anubhav-Rai in #2521
- Automation: confine every command that reads or writes a file it is given (#1243) by @DWAA1660 in #1347
- effects: Turbulent Displace Evolution moves the pattern at a constant rate (#943) by @klosixgaming-arch in #2535
- i18n: the CJK fallback sits on the Latin baseline (#1309) by @zitann2020 in #1395
- Auto-orient: keep the last heading when an expression-driven Position stops by @marcoarnulfo in #1661
- model: cap glTF buffer-less accessors per file, check element offsets (#2139) by @Barzabel in #2158
- export: tag BT.709 limited-range nclx; the ffmpeg oracles pick decoders by name and skip unbuildable fixtures by @Kaedo17 in #2362
- GPU: contain frame-local validation failures (refs #1319) by @tylerjenningsw in #1326
- av1enc: find the first frame's quantizer in fewer passes by @vangel76 in #2409
- opusenc: vectorisable candidate filter for the greedy PVQ pulse search by @vangel76 in #2402
- opusenc: build the PVQ V table once for encode_pulses by @vangel76 in #2394
- CLI: run --commands reads {"command", "params"} steps from a JSON or JSON Lines file, or standard input (#2251) by @marcoarnulfo in #2311
- Point tracker: refine in a 3x3 neighbourhood when the motion was small by @vangel76 in #2351
- Point tracker: candidates share one tap table, gradients only where lk_refine reads them (#2318) by @vangel76 in #2339
- Expressions: Alt-pickwhip references effect parameters by index (refs #1072) by @tylerjenningsw in #1385
- effects: speed up Match Grain's CPU analysis (~3x on 1080p/4K) by @ki2pixel in #1904
- i18n(ja): the effect names, 297 of 307, as AE's Effect menu draws them by @zitann2020 in #2157
- i18n: complete the Brazilian Portuguese (pt-br) panel catalog by @yanhenrique-dev in #1774
- expr: bound runtime parser and native recursion depth (#2124, #2125) by @Barzabel in #2161
- Export: Targa (.tga) sequence output, 24-bit RGB or 32-bit RGB + Alpha by @ashokram-si in #2476
- Add a Nix flake (NixOS, GNOME and Hyprland) by @untypequicode in #1069
- docs: add user docs in docs/user by @itrycodinganditsbad in #973
- Particles: preserve emitted particles when Birth Rate changes (#1373) by @tylerjenningsw in #1382
- Preview: preserve opening audio while preparing video playback (#947) by @tylerjenningsw in #1177
- Fix timeline layer drops after scrolling (#2492) by @WillPastor in #2519
- Roto Brush: apply correction strokes in drawing order (#1646) by @tylerjenningsw in #1804
- Mask feather, Repeater opacity and Trim Paths on rectangles render as in After Effects by @vangel76 in #1874
- Clipboard: export keyframes as After Effects-compatible text by @tylerjenningsw in #1921
- av1enc: specialise the inverse transform per size, size the forward tmp buffer by @vangel76 in #2396
- Marker names are drawn in a small outlined box, in theme colours by @nanox333 in #1805
- model: OBJ/MTL references from another machine find the file next to the model, and a missing one is logged by @midasmatterhorn in #1504
- Export: cap CPU frames in flight with EFFECTCRAFT_CPU_INFLIGHT (#1615) by @Higgs32584 in #1763
- Markers: adding one during playback no longer stops the audio (#1083, #1085) by @vangel76 in #1092
- Scripts: subfolders of the Scripts and ScriptUI Panels folders become submenus by @onlykshitij in #2289
- Particles: CC Particle Systems II and CC Mr. Mercury keep emitted particles when Birth Rate changes (#1373) by @tylerjenningsw in #1390
- Animation presets: anchor saved effect keyframes at the playhead by @tylerjenningsw in #2452
- Reuse Warp Stabilizer and Camera Tracker analysis keys by @vangel76 in #2348
- #1510: Behaviors animation presets (22 original, expression-driven) by @vangel76 in #1513
- Timeline: every shape Contents item has an eye switch, as in After Effects (#959) by @bflatastic in #2598
- Content-Aware Fill: refuse up front when the frames can't fit in memory (#1789) by @bflatastic in #2599
- Import: a numbered still named without sequence imports as itself, as in After Effects (#2018) by @bflatastic in #2604
- Viewer: Shift keeps a dragged mask or shape vertex to one axis (#1964) by @bflatastic in #2605
- Media: vector footage past 16384×16384 is an error, not an abort (#2136) by @bflatastic in #2606
- Footage reads refuse anything that isn't a regular file (#2134) by @bflatastic in #2607
- Media: header-sized EXR windows and audio sample rates are bounded (#2141) by @bflatastic in #2608
- UI: open padlock on an unlocked viewer lock; inactive comp tabs show their × on hover by @pravdomil in #822
- Viewer trackpad gestures: two-finger scroll pans, pinch zooms by @pravdomil in #1036
- UI: Composition Settings keeps Cancel and OK in place between tabs by @pravdomil in #1100
- #595: RAM preview no longer stalls on a gap right after the playhead by @pravdomil in #1121
- Timeline: parent and matte selected layers together (#1260) by @tylerjenningsw in #1291
- UI: colour expression-driven numeric values consistently (refs #1072) by @tylerjenningsw in #1314
- build: add an optional dev-full profile with full debug info by @elZanco in #1655
- Timeline: trimming the Out point to the playhead keeps its frame visible by @elZanco in #1737
- UI: double-clicking a creation tool in the Tools bar makes an instance (#1072) by @elZanco in #1654
- fix(engine): preserve alpha channel when saving still PNG frames by @kk376 in #1820
- Fix Animation > Browse Presets command by @slager2 in #2250
- av1enc: truncate instead of floor, log2 lookup table, skip division in the dead zone by @vangel76 in #2400
- Fix #2201: one undo reverts a whole mask free-transform drag by @jerome25000 in #2426
- Native Edit menu: use text-field Undo and Redo labels while typing by @nanox333 in #2528
- Ease Presets: restore Linear interpolation and diamond keyframes by @nanox333 in #2539
- i18n(ja): the Generate effect category is 描画 by @zitann2020 in #2583
- fix(text): keep an empty Type-tool layer, as AE does by @zitann2020 in #2595
- feat(web): choose the project the page opens with a
startupconfig key by @gjrtimmer in #2580 - Avoid quadratic Schur assembly for long camera tracks by @vangel76 in #2346
- Project files: opt-in compact .ecproj JSON (Save Compact Project Files) by @pravdomil in #2601
- ci: name the missing ALSA package instead of dying at link time by @Kaedo17 in #2363
- Text lays out as in After Effects: box text baseline, right-to-left text, Justify All, animator tracking, per-character 3D rotation by @vangel76 in #1875
- Tests: QA scenarios ask for image sequences explicitly by @bflatastic in #2609
- project: output_size never asks for sides past the comp limit by @midasmatterhorn in #1568
- Scripts: text animator properties resolve by their After Effects names (refs #1063) by @nanox333 in #1164
- Parented cameras and lights keep their static and keyed Orientation (refs #1010) by @nanox333 in #1165
- #1417: WAV markers show on the audio layer by @nanox333 in #1423
- Expressions: cubic-Bezier easing helper (bezier(...)) (#1884) by @ki2pixel in #1887
- Fix #1747: keep collapsed precomp instance overrides unclipped by @ki2pixel in #1951
- layer.create: implement the instance3d op - a 2D copy of a 3D model layer (#2100) by @Minher0 in #2410
- i18n: the 31 tool names are translated (zh-hans, zh-hant) by @FeiLiuEM in #1514
- i18n: the Preview panel's labels reach the catalog by @FeiLiuEM in #2427
- fix: bound Classic 3D depth-of-field blur and reject non-finite focus distances (#2092) by @ChristopherLinnett in #2118
- docs: clarify engine and UI-only command access (#2564) by @Zaxaerith in #2569
- ci(deps): bump storytold/craft-common-actions/.github/workflows/windows-arm64.yml from 8bb4e5ab95443171104ad88113fe1ef9b0e5ce3f to fa5ef18780cf5e7d5d3b8de068de56cffc83cac5 in the actions group by @dependabot[bot] in #2575
- Audio: keyframed Audio Levels and Stereo Mixer levels ramp within a mix block by @roadhong in #2574
- export: dither 16/32 bpc renders on the way to 8 bits, and let Render Settings Color Depth set the render's depth (#2022) by @klosixgaming-arch in #2534
- Viewer: Alt/Option-drop of a Project item replaces the layer under the pointer by @mypenc in #2270
- project: keep valid ROI crops on wide frames while still refusing overflow (#1577) by @klosixgaming-arch in #2532
- engine: Replace Footage keeps a still a still (#2073) by @gmrmad1 in #2107
- tests: count variable font named instances as styles (#2072) by @gmrmad1 in #2109
- Text: Chinese Han text uses the installed Chinese face (#453) by @midasdf in #2039
- Transform: Fit to Comp sizes shape and text layers by their painted bounds (#2198) by @SusieeTheLinuxUser in #2262
- Edit: duplicating during a text edit ends the edit (#2226) by @SusieeTheLinuxUser in #2266
- Edit: an open text edit stands down the Project-panel Clear redirect (#2227) by @SusieeTheLinuxUser in #2263
- Text: stroke Line Join — Miter, Round or Bevel (#2077) by @bflatastic in #2610
- Effects: padded buffers stay within a pixel budget (#2261) by @bflatastic in #2611
- Timeline: drag effects, masks and shape items to reorder them (#2210) by @bflatastic in #2612
- Viewer: a mask vertex held at the panel edge pans the view (#999) by @bflatastic in #2616
- README: 308 effects, and a test keeps the count current (#2565) by @bflatastic in #2617
- Import: an MP4 lasts as long as its video edit list shows (#2592) by @bflatastic in #2619
- Scripts: FootageItem.replace() swaps in one file, as in After Effects by @bflatastic in #2621
- Render Queue: elapsed and remaining time tick between frames (#2593) by @bflatastic in #2622
- Keyframes: mute keyframes without deleting them (#1894) by @ki2pixel in #1895
- Expressions: a layer is a callable property group by @tylerjenningsw in #1387
- CC Bubbles: bubbles at the layer's edges refract its edge pixels, not a pale fill (#2024) by @becauseno7 in #2600
- UI: Rescan Fonts in the font menu; assert the Linux system scan (#1089) by @vbasky in #1298
- fix(i18n): follow browser language preferences (#1700) by @nanox333 in #1784
- Render: remove the blanket layer cover; per-effect padding already covers what needs it by @vbasky in #1279
- Fix #2573: New Composition From Footage creates a composition by @arnav-hiwarkar in #2615
- Shapes: add the Wiggle Transform path operation, which wiggles paths and each Repeater copy by @dotCooCoo in #2355
- Scripts: the Startup and Shutdown folders run at launch and quit by @dotCooCoo in #2279
- Interpret Footage: Cineon Settings convert DPX and Cineon log scans by @dotCooCoo in #2300
- Scripts: File ▸ Scripts entries take keyboard shortcuts by @dotCooCoo in #2356
- i18n: the labels the call-shape scan cannot see by @FeiLiuEM in #1581
- i18n(ja): panels and dialogs (27% → 39%) by @midasdf in #2054
- Light Environment lights: default environment, Casts Shadows, Advanced 3D switch by @Minher0 in #2474
- #1436: settings dialogs preview live and leave the window undimmed (Gradient Editor, Solid, Camera, Light, Composition) (#1439) by @bflatastic in #2626
- #1436: settings dialogs preview live and leave the window undimmed (Gradient Editor, Solid, Camera, Light, Composition) by @nanox333 in #1439
- i18n: add Polish (pl) interface language by @lewandowskit in #1340
- perf: share unchanged layers between undo states (scripts in big comps went quadratic) by @infinityespi in #2567
- i18n: catalogs list each source once again by @bflatastic in #2627
- ScriptUI: a drag keeps its control past the window edge; MouseEvent.buttons (#2584) by @bflatastic in #2624
- Timeline: Shift-click adds effects and other groups to the selection (#2552) by @bflatastic in #2628
- ScriptUI: a docked panel gets its dock's size and onResize (#2585) by @bflatastic in #2629
- Docs: ROADMAP progress log and ScriptUI parity for 30 October by @bflatastic in #2630
- Settings: a dragged UI Scale applies on release (#2582) by @bflatastic in #2631
- Export: apply crop once when calculating resize dimensions by @erythrofr in #2623
- Shapes: per-corner roundness for Rectangle Path (#1896) by @ki2pixel in #1897
- Fix faceted path overlays at high viewer zoom by @p01ntov in #1726
- CC Bubbles: bubbles refract the layer's edge pixels on padded buffers too (#2024) by @becauseno7 in #2620
- Add Blender scene export for the 3D Camera Tracker by @Krueels in #2442
- Media: update the FilmCraft backend for AVI import by @tylerjenningsw in #1736
- Media: enable AVI import across supported entry points by @tylerjenningsw in #1739
- EffectCraft — no polling while idle: a deadline worker that sleeps, and a footage watcher that wakes the UI only on change by @ZJHeepfixer in #2369
- EffectCraft — open the window before the GPU compositor is built by @ZJHeepfixer in #2368
- deps: bump tar, zip, roxmltree, rustls-webpki and symphonia to latest by @dylanmtaylor in #2633
- CI: workflows only call craft-common-actions at @main (AGENTS.md; windows-arm64 unpinned) by @dylanmtaylor in #2625
- i18n(ja): fix one mistranslation and unify terms the menu and the panels spell differently by @C0uki in #2635
- Markers: keep names and duration handles visible at viewport edges by @nanox333 in #2634
- Fix #1743: protect render outputs from replacing project sources by @nanox333 in #1758
- #712: color pickers get an eyedropper everywhere (#1328) by @bflatastic in #2639
- #712: color pickers get an eyedropper everywhere by @nanox333 in #1328
- Windows: document the GNU toolchain's import-library requirements (#1886) by @tylerjenningsw in #1892
- deps: bump tar, zip, roxmltree, rustls-webpki and symphonia to latest (#2633) by @bflatastic in #2640
- fix(effects): let CC Particle World's Textured Square use a Texture Layer by @marcoarnulfo in #1610
- Character panel: All Fills Over All Strokes and All Strokes Over All Fills in the stroke order menu by @marcoarnulfo in #2245
- MCP: get_property and get_layer list an enum property's options (#2085) by @marcoarnulfo in #2236
- Scale Composition: comp.scale resizes a comp and scales its layers, keys, cameras and guides by one factor by @marcoarnulfo in #2248
- Layer Styles: changed Blending Options outlive the last style and only pixel-changing styles block a clip export (#1389) by @marcoarnulfo in #1601
- Polystar: synchronize inner controls after expressions and key edits by @nanox333 in #2632
- Automation: a confined renderQueue.add without output needs a saved project (#2479) by @bflatastic in #2636
- Tests: the Timeline's text Animate and Add menus add animators and properties (#2513) by @bflatastic in #2637
- Import: a sequence of bare frame numbers is named after its folder (#2019) by @bflatastic in #2641
- Windows: Reveal in Explorer opens File Explorer, not the browser (#1961) by @bflatastic in #2642
- Graph Editor: share keyframe menus and close the Render Queue with Cmd+W by @nanox333 in #1342
- Fix/1190 checkbox drag by @nanox333 in #1226
- Text: duplicate ends the open text edit and selects the copy (#2226) by @ChristopherLinnett in #2268
- automation: a confined agent can't queue a render output outside the roots (#2479) by @Anubhav-Rai in #2520
- Audio: link stereo level edits while preserving channel balance by @tylerjenningsw in #2562
- Puppet: Shift-select several pins in the Timeline and edit them together by @tylerjenningsw in #1755
- i18n(ja): drop the space between Latin text and Japanese in 37 rows by @C0uki in #2638
- Tests: Simple Choker keeps growing the matte down to -100 (#2102) by @bflatastic in #2643
- Character panel: the stroke width shows its icon and a presets menu (#2075) by @bflatastic in #2645
- Layer Style dialog: Edit Gradient… opens the Gradient Editor (#2057) by @bflatastic in #2652
- Viewer: motion path follows X/Y Position when dimensions are separated (#2242) by @MarekSpodBiedry in #2255
- Translate remaining Japanese panel labels by @haranishi in #1772
- Update prompt shows the app icon instead of a letter by @dylanmtaylor in #2646
- Adjustment layers blend in their blend mode (#2618) by @bflatastic in #2653
- Settings: older settings files split layers above the original (#2545) by @bflatastic in #2654
- Update prompt shows the app accent color by @dylanmtaylor in #2656
- ui: a file dropped on the Timeline joins that composition (#2588) by @zitann2020 in #2650
- ui: a drop that holds the target composition lands the rest of the selection (#2589) by @zitann2020 in #2649
- i18n(ja): the panel catalog's last 65 rows by @zitann2020 in #2648
- Discrete property choices are one undo step each (#2152) by @bflatastic in #2655
- layer.slip reports the requested shift and whether it was clamped (#2371) by @bflatastic in #2657
- Make font substitute test work when original fonts are installed by @dotCooCoo in #2658
- Premiere Pro export pre-renders in the background (#2269) by @bflatastic in #2662
- Accessibility (gap 25): an AccessKit audit test; names, roles and keyboard operation for Effects & Presets, Settings and Render Queue by @vangel76 in #1339
- Fix pretend-version testing for update prompts by @dylanmtaylor in #2663
- docs: gaps.md says the CI gate runs on pull requests (gap 4 closed) by @bflatastic in #2665
- ui: the composition the drop lands in is left out even when unselected (#2589) by @zitann2020 in #2664
- Viewer: mouse-wheel scrubbing over the Composition monitor (#1218) by @vbasky in #1287
- ui-egui: the accessibility and keyboard tests join the one test binary by @bflatastic in #2669
- Cache/GPU: adjustment footprint ignores the effect stack; upload starvation is reported (#687) by @vbasky in #701
- Fix pretend-version testing for update prompts (#2663) by @bflatastic in #2667
- Shape toolbar: keep gradient stroke widths by @nanox333 in #2668
- Fix #2091 copy/paste masks between layers by @jerome25000 in #2216
- #1743, part 3: two Render Queue outputs never write the same file, and default names avoid the queue's other outputs by @nanox333 in #1830
- Roto Brush: follow the object with SAM 2.1 (Tiny, Small, Base+, Large; optional models) by @nanox333 in #1539
- #1743, part 2: commands that write to a path never replace footage, a proxy or the project file by @nanox333 in #1829
- fix(flatpak): allow reading launcher version pins by @dylanmtaylor in #2704
New Contributors
- @Atalantis made their first contribution in #2470
- @ZJHeepfixer made their first contribution in #2370
- @kk376 made their first contribution in #1822
- @JaffarSk24 made their first contribution in #2507
- @onlykshitij made their first contribution in #2272
- @becauseno7 made their first contribution in #2344
- @ashokram-si made their first contribution in #2550
- @klosixgaming-arch made their first contribution in #2535
- @Kaedo17 made their first contribution in #2362
- @yanhenrique-dev made their first contribution in #1774
- @untypequicode made their first contribution in #1069
- @WillPastor made their first contribution in #2519
- @Higgs32584 made their first contribution in #1763
- @slager2 made their first contribution in #2250
- @jerome25000 made their first contribution in #2426
- @gjrtimmer made their first contribution in #2580
- @Minher0 made their first contribution in #2410
- @dependabot[bot] made their first contribution in #2575
- @roadhong made their first contribution in #2574
- @mypenc made their first contribution in #2270
- @SusieeTheLinuxUser made their first contribution in #2262
- @lewandowskit made their first contribution in #1340
- @infinityespi made their first contribution in #2567
- @erythrofr made their first contribution in #2623
- @p01ntov made their first contribution in #1726
- @Krueels made their first contribution in #2442
- @C0uki made their first contribution in #2635
Full Changelog: v0.18.0...v0.19.0