Commit Graph
1235 Commits
Author SHA1 Message Date
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
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
BFlat decad188aa Merge pull request #1805 from nanox333/feat/marker-name-box
Marker names are drawn in a small outlined box, in theme colours
2026-10-30 01:22:36 +07:00
BFlat b42cbcdb5e Merge pull request #1921 from tylerjenningsw/enhance/keyframe-text-clipboard
Clipboard: export keyframes as After Effects-compatible text
2026-10-30 01:22:04 +07:00
BFlat 8c7c8bee8c Merge pull request #2519 from WillPastor/codex/2492-timeline-drag-release
Fix timeline layer drops after scrolling (#2492)
2026-10-30 01:21:15 +07:00
BFlat 9cb5255575 Merge pull request #1177 from tylerjenningsw/fix/947-preview-opening-audio
Preview: preserve opening audio while preparing video playback (#947)
2026-10-30 01:20:53 +07:00
tylerjenningsw c979f5aebd Merge origin/main into fix/expression-value-color (#1306)
Main split the panels' value editors into one function per value kind.
The expression colour now comes from Tokens::for_value in each of them:
Effect Controls through PropCx::value_tokens, the Timeline's scalar,
vector and enum editors, and the Properties transform row.
2026-10-29 14:20:05 -04:00
BFlat 1e1d04d8d5 Merge pull request #1774 from yanhenrique-dev/i18n/ptbr-panels
i18n: complete the Brazilian Portuguese (pt-br) panel catalog
2026-10-30 01:18:53 +07:00
BFlat 96a8af9560 Merge pull request #2157 from zitann2020/i18n/ja-effect-names-2
i18n(ja): the effect names, 297 of 307, as AE's Effect menu draws them
2026-10-30 01:18:39 +07:00
BFlat 6f1d11af94 Merge pull request #1385 from tylerjenningsw/enhance/pickwhip-index-refs
Expressions: Alt-pickwhip references effect parameters by index (refs #1072)
2026-10-30 01:18:08 +07:00
BFlat a7f1d11620 Merge pull request #1326 from tylerjenningsw/fix/gpu-frame-validation
GPU: contain frame-local validation failures (refs #1319)
2026-10-30 01:16:36 +07:00
BFlat f987de8023 Merge pull request #1395 from zitann2020/i18n/ja-cjk-baseline
i18n: the CJK fallback sits on the Latin baseline (#1309)
2026-10-30 01:15:32 +07:00
bflatasticandClaude Opus 5.5 9424c9eeb1 Timeline: every shape Contents item has an eye switch, as in After Effects (#959)
Groups, paths, fills, strokes and operators in a shape layer's Contents show the
Video eye in the A/V column (a group's Transform doesn't). Clicking it runs
prop.setGroupEnabled, which the shape renderer already honours; layer-style
eyes keep layer.style.toggle. Row building and search results share eye_of.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 00:52:26 +07:00
tylerjenningsw 5f22e63e93 Merge remote-tracking branch 'origin/main' into enhance/batch-parent-matte 2026-10-29 13:29:22 -04:00