Commit Graph
1145 Commits
Author SHA1 Message Date
Claude da06c42de1 Media: OpenEXR files with HTJ2K compression say it isn't supported (#482)
The exr crate reads HTJ2K (OpenEXR 3.4's High-Throughput JPEG 2000) headers
but can't decompress the pixels, and the image paths turned that into a
misleading "no non-deep rgb channels" (multi-layer files) or imported the
file and showed a transparent frame (single-layer files).

`exr_channels::unsupported_compression` reads the headers; import (probe)
and frame decoding fail with "<file>: OpenEXR HTJ2K compression isn't
supported yet: re-save the file with ZIP, PIZ or DWAA compression".
Decoding HTJ2K itself needs a pure-Rust JPEG 2000 Part 15 decoder and is
left for later.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 18:51:12 +00:00
Claude 34f2955585 Media: an audio file that fails to decode no longer stays silent for good (#324)
With the Conformed Audio folder on (the default), the conform thread wrote
whatever `decode_audio` returned, and that returned silence when the source
couldn't be opened or a read failed. The conformed file is found by the
source's path, size and date, so one failed decode (an MP3 the decoder
stumbled on once) kept the footage silent in previews and exports in every
later session, while a renamed copy played.

The conform path now decodes with `try_decode_audio`, which fails instead of
returning silence; a failed conform removes its temporary file, writes
nothing and isn't retried this session (reads go to the decoder). Playback
reads still fall back to silence. CONFORM_VERSION goes to 3 so the silent
files earlier builds wrote are ignored and conformed again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 18:51:07 +00:00
Claude 605b7c3a25 Scripting: scripts can't grant themselves file and network access (#590)
A running script reached `prefs.set` through `app.run` and could turn on
Settings > Scripting & Expressions > Allow Scripts to Write Files and Access
Network (or turn off Warn User When Executing Files), which the File, Socket
and system.callSystem gates then read: the permission the user withheld was
the script's to take.

Commands a script issues now go through `Session::execute_for_script`, which
marks the session as running for a script for the command and everything it
runs (engine.batch, ScriptUI callbacks, scheduled tasks). While it is,
`prefs.set` refuses any change that would leave the Application Scripting
settings different (compared on the resulting settings, so dotted keys,
whole-page objects and batches are all covered), and a script's
`prefs.reset` keeps them as the user set them. Command scripts read from a
file (File > Scripts > Run Script File... with .json/.jsonl) count as
scripts too. The UI, CLI, control channel and MCP still change them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 18:50:57 +00:00
BFlat 1446e27d85 Merge pull request #598 from storytold/claude/community-pr-review-lwtrlr
Land 49 community PRs, with follow-ups
2026-10-10 22:46:18 +07:00
Claude 5a8cd76b77 Lint the merged community PRs: no drop of a borrowing closure (#458), json only where drops import (#447)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 15:45:46 +00:00
Claude 616574439e Integrate community PRs: relink's params doc and menu rows, pt-BR in the language list, MCP docs, test fixes
- file.relinkFootage (#461): close the params doc so checked execution
  (MCP, control channel) rejects unknown keys; translate its menu entry.
- general.language lists Português (Brasil) (#217).
- docs/agents.md: set_property / add_keyframe take timeBase (#522).
- #299's MCP test no longer sends get_property a value.
- The Automatically Reload Footage sequence test uses PNG frames.
- h264_frames_at_reduced_sizes (#507): the bar depends on the fixture's
  encoder; 50 dB with ffmpeg 6.1's x264.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 15:15:11 +00:00
Claude 42ad4edaee MCP: set_property and add_keyframe take timeBase too (#522 follow-up)
Issue #257 names these tools: an agent can now give comp times on an
offset layer through MCP, as it can through prop.addKey and keys.select.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:59:03 +00:00
Claude 195b862036 Text: layer.setText's schema accepts discretionaryLigatures and ss01–ss20 under checked execution (#521 follow-up)
The params parser reads ':' as the start of a value, so 'OpenType?:
discretionaryLigatures?' declared a bogus OpenType key and hid
discretionaryLigatures, and 'ss01?…ss20?' declared only ss01.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:58:15 +00:00
Claude 9308d8e0f0 Merge pull request #521 from mjohnson7cd/fix-layer-settext-schema-520 2026-10-10 12:57:32 +00:00
Claude 816fc855d8 Merge pull request #217 from RicSchonfelder/i18n-pt-br
Ported onto the current language plumbing next to Spanish (catalog codes,
Match System for pt-* locales, native menu Services label, docs, tests);
the language list and settings validation stay the shared LANGUAGES table.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:57:01 +00:00
Claude b8d23801ff Merge pull request #460 from llopjulen/i18n/es
Ported onto the current language plumbing next to Ukrainian (catalog
codes, Match System, native menu Services label, docs, tests), and the
stale Ease Presets row (a ScriptUI panel since #404) dropped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:55:58 +00:00
Claude 00e9e37c0a UI: the drop hint and drop errors go through the interface catalog; the Wayland notice points to the README (#447 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:55:10 +00:00
Claude 63acbb1eb0 Merge pull request #447 from David-T-Campos/fix/footage-drag-drop
# Conflicts:
#	apps/effectcraft/src/main.rs
2026-10-10 12:54:44 +00:00
Claude ce743af717 Appearance: zbus follows eframe's version instead of an exact pin (#519 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:54:31 +00:00
Claude 8f43e69cf1 i18n: one Red/Green/Blue row per language, Title/Action Safe keeps After Effects' label, no process spawn to read the locale (#490, #571 follow-up)
- #571's Red/Green/Blue rows duplicated #490's; keep 红色/绿色/蓝色 and give
  Traditional Chinese 紅色/綠色/藍色 instead of the English copies.
- The viewer's grid menu says Title/Action Safe again (as in After
  Effects and the View menu), with its own catalog rows.
- Half is 二分之一, as in After Effects' Simplified Chinese resolution menu.
- Drop the macOS 'defaults read' fallback for a C locale: sys-locale never
  reports one on Apple, so it never ran.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:54:24 +00:00
Claude c7b02cc9a3 Merge pull request #472 from dmatviichuk/i18n/ukrainian-panel-followup
# Conflicts:
#	ROADMAP.md
#	crates/ui-egui/src/i18n/ui.rs
#	docs/preferences.md
2026-10-10 12:53:37 +00:00
Claude e87f8a8d6d Merge pull request #469 from haranishi/i18n-japanese-panels 2026-10-10 12:53:19 +00:00
Claude d8c1711f52 Merge pull request #519 from luniiya/feat/system-appearance 2026-10-10 12:53:19 +00:00
Claude 5de747735e Merge pull request #571 from seldoms/i18n/chinese-translations 2026-10-10 12:53:18 +00:00
Claude 5b7c314317 Merge pull request #490 from cjcwwww/i18n/panel-helper-strings 2026-10-10 12:53:18 +00:00
Claude 57bd68c86e Import: Automatically Reload Footage is Off / Non-Sequence Footage / All Footage, as in After Effects; a reload never shows disk-cached frames from before (#578 follow-up)
Image sequences are watched only with All Footage (the default,
Non-Sequence Footage, leaves them alone). Purge also forgets the viewer's
per-revision disk keys, which hash footage files' size and time, so a
file reloaded without a new revision is keyed again.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:53:09 +00:00
Claude c5af482bce QA: frame scores refuse NaN samples and mismatched buffers (#427 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:53:09 +00:00
Claude 4578f9090c Packaging: pin the MSI test's checkout; the MSI comment says what it installs (#466 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:51:38 +00:00
Claude 6039e86a04 Merge pull request #466 from tylerjenningsw/enhance/windows-installer-folder
# Conflicts:
#	contributors/people.toml
2026-10-10 12:51:31 +00:00
Claude 22345370ac Merge pull request #517 from sawizzle/docs/installed-release-mcp 2026-10-10 12:51:16 +00:00
Claude 8c2b464a4d Merge pull request #582 from LloydNicholson/macos-project-documents 2026-10-10 12:51:16 +00:00
Claude 92332897af Merge pull request #516 from dylanmtaylor/chore/update-actions 2026-10-10 12:51:16 +00:00
Claude a5feb441e9 Merge pull request #499 from tylerjenningsw/enhance/project-shift-delete 2026-10-10 12:51:16 +00:00
Claude 85d71011ac Merge pull request #458 from storybored379/fix/mcp-review-followups 2026-10-10 12:51:16 +00:00
Claude 681919fe92 Merge pull request #478 from mjohnson7cd/fix-webm-bitrate-440 2026-10-10 12:51:16 +00:00
Claude adeccc02e0 Merge pull request #479 from MarekSpodBiedry/issue-475
# Conflicts:
#	crates/script/src/tests.rs
2026-10-10 12:51:16 +00:00
Claude b0277f898f Merge pull request #480 from MarekSpodBiedry/issue-476 2026-10-10 12:51:15 +00:00
Claude d020715b1e Merge pull request #487 from MarekSpodBiedry/issue-481 2026-10-10 12:51:15 +00:00
Claude 2013ec318a Merge pull request #557 from haranishi/fix/pdf-inflate-limit 2026-10-10 12:51:15 +00:00
Claude 79003f7598 Merge pull request #575 from haranishi/fix/pdf-sampled-function-size 2026-10-10 12:51:15 +00:00
Claude 072c33ecf0 Merge pull request #558 from haranishi/fix/uninstall-script-name 2026-10-10 12:51:15 +00:00
Claude 0ce5063d9f Viewer: Ctrl/Cmd draws a shape from its centre, as in After Effects (#443 follow-up)
Also keeps #442's newest-completed-revision lookup for the live drag, so
Frames has one way to pick the frame shown while an edit renders.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:51:15 +00:00
Claude b7b47a0e10 Merge pull request #443 from Aavirash/fix/shape-drag-preview
# Conflicts:
#	crates/ui-egui/src/frames.rs
#	crates/ui-egui/src/panels/viewer.rs
2026-10-10 12:50:43 +00:00
Claude 5e28ecd53b Merge pull request #578 from KattKnight/footage-reload 2026-10-10 12:50:18 +00:00
Claude 37cff1f547 Merge pull request #427 from vbasky/pr/measured-ae-fidelity 2026-10-10 12:50:18 +00:00
Claude 91d37dd449 Merge pull request #423 from cdinhoo/codex/effect-input-control-fixes 2026-10-10 12:50:18 +00:00
Claude b5c6eb7d5e Merge pull request #461 from vbasky/feature/recursive-footage-relink 2026-10-10 12:50:18 +00:00
Claude 82d95d4c72 Merge pull request #299 from DWAA1660/fix/property-group-diagnostic-263 2026-10-10 12:50:18 +00:00
Claude 790f57ef24 Merge pull request #442 from cdinhoo/codex/live-preview-updates
# Conflicts:
#	docs/architecture.md
2026-10-10 12:50:18 +00:00
Claude ab09f219d4 Import: Purge frees decoded GIFs; a browser tab keeps less of one GIF (#567 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:50:12 +00:00
Claude e625ef3bef Merge pull request #567 from Limestudio90/import-animated-gifs
# Conflicts:
#	crates/media/src/pool.rs
2026-10-10 12:50:00 +00:00
Claude 9093fd1804 Merge pull request #507 from daijro/perf/footage-playback 2026-10-10 12:49:56 +00:00
Claude 0df89c84ec Merge pull request #579 from KattKnight/windows-test-fixes 2026-10-10 12:49:56 +00:00
Claude a12242c806 Format the merged community fixes (#561-#566 follow-up)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:49:52 +00:00
Claude 20ac6189bc Scripting: Property.selected=false deselects mask and effect groups too (#566 follow-up)
prop.deselect resolved its uid through prop_ref, which only finds leaf
properties, so mask.selected=false threw. Resolve it as prop.select does.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:49:52 +00:00