Commit Graph
3365 Commits
Author SHA1 Message Date
dotCooCoo e04ec3da1a Merge #1762: Fix #341: on macOS, a quit goes through terminate:
# Conflicts:
#	Cargo.toml
#	crates/ui-egui/src/lib.rs
2026-10-25 21:35:15 -07:00
NetterSilverandClaude Haiku 5.5 5d2d28a953 Keep rgb_to_hsl saturation finite for over-range colours
Found while testing crates/color/src/lib.rs:100 (rgb_to_hsl)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 05:16:56 +01:00
NetterSilverandClaude Haiku 5.5 c734af6042 Require hex digits in glTF uri_decode percent escapes
Found while testing crates/model/src/gltf.rs:83-96 (uri_decode)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 05:01:39 +01:00
aiongg 2961258879 Merge pull request #2458 from aiongg/comp-tabs
Timeline: each open comp is a tab in the group's tab row, with an overflow menu
2026-10-25 23:42:59 -04:00
heojunfoandClaude Opus 5.5 f589809b59 Classic 3D Shadow Diffusion blurs instead of stamping copies (#2444)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 12:27:44 +09:00
dotCooCoo 981b333634 Merge #2453: Font menu: a name the interface fonts cannot draw shows in English 2026-10-25 20:17:15 -07:00
dotCooCoo f23272f725 Merge #2352: Proxies: a composition proxy draws with Separate Fields, Invert Alpha, linear light and Frame Blending 2026-10-25 20:17:15 -07:00
dotCooCoo 4dd93bf065 Merge #2336: Animation presets: effects saved by an earlier version are upgraded on apply, as in a project 2026-10-25 20:17:14 -07:00
dotCooCoo b8f90cb9e5 Merge #2309: Interpret Footage: the params docs list every key the commands read 2026-10-25 20:17:13 -07:00
dotCooCoo d6d7104382 Merge #2283: Advanced 3D: shadow jitter blends across its lattice cell, so GPU penumbrae match the CPU 2026-10-25 20:17:12 -07:00
aiongg d58f1570c7 Merge pull request #2459 from aiongg/docking-text-keys
Edit menu keys edit a focused text field, docked and in panel windows
2026-10-25 23:14:53 -04:00
aiongg 5a16de0948 Pin craft-libs crates to main 512b5435 2026-10-26 03:14:07 +00:00
aiongg 99e882f4fb Merge remote-tracking branch 'upstream/main' into comp-tabs 2026-10-26 03:13:59 +00:00
aiongg 0eefbc6803 Merge pull request #2432 from aiongg/craft-ui-docking
Panels: move onto craft-ui's shared docking
2026-10-25 23:13:40 -04:00
dotCooCoo 372af0f21e Shapes: upgrading a saved project walks nested shape groups without recursion
upgrade_shape_contents now visits nested groups with a work list, so a
project with very deeply nested shape groups does not run out of stack
while Wiggle Paths gains Spatial Phase. The new test nests a Wiggle
Paths 100,000 groups deep and upgrades it on a 2 MiB stack.
2026-10-25 20:13:34 -07:00
aiongg fce4a88c92 Timeline: comp tabs draw through craft-ui's extra-tabs hook
Pin craft-libs crates to 3723e32a, which adds the group extra-tabs hook.
The comp tabs follow the panel tabs directly, with no drag bar between
them, and the group header holds only the lock and the panel menu.
2026-10-26 02:44:56 +00:00
aiongg ec32863c26 Merge branch 'craft-ui-docking' into docking-text-keys 2026-10-26 02:30:01 +00:00
aiongg 917c44cd26 Edit menu keys edit a focused text field, docked and in panel windows
The macOS menu bar takes Cmd+C, Cmd+X, Cmd+V, Cmd+A, Cmd+Z and Shift+Cmd+Z
before any window sees them. The menu only checked the main window's
keyboard focus, so with a text field focused in a floating panel's own OS
window those keys ran Copy, Paste or Undo on the project. The menu now asks
craft-ui which window is typing and sends the field its keys there (the
window fetches the clipboard text for Paste), and keeps the Edit items a
field takes enabled while one has the keyboard: Paste followed the project
clipboard and was greyed out with nothing copied there.
2026-10-26 02:29:04 +00:00
aiongg ca0ff9e9dd Merge branch 'craft-ui-docking' into comp-tabs 2026-10-26 02:26:24 +00:00
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
Dylan M. Taylor 938289fa9d packaging(linux): name the repeated sha256 check (S1192) (#2456)
Route the four identical sha256sum checks through verify_sha256.
2026-10-25 21:56:45 -04: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
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
Dylan M. Taylor 8395da0fd6 Merge pull request #2441 from storytold/chore/deps-safe-refresh
chore(deps): safe dependency refresh
2026-10-25 19:19:03 -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
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
Dylan M. Taylor f35634a4ec build: pin craft-update to craft-libs main (495e597) (#2439)
Picks up the startup prompt without the glyphs a font may lack (storytold/craft-libs#343, #344): the close mark is painted and the version pill is ASCII, so apps that panic on a missing glyph no longer take the prompt down.

Part of tracking issue storytold/craft-libs#319
2026-10-25 17:55:38 -04:00
Dylan M. TaylorandCodebuff 0f7dd6f992 build: pin craft-update to craft-libs main (495e597) (#2438)
Picks up the update prompt fix that draws its close mark and version pill
without glyphs a font may lack, so the prompt no longer takes the app down
when a bundled face has no ✕ or →.

Part of tracking issue storytold/craft-libs#319

🤖 Generated with Codebuff

Co-authored-by: Codebuff <noreply@codebuff.com>
2026-10-25 17:37:19 -04: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
skylartaylor c3cf98daed egui037: preserve release version in migration regression follow-up 2026-10-25 21:33:28 +01: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 dbe46d3ff8 Merge pull request #2435 from dylanmtaylor/chore/craft-update-pin
build: pin craft-update to craft-libs main (db19c37)
2026-10-25 15:34:53 -04: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
Dylan M. Taylor a0ea5f5ab1 Merge pull request #2420 from dylanmtaylor/feat/startup-update-prompt
feat: startup update prompt modal and direct self-updating
2026-10-25 15:01:58 -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
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