Commit Graph
3365 Commits
Author SHA1 Message Date
BFlat 954a197013 Merge pull request #1822 from kk376/fix/text-animator-tracking-pixels
fix(render): use pixel units for text animator tracking amount
2026-10-30 00:09:52 +07:00
BFlat 5be5ad1167 Merge pull request #1651 from MatejKozlovsky/cli-warn-logging
CLI: log warnings to stderr by default
2026-10-30 00:09:39 +07:00
BFlat 8154605690 Merge pull request #2538 from nanox333/fix/web-duplicate-shortcut
Web: keep Duplicate from opening browser bookmarks
2026-10-30 00:09:26 +07:00
BFlat 2ad5a5d124 Merge pull request #2404 from vangel76/opusenc-decimator-sums
opusenc: eight partial sums in the 48 kHz decimator
2026-10-30 00:09:12 +07:00
BFlat 8742a5b3ec Merge pull request #2306 from marcoarnulfo/fix/lottie-precomp-size
Lottie: size an imported precomp from its precomp layer's w/h when the asset has none
2026-10-30 00:08:57 +07:00
BFlat 13fe4a3d4e Merge pull request #2422 from devius/ka-discord-label
i18n(ka): shorter Georgian for 14 labels that didn't fit
2026-10-30 00:08:43 +07:00
BFlat 1e5008cf29 Merge pull request #2446 from vangel76/vp9enc-forward-transform
vp9enc: forward transform accumulates all outputs together
2026-10-30 00:08:29 +07:00
BFlat 49a6391504 Merge pull request #2308 from marcoarnulfo/fix/lottie-zero-stretch
Lottie: import a layer's time stretch below 1 % as 100 %, with a warning
2026-10-30 00:08:17 +07:00
BFlat c1f59d6750 Merge pull request #2370 from ZJHeepfixer/apple-silicon-frame-latency
EffectCraft — start the window surface from eframe's default (frame latency 2 → 1)
2026-10-30 00:08:02 +07:00
BFlat 5fd95e7df1 Merge pull request #2533 from dotCooCoo/fix/script-socket-tests-macos
Scripts: socket tests wait for the buffers to stay full on macOS
2026-10-30 00:07:48 +07:00
BFlat 89e05d4718 Merge pull request #2470 from Atalantis/macos-dialog-localizations
macOS: declare the UI languages so the open and save panels are translated
2026-10-30 00:07:33 +07:00
BFlat 429e44c8be Merge pull request #2542 from Silvertree2010/fix/h3276-lottie-text-stroke-colour-parser
Reject '+' signs in Lottie text stroke colour hex pairs
2026-10-30 00:07:18 +07:00
BFlat 9d0d1ee243 Merge pull request #2460 from Silvertree2010/fix/h2727-gltf-uri-decode-turns-x-into-a-c
Require hex digits in glTF uri_decode percent escapes
2026-10-30 00:07:05 +07:00
BFlat 41ae777480 Merge pull request #2288 from Silvertree2010/fix/2128-audit-f-08-svg-arc-with-a-huge-r
Bound SVG arc segment count for huge radii
2026-10-30 00:06:50 +07:00
BFlat b6cff1f522 Merge pull request #2287 from Silvertree2010/fix/h2000-framerate-from-f64-returns-a-zer
Keep FrameRate::from_f64 nonzero for tiny positive fps
2026-10-30 00:06:35 +07:00
BFlat 966fdd3c0a Merge pull request #1776 from sanyamsingh001/fix/hextile-centerline-symmetry
Fix HexTile centerline cell selection
2026-10-30 00:06:21 +07:00
BFlat 5ed0a3f9b1 Merge pull request #1669 from zitann2020/i18n/ja-comp-settings
i18n: two labels that already had a catalog row were formatted in English
2026-10-30 00:06:09 +07:00
BFlat 77b4d76455 Merge pull request #2338 from vangel76/camtrack-triangulate-stack
Camera tracking: avoid per-view triangulation allocations
2026-10-30 00:05:56 +07:00
BFlat 2546f3934e Merge pull request #2597 from storytold/fix/2129-xml-entity-expansion
SVG, FCP XML: bound XML entity expansion (#2129)
2026-10-30 00:02:06 +07:00
bflatasticandClaude Opus 5.5 c70fccff99 SVG, FCP XML: bound XML entity expansion (#2129)
A few kilobytes of internal entities expanded to millions of nodes (each top-level
reference stays under roxmltree's per-reference cap), so a 1 MB file exhausted memory.
SVG keeps DTDs, which Illustrator's exports use for entities, but caps the expanded
document at 4 million nodes. Final Cut Pro XML and FCPXML, which FilmCraft parses
without a node limit, are refused when they declare an entity; real exports never do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:01:33 +07:00
Kushagra Kumar c31fad1b90 fix(engine): respect frame default template and force RGB only on transparent: false 2026-10-29 22:06:27 +05:30
zitann2020andDeepSeek V4.1 Flash 373112b38b i18n(ja): Paint and Generate must not draw the same category name
The Generate row added here drew 描画, which Paint already used, so the Effect menu showed the same
category name twice. 描画 is Adobe's name for Generate, so Paint becomes ペイント, and a test now
rejects two categories sharing a Japanese name.

Found by the review bot on this PR.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-30 01:30:04 +09:00
bflatasticandClaude Opus 5.5 8b43197065 Scripts: Startup and Shutdown folders aren't File > Scripts submenus, as in After Effects
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:24:20 +07:00
bflatastic 4aead36ecd Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:21:59 +07:00
bflatasticandClaude Opus 5.5 3d45065add Project: reads_markers stops at the first expression and allocates nothing
It runs for every frame identity and disk-cache key; walk() formatted a path per node.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:21:33 +07:00
bflatastic 1fde74b5f2 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:19:56 +07:00
bflatasticandClaude Opus 5.5 3301c86f7f Export: the H.264 GPU-YUV frame loop takes the CPU cap too (Cx::inflight)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:19:41 +07:00
bflatastic f3f9be4be3 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:18:39 +07:00
bflatasticandClaude Opus 5.5 92f60c1372 Model: rustfmt the OBJ/MTL sibling-lookup tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:17:37 +07:00
bflatastic a1d8cb675f Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:17:33 +07:00
bflatasticandClaude Opus 5.5 cef812b4c1 UI tests: the marker-name test is a module of the tests/it binary (#2491)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:17:07 +07:00
bflatastic d5163b6125 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:16:09 +07:00
bflatasticandClaude Opus 5.5 c99b20cac3 av1enc: inline the DCT stage helpers so const-generic sizes fold through them
The strict-clippy split of inverse_dct (#2496) passes n at run time; inlining keeps
inverse_dct_n's compile-time sizes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:15:48 +07:00
bflatastic d1b736c594 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-29 23:15:17 +07:00
zitann2020andDeepSeek V4.1 Flash 197d6cd229 fix(text): the tests and docs follow the layer being kept
Review of the first commit found three places that still asserted the old cleanup: the UI integration
test (which would have failed CI), docs/agents.md, and the comments on TextEdit::created, layer.newText
and the engine test itself.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-30 01:09:35 +09:00
zitann2020andDeepSeek V4.1 Flash f262e39c63 fix(text): keep an empty Type-tool layer, as After Effects does
Clicking away from a Type-tool layer without typing deleted it, so a click that was meant to place the
text point lost the layer. AE keeps it in the timeline as <空白のテキストレイヤー>, and the layer came from the
user's click rather than being a mistake to clean up.

edit.deselectAll already routes through text.endEdit, so one change covers both paths. The tests that
asserted the old cleanup now assert the layer survives.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-30 00:31:37 +09:00
G.J.R. Timmer 80d01f09d5 fix(web): a demo startup keeps the session snapshot once the user opens or edits a project 2026-10-29 10:57:00 -04:00
Altynzhan Karybai 102b20207d Refactor animation presets reveal ID 2026-10-29 19:43:50 +05:00
Camille Moine a2f8913eb3 Expressions: follow Media Replacement source dimensions (#1747)
LayerInfo, sourceRectAtTime and Layer.source now resolve the effective footage item/size through the collapsed instance EvalCtx, matching the rendered pixels. Adds a regression test with different original and replacement footage sizes.
2026-10-29 15:21:16 +01:00
Camille Moine df0a88b795 Fix collapsed precomp Essential Property overrides (#1747)
Carry property, Font and Media Replacement overrides into the collapsed nested EvalCtx so nested layers render beyond the precomp frame instead of falling back to a clipped, flattened image. Key the layer cache on instance overrides to keep distinct collapsed instances isolated.
2026-10-29 15:21:16 +01:00
Claude 77050532a4 1010: keep authored easing on segments the baking cap leaves unchecked
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDvxCS8xcR28VArjzn1x7U
2026-10-29 13:50:56 +00:00
G.J.R. Timmer df9207d1be feat(web): keep the saved session on a demo start, bound the config request
An explicit demo startup no longer saves the session, so the demo cannot replace the last visit's project. The config request is aborted after 5 s, stops reading once the body passes the size limit, and is skipped for ?empty and ?demo. The packaged hosting notes link to the published docs.
2026-10-29 09:25:48 -04:00
zitann2020andDeepSeek V4.1 Flash 2a6cece4ea i18n(ja): the Generate effect category is 描画
JAPANESE_CATEGORIES had 20 of the 21 the Simplified table carries, so the Generate group in the
Effect menu drew its English name. AE calls it 描画.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-29 22:04:20 +09:00
Claude b0be02fff4 1010: cap baked Orientation keys per property; leave one-node rigs under a mirrored parent as authored
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDvxCS8xcR28VArjzn1x7U
2026-10-29 11:52:23 +00:00
Minher0 93aed3bfd6 instance3d: the copy's cache key covers DoF, animated models and env light
The referenced model's solo render goes through the comp camera: its
depth of field (focus, aperture, iris, highlights) blurs it, none of
which is in the projection matrix — the evaluated Dof is hashed in now
(CodeRabbit, review of #2410).

A model with an animation clip selected is posed at its layer time
(Animation Speed and Looping are static and hashed): the layer time is
folded into the key, so every time is its own entry. A model without a
clip keeps one key across times, as before.

An Environment light's image lights Advanced 3D models, and its source
can be any layer's render (or any environment layer) — too open-ended
to hash: while one is on, the read is not cached. Each is covered by a
render test.
2026-10-29 11:50:58 +00:00
Claude b5b77f446e #1417: Reload Footage re-reads a file's markers; index marker times when merging them
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDvxCS8xcR28VArjzn1x7U
2026-10-29 11:41:27 +00:00
FeiLiuEM 1354aa4019 i18n: the 31 tool names are translated (zh-hans, zh-hant)
The toolbar's tool labels come from Tool::label() through header.rs; they were the last English
surface on the chrome. 31 rows, Simplified and Traditional, and the header asks the catalog.
2026-10-29 19:39:52 +08:00
FeiLiuEM 02211f29eb i18n: the Preview panel's labels reach the catalog
The Preview panel draws Shortcut, Range, Play From, Frame Rate, Resolution, Overlays, Layer
Controls, Loop, Cache Before Playback, Pre-roll, Post-roll, Full Screen and the caching hint from a
local closure, a check table and a roll tuple, so the call-shape scan cannot see them and no catalog
had rows for most of them. They ask the catalog now, with Simplified and Traditional rows.

Verified on Linux: fmt, cargo test -p effectcraft-ui-egui, clippy --all-targets -D warnings.
2026-10-29 19:33:57 +08:00
Claude 942b478472 1063: name the companion properties of text animators (Track Type, Skew Axis, X / Y Rotation)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RDvxCS8xcR28VArjzn1x7U
2026-10-29 11:22:49 +00:00
Christopher Linnett b7242a8670 fix: progressive blur holds two levels at a time, not every level (#2092 review follow-up) 2026-10-29 19:22:28 +08:00