What's Changed
- Land 49 community PRs, with follow-ups by @bflatastic in https://github.com/storytold/effectcraft/pull/598
- i18n: add Brazilian Portuguese (pt-br) UI translation by @RicSchonfelder in https://github.com/storytold/effectcraft/pull/217
- G2: Fix effect self-inputs, CC Composite, and control activation by @cdinhoo in https://github.com/storytold/effectcraft/pull/423
- Add rendered-frame fidelity scoring by @vbasky in https://github.com/storytold/effectcraft/pull/427
- Fix live preview freezing during rapid property edits by @cdinhoo in https://github.com/storytold/effectcraft/pull/442
- Viewer: the shape tools draw their own shape while dragging, and a layer drag moves the picture by @Aavirash in https://github.com/storytold/effectcraft/pull/443
- ui: import dropped media files with a drop-target hint by @David-T-Campos in https://github.com/storytold/effectcraft/pull/447
- Render Essential Graphics templates from CLI values by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/451
- MCP: return on write errors while stdin is open; document requests during a render by @storybored379 in https://github.com/storytold/effectcraft/pull/458
- Add Spanish (es) UI translation by @llopjulen in https://github.com/storytold/effectcraft/pull/460
- Relink missing footage by scanning a folder for compatible files by @vbasky in https://github.com/storytold/effectcraft/pull/461
- i18n: Japanese for the panels, dialogs and tooltips (396 rows) by @haranishi in https://github.com/storytold/effectcraft/pull/469
- Preserve 3D child position when changing parents by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/471
- i18n: Ukrainian panels and platform Reveal labels (#333) by @dmatviichuk in https://github.com/storytold/effectcraft/pull/472
- fix: CLI --bitrate now applies to VP9 WebM (#440) by @mjohnson7cd in https://github.com/storytold/effectcraft/pull/478
- Scripting: importFile(ImportOptions) imports one file unless sequence is set (#475) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/479
- Expressions: Add Expression applies to the selected properties (#476) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/480
- EXR: do not double the part name of Blender 5 per-pass parts (#481) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/487
- i18n: the text the interface below the menu bar draws reaches the catalog by @cjcwwww in https://github.com/storytold/effectcraft/pull/490
- Preserve exact frame boundaries and timecode cancellation by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/497
- Fix web playback performance with stacked footage by @daijro in https://github.com/storytold/effectcraft/pull/507
- Return to Settings after dismissing GPU Information by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/512
- chore: bump github actions to fix Node 20 deprecation warnings by @dylanmtaylor in https://github.com/storytold/effectcraft/pull/516
- docs: register the MCP server from an installed release by @sawizzle in https://github.com/storytold/effectcraft/pull/517
- Appearance modes: sync with system and separate light/dark themes by @luniiya in https://github.com/storytold/effectcraft/pull/519
- fix(engine): layer.setText schema requires optional OpenType keys (#520) by @mjohnson7cd in https://github.com/storytold/effectcraft/pull/521
- Honor explicit time bases in property and keyframe commands by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/522
- Preserve keyframe selection order during attribute edits by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/524
- Issue [#543]: Scripting: layers.addSolid keeps the requested pixel aspect by @LloydNicholson in https://github.com/storytold/effectcraft/pull/555
- Preserve exported audio sample positions at work-area starts by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/556
- PDF: bound what any stream filter may decode to by @haranishi in https://github.com/storytold/effectcraft/pull/557
- Scripts: a script name is a file name, not a path by @haranishi in https://github.com/storytold/effectcraft/pull/558
- fix(script): honor Item.selected=false while retaining other Project selections by @Ni-zav in https://github.com/storytold/effectcraft/pull/559
- fix(script): keep pending TextDocument baseline reads in sync (#549) by @Ni-zav in https://github.com/storytold/effectcraft/pull/560
- fix(expr): keep pending TextStyle baseline getters in sync by @Ni-zav in https://github.com/storytold/effectcraft/pull/561
- fix(app): open .ecprojx files passed to the desktop executable by @Ni-zav in https://github.com/storytold/effectcraft/pull/562
- fix(engine): validate new text layer positions without panicking by @Ni-zav in https://github.com/storytold/effectcraft/pull/563
- fix(render-queue): accept Render Settings templates when adding jobs by @Ni-zav in https://github.com/storytold/effectcraft/pull/564
- fix(render-queue): honor height-only edits with locked aspect ratio by @Ni-zav in https://github.com/storytold/effectcraft/pull/565
- fix(script): deselect individual properties with Property.selected=false by @Ni-zav in https://github.com/storytold/effectcraft/pull/566
- Import animated GIFs as movies by @Limestudio90 in https://github.com/storytold/effectcraft/pull/567
- i18n: wrap hardcoded UI strings for Chinese localization by @seldoms in https://github.com/storytold/effectcraft/pull/571
- Preserve the shown panel when removing inactive tabs by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/573
- PDF colour spaces and functions: bound sizes, depth and stacks by @haranishi in https://github.com/storytold/effectcraft/pull/575
- Tests: four failures on Windows (autosave paths, GPU viewer adapter, audio preview race) by @KattKnight in https://github.com/storytold/effectcraft/pull/579
- macOS: projects open from Finder; .pcraft is PhotoCraft's again by @LloydNicholson in https://github.com/storytold/effectcraft/pull/582
- Clarify property-group errors in property commands and MCP by @DWAA1660 in https://github.com/storytold/effectcraft/pull/299
- Progress docs: re-measure parity against After Effects 2026 26.5 by @echelon in https://github.com/storytold/effectcraft/pull/617
- Land community PRs, batch 2, with follow-ups by @bflatastic in https://github.com/storytold/effectcraft/pull/639
- Reload Footage shows new pixels and keeps Photoshop layers; Reload Footage Changed on Disk by @KattKnight in https://github.com/storytold/effectcraft/pull/578
- Rotation: dragging the degrees field can go negative by @itrycodinganditsbad in https://github.com/storytold/effectcraft/pull/584
- Effect reset: restore parameters inside twirl-down groups by @itrycodinganditsbad in https://github.com/storytold/effectcraft/pull/585
- Support continuous numeric scrubbing across monitor edges by @kikikikier in https://github.com/storytold/effectcraft/pull/592
- Add inline font family search in Character and Properties by @kikikikier in https://github.com/storytold/effectcraft/pull/593
- Preserve reachable history branches during trimming by @sanyamsingh001 in https://github.com/storytold/effectcraft/pull/597
- Keep work-area edits inside the composition by @vbasky in https://github.com/storytold/effectcraft/pull/605
- Move separated Position on canvas resize and crop by @vbasky in https://github.com/storytold/effectcraft/pull/606
- Move layers when Position is edited with separated dimensions by @vbasky in https://github.com/storytold/effectcraft/pull/607
- Show a layer through its first Intersect or Darken mask by @vbasky in https://github.com/storytold/effectcraft/pull/608
- Startup: a launch that stops as its window is shown switches the next to OpenGL (AMD Vulkan crash) by @JeremyYao in https://github.com/storytold/effectcraft/pull/589
- Land community PRs, batch 3, with follow-ups by @bflatastic in https://github.com/storytold/effectcraft/pull/643
- Keep the playhead on the displayed current time by @vbasky in https://github.com/storytold/effectcraft/pull/610
- Start Linux audio preview without a silence preroll by @vbasky in https://github.com/storytold/effectcraft/pull/614
- Interface: probe Hangul so Korean text isn't drawn as boxes (#599) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/616
- Viewer: passive Composition viewers apply the monitor color conversion (#547) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/618
- Locked viewer: re-convert pixels when the display profile or output simulation changes (#546) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/619
- Effects: CC Power Pin Unstretch reverses the pin mapping (#534) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/620
- CC Simple Wire Removal: Frame Offset takes the strip from the previous or next frame (#533) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/621
- Rove Across Time keeps roving keys off the neighbouring fixed keys' times (#532) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/622
- Convert Expression to Keyframes: sort the keys by layer time on a time-reversed layer (#531) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/623
- Fix recording a shortcut: the field no longer types the key too, and Cmd++ parses (#467) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/626
- Render queue: unsaved project outputs go to ~/Movies or home, not the working directory (#446) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/627
- Let pan and zoom work while 3D Camera Tracker points are shown (#505) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/628
- Reopen panels from the Window menu when the dock is empty (#529) by @MarekSpodBiedry in https://github.com/storytold/effectcraft/pull/629
- fix(effect): expose parameter metadata in effect.list (#441) by @Ni-zav in https://github.com/storytold/effectcraft/pull/631
- fix(ui): drag all selected Project items into compositions by @Ni-zav in https://github.com/storytold/effectcraft/pull/634
- UI: one After Effects-style colour picker with a hex field for every colour input by @FrederoxDev in https://github.com/storytold/effectcraft/pull/638
- Fix 28 community-reported issues (crash, security, AE parity) by @bflatastic in https://github.com/storytold/effectcraft/pull/645
- Land [#641]: GPU precomp layers, with follow-ups by @bflatastic in https://github.com/storytold/effectcraft/pull/648
- GPU: render precomp layers resident on the GPU (#640) by @MatejKozlovsky in https://github.com/storytold/effectcraft/pull/641
- Fix community-reported issues: multi-layer edits, stacked-panel tabs, 32 bpc blend modes, and more by @bflatastic in https://github.com/storytold/effectcraft/pull/655
- Fix community-reported issues: Light theme contrast, macOS Sync with System, Timeline eyedropper, DX12 kernel fallback by @bflatastic in https://github.com/storytold/effectcraft/pull/667
- Community batch: font folders, empty-Timeline drop, AE auto-Bezier tangents, clippy 1.95 by @bflatastic in https://github.com/storytold/effectcraft/pull/668
- Lint: clippy's collapsible_match passes on Rust 1.95 by @tylerjenningsw in https://github.com/storytold/effectcraft/pull/646
- Keyframes: auto-Bezier spatial tangents follow After Effects by @KattKnight in https://github.com/storytold/effectcraft/pull/650
- fix(timeline): create first composition from a footage drop by @Ni-zav in https://github.com/storytold/effectcraft/pull/662
- fonts: extra font folders from EFFECTCRAFT_FONT_DIRS by @johnstockertutorial-afk in https://github.com/storytold/effectcraft/pull/665
- Issue fixes: GPU device loss, motion-path vertex tools, rename focus, macOS sheet dialogs, MCP file confinement, desktop shortcut by @bflatastic in https://github.com/storytold/effectcraft/pull/674
- Community batch: pointer-wrap test texture deltas, device-lost dialog by @bflatastic in https://github.com/storytold/effectcraft/pull/675
- Tests: pointer-wrap frames drain egui's texture deltas (freebsd CI) by @vbasky in https://github.com/storytold/effectcraft/pull/671
- Issue fixes: drag render pile-up, CC Smear/Tiler past text bounds, relative footage paths, GIF playback test by @bflatastic in https://github.com/storytold/effectcraft/pull/676
- Release prep: 0.8.0 and a Linux riscv64 release build by @echelon in https://github.com/storytold/effectcraft/pull/669
New Contributors
- @RicSchonfelder made their first contribution in https://github.com/storytold/effectcraft/pull/217
- @vbasky made their first contribution in https://github.com/storytold/effectcraft/pull/427
- @Aavirash made their first contribution in https://github.com/storytold/effectcraft/pull/443
- @David-T-Campos made their first contribution in https://github.com/storytold/effectcraft/pull/447
- @llopjulen made their first contribution in https://github.com/storytold/effectcraft/pull/460
- @haranishi made their first contribution in https://github.com/storytold/effectcraft/pull/469
- @mjohnson7cd made their first contribution in https://github.com/storytold/effectcraft/pull/478
- @MarekSpodBiedry made their first contribution in https://github.com/storytold/effectcraft/pull/479
- @daijro made their first contribution in https://github.com/storytold/effectcraft/pull/507
- @dylanmtaylor made their first contribution in https://github.com/storytold/effectcraft/pull/516
- @sawizzle made their first contribution in https://github.com/storytold/effectcraft/pull/517
- @luniiya made their first contribution in https://github.com/storytold/effectcraft/pull/519
- @LloydNicholson made their first contribution in https://github.com/storytold/effectcraft/pull/555
- @Ni-zav made their first contribution in https://github.com/storytold/effectcraft/pull/559
- @Limestudio90 made their first contribution in https://github.com/storytold/effectcraft/pull/567
- @seldoms made their first contribution in https://github.com/storytold/effectcraft/pull/571
- @KattKnight made their first contribution in https://github.com/storytold/effectcraft/pull/579
- @itrycodinganditsbad made their first contribution in https://github.com/storytold/effectcraft/pull/584
- @kikikikier made their first contribution in https://github.com/storytold/effectcraft/pull/592
- @JeremyYao made their first contribution in https://github.com/storytold/effectcraft/pull/589
- @FrederoxDev made their first contribution in https://github.com/storytold/effectcraft/pull/638
- @MatejKozlovsky made their first contribution in https://github.com/storytold/effectcraft/pull/641
- @tylerjenningsw made their first contribution in https://github.com/storytold/effectcraft/pull/646
- @johnstockertutorial-afk made their first contribution in https://github.com/storytold/effectcraft/pull/665
Full Changelog: https://github.com/storytold/effectcraft/compare/v0.7.0...v0.8.0