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