What's Changed
- Atomic writes: a unique, exclusively created temp file per write (#1233) by @DWAA1660 in #1345
- Offloaded analyses: merge the result instead of replacing the group (#1249) by @DWAA1660 in #1366
- EPS: idiv and mod of -2^63 by -1 no longer panic by @dotCooCoo in #1223
- Prevent duplicate automation edits after lost replies by @onlymoein in #1333
- Read PDF structure through the shared parser without changing vector rendering by @skylartaylor in #1398
- ci: add nix check workflow by @dylanmtaylor in #1612
- fix(render): preserve preceding effects in GPU Echo by @arnav-hiwarkar in #1412
- Copy only the selected keyframes across Position, Rotation and Scale (#1552) by @arnav-hiwarkar in #1584
- Import: Composition - Retain Layer Sizes for PDF / Illustrator files (#1536) by @arnav-hiwarkar in #1543
- fix(presets): identify copy folder action by label by @arnav-hiwarkar in #1402
- perf(presets): reuse cached text and user preset data by @arnav-hiwarkar in #1222
- feat(media-browser): add Copy Source Path by @arnav-hiwarkar in #1399
- perf(media-browser): reuse listings and cache filename sort keys by @arnav-hiwarkar in #1259
- perf(project): read file sizes once per sort by @arnav-hiwarkar in #1214
- fix(properties): reveal transform rows on double-click by @arnav-hiwarkar in #1472
- Docs: PDF / Illustrator Composition - Retain Layer Sizes in the parity docs by @bflatastic in #1638
- #1221: two path-format test failures on Windows by @vangel76 in #1254
- Footage: relinking a moved project keeps Windows separators and UNC shares by @bflatastic in #1639
- Effects: 4-Color Gradient keeps the layer's alpha with Blending Mode None (refs #1381) by @marcoarnulfo in #1383
- Undefined-name errors report the first use from the failing function by @nanox333 in #1349
- Import: AIFF files import, including EffectCraft's own AIFF renders by @marcoarnulfo in #1431
- Import: item.metadata counts a WebM's last frame when its duration is not a whole millisecond by @marcoarnulfo in #1435
- project: a hostile ROI cannot overflow the crop math by @midasmatterhorn in #1569
- Render Queue: resolve a bare project filename against the working directory by @Hamza0101 in #1433
- CLI: an argument that is not Unicode is a usage error, not a panic by @iannitram in #1357
- macOS DMG: hdiutil create -srcfolder, so the installed app passes codesign --strict by @Deeev201 in #1360
- Scripting: test that Layer.property() resolves AE's top-level shortcuts by @marcoarnulfo in #1371
- ui-egui: a click that opens the colour picker no longer closes it in the same frame (#1476) by @midasmatterhorn in #1496
- Solo: exclude other layers even when the soloed layer is outside its time range by @Themolx in #948
- pdf: bound CFF endchar seac recursion so a cyclic font can't overflow the stack by @midasmatterhorn in #1477
- Liquify: expose Distortion Mesh Offset in Effect Controls (#1194) by @vbasky in #1302
- gpu: upload cache drops textures of freed buffers on every insert by @MatejKozlovsky in #1549
- Settings: the page list's rows touch, with no gap between them by @pravdomil in #1258
- Update contributor key: moecr7 -> onlymoein by @onlymoein in #1397
- GPU: stop drawing a frame once the device has failed by @MatejKozlovsky in #1520
- Packaging: repair the AppStream screenshot reference by @IanHollow in #1480
- i18n(ja): the resolution labels agree with the panel catalog and After Effects by @zitann2020 in #1307
- i18n(ja): four labels After Effects contradicts by @zitann2020 in #1312
- Scripting: add the missing app.preferences.saveToDisk() so imported scripts like Duik get past startup (#1263) by @MarekSpodBiedry in #1311
- packaging: RPM requires library sonames, so openSUSE can install it by @tydude001 in #1455
- pdf: don't slice glyph names at a non-char boundary in name_to_unicode by @midasmatterhorn in #1447
- ci: switch to shared nix workflow from craft-common-actions by @dylanmtaylor in #1622
- Find Missing Fonts: fonts found by their PostScript or full name are no longer listed by @dotCooCoo in #1344
- UI: regression test — Space previews the demo opened from the start screen (#1059) by @vbasky in #1295
- Viewer: Composition Settings… in the composition's right-click menu by @nanox333 in #1367
- Engine: sequence Interpret Footage loop regression coverage (#1068) by @vbasky in #1294
- pdf: an inline image with absurd dimensions falls back to the EI scan by @midasmatterhorn in #1566
- Reject corrupt benchmark results and incomplete regression evidence by @onlymoein in #1331
- i18n (de): fix two labels that name the wrong thing, and settle six terms by @Hamza0101 in #1454
- Layer cache: hash a selected layer's comp scene into its owner's key by @DWAA1660 in #1379
- Contributors: add Marco Arnulfo by @marcoarnulfo in #1608
- pdf: checked_add for CFF Private DICT and Type 1 RD offsets from the file by @midasmatterhorn in #1482
- CLI: a failed render under run/exec exits 1, like render --queue by @marcoarnulfo in #1432
- Timeline: dragging an effect lights up the layer it will land on by @nanox333 in #1372
- fix(script): per-key methods act on keys outside the active comp (#1531) by @AyberkA0 in #1558
- Window menu: choosing a checked panel closes it, as in After Effects by @marcoarnulfo in #1634
- Shapes: a stroke's buffer is padded by the miter limit only where it has miter joins by @wixar172 in #1444
- GPU tests: say why the GPU didn't start, and fail with EFFECTCRAFT_REQUIRE_GPU=1 instead of skipping by @MatejKozlovsky in #1524
- #1509: Timeline effect rows show the effect's colour label by @vangel76 in #1512
- Scripts: a script can't confirm executing a file for itself (#1246) by @DWAA1660 in #1351
- fix(viewer): Shift-click with the Pen draws a straight segment (#1544) by @AyberkA0 in #1561
- Export: render in parallel once the GPU stops for good by @MatejKozlovsky in #1511
- CC Particle World: motion blur (#1195) by @vbasky in #1292
- Effects: Black & White no longer turns faint colour noise in shadows into blocks by @guillehr2 in #1538
- fix(graph): speed graph Fit Selection frames the curve between the keys by @marcoarnulfo in #1628
- Null layers: the Video switch hides them in the Composition viewer, as in After Effects by @Themolx in #1332
- i18n(ja): the first rows of the Japanese effect catalog by @zitann2020 in #1285
- Honor duration rounding in timeToFrames by @sanyamsingh001 in #1321
- Preserve CLI template inputs when output is a hard link by @sanyamsingh001 in #1313
- Honor --empty when rendering from the CLI by @sanyamsingh001 in #1391
- fix(lottie): serialize Offset Paths miter limits as animatable values by @Ni-zav in #1470
- Masks: addVertex and setVertex fill in missing tangents of a loaded path (#1250) by @DWAA1660 in #1318
- Expressions: accepting a function completion inserts the call parentheses by @marcoarnulfo in #1394
- Scripts: the project-folder check compares Windows paths in one form by @bflatastic in #1647
- fix(web): scripts can open files in browser storage; stored footage isn't reported missing (#1593) by @rahal in #1594
- #1611: layer context menu has Layer Styles by @krinry in #1640
- pdf: a soft mask at an unsupported bit depth is ignored, not fatal by @midasmatterhorn in #1565
- pdf: endchar takes its width by operand parity like the stems and rmoveto by @midasmatterhorn in #1478
- Fix autosave retries after failed background writes by @onlymoein in #1330
- Import templates and open originals within their own folders by @skylartaylor in #1748
New Contributors
- @midasmatterhorn made their first contribution in #1569
- @Hamza0101 made their first contribution in #1433
- @iannitram made their first contribution in #1357
- @Deeev201 made their first contribution in #1360
- @IanHollow made their first contribution in #1480
- @tydude001 made their first contribution in #1455
- @AyberkA0 made their first contribution in #1558
- @wixar172 made their first contribution in #1444
- @guillehr2 made their first contribution in #1538
- @rahal made their first contribution in #1594
- @krinry made their first contribution in #1640
Full Changelog: v0.10.0...v0.11.1