Commit Graph

643 Commits

Author SHA1 Message Date
Whatever Industries 5ed4952d43 Add shared custom colors and complete marker editing (#1435)
* M3: Add shared custom colors and complete marker editing

* #1435: refine native colors and range endpoint flags

Use the macOS Colors panel for custom label colors and reuse the established egui picker on other hosts. Preserve draft confirmation, exact sRGB values, native text shortcuts and project ownership. Compact the swatches and center the add control, split range glyphs across their endpoints, localize the new controls, protect newer marker edits from stale dialogs, and cover the behavior with rendered UI and hit-test regressions.

Co-authored-by: Codex <noreply@openai.com>

* #1435: preserve imported palettes and marker double-click ownership

Union saved OTIO palettes across timelines with deduplication, bounded capacity,
first-name preservation and explicit overflow warnings. Keep null authors
consistent with omitted fields, and consume marker double-clicks before the
work-area gesture so opening the editor does not alter project history.

Correct the CSV URL column and schema documentation. Add six regressions for
palette retention/capacity, author handling, and physical overlapping gestures.

Validation: full cargo xtask ci (3666 passed, 45 skipped), 42 rendered UI tests,
and strict workspace/all-target Clippy on Rust 1.99.1.

Co-authored-by: Codex <noreply@openai.com>

* #1435: retain OTIO swatch names and generator labels

Ignore orphan name entries when retaining saved palette names so input ordering
does not hide valid names after the first 64 entries. Keep names bounded by the
retained palette and preserve existing valid names.

Include generator preset labels alongside custom label colors in OTIO metadata.
Add regressions for orphan-prefixed name maps and three generator kinds with
preset/custom colors through actual export/import round trips.

Validation: both regressions failed before fixes; all 72 interchange tests and
full cargo xtask ci pass (3668 tests, 45 skipped), plus strict workspace/all-target
Clippy on Rust 1.99.1.

Co-authored-by: Codex <noreply@openai.com>

* #1435: preserve distinct OTIO generator item identity

Use exported FilmCraft item IDs for generator media identity so identical
content can retain distinct source names, labels and custom colors. Repeated
references to one source item still share a single imported media entry.

Preserve content-based fallback for missing or invalid item IDs. Cover black
video, bars and tone, and color mattes with distinct items/shared references,
plus legacy and malformed identity metadata.

Validation: distinct-generator regression failed before fix; legacy compatibility
passed. All 74 interchange tests and final full cargo xtask ci pass (3670 tests,
45 skipped); strict workspace/all-target Clippy also passes on Rust 1.99.1.

Co-authored-by: Codex <noreply@openai.com>

* #1435: align Edit Marker layout and add safe marker navigation

Give the editor a wide aligned form, larger Notes area, side action column,
and grouped palette with vertical marker types. Expand the Web Link field
with the form and keep actions accessible in small windows.

Previous/Next saves valid edits as one Undo step and stays with the original
sequence/source owner, including coincident markers. Invalid drafts stay open;
unchanged navigation and Done add no history. Keep native/shared color pickers,
Author, Notes, URL validation and immediate marker creation.

Validation: all 45 rendered sequence/marker UI tests pass, including five new
navigation/owner/validation/layout regressions. Native macOS layout, picker
Cancel and exact single-step Undo restoration verified. Full standard cargo
xtask ci passes 3675 tests (45 skipped), doctests and all remaining gates;
strict Rust 1.99.1 workspace/all-target Clippy also passes.

Co-authored-by: Codex <noreply@openai.com>

* #1435: refine Edit Marker proportions and action alignment

Narrow the dialog to 680 logical pixels and keep the core order Name,
Time/Duration, Notes, Color and marker type. Place Author after the type-specific
options as secondary metadata. Preserve our palette, custom picker and range controls.

Use consistently sized, centered rounded action buttons with a primary Done action.
Shorten Delete Marker to Delete and remove the navigation helper and unused translations.
Keep the existing navigation save/validation/Undo semantics and automation IDs.

Validation: all 45 rendered marker/sequence UI tests pass, including small-window
action accessibility. Actual macOS layout and no-op Previous/Next/Cancel verified.
Full standard cargo xtask ci passes 3675 tests (45 skipped), doctests, formatting,
Clippy, translations, layers, assets and 49 WASM crates. Strict Rust 1.99.1
workspace/all-target Clippy passes separately.

Co-authored-by: Codex <noreply@openai.com>

* #1435: tighten marker layout and validate text editing

Use a narrower aligned form with Author below Name, bounded scrolling Notes,
left-aligned colors, centered actions and an inline Web Link URL/open icon.
Remove the legacy Flash Cue choice while preserving imported marker types.

Constrain timecode typing/paste to complete numeric colon-separated fields,
validate drop-frame labels and frame bounds, and disable Done for invalid timing.
Preserve high-frame-rate timecodes and point-marker semantics when Duration is
unchecked. Route native/menu clipboard and text Undo commands to focused fields;
explicit engine commands retain project Undo and selection semantics.

Validation: standard cargo xtask ci passes 3679 tests (45 standard skips),
doctests, fmt, strict workspace/all-target Clippy, i18n, layers, 69 assets and
49 WASM crates. Also passed 48 rendered marker/sequence tests and strict Rust
1.99.1 Clippy. Actual macOS clipboard, bounded Notes, point save and exact Undo
were checked. Windows/Linux desktop interaction remains pending.

Co-authored-by: Codex <noreply@openai.com>

* M0: Wait for frame-worker recovery before asserting

Do not treat a nonempty request queue as proof of worker death in the
panic-recovery regression. Keep waiting for all injected faults and enough
post-fault completions, then drain the queue without adding more seeks.
Retain the exact fault-count, successful-recovery and empty-queue assertions
and bound the wait with a two-minute deadline.

The inherited test failed twice in independent fork CI. It did not reproduce
locally: baseline passed 20 normal and 10 delayed-report runs; the repair
passed 50 normal and 10 delayed-report runs. No product or marker UI changes.

Validation: standard cargo xtask ci passed all 4485 tests (52 standard skips),
doctests, formatting, strict workspace/all-target Clippy, i18n, layers,
69 assets and 49 WASM crates.

Assisted-by: OpenAI Codex

---------

Co-authored-by: Codex <noreply@openai.com>
Co-authored-by: Codex <codex@openai.com>
2026-11-01 03:04:14 +01:00
aiongg 562f550221 Merge main into backlog-r1 2026-10-31 05:27:25 +00:00
aiongg 3cce1d1349 docs: tidy wording 2026-10-31 04:25:39 +00:00
aiongg 239f7987de docs: fix punctuation 2026-10-31 04:17:42 +00:00
aiongg 5c18340e3f docs: tidy agent, contributor and asset docs 2026-10-31 04:17:32 +00:00
aiongg 9f7a9d6342 Merge integration track timeline 2026-10-31 03:39:23 +00:00
aiongg a9d15b9542 Merge integration track ui2 2026-10-31 03:39:22 +00:00
aiongg 01608757f5 Merge integration track fx 2026-10-31 03:39:22 +00:00
aiongg d6b1265dc4 Merge integration track text 2026-10-31 03:38:55 +00:00
aiongg 8595147b71 Merge integration track i18n 2026-10-31 02:17:34 +00:00
aiongg bf0386bf76 Merge integration track sys 2026-10-31 02:17:26 +00:00
aiongg 69ed33ae57 Merge integration track io 2026-10-31 02:17:17 +00:00
aiongg bf1a400b27 Merge integration track export 2026-10-31 02:17:03 +00:00
aiongg b583037822 Merge integration track audio 2026-10-31 02:17:03 +00:00
aiongg c2ac002f8f Merge PR #3684: Render Effects In to Out renders only red segments, like the reference app (#1220) 2026-10-31 02:16:02 +00:00
aiongg 09f99fc97b Integration: #3516 numpad section states the limitation and the 0 binding only 2026-10-31 02:15:27 +00:00
aiongg a589de7b06 Integration: #3093 ADR links point at the platform backend files 2026-10-31 02:15:27 +00:00
aiongg 810320933d Merge PR #2612: Clip Mismatch Warning: a first clip that doesn't match an empty sequence asks
# Conflicts:
#	crates/engine/src/commands.rs
#	crates/engine/src/settings.rs
#	crates/ui-egui/src/i18n/es.tsv
#	crates/ui-egui/src/i18n/ja.tsv
#	crates/ui-egui/src/i18n/zh-cn.tsv
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/panels/timeline.rs
2026-10-31 02:15:20 +00:00
aiongg e930e085a7 Merge PR #3718: docs: transcripts: word bounds are only moved across pauses 2026-10-31 02:15:16 +00:00
aiongg ba5d3ab6ca Merge PR #3516: docs(#2645): document numpad key limitation and workarounds in keyboard.md 2026-10-31 02:15:16 +00:00
aiongg 1629892f63 Merge PR #3093: docs(platform): update FFI architecture decision to match implementation (#2814) 2026-10-31 02:15:16 +00:00
aiongg abeac167cc Merge PR #1423: #1421: roadmap.md and gaps.md G14: mark shipped codecs and languages as done 2026-10-31 02:15:16 +00:00
aiongg e2e0c96f7b Merge PR #1419: #1418: parity docs: correct entries outdated by merged work 2026-10-31 02:15:03 +00:00
aiongg 6ea11662a1 Merge PR #1412: #1411: docs/gaps.md: remove entries for features that already shipped 2026-10-31 02:14:54 +00:00
aiongg 8f16aea983 Merge PR #3714: bs: Add Bosnian (bs) to the interface languages 2026-10-31 02:14:54 +00:00
aiongg 2a501fa39e Merge PR #2116: feat(media): import PSD files as their flattened composite (Merge All Layers)
# Conflicts:
#	docs/file-format-parity.md
#	docs/gaps.md
2026-10-31 02:14:38 +00:00
aiongg 6f4f383ca4 Merge PR #2705: #2489: an imported shortcut set is always listed; .kys files explain why they can't be read 2026-10-31 02:14:06 +00:00
aiongg 59695f22ae Merge PR #2344: i18n: Turkish (tr) interface catalog (#1377) 2026-10-31 02:13:56 +00:00
aiongg e5e3c2b881 Merge PR #2984: Recovery: retain durable journals and contain autosave worker failures 2026-10-31 02:13:48 +00:00
aiongg c11c0e7e25 Merge PR #1118: fix: シーケンス配置時の自動文字起こしを実行 #903 2026-10-31 02:13:33 +00:00
aiongg f319ff9af3 Merge PR #3389: #3357: caption track font style 2026-10-31 02:13:13 +00:00
aiongg 7e608027ea Merge PR #2288: i18n: Russian covers the whole interface 2026-10-31 02:13:09 +00:00
aiongg a3f66a1e47 Merge PR #2660: #2419: Bokeh Blur runs on the GPU 2026-10-31 02:12:50 +00:00
aiongg 5b83f337ab Merge PR #1930: i18n: Swedish (sv) interface translation 2026-10-31 02:12:36 +00:00
aiongg 5054344c26 Merge PR #3690: Graphics: document what Responsive Design – Time remaps 2026-10-31 02:12:31 +00:00
aiongg d57d6afd97 Merge PR #3407: timeline: Track Select Forward/Backward selects and moves the captions with the clips (#3388) 2026-10-31 02:12:28 +00:00
aiongg da9642af10 Merge PR #3723: Export: background jobs read their own copy of each file, so playback keeps its decoder
# Conflicts:
#	crates/engine/src/proxies.rs
2026-10-31 02:12:09 +00:00
aiongg 87ed20c714 Merge PR #2559: #2295: the status bar's text can be selected and copied
Reapplied the lib.rs hunks to app/frame.rs and app/keys.rs; the new test lives in tests/it; the contributors/people.toml hunk is dropped.
2026-10-31 02:12:01 +00:00
aiongg 19db881b0c Merge PR #3255: platform: VideoToolbox export takes the RGBA pictures and converts them itself (#3030) 2026-10-31 02:12:01 +00:00
aiongg 75a6836784 Merge PR #3308: #2633: a press on the ruler closes no audio stream, and the default rate skips listing configs 2026-10-31 02:11:59 +00:00
aiongg 8b8616704a Merge PR #2363: #2186: Shift-click selects several graphic layers on the Program monitor
UI hunks ported to panels/graphics/overlay.rs; engine tests appended after the #1877 module.
2026-10-31 02:11:50 +00:00
aiongg 29a98f5f34 Merge PR #1710: i18n: add Polish interface language 2026-10-31 02:11:40 +00:00
aiongg 57ca57b73a Merge PR #3053: gpu: export on the high-performance GPU, and read staging memory in bulk
# Conflicts:
#	crates/gpu/src/export_renderer.rs
2026-10-31 02:11:17 +00:00
aiongg f189bdabef Merge PR #1156: i18n: add Czech (cs) interface language 2026-10-31 02:11:03 +00:00
aiongg 2885d99894 Integration: #2505 drop nested-transform-regressions doc 2026-10-31 02:10:22 +00:00
aiongg dbeee21318 Merge PR #2396: #579: a middle-button drag pans the Freeform canvas 2026-10-31 02:10:22 +00:00
aiongg c95672cda1 Merge PR #2505: Tests: render video in export fixtures and cover nested transforms 2026-10-31 02:10:20 +00:00
aiongg 125b86c0ed Merge PR #2432: fix(export): a bitrateKbps in settings is the bitrate over an adaptive preset 2026-10-31 02:10:07 +00:00
aiongg 533c8bc88f Merge PR #2842: codecs: prevent 32-bit length overflows (#2801) 2026-10-31 02:10:05 +00:00
aiongg 5e5c67a372 Merge PR #1617: #1583: still images honour EXIF Orientation 2026-10-31 02:10:02 +00:00