Commit Graph
2017 Commits
Author SHA1 Message Date
Claude f4b1bee71f i18n: German (de) covers the whole interface
#630 shipped German for the menus. This adds the other 3,213 strings, so
de.tsv has every entry of the Spanish catalog (3,590): panels, dialogs,
effects and their parameters, transitions, presets, Settings, shortcut
commands, export presets, tooltips and status messages. Same style as the
menus (du, infinitives, placeholders, ellipses and escapes kept); the
glossary in the header is extended. The 377 menu entries are unchanged.

german_entries_cover_the_original_menu_catalog required every entry to be
a menu label. It becomes german_covers_the_menus_and_has_no_dead_entries,
like the French and Italian tests: every entry needs a Spanish counterpart,
the core menus and the native macOS app menu are required, later strings
may stay English. german_renders_with_bundled_fonts checks the umlauts,
ß and German quotation marks against the bundled fonts.

Docs: ROADMAP.md, docs/localization-parity.md, docs/gaps.md, ui-egui README.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KJhvSJ5odpWzFw9HhPzAix
2026-10-19 09:41:57 +02:00
Dylan M. Taylor 6c3948a36c ci: configure Dependabot for Cargo and GitHub Actions
Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
2026-10-18 12:31:32 -06:00
Brandon Thomas 48088e3a8e Merge pull request #1927 from marcoarnulfo/fix/clip-mixer-strips-fit
#1922: Audio Clip Mixer strips narrow to fit the panel, and scroll when they cannot
2026-10-18 03:21:32 -04:00
Brandon Thomas 4dc802170d Merge pull request #1655 from notdezzi/fix/1542-caption-margin
captions: pin the setStyle margin contract with a regression test; clearer track error (#1542)
2026-10-18 03:21:28 -04:00
Brandon Thomas 9bc4b6b266 Merge pull request #2125 from 00xJS/fix/1544-export-job-poll
#1544: an export started without wait says where to follow it (jobs.list, jobs.cancel)
2026-10-18 03:21:23 -04:00
Brandon Thomas 8a7127d687 Merge pull request #2016 from wstock/pixel-format-from-sps
codecs: the pixel-format label comes from the SPS before the avcC/hvcC fields
2026-10-18 03:21:19 -04:00
Brandon Thomas f9a774c5de Merge pull request #1849 from marcoarnulfo/fix/caption-properties
Properties panel edits the selected caption's text and in/out times
2026-10-18 03:21:14 -04:00
Brandon Thomas 33459a26ca Merge pull request #2313 from TheGalitube/codex/fix-issue-2263-resize-cursors
Fix resize cursor directions for graphics handles (#2263)
2026-10-18 03:21:08 -04:00
Brandon Thomas c2efc23c9a Merge pull request #2214 from Silvertree2010/fix/h2233-tts-normalizer-reads-a-price-wit
Fix TTS reading of prices with more than two decimal digits
2026-10-18 03:21:03 -04:00
Brandon Thomas 310f11d9b0 Merge pull request #1925 from marcoarnulfo/fix/monitor-zoom-3d-perspective
Basic 3D: Distance to Image keeps its perspective at every render scale
2026-10-18 03:20:56 -04:00
Brandon Thomas 55d5a6e96a Merge pull request #1817 from dotCooCoo/fix/faces-without-outlines
Fonts: faces with no outline tables are no longer listed
2026-10-18 03:20:50 -04:00
Brandon Thomas 19b5526b6f Merge pull request #2290 from Wbunker/fix/cfb-writer-quadratic-duplicate-check
fix(cfb): adding a child is O(1), not a scan of every sibling (AAF export of 20 000 markers took a minute)
2026-10-18 03:20:45 -04:00
Brandon Thomas 24d191c5e7 Merge pull request #2090 from ssandweiss/fix/menu-enabled-states
fix(engine): enable Multi-Camera Enable/Flatten only for clips they work on
2026-10-18 03:20:39 -04:00
Brandon Thomas a06de0534a Merge pull request #1937 from Ni-zav/fix/media-header-overflow-s20261014t1610z
Saturate crop and field-height math on hostile Matroska/MXF/AAF headers
2026-10-18 03:20:34 -04:00
Brandon Thomas 26591777a0 Merge pull request #1907 from Guilhermeb-Ferrarezi/perf/lens-blur-disc-kernel-1871
#1871: Lens Blur works out its disc offsets once per frame, not per pixel
2026-10-18 03:20:22 -04:00
Brandon Thomas 6e1157c7a6 Merge pull request #1797 from marcoarnulfo/fix/source-waveform-zoom-detail
monitor: the Source waveform follows the time ruler's zoom
2026-10-18 03:20:17 -04:00
Brandon Thomas 2ec9c4c419 Merge pull request #2261 from Silvertree2010/fix/h2452-number-field-calculator-merges-n
Refuse numbers separated by spaces or a unit in number fields
2026-10-18 03:20:12 -04:00
Brandon Thomas 02a209cae7 Merge pull request #2141 from Silvertree2010/fix/h1878-cli-render-silently-renders-fram
Reject non-numeric --seconds and --scale in CLI render
2026-10-18 03:20:07 -04:00
Brandon Thomas fe050dbc8e Merge pull request #2026 from marcoarnulfo/fix/graph-keyframe-drag
fix(effect-controls): a dropped graph keyframe stays where it was dropped
2026-10-18 03:20:02 -04:00
Brandon Thomas 0014fb2808 Merge pull request #1935 from Ni-zav/fix/matroska-metadata-depth-s20261014t1610z
matroska: bound recursive chapter and tag parsing
2026-10-18 03:19:57 -04:00
Brandon Thomas 1f16aaa061 Merge pull request #1761 from webdevtodayjason/ttml-default-tickrate
Captions: default TTML tick rate follows the frame rate multiplier
2026-10-18 03:19:44 -04:00
Brandon Thomas 0e74a96e98 Merge pull request #2144 from ssandweiss/fix/2142-sdr-colr-export
fix(export): tag SDR exports with a colr box (#2142)
2026-10-18 03:19:39 -04:00
Brandon Thomas 07d4077bed Merge pull request #2082 from Silvertree2010/fix/h1407-color-a-3dl-lut-with-a-huge-inpu
Reject .3dl LUTs whose input mesh is larger than 256 entries
2026-10-18 03:19:34 -04:00
Brandon Thomas 2df01a7436 Merge pull request #1936 from Ni-zav/fix/cli-dotted-key-depth-s20261014t1610z
cli: reject deeply nested dotted parameters before parsing
2026-10-18 03:19:29 -04:00
Brandon Thomas 64f6dc34c6 Merge pull request #1881 from marcoarnulfo/fix/outer-stroke-fill-off
Graphics: an outer stroke with Fill off draws only the ring outside the edge
2026-10-18 03:19:24 -04:00
Brandon Thomas 6403ecbf86 Merge pull request #1777 from alexng353/fix/dialog-button-cursor
[agent] Dialog buttons show the pointing hand on hover
2026-10-18 03:19:18 -04:00
Brandon Thomas ba29721357 Merge pull request #1315 from vbasky/fix/1250-gpu-float-skip
Skip GPU goldens when Rgba32Float is not renderable
2026-10-18 03:19:13 -04:00
Brandon ThomasandClaude Opus 5.5 a46d197c1e Format the pixel-aspect test (cargo fmt)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:59:46 -04:00
Brandon ThomasandClaude Opus 5.5 4a69a038d3 Release 0.9.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.9.0
2026-10-17 21:43:10 -04:00
Max Mittelstädt 896525e9df Fix issue #2263 resize cursor directions 2026-10-18 01:21:20 +02:00
skylar taylor-barrick 38ac719f61 Merge pull request #2304 from skylartaylor/open-original
Follow stored media paths only on this computer or the project's share
2026-10-17 12:13:50 -06:00
skylar taylor-barrick 4f8464332f Build: take craft-docpath from the merged craft-libs rev
craft-libs#169 is merged, so the fork pin is no longer needed. Pinned to
storytold/craft-libs 82a24b006eefa036b43c09a67fb9a3fbd17ffe63 (main after the merge) rather than the older 12281d07,
which predates resolve_absolute and the Windows colon refusal.
2026-10-17 12:03:05 -06:00
WbunkerandClaude Sonnet 5.5 a711c61840 fix(cfb): adding a child is O(1), not a scan of every sibling
Writer::add rejected a duplicate name by comparing the new name with every
sibling through compare_names, which allocates two Vec<u16> per call, so n
children in one storage cost O(n^2) allocating comparisons. An AAF export
puts every marker and component in one storage: 20 000 markers took 58 s,
20 000 clips 56 s, 20 000 connected clips 87 s and 100 000 markers never
finished (an FCPXML of 1 MB is enough). Doubling the input quadrupled the
time; every other exporter stayed linear.

Each storage keeps a set of its children's names as sibling order compares
them (UTF-16 code units, upper-cased), so the duplicate check is a hash
lookup. Same result: case-insensitive, also beyond ASCII, per storage.

20 000 markers now export to AAF in 0.38 s, 100 000 in 2.0 s, 20 000 clips in
0.23 s and 20 000 connected clips in 0.45 s.

Tests: adding 40 000 children must take under 3 s (0.02 s now, 21 s before)
and the duplicate rules are unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 10:05:53 -04:00
NetterSilverandClaude Haiku 5.5 fb5b2dc40a Refuse numbers separated by spaces or a unit in number fields
Found while testing crates/ui-egui/src/calc.rs:34-41 (eval)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-17 09:36:49 +02:00
aiongg ff66e124a4 Build: use craft-docpath from craft-libs 2026-10-17 02:20:44 +00:00
NetterSilverandClaude Haiku 5.5 d0750c1dc4 Fix TTS reading of prices with more than two decimal digits
Found while testing crates/tts-text/src/normalize.rs:352 (parse_amount, used by parse_money at :266)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 20:11:34 +02:00
aiongg f565f7b38d fix(engine): follow stored media paths only on this computer or the project's share
Media and proxy paths read from a project file, a project template or an
interchange file are opened only when they name a local file or a file on
the network share the document itself is on (craft-docpath); a relative
path is taken from the document's folder. Other paths count as missing:
the item renders the offline slate with the reason, the open says how many
were not opened, and Link Media lists them. This covers the open-time
scan, rendering and proxies, the growing-files look and interchange
import. Files imported or linked in this session are opened as given.

The Scratch Disks folders use the same check, and Captured Audio and Video
(voice-over takes, pasted images, the default proxy folder) and Audio
Previews follow the rule Auto Save and Video Previews already follow.
2026-10-16 17:27:39 +00:00
aiongg 07374d1f2a fix(engine): use project scratch folders only inside the project folder or when chosen
Project Auto Save and Video Previews folders named in a project file are used
only when they are inside the project's own folder or were chosen in Project
Settings > Scratch Disks on this computer (remembered in the preference
autoSave.scratchFolders). Other folders fall back to the default location,
with a log line and a message when the project opens. Network-share and
device paths are refused for these folders.
2026-10-16 16:37:56 +00:00
aiongg 3984ef90ff fix(engine): Edit Original opens only regular files with a media extension
A folder or bundle, a link to another kind of file, or a file whose extension
the importer doesn't take is refused with a message instead of being handed to
the system's default app.
2026-10-16 16:22:07 +00:00
Dylan M. Taylor 09aaf9bf15 ci: standardize FreeBSD workflow on shared FreeBSD 15.1 action (#2158) 2026-10-16 10:08:51 -06:00
skylar taylor-barrick c2f65871e9 Merge pull request #2124 from dylanmtaylor/ci/shared-freebsd-workflow
ci: delegate FreeBSD workflow to craft-common-actions and add nix check
2026-10-15 21:26:41 -06:00
Sam SandweissandClaude Opus 5.5 678fe73221 fix(export): tag SDR exports with a colr box (#2142)
ColorSignal::apply_to wrote the sample entry's colr box only for HDR, so
SDR ProRes, DNxHR and APV MOVs carried no colour that Apple's media stack
reads (it takes their colour only from colr, not from the codecs' frame
headers): QuickTime Player and Final Cut saw no primaries, transfer or
matrix. SDR exports now get colr with the export's colour too (nclc in
MOV, nclx in MP4); HDR metadata stays PQ-only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 18:53:32 -07:00
NetterSilverandClaude Haiku 5.5 d4a69262e1 Reject non-numeric --seconds and --scale in CLI render
Found while testing apps/filmcraft-cli/src/main.rs:468

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 01:29:53 +00:00
Dylan M. Taylor df97b85f59 ci: delegate FreeBSD workflow to craft-common-actions and add nix check 2026-10-15 20:45:39 -04:00
00xJ0 a358c3518e #1544: an export started without wait says where to follow it (jobs.list, jobs.cancel) 2026-10-15 16:37:59 -07:00
Sam SandweissandClaude Opus 5.5 be283bc54c fix(engine): enable Multi-Camera Enable/Flatten only for clips they work on
Clip > Multi-Camera > Enable and Flatten were enabled for any selection
and then failed when chosen with plain clips selected ("select nested
sequence or multi-camera clips"). Their enabled checks now ask what the
commands need: a nested sequence clip for Enable, an enabled multi-camera
clip for Flatten (linked partners included), so the menu greys them out
otherwise. Calls naming their clips still work without a selection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:29:27 -07:00
NetterSilverandClaude Haiku 5.5 c08f3bff15 Reject .3dl LUTs whose input mesh is larger than 256 entries
Found while testing crates/color/src/lut.rs:371

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:23:12 +00:00
Vikram Bhaskaran c63d9766e9 Scope the Rgba32Float skip to the effect-chain parity test.
Main now falls back to CPU effects when an adapter cannot render to
Rgba32Float, so the scene, blend and transition parity tests still run
on such adapters. Only gpu_effect_chains_match_cpu_render needs a float
render target, and it is the one test that skips without it. Also revert
the import reorder, which failed cargo fmt --check on edition 2024.
2026-10-15 22:53:52 +11:00
Marco Arnulfo 16b62adc25 fix(effect-controls): a dropped graph keyframe stays where it was dropped (fixes #1918) 2026-10-15 11:36:01 +02:00
wstockandClaude Fable 5.1 29dbd61782 codecs: the pixel-format label comes from the SPS before the avcC/hvcC fields
An avcC High-profile extension or an hvcC record can carry a chroma
format of 0 for a 4:2:0 stream, which labelled such files "YUV 4:0:0"
in Media File Properties (two files of the 92 in #1959). The SPS is what
the decoder decodes, so it is read first; the record's fields are only
the fallback when no SPS can be parsed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011K1peyrh5MdZ6ttHkVq8Gh
2026-10-15 06:55:44 +00:00