20 Commits
Author SHA1 Message Date
FredAppsandClaude Opus 5.5 e284758683 CI: run the gate on macOS on pushes to main (#3177)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 00:03:41 +01:00
FredAppsandClaude Opus 5.5 4d21269adb Display pass tests: a virtual GPU gets the software tolerance (#3182)
On a hosted macOS runner the_shader_is_the_reference found 168 of 16384
bytes one step off, just over the 1 % a real GPU is allowed.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:26:58 +01:00
FredAppsandClaude Opus 5.5 4465c0ea10 EXR golden test: compare samples near, not bit for bit (#3181)
* EXR golden test: hash samples near, not bit for bit (temporary: print the new goldens)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* EXR golden test: the new near hashes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:23:50 +01:00
FredAppsandClaude Opus 5.5 5047d8b5e7 Posterize on the GPU: divide by the levels exactly, as the CPU does (#3179)
Native division isn't correctly rounded on real GPUs, so
posterize_matches_the_cpu_on_every_8bpc_pair failed on NVIDIA and Apple
GPUs while passing on the software renderer hosted CI uses.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 20:04:21 +01:00
FredAppsandClaude Opus 5.5 fb62b9d7e3 Project panel: take the Name column's fit out of show() (#3173)
show() went one over the cognitive complexity limit once #3094 landed on
current main, which failed clippy on every later commit.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:27:42 +01:00
FredApps 8be83ab559 Merge pull request #3162 from storytold/house-rules
Copy the shared house rules into AGENTS.md
2026-11-06 14:59:41 +01:00
FredApps 357c72ea33 Copy the shared house rules into AGENTS.md.
The blocks come from craft-contrib at dde09ea31e2e457f5b4653a6e76f7cdf55944bdf. CLAUDE.md imports AGENTS.md. The house-rules workflow checks the copy.
2026-11-06 11:50:01 +01:00
FredApps 3102b6e632 Merge pull request #2915 from vangel76/perf/exr-output-options
Render Queue OpenEXR: choose compression and half or 32-bit float
2026-11-06 02:26:23 +01:00
FredApps e2010893d2 Merge pull request #3130 from vangel76/cryptomatte-matte-only
Cryptomatte: Matte Only puts the matte in RGB with alpha 1, as After Effects does
2026-11-06 02:26:11 +01:00
FredApps 3768ff40a3 Merge pull request #3134 from vangel76/aep-tdsb3-values
.aep import: read effect values stored as default-state records
2026-11-06 00:20:44 +01:00
FredApps d1e6393bce Merge pull request #3133 from vangel76/fx-hdr-compression
HDR Highlight Compression: match After Effects' compression curve
2026-11-06 00:17:21 +01:00
FredApps 8b63d4308c Merge pull request #2916 from vangel76/fix/exr-scene-linear-output
EXR export: no compand / tone mapping, and the output space's own curve (#2913)
2026-11-06 00:12:32 +01:00
FredApps 39af86e9f4 Merge pull request #2929 from vangel76/perf/aux-footage-hint-474
perf(media): tell the media pool which EXR footage effects read (#474)
2026-11-06 00:12:06 +01:00
FredApps 35ce9b2694 Merge pull request #2920 from vangel76/perf/exr-decode-cache-474
Multi-layer EXR: one decode per frame shared by the picture and EXtractoR / Cryptomatte, picture-only decode for footage alone (#474)
2026-11-06 00:10:05 +01:00
FredApps b2eb3f7877 Merge pull request #3091 from ZIDAN44/fix/1826-marker-bin-double-click
Timeline: a double-click on the composition marker bin adds a marker at the current time (#1826)
2026-11-05 15:13:25 +01:00
FredAppsandClaude Opus 5.5 bc3b074ad9 About: credits column widths come from a tested fit_widths (#3039)
* About: credits tables with resizable columns that fit without side-scrolling

Contributors and Models were egui Grids inside a two-way scroll area, so the
table opened wider than the dialog and scrolled sideways, and Company and
Model sat almost touching. Both are now egui_extras tables: each column
opens at its header and widest cell, the spare width goes to the text
columns (Name; Company and Model), and every column edge can be dragged.
Widening a column grows the table like a spreadsheet, and only then does it
scroll sideways; the header stays put while the rows scroll. Counts and
dates are right-aligned and every cell is vertically centred.

The sorted column stays highlighted, with its direction on the toolbar's
arrow button, so headers no longer reserve room for an arrow. The About
dialog is 820 points wide (modals still shrink to the window) so every
column fits at its natural width. egui_extras comes from the pinned egui
fork without default features; it adds enum-map.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* About: credits column widths come from a tested fit_widths

The opening widths of the credits tables are a pure function now, with unit
tests that a fitted table fills its room exactly (no side-scrolling, no
gap), that spare width goes to the growing columns, and that too little room
shrinks only those.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Let every credits column be dragged, and refit changed tables

The last column was egui's remainder column, which has no drag handle, so
it could only be resized from the edge before it. It is now an ordinary
column with its own handle.

A table keeps its column widths, so switching to a longer name left the
Name column at its old width and clipped the text. The table now goes
back to the opening fit whenever that fit changes: a longer widest cell
or a resized window. Dragged widths are dropped at that point.

fit_widths could overflow the room when one column hit the minimum,
because the other columns did not take up its share. Columns now give
way in proportion to their width above the minimum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Refit credits tables on what they measure, not the fitted widths

Comparing the fitted widths missed the case it was meant for. Name is the
only growing column, so a longer name takes its extra width from the
spare room and the fit comes out the same: a dragged Name width stayed,
clipping the longer name.

It could also drop dragged widths by accident. The fit comes from the
available width inside the scroll area, which scrolling can nudge, so
scrolling a widened table could reset it.

The table now compares the natural widths and the clip rect's width,
which scrolling does not move.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 04:33:12 +01:00
FredApps a646bdcc2e Merge pull request #1598 from danielmigueltejedor/fix/gnome-window-decorations
Restore GNOME Wayland window controls without bundled fonts
2026-11-02 19:42:57 +01:00
FredApps f2aeff7e17 Merge current main into fix/gnome-window-decorations 2026-11-02 19:10:38 +01:00
79f6957601 ci(xtask): run the GPU tests and i18n report from the test build (#2767)
`cargo test -p effectcraft-gpu` and `cargo test -p effectcraft-ui-egui` resolve features for
one package, so after the workspace nextest run they recompiled for about 2 minutes and
1 minute 15 seconds. Both now run the lib test binaries the workspace build produced, found
with `cargo test --no-run` and the same selection. The GPU tests still run in one libtest process.

Co-authored-by: FredApps <FredApps@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 01:38:57 +01:00
FredApps b0acbbe121 CLI: regression tests for render --progress (#1778) and template media values (#1787)
- render --progress with a piped stderr writes well-formed
  `progress <done> <total> <elapsed> <left|->` lines, one per change, and
  the same render without the flag writes none.
- A template's Media Replacement control takes {"path"|"file"|"media": …},
  is found by name ignoring case, and a path that cannot be imported fails
  with an error naming the control and the path.
2026-10-18 16:46:06 +02:00