Commit Graph
1253 Commits
Author SHA1 Message Date
bflatastic ee7fd1402e Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:04:13 +07:00
bflatastic e1c2147b32 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:03:20 +07:00
bflatastic b7fedd3a62 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:02:50 +07:00
bflatastic 80cb8a06ae Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 07:01:38 +07:00
bflatasticandClaude Opus 5.5 e806f0d34e i18n: the menu test expects German's own Can't Undo wording now that it has one
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 06:43:12 +07:00
bflatasticandClaude Opus 5.5 4a4aa28184 Render Queue: elapsed and remaining time tick between frames (#2593)
The job reports its times when a frame finishes, so with slow frames the
Current Render strip held the same Est. Remain long enough to look
stalled, then jumped. Between reports both times now count on from the
last one, as a clock does (remaining never below zero, a finished job
stands still), and the panel repaints twice a second while rendering.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 06:27:58 +07:00
bflatastic 8e3324eefa Merge main into #2615; file.import's parameter doc: main's sequence wording plus the PR's newComp option 2026-10-30 05:59:29 +07:00
Camille Moine 8ac2dec42a Keyframes: offer Unmute Keyframes in the Animation menu
The menu only carried Mute, so unmuting meant the timeline's context menu.
Add the second row bound to `keys.setMuted {"muted":false}`, its translation
in the ten catalogs, and a test that runs both rows through Session::execute
with undo and redo.
2026-10-29 23:51:04 +01:00
Camille Moine 047ffbaba5 Keyframes: mute keyframes without deleting them (#1894)
Add a muted flag to Keyframe. Muted keys stay in the Timeline and Graph Editor (dimmed, selectable and movable) but evaluation skips them, so the active neighbours interpolate as if they were not there; auto-Bezier and eases use the active neighbours. When every key is muted the property falls back to its static value.\n\nkeys.setMuted {muted} mutes or unmutes the selected keys in one undo step. The Timeline context menu offers Mute/Unmute Keyframes and the Animation menu has Mute Keyframes. Muted keys have no Bezier handles and motion-path points are dimmed.\n\nLottie export omits muted keys (with a warning) because Lottie has no mute state; scripting keeps seeing them in numKeys/key().\n\nTests: keyframe evaluation (linear, auto-Bezier spatial, all muted), serialization and value replacement, engine command + undo, Lottie export.
2026-10-29 23:51:04 +01:00
bflatastic dfa5d9eeea Merge main into #1784; main already maps ru/fr/de and has Russian undo/redo: keep main's supported() and history table, add only the French and German undo/redo wording, test Russian with main's colon form 2026-10-30 05:44:55 +07:00
bflatastic 8d051b3e9a Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:42:41 +07:00
BFlat 87767b1252 Merge pull request #2616 from storytold/fix/999-viewer-edge-pan
Viewer: a mask vertex held at the panel edge pans the view (#999)
2026-10-30 05:41:55 +07:00
BFlat d766467000 Merge pull request #2612 from storytold/fix/2210-timeline-group-drag
Timeline: drag effects, masks and shape items to reorder them (#2210)
2026-10-30 05:41:49 +07:00
BFlat cdc5fddaff Merge pull request #2610 from storytold/fix/text-line-join
Text: stroke Line Join — Miter, Round or Bevel (#2077)
2026-10-30 05:41:27 +07:00
bflatasticandClaude Opus 5.5 e2cf4477e7 Viewer: a mask vertex held at the panel edge pans the view (#999)
Dragging a mask or shape vertex, a tangent or a Pen point against the
edge of the Composition panel now pans the view toward that edge, faster
the further out the pointer is, and the point keeps moving with it, so
zoomed-in rotoscoping no longer stops at the panel edge (as in After
Effects).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 05:15:35 +07:00
BFlat f20dfcbda2 Merge pull request #2263 from SusieeTheLinuxUser/fix/2227-clear-text-edit-standdown
Edit: an open text edit stands down the Project-panel Clear redirect (#2227)
2026-10-30 05:11:05 +07:00
BFlat 90fbd6609d Merge pull request #2270 from mypenc/altfix
Viewer: Alt/Option-drop of a Project item replaces the layer under the pointer
2026-10-30 05:09:55 +07:00
bflatastic e37df317af Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	crates/ui-egui/src/i18n/ui.rs
2026-10-30 05:08:59 +07:00
BFlat 218b8e34ae Merge pull request #1514 from FeiLiuEM/i18n/1451-tool-names
i18n: the 31 tool names are translated (zh-hans, zh-hant)
2026-10-30 05:08:49 +07:00
bflatastic de40efed7c Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:08:34 +07:00
bflatastic 57b76bcc88 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 05:08:13 +07:00
BFlat 5874304437 Merge pull request #1887 from ki2pixel/expressions-cubic-bezier
Expressions: cubic-Bezier easing helper (bezier(...)) (#1884)
2026-10-30 05:08:06 +07:00
bflatastic 661f95b901 Merge remote-tracking branch 'origin/main' into HEAD 2026-10-30 04:48:19 +07:00
bflatasticandClaude Opus 5.5 5d764e6473 Timeline: drag effects, masks and shape items to reorder them (#2210)
Dragging an effect's (or mask's, shape item's, text animator's) row in
the Timeline drew a marquee. The row now drags: a line shows where it
lands among its siblings and the drop runs prop.moveGroup (one undo
step); Escape cancels, as the layer reorder drag does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:36:58 +07:00
bflatasticandClaude Opus 5.5 dc09ba58ae Text: stroke Line Join — Miter, Round or Bevel (#2077)
Text strokes were always drawn with round joins. The document gets a
Line Join (`lineJoin: miter|round|bevel` in layer.setText / newText),
Miter for new text as in After Effects, Round for documents saved before
it so their look is kept. The 2D and Advanced 3D (extruded) text strokes
use it, expressions' style copies carry it, and the Character panel has
Miter / Round / Bevel buttons under the stroke width.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 04:25:27 +07:00
BFlat a0bec0905c Merge pull request #2595 from zitann2020/text/keep-empty-layer
fix(text): keep an empty Type-tool layer, as AE does
2026-10-30 04:09:42 +07:00
BFlat f87963d3fa Merge pull request #2583 from zitann2020/i18n/ja-generate-category
i18n(ja): the Generate effect category is 描画
2026-10-30 04:09:35 +07:00
BFlat 69f53d8daa Merge pull request #2528 from nanox333/fix/native-text-undo-labels
Native Edit menu: use text-field Undo and Redo labels while typing
2026-10-30 04:09:18 +07:00
BFlat 19d75179f9 Merge pull request #2250 from slager2/fix/2172-animation-browse-presets
Fix Animation > Browse Presets command
2026-10-30 04:08:59 +07:00
BFlat b614693b51 Merge pull request #1654 from elZanco/tools-double-click-create
UI: double-clicking a creation tool in the Tools bar makes an instance (#1072)
2026-10-30 04:08:44 +07:00
BFlat 7043fde70a Merge pull request #1314 from tylerjenningsw/fix/expression-value-color
UI: colour expression-driven numeric values consistently (refs #1072)
2026-10-30 04:08:14 +07:00
BFlat 686da9f7eb Merge pull request #1291 from tylerjenningsw/enhance/batch-parent-matte
Timeline: parent and matte selected layers together (#1260)
2026-10-30 04:08:08 +07:00
BFlat 052cd1f89c Merge pull request #1121 from pravdomil/claude/ram-preview-prefetch-bug-873f91
#595: RAM preview no longer stalls on a gap right after the playhead
2026-10-30 04:08:00 +07:00
BFlat bcbd6db402 Merge pull request #1100 from pravdomil/claude/compositing-buttons-positioning-b52693
UI: Composition Settings keeps Cancel and OK in place between tabs
2026-10-30 04:07:53 +07:00
BFlat 43a5b6ef7a Merge pull request #1036 from pravdomil/claude/trackpad-gestures-viewer-e43bc3
Viewer trackpad gestures: two-finger scroll pans, pinch zooms
2026-10-30 04:07:45 +07:00
BFlat 365e4dd4ab Merge pull request #822 from pravdomil/claude/remove-panel-title-underline-9dd90c
UI: open padlock on an unlocked viewer lock; inactive comp tabs show their × on hover
2026-10-30 04:07:37 +07:00
bflatasticandClaude Opus 5.5 1549d63c66 Viewer: Shift keeps a dragged mask or shape vertex to one axis, as in After Effects (#1964)
Gesture::Vertices took the raw drag delta; it now goes through one_axis, as a
Shift-dragged layer's move does, before snapping.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 03:17:26 +07:00
pravdomilandClaude Opus 5.5 b70d69fcb1 UI: an inactive comp tab shows its × on hover
The Timeline's comp tabs had a × on the shown comp only, so closing another
comp meant showing it first. A comp tab the Timeline does not show now shows
its × while the pointer is over it, and clicking it closes that comp without
showing it. Every comp tab keeps the ×'s room, so a tab keeps its width when
it is shown or hovered. Automation: `panel.tab.Timeline.<comp>.close` for
each comp's ×; `panel.tab.Timeline.close` stays for the shown comp's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:41:46 +01:00
pravdomilandClaude Opus 5.5 caedb0727a Viewer trackpad gestures: two-finger scroll pans, pinch zooms
The Composition and Layer viewers took every scroll as a zoom, so a trackpad
could not pan. A trackpad's two-finger scroll now pans; a pinch,
Ctrl/Cmd+scroll, a mouse wheel and Alt + a trackpad scroll zoom around the
pointer.

Where the platform names the device (egui's MouseWheelSource, macOS), that
decides. Elsewhere browsers and some high-resolution wheels report a mouse
wheel in points, as a trackpad does, so the unit alone doesn't decide. A
scroll in points pans only once it has shown it is a trackpad: a touch phase,
movement on both axes at once, or a pinch. That holds until a wheel scrolls
in lines. Until then the vertical part zooms and the horizontal part pans.

ui.scroll gains unit (point|line), source (wheel|trackpad) and pinch so
agents can drive both gestures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:21:10 +01:00
pravdomilandClaude Opus 5.5 7fe5f5225f #595: RAM preview no longer stalls on a gap right after the playhead
Problem: pressing play on frames that still had to render left the playhead
standing still for seconds. The cache bar showed a gap of a few frames right
after the playhead while frames further ahead turned green, and playback
started only once the whole prefetch window was cached. The earlier #595
change (prefetch order, eviction) started the right frames first, but they
still finished last. Cache Frames When Idle left the same late-filling gaps.

Cause: prefetch frames render side by side on one rayon pool, and each
frame's own parallel loops run on that pool too. An idle thread steals a
piece of a frame that is rendering; when that piece waits on a nested
parallel loop, the thread picks up a queued frame job instead and renders
queued frames until the queue is empty. Only then does it return to the
piece it stole, so the frame that piece belongs to cannot finish while
frames keep being queued. The frames started first are the ones just ahead
of the playhead.

Fix: the frames of a playing preview and of Cache Frames When Idle render on
lanes: one single-thread pool per frame thread, one frame at a time each. A
lane's thread only ever works on its own frame, so no frame waits under
another. The shared pool keeps the viewer's frame, which still uses every
thread, and the few frames prefetched around it while paused. Queued frames
change hands when a preview starts or stops, or when the viewer shows one.
Idle caching takes every lane instead of half the pool's threads.

Tests: frames_started_first_are_done_first (a playing preview, idle
caching) and queued_frames_render_when_a_preview_starts_or_stops.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:19:06 +01:00
pravdomilandClaude Opus 5.5 edb3b5985e UI: Composition Settings keeps Cancel and OK in place between tabs
The button row followed each tab's content, so it jumped when switching
between Basic, Advanced and 3D Renderer. The tabs not on show are laid out
unseen each frame and the dialog pads to the tallest, so Cancel and OK stay
put with any font, language or scale.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:16:24 +01:00
pravdomilandClaude Opus 5.5 a56a42c096 UI: show an open padlock on an unlocked Composition / Timeline viewer lock
The viewer lock in a tab group's header drew the same closed padlock in
both states, told apart only by brightness. Unlocked now draws an open
padlock, locked the closed one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:06:39 +01:00
Egon 5000 7081ba4d75 UI: map all four box corners for the double-click mask on a rotated layer
Two corners give a sliver instead of a comp-filling mask when the layer is
rotated by an angle other than a multiple of 90 degrees (CodeRabbit on
#1654): map the comp box's four corners into layer space and use their
bounds.
2026-10-29 19:52:55 +01:00
elZanco 2fb803fa82 UI: 2026-10-29 19:52:55 +01:00
Egon 5000 34aef98725 UI: double-clicking a creation tool in the Tools bar makes an instance (#1072)
A double-click on a creation tool in the Tools bar makes what it draws, as in After Effects: a text layer from the Type tools; from the shape tools a shape that fills the comp - into the selected shape layer's Contents, as a mask on the selected layer (or when Tool Creates Mask is on), or as a new shape layer when neither applies. The shape geometry defaults now match AE: the Rounded Rectangle tool's Roundness is a fixed 20 instead of growing with the drawn size, and the Polygon tool draws five points.
2026-10-29 19:52:55 +01:00
Kristian Myram c9688ef796 #2459: cover localized text-field Undo and Redo labels 2026-10-29 19:47:46 +01:00
bflatastic e023d42a82 Merge remote-tracking branch 'origin/main' into fix/959-shape-content-eyes 2026-10-30 01:27:53 +07:00
arnav-hiwarkarandClaude Opus 5.5 8606f54a64 Fix #2573: New Composition From Footage creates a composition
The empty Composition viewer's button only ran File > Import, so the picked
file landed in the Project panel and no composition was made. file.import
now takes newComp: when the import lands (at once or when its background job
applies), what it made becomes one composition via New Comp from Selection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 23:55:42 +05:30
BFlat 676eeb8d07 Merge pull request #2289 from onlykshitij/feat/script-panel-submenus
Scripts: subfolders of the Scripts and ScriptUI Panels folders become submenus
2026-10-30 01:23:53 +07:00
BFlat eccb1883e2 Merge pull request #1092 from vangel76/fix-1083-beat-marker-audio-pause
Markers: adding one during playback no longer stops the audio (#1083, #1085)
2026-10-30 01:23:37 +07:00