Commit Graph
3793 Commits
Author SHA1 Message Date
aiongg 1c7fbfd503 Timeline: each open comp is a tab in the group's tab row, with an overflow menu
The comp tabs follow the panel tabs and are drawn like them (craft-ui's
tab widget and the dock style's font and colours). The panel tabs keep
their full width; comps without room are listed in a » menu at the end
of the row, and picking one shows it. The shown comp's tab always stays
in the row, and the comp tabs stay while another panel of the group is
shown.
2026-10-26 02:23:51 +00:00
aiongg 7c776d0b60 Pin craft-libs crates to main 1e6f1278 2026-10-26 02:13:50 +00:00
aiongg 6d063fc9de Merge upstream main into craft-ui-docking
craft-libs crates move to one rev, 37c907d2 (contains main's craft-update and craft-docpath pins).
Docs: native floating windows are Windows, macOS and X11 only; the UI estimate drops the
multi-monitor panel work that is done.
2026-10-26 01:59:50 +00:00
dotCooCoo f4c9ba5c01 Font menu: a name the interface fonts cannot draw shows in English
With Show Font Names in English off (the default), the Character and
Properties font menus draw each family's own-language name in the
interface font. On Windows, Microsoft YaHei's Simplified Chinese family
name is 微软雅黑, and the Han face of an English interface can lack 软.
The app drew a missing-glyph box in its place, and the font search
tests in the effectcraft-ui-egui it binary panicked with "No glyph for
"软"".

A row now draws its own-language name when the interface fonts have a
glyph for each character, and its English family name otherwise. The
row's hover text follows the same rule. Search still matches both names.
2026-10-25 17:27:21 -07:00
vangel76andClaude Sonnet 5.5 133905ee7e Merge upstream/main into feat-gap25-a11y-audit
Resolve conflicts for the egui 0.37 migration: Id::unique ids, kept the
accessibility names and roles; stop giving unnamed check boxes, twirls and
toggles a role so the kittest accessibility check passes; refresh the audit
baseline.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:37:52 +01:00
Dylan M. Taylor f31a6b0aef sonar: optional chaining (S6582) and for-of loops (S4138) in engine-owned JS (#2273)
ExtendScript .jsx files are left alone (ES3, no ?. or for-of).
2026-10-25 19:37:04 -04:00
vangel76andClaude Sonnet 5.5 068cf04038 vp9enc: probability delta table, linear bool-encoder carry, clamp oversized frames (part of #2416)
- delta_for no longer searches 0..255 for every probability: a 256x256 table is
  built once.
- BoolEncoder remembers where the trailing run of 0xFF bytes starts, so a carry
  no longer rescans the output (the cost was quadratic over long runs).
- Vp9Encoder::new clamps width and height to 65536; larger sizes used to wrap
  in the 16-bit frame size fields and write a corrupt stream.

The output is byte-identical for all sizes up to 65536.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:35:21 +01:00
vangel76andClaude Sonnet 5.5 3ae34e6b2e vp9enc: fixed-size SAD kernels and a revisit cache in the motion search (#2413)
The 8x8 and 16x16 SAD uses per-column 16-bit sums, and the cost of a motion
vector (a pure function of the vector) is remembered for the vectors the
search tests again. The output is byte-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:33:55 +01:00
vangel76andClaude Sonnet 5.5 f3fcea8297 vp9enc: forward transform accumulates all outputs together (#2412)
The 16 outputs of the 4x4 forward transform are accumulated together in the
same order as before (no serial add chain per output) and the quantiser
truncates instead of calling floor on a non-negative value. The output is
byte-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:33:55 +01:00
vangel76andClaude Sonnet 5.5 ec3df905b5 vp9enc: loop filter in 8-lane groups (#2414)
The encoder's loop filter runs three trial passes per frame with a scalar
filter. Filter the eight positions along an edge together with 16-bit lanes
(ported from the decoder's loop filter); the scalar filter stays as the test
oracle and a new test compares both on 20000 random cases. The output is
byte-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:33:55 +01:00
vangel76andClaude Sonnet 5.5 3e6d40e5bf vp9enc: vectorised phase-plane filters and a predict fast path (part of #2411)
The 16 quarter-sample phase planes are built with 16-bit lane filters (the same
narrowing trick as the decoder), edge replication copies rows instead of
clamping every sample, and mc::predict reads straight from the reference for
blocks away from the edges. The output is byte-identical.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 00:32:49 +01:00
Dylan M. Taylor 966719d449 Merge pull request #2443 from WaldemarLehner/ui/resizehorizontal-cursor-on-workarea
fix(ui-egui): make hover over workarea selector set cursor to `ResizeHorizontal`
2026-10-25 19:25:35 -04:00
dotCooCoo 8ebacda419 Shapes: Wiggle Paths has Spatial Phase, which slides its wiggle along the path
Wiggle Paths had Size, Detail, Points, Wiggles/Second, Correlation,
Temporal Phase and Random Seed, but no Spatial Phase, which After
Effects lists among its properties (ADBE Vector Spatial Phase). Spatial
Phase now moves each point's own displacement along its subpath: 360
degrees is once around, and a fraction of a point is interpolated
between neighbors. At 0 degrees a path draws as before.

A project saved without the property gets it at 0 degrees, after
Temporal Phase, when it opens. Scripts can read and set every Wiggle
Paths property by its match name.
2026-10-25 16:06:28 -07:00
vangel76 9a874705ee Merge remote-tracking branch 'upstream/main' into miscconf-2348
# Conflicts:
#	crates/effects/src/camera_tracker.rs
#	crates/effects/src/warp_stab.rs
2026-10-26 00:01:20 +01:00
dotCooCoo 55e957a803 Scripts: a key changed to another key updates the native menu
The native menu's state key hashed only the number of shortcut
bindings, so changing a binding from one key to another left the
number the same and could keep the old accelerator on the item. The
key now hashes each binding and its keys.
2026-10-25 15:51:08 -07:00
Waldemar Lehner 5c875cb240 fix(ui-egui): make hover over workarea selector set cursor to ResizeHorizontal 2026-10-25 23:43:02 +01:00
skylar c16a628849 chore(deps): refresh safe dependency bumps
serde_json 1.0.154, proptest 1.12.0, objc2 0.6.5, winresource 0.1.34, pollster 1.0.1, miniz_oxide 0.9.1, linesweeper 0.5.0, lz4_flex 0.14.0, muda 0.21.2.
2026-10-25 16:36:21 -06:00
skylartaylor f842a58a4f M14: clarify text selection and footage playback contracts 2026-10-25 22:25:40 +01:00
Dylan M. Taylor e821feeec4 Merge pull request #2274 from storytold/sonar/rust-s4325-s1612
sonar: method paths instead of closures (rust:S1612)
2026-10-25 16:36:06 -04:00
aiongg 2d27fec81d Merge upstream main into craft-ui-docking
# Conflicts:
#	Cargo.toml
#	crates/ui-egui/Cargo.toml
2026-10-25 20:00:11 +00:00
Dylan M. Taylor 632162c9a7 build: pin craft-update to craft-libs main (db19c37); localize the update status messages
Picks up the fix that keeps the close request pending while the app holds unsaved work, the executable-name check in the Windows update helper, and the zip 9 / dirs-free build.

Part of tracking issue storytold/craft-libs#319
2026-10-25 15:34:22 -04:00
skylar taylor-barrick 47bf08a15e M-egui037: document migration behavior and guard atomic batch rollback 2026-10-25 19:56:09 +01:00
tylerjenningsw 9b57090b00 Merge main into enhance/batch-parent-matte 2026-10-25 14:54:57 -04:00
aiongg 54a7435f2b Docking: a native floating window publishes its IME descriptor after its editor or its last body
finish_ime after a body drawn before the Viewer cleared the preedit and
made the Viewer's publication a new context, so a window with another
group before the Viewer interrupted the composition every pass. Each
native window now counts its bodies from the layout and publishes once
its editor has recorded its geometry, or after its last body. A window
that drew fewer bodies than counted publishes after every body in its
next pass.
2026-10-25 18:54:11 +00:00
Vikram Bhaskaran 75a3258b29 Merge origin/main into fix/1089-fedora-fonts.
Keep the font rescan poll on the logic tick after main moved frame work out of App::logic.
2026-10-26 05:46:16 +11:00
tylerjenningsw 0a2842be85 Merge main into fix/947-preview-opening-audio 2026-10-25 14:26:31 -04:00
tylerjenningsw 653a63c0b1 Merge main into enhance/pickwhip-index-refs 2026-10-25 14:26:30 -04:00
tylerjenningsw 40a9173f17 Merge main into fix/expression-value-color 2026-10-25 14:26:30 -04:00
tylerjenningsw 5808550c5a Merge main into fix/particle-birth-history-ps2-mercury 2026-10-25 14:26:29 -04:00
tylerjenningsw 20d8501ea2 Merge main into fix/particle-birth-history 2026-10-25 14:26:29 -04:00
tylerjenningsw a2f3ac41b1 Merge main into enhance/avi-import 2026-10-25 14:26:28 -04:00
Dylan M. Taylor 1be30a1607 refactor(updates): drive the flow with craft-update's Updater
The check at start is opt-in for the desktop app, a successful update closes through the app's own close path, and no update starts over unsaved work.
2026-10-25 14:23:52 -04:00
aiongg 58f4a4e36a Merge upstream main into craft-ui-docking 2026-10-25 18:16:57 +00:00
tylerjenningsw 42b44c460a Merge main into enhance/filmcraft-avi-backend 2026-10-25 14:13:46 -04:00
Davit MatchakhelidzeandClaude Opus 5.5 c6376249dd i18n(ka): shorter wording for labels that were cut off
Decided in the native-speaker review of the screens (all-t01).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF
2026-10-25 22:13:46 +04:00
tylerjenningsw 86907e9a3a Merge main into enhance/keyframe-text-clipboard 2026-10-25 14:09:38 -04:00
aiongg 26dd2ab814 Merge #2367 (egui 0.37) into craft-ui-docking
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	apps/effectcraft/src/main.rs
#	crates/ui-egui/src/control.rs
#	crates/ui-egui/src/dock.rs
#	crates/ui-egui/src/dock_ui.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/tests/it/shared_docking_ui.rs
#	crates/ui-egui/tests/it/ui_dock_resize.rs
#	crates/ui-egui/tests/it/ui_panel_windows.rs
#	crates/ui-egui/tests/it/ui_workspace_focus.rs
2026-10-25 18:06:51 +00:00
yanhenrique-dev 0337d5d815 i18n: complete the Brazilian Portuguese (pt-br) panel catalog
278 new rows (417 → 695), the Chinese catalogs' source list, keyed by the English
source string: panels, dialogs, tooltips and the Settings pages stop falling back
to English for every string the zh-hans catalog covers, including the six keys
the batch merges added on top. Terminology follows After Effects' Brazilian
Portuguese conventions; brand names stay English.

AI-assisted translation (OpenCode agents, GLM); not yet native-speaker proofread.
2026-10-25 15:00:23 -03:00
Dylan M. Taylor 6f813b74e9 refactor(updates): drive the flow with craft-update's Updater
Startup check is opt-in for the desktop app, the Windows update helper is dispatched before argument parsing, and a successful update closes through the app's own close path.
2026-10-25 13:58:39 -04:00
Dylan M. Taylor 89a0313ab0 fix(updates): report self-update results to the prompt and finish through the app's close path
Keeps the worker's failure visible instead of leaving the prompt installing, repaints while a check runs, and no longer calls process::exit past the unsaved-work prompt.
2026-10-25 13:58:38 -04:00
Dylan M. Taylor adcc3b916b feat: startup update prompt modal and direct self-updating
Integrate `craft-update` pinned to storytold/craft-libs fe61243 to check for
updates on startup, display the standard suite update modal with changelog notes,
and support one-click in-app updating and restart.

Ref: storytold/craft-libs#319
2026-10-25 13:58:38 -04:00
zitann2020andDeepSeek V4.1 Flash 6938cf42da i18n: say in the test that A stands in for the row's baseline
epaint exposes no baseline, but a capital without a descender has its ink bottom on
it, so the Latin half of the pair is load-bearing. Suggested by FeiLiuEM in #1309.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-26 02:39:01 +09:00
zitann2020andDeepSeek V4.1 Flash a50a182a5f i18n: the baseline test reads the sign, not a fixed 1.5 pt
Measured on a second machine (Noto Sans CJK JP), the ink-bottom gap after the
correction is 1.125 / 1.9375 / 1.71875 pt at 12 / 15 / 18 pt, so the old bound
failed at 15 and 18 where the interface is right. Without the correction the kana
sits 3-5 pt above the Latin ink, so the sign separates the two and the magnitude
only has to allow the face's own kana overshoot.

Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-26 02:39:01 +09:00
zitann2020andDeepSeek V4.1 Flash 153fca19bc i18n: the CJK fallback sits on the Latin baseline (#1309)
Co-Authored-By: DeepSeek V4.1 Flash <noreply@deepseek.com>
2026-10-26 02:39:01 +09:00
Dylan M. Taylor e88feff569 engine.batch: drop the events a rolled-back atomic batch queued
A failing atomic batch restored the project, history and state but left the
events its steps had already published, so the UI could open the comp the
rollback had just undone. Snapshot the event count with the other snapshots and
truncate before the rollback bumps.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-10-25 13:14:28 -04:00
aiongg e5bb52cc35 craft-libs: pin every crate to 5bbe9f62 (craft-libs main with every shared docking fix) 2026-10-25 16:59:58 +00:00
Davit MatchakhelidzeandClaude Opus 5.5 ab7b3588ba i18n(ka): shorter Open Demo Project tile label, so it isn't clipped
The Home quick-start tile clips its label to the tile; "სადემონსტრაციო
პროექტის გახსნა" was cut off after "პროექტის". "დემო-პროექტის გახსნა"
fits, like the Import Footage tile; the File menu item (file.openDemoProject)
keeps the full wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 18:41:41 +04:00
Davit MatchakhelidzeandClaude Opus 5.5 939ead1f74 i18n(ka): shorter Discord button label, so it fits the Home sidebar button
"შემოუერთდით ArtCraft-ის Discord-ს" ran past the right edge of the
fixed-width Discord button at the foot of the Home sidebar (v0.17.0,
macOS). "შემოგვიერთდით Discord-ზე" ("Join us on Discord") fits; the Help
menu item keeps its full wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 18:31:59 +04:00
Kushagra Kumar 59b564326e fix(engine): default transparent to true in queue_frame 2026-10-25 19:51:06 +05:30
aiongg 6ffb7778e9 craft-libs: pin every crate to d24e4bcc (Mac round 3: docking fixes, drop previews, native floats stay visible while inactive) 2026-10-25 14:02:31 +00:00