Commit Graph
898 Commits
Author SHA1 Message Date
Claude 6538fb175f Merge pull request #619 from MarekSpodBiedry/issue-546 2026-10-10 18:49:51 +00:00
Claude ea10c73294 Merge pull request #618 from MarekSpodBiedry/issue-547 2026-10-10 18:49:51 +00:00
Claude 485e691e52 Merge pull request #616 from MarekSpodBiedry/issue-599 2026-10-10 18:49:50 +00:00
FrederoxDevandClaude Opus 5.5 c8657bf214 UI: one After Effects-style colour picker with a hex field for every colour input
Every colour input opens one picker laid out like After Effects' Color
Picker: a square and slider for the channel chosen with H / S / B /
R / G / B, the new colour over the original, HSB and RGB fields, a hex
field (#RRGGBB, RRGGBB, #RGB) and OK / Cancel. Changes apply live;
Cancel, Escape and the original swatch restore the starting colour.

The 3D light dialog, Essential Graphics and Layer Styles passed sRGB
values to egui's color_edit_button_rgb(a), which reads them as linear,
so picked colours were stored darker (#808080 became #373737). They and
the other dialogs now use the shared sRGB colour button.

The picker and colour helpers live in color_picker.rs; widgets
re-exports them.

Tests: ui_color_hex.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:26:20 +01:00
Nigel Ihza Firdausy 1922e621c2 fix(ui): drop all selected Project items into compositions (#351)
Preserve Project multi-selection when dropping onto the Timeline or Composition viewer. Keep stack order and drop position, skip non-layer project items, and add pointer-drag regression coverage.
2026-10-11 00:58:35 +07:00
MarekSpodBiedry 068db1f36b Let pan and zoom work while 3D Camera Tracker points are shown (#505) 2026-10-10 19:31:51 +02:00
MarekSpodBiedry 0dc4ba3812 Reopen panels from the Window menu when the dock is empty (#529) 2026-10-10 19:28:41 +02:00
MarekSpodBiedry 4ea35a63a2 Fix recording a shortcut: the field no longer types the key too, and Cmd++ parses (#467) 2026-10-10 19:26:46 +02:00
MarekSpodBiedry ad0fc4da09 Locked viewer: re-convert pixels when the display profile or output simulation changes (#546) 2026-10-10 19:12:02 +02:00
MarekSpodBiedry d5f8fb54cb Viewer: passive Composition viewers apply the monitor color conversion (#547) 2026-10-10 19:11:00 +02:00
MarekSpodBiedry b28485cb87 Interface: probe Hangul so Korean text isn't drawn as boxes (#599) 2026-10-10 19:09:25 +02:00
Claude 362d299642 Fonts: No matching fonts goes through the interface catalog (#593 follow-up)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 16:30:10 +00:00
Claude 2500719969 UI: an agent's injected drag never warps the real cursor (#592 follow-up)
Control-channel pointer events (ui.drag) scrub numbers like a mouse but
turn off the edge wrap, so an agent never moves the user's cursor; the
TextBox case of the drag test goes (that plug-in isn't in-tree).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 16:30:09 +00:00
Claude 00364546eb Merge pull request #593 from kikikikier/community/type-in-font-search 2026-10-10 16:29:15 +00:00
Claude 5adf9db227 Merge pull request #592 from kikikikier/community/infinite-drag
# Conflicts:
#	crates/ui-egui/src/panels/fx_widgets.rs
2026-10-10 16:29:14 +00:00
Claude e2b547ae7d Merge pull request #584 from itrycodinganditsbad/fix-negative-rotation-drag 2026-10-10 16:29:01 +00: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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 15:15:11 +00:00
kikikikier 1c2bf2f157 Fix signed angle scrubbing across zero and monitor wraps 2026-10-10 17:26:29 +03:00
kikikikier abd44404f8 UI: add inline font family search in Character and Properties 2026-10-10 17:14:06 +03:00
kikikikier adbe4dff4e UI: support continuous numeric scrubbing across monitor edges 2026-10-10 17:14:06 +03: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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
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 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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiAJeFttZp83Fh7YuzAR5f
2026-10-10 12:53:09 +00:00
Claude 8c2b464a4d Merge pull request #582 from LloydNicholson/macos-project-documents 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 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 <noreply@anthropic.com>
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 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 790f57ef24 Merge pull request #442 from cdinhoo/codex/live-preview-updates
# Conflicts:
#	docs/architecture.md
2026-10-10 12:50:18 +00:00
Claude 0df89c84ec Merge pull request #579 from KattKnight/windows-test-fixes 2026-10-10 12:49:56 +00:00
Claude f6d130ac38 Merge pull request #512 from sanyamsingh001/fix/settings-info-return 2026-10-10 12:49:17 +00:00
lloydandClaude Opus 5.5 f041aa7782 macOS: projects open from Finder; .pcraft is PhotoCraft's again
The app bundle exported ai.storyteller.effectcraft.document with the
`.pcraft` extension, PhotoCraft's document format. Installing EffectCraft
took `.pcraft` over, and since EffectCraft declared no document types,
neither app was offered for PhotoCraft documents in Finder. EffectCraft's
own projects (.ecproj, .ecprojx) had no file type at all.

- Info.plist: the exported type now tags .ecproj and .ecprojx ("EffectCraft
  Project", conforming to public.data and public.content rather than
  public.image), and CFBundleDocumentTypes makes EffectCraft their owner.
- Finder double-click, Open With, Dock drops and `open -a EffectCraft
  x.ecproj` send a kAEOpenDocuments Apple event that winit 0.30 doesn't
  handle. Register it with the audited fmv-macos-events crate that
  PhotoCraft and PdfCraft use (it keeps the unsafe Objective-C interop out
  of this workspace). Opened paths go through the dropped-file handling, so
  a project opens after the unsaved-changes prompt and media is imported. A
  quit event closes the window.
- The event that launches the app arrives before the UI draws: the first
  frames skip the panels until the fonts are installed, which dropped it.
  The paths wait for EffectcraftApp::is_ready().

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 14:22:22 +02:00
Fabio LussiandClaude Opus 5.5 4e8a906fae Rotation: dragging the degrees field can go negative
The degrees field shows the remainder's size, so a drag was applied to the size and
the sign was re-applied afterwards; past zero it flipped back to positive. A drag now
moves the angle itself. Fixes #569

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 13:52:49 +02:00
sanyamsingh001andCodex b0cceb1723 G2: preserve shown panels when removing inactive tabs
Co-authored-by: Codex <codex@openai.com>
2026-10-10 21:51:18 +10:00
seldoms 8c838728b5 i18n: wrap hardcoded UI strings for Chinese localization
- Wrap remaining hardcoded UI labels and buttons with tr()/tl!() calls
- Add missing Simplified and Traditional Chinese translations
- Add entries to other language catalogs for consistency
2026-10-10 19:09:46 +08:00
KattandClaude Opus 5.5 a650e6c21d Tests: four failures on Windows (autosave paths, GPU viewer adapter, audio preview race)
- automation / cli autosave restart tests: the MCP instructions embed the
  auto-save state as JSON, so a Windows path's backslashes are escaped there;
  look for the JSON form of the path.
- ui_gpu: egui_kittest prefers a CPU adapter, which on Windows is WARP on
  DirectX 12, where FXC fails to compile the compositor's `pointwise` kernel
  ("compilation aborted unexpectedly"), so the viewer stayed on the CPU and
  the test failed before comparing anything. Build the harness on the adapter
  the headless compositor picked (falling back to egui_kittest's choice).
- ui_audio_scrub (#103 test): with a fixed 2 s comp, a machine with many
  render threads cached the whole preview before the first step, so the sound
  rightly started at once and no silent frame was counted (3 of 24 runs
  failed with 8 copies in parallel). Size the comp to four times the frames
  playback requests per step, so caching takes at least four steps (0 of 24).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:36:52 +05:30
KattandClaude Opus 5.5 e6d37c2fa6 Reload Footage shows new pixels and keeps Photoshop layers; Reload Footage Changed on Disk
Reload Footage (Cmd+Alt+L) updated an item's metadata but left the media
pool's decoded frames and the layer cache in place, so the old image kept
rendering until Edit > Purge. It also replaced the footage with a probe of
the merged document, so a Photoshop layer item lost its layer and its
Retain Layer Sizes bounds.

Reload now re-reads only what the file decides (size, a movie's duration,
streams and frame rate, codec, a data file's text), keeps the layer or
page and the interpretation, finds a Photoshop layer again by name, and
makes the media layer forget the file (FootageSource::forget, which also
drops the EXR aux-channel cache) and clears the layer cache.

Settings > Import > Reload Footage Changed on Disk (on by default): the
desktop app stamps footage files (size + modification time) on a worker
thread every two seconds and when the window comes back to the front, and
reloads what changed. Not an undo step and it doesn't modify the project;
a file still being written is retried on the next check.
footage.reloadChanged runs one check (CLI, MCP, agents).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 16:36:50 +05:30
Aavirash 603337a061 Viewer: a layer drag moves the picture while the button is down
Every pointer move replaces the comp's content identity, so the frame on
screen takes a new cache key at every step while its render is still in
flight; the viewer only ever showed an exact key, so the picture froze on
the last completed frame until the drag ended. While a drag or a property
scrub is running, show the newest frame of the same comp, frame, scale,
view and render options that is ready — a render behind, as After Effects
does — and go back to exact frames when it stops.
2026-10-10 12:13:55 +02:00
Aavirash 0d2264dbed Viewer: the shape tools show the tool's own shape while dragging
The drag preview was a 1 px axis-aligned rectangle for every shape tool,
which read as no preview at all against most comps. Draw the tool's own
path instead (rectangle, rounded rectangle, ellipse, polygon, star), from
the engine's own geometry, filled with the Tools bar's Fill and outlined
in its Stroke, with a caption saying where the shape lands — a mask on
the selected layer, into the selected shape layer, or a new shape layer.

The ghost and the released shape go through one normalisation, so the
drag shows exactly what it commits: Alt (Option) draws from the press
point and Shift squares the box, both live. The drag also starts at the
press point now, not where the 6 px drag threshold was crossed, so the
shape is drawn from where the button went down, as in After Effects.
2026-10-10 12:13:21 +02:00