Commit Graph
2521 Commits
Author SHA1 Message Date
aiongg 58f4a4e36a Merge upstream main into craft-ui-docking 2026-10-25 18:16:57 +00:00
aiongg 26dd2ab814 Merge #2367 (egui 0.37) into craft-ui-docking
# Conflicts:
#	Cargo.lock
#	Cargo.toml
#	apps/effectcraft/src/main.rs
#	crates/ui-egui/src/control.rs
#	crates/ui-egui/src/dock.rs
#	crates/ui-egui/src/dock_ui.rs
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/tests/it/shared_docking_ui.rs
#	crates/ui-egui/tests/it/ui_dock_resize.rs
#	crates/ui-egui/tests/it/ui_panel_windows.rs
#	crates/ui-egui/tests/it/ui_workspace_focus.rs
2026-10-25 18:06:51 +00:00
Dylan M. Taylor 76402b1104 Merge pull request #2367 from storytold/codex/egui-037-effectcraft-20261023
Migrate EffectCraft to egui 0.37
2026-10-25 13:57:44 -04:00
Dylan M. Taylor e88feff569 engine.batch: drop the events a rolled-back atomic batch queued
A failing atomic batch restored the project, history and state but left the
events its steps had already published, so the UI could open the comp the
rollback had just undone. Snapshot the event count with the other snapshots and
truncate before the rollback bumps.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
2026-10-25 13:14:28 -04:00
aiongg e5bb52cc35 craft-libs: pin every crate to 5bbe9f62 (craft-libs main with every shared docking fix) 2026-10-25 16:59:58 +00:00
aiongg 2c7cd6202b Merge upstream main into craft-ui-docking 2026-10-25 16:26:06 +00:00
aiongg 6ffb7778e9 craft-libs: pin every crate to d24e4bcc (Mac round 3: docking fixes, drop previews, native floats stay visible while inactive) 2026-10-25 14:02:31 +00:00
aiongg fdc22548d1 D2: file dialog sheets go on the main window; floating OS windows are blocked while one is up
On macOS rfd put an unparented sheet on AppKit's main window, which after a
click in a floating panel's OS window is that window. With the sheet holding
the keyboard no app window was focused, so craft-ui hid the floating window,
the sheet ended without answering, and later sheets queued behind it: Save As
flashed and closed, and Cmd-S did nothing after. The commands' dialogs now
open at the end of the frame with the main window as parent (macOS; Linux's
portal dialog stays unparented). While one is up the dock area blocks
floating OS windows, as for a modal dialog, and a dialog that ends without
answering never leaves them blocked.
2026-10-25 14:01:52 +00:00
Brandon ThomasandClaude Opus 5.5 362474a843 Release 0.17.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
v0.17.0
2026-10-25 09:31:11 -04:00
aiongg de86a67348 craft-libs: pin every crate to 27e60765 (a minimized floating OS window shrinks to its bar) 2026-10-25 13:29:54 +00:00
skylar taylor-barrick dec327b98a egui037: Preserve text ownership across unrelated history changes 2026-10-25 13:03:14 +01:00
skylar taylor-barrick 18206c1014 Fix text ownership after composition removal and simplify playback helpers 2026-10-25 11:40:05 +01:00
skylar taylor-barrick 57220d4d6a Fix egui 0.37 text ownership and simplify UI lifecycle handlers 2026-10-25 10:18:26 +01:00
aiongg 0061eb6d5f craft-libs: pin every crate to a042cf26 (floating windows keep their ids; native key equivalents in floating text fields) 2026-10-25 08:07:28 +00:00
skylar taylor-barrick 0a570f7ddf M0.37: include complete bundled font notices 2026-10-25 08:51:03 +01:00
aiongg 0411cb205c D3: right columns are tab-group frames split vertically; migrated native windows keep their place
- Default's right column is a short Preview frame (fixed 76 pt: tab strip and a 46 pt body)
  over a Properties frame with Align, Audio and Effects & Presets as tabs. Essential Graphics'
  right column is one Properties / Effects & Presets frame. No built-in workspace uses
  accordions, so a frame there takes tabs and Maximize acts on one frame.
- Workspace files of version 1: a column of stacked frames becomes tab groups split top to
  bottom. Each open frame keeps all its tabs and its height as a fixed size; a closed frame's
  tabs join the open frame above it.
- Version 1 stored a native panel window's outer position; craft-ui places windows by their
  content. The migrated rect moves by the main window's frame offset once the main window
  reports it, and workspaces are not saved before.
2026-10-25 06:14:43 +00:00
aiongg e80aba8572 Merge D2b: workspace migration, native windows, dialogs block floating panels 2026-10-25 05:42:26 +00:00
aiongg 3eae1747ae D2a: ui-egui integration tests use craft-ui's docking ids, labels and geometry
- Focus and traversal tests use DockArea::hit_id for tabs and dividers; the
  focus outline is checked as craft-ui draws it (inset 2 pt, accent colour)
  while the tab has keyboard focus from traversal.
- Floating resize grips are checked under craft-ui's accessibility label.
- Stack resizes compare rendered heights: craft-ui shares a stack by the
  entries' heights as proportions, so the saved heights are checked as ratios.
- Drops into a split use the side zone depth (SIDE_EDGE_ZONE_DEPTH).
- Panels that need their whole area (scroll audit, automation audit) are
  docked alone: maximizing a stacked panel maximizes its whole stack.
- ui_tabs: dragging by the panel menu button is gone (craft-ui drags by tab,
  drag bar or border); the test docks by the tab. A stacked header's -/+
  button collapses and expands, a click on a closed header opens it; a
  click on an open header no longer collapses it.
- ui_tabs (#302): a panel dropped on a stacked panel joins the stack as its
  own entry below it; craft-ui stack entries hold one panel each.
- ui_panel_focus: a reopened Composition goes back to its own index
  ([Composition, Layer]), craft-ui's restore order.
- ui_menus probes the Effect menu with Remove All, since Effect Controls
  also names a tab.
2026-10-25 05:41:47 +00:00
aiongg e89aff1e99 D2a: dock tabs carry their drawn titles as automation labels; group top borders get panel.border ids
Tab and stacked-header automation labels name what the panel shows
("Composition A"), as the tabs do. The top border above a group's tabs,
a craft-ui drag source, registers panel.border.<Panel>, which the agent
audit found without an id.
2026-10-25 05:41:47 +00:00
aiongg 38be76ddc4 D2: floating panels open in OS windows of their own on desktop; dialogs block them
craft-ui's native-windows feature is on for every non-wasm build. Keys and
dropped files from a floating window reach the main window's next frame, and
while a modal dialog is open the dock area blocks input in floating windows.
Move Panel to Main Window docks the panel again. The web, Wayland and embedded
viewports keep floating windows in the main window.
2026-10-25 05:32:15 +00:00
aiongg 3014f03a81 D2: workspace files of earlier versions migrate to craft-ui workspaces
A version 1 file (craft-libs 5c874d51) and the unversioned named-workspace record
load with every panel in place, floating groups and their native window places
kept. The first save writes the current format and keeps the earlier file as
workspaces.old.json. The fixture is a file written by upstream main.
2026-10-25 05:15:35 +00:00
aiongg 85ffe0ca1c craft-libs: pin every crate to 8a503cfe (drop targets, craft-libs#310) 2026-10-25 04:42:39 +00:00
aiongg 72dcc3b4cc D1: tests for never-placed panels and native window places; Move Panel to New Window stays in the panel menu
A panel never laid out opens at EffectCraft's default place for it; a
closed panel reopens at its recorded place. The panel menu keeps Move
Panel to New Window, which records the window's place.
2026-10-25 04:39:17 +00:00
aiongg 038e5c03bf D1: panels dock in craft-ui's shared docking; craft-libs pinned to 2869b8cc
Every craft-libs crate and the hayro-syntax and hayro-jbig2 patches are
pinned to storytold/craft-libs 2869b8cc. The workspace is a craft-ui
Workspace<PanelKind>: craft-ui draws the frames, tab strips, stacked
panels, floating windows and drop previews and owns the gestures.
EffectCraft keeps PanelKind, its built-in workspaces, the panel bodies,
the Timeline's comp tabs, viewer locks and the panel menu in each group
header, and the rule that no move or float empties the docked area.

window.dockAction applies craft-ui Actions; craft-ui's window.panel.*
commands, ui.dock and ui.dock.reset parse as DockCommand. Saved
workspaces are version 2 snapshots of craft-ui Workspaces; an earlier
file loads as the default layout and is left untouched.
2026-10-25 03:23:32 +00:00
skylartaylor 9ee853715d M0.37: migrate EffectCraft to egui 0.37
Reconcile main 991904888a and preserve the reviewed lifecycle, IME, rendering and lockfile changes.

Formatting, strict lint, layers, assets and WASM passed. Full CI retained 3,961 passes, 14 baseline-matching GPU failures and 31 ignored executions. The local review commit has explicit approval to retain these documented failures; native/browser acceptance and paired app performance remain open.
2026-10-25 02:01:16 +01:00
aiongg 991904888a Merge pull request #1643 from arnav-hiwarkar/fix/1641-keep-cache-outside-edit
Preview: an edit keeps the cached frames outside the layers it changes (#1641)
2026-10-24 16:27:16 -04:00
aiongg eb5108786b PDF: repin craft-pdf, hayro-syntax and hayro-jbig2 to craft-libs 9f75d3dc for its xref, object-stream, graphics-state and JBIG2 input bounds (#2265) 2026-10-23 23:27:29 -04:00
aiongg 1400cf7c78 Merge pull request #2264 from aiongg/contrib-batch-4
Integration batch 4: 15 contributor PRs (interface, scripting, hardening, docs)
2026-10-23 22:57:03 -04:00
aiongg e3e9776c25 Batch fix: settings: size the page column from the titles it draws (#2171) 2026-10-24 02:12:59 +00:00
aiongg 07eda94115 Merge #2033: docs: escape the backtick in the twirlSelected shortcut (#2025) (@gmrmad1) 2026-10-24 02:12:25 +00:00
aiongg 2281e3ffec Merge #1761: Timeline: a shape group's inner Contents draws no row, as After Effects elides it (@elZanco)
# Conflicts:
#	docs/ui-parity.md
2026-10-24 02:12:25 +00:00
aiongg 9a9574baaa Merge #2016: Settings: list the languages alphabetically by their own name (@nikolainyegaard) 2026-10-24 02:12:11 +00:00
aiongg cf54196ad9 Merge #2171: Settings: fit translated page names in the sidebar (#2034) (@Maokus) 2026-10-24 02:11:49 +00:00
aiongg 39526acc86 Merge #1327: Timeline: focus newly added expressions after Alt-click (refs #1072) (@tylerjenningsw) 2026-10-24 02:10:16 +00:00
aiongg 0db7ddb089 Merge #2228: End an open text edit when Deselect All runs (#2096) (@ChristopherLinnett) 2026-10-24 02:10:16 +00:00
aiongg 1d61fc6979 Merge #1933: Viewer: keep hidden AV layers' controls visible (#1769) (@ki2pixel)
# Conflicts:
#	docs/ui-parity.md
2026-10-24 02:10:16 +00:00
aiongg 2b8bb3150e Merge #2156: Return None from Mat4::inverse for non-finite input (@Silvertree2010) 2026-10-24 02:10:03 +00:00
aiongg 9384ab7a47 Merge #1945: Reject non-hex characters such as '+' in Rgba::from_hex (@Silvertree2010)
# Conflicts:
#	crates/color/src/lib.rs
2026-10-24 02:10:03 +00:00
aiongg 0494226fc8 Merge #1997: Keep rgb_to_hsv and rgb_to_hsl hue within 0..1 (@Silvertree2010) 2026-10-24 02:09:49 +00:00
aiongg 1ea2c0416f Merge #1881: Reject non-finite numbers in CSS colour parsing (@Silvertree2010) 2026-10-24 02:09:49 +00:00
aiongg c00170bcc6 Merge #1867: Fix scheduled ScriptUI tasks in host sessions (@dorfee) 2026-10-24 02:09:49 +00:00
aiongg 63f4bacf83 Merge #1891: fix(script): interrupt blocked socket writes on close (@TimotheusG) 2026-10-24 02:09:49 +00:00
aiongg aa65e498ce Merge #1948: CLI: preserve template composition names when rendering (@tylerjenningsw) 2026-10-24 02:09:49 +00:00
aiongg 113b92ac8c Merge #2110: ui: scrub hot text from the slider range (#2097) (@gmrmad1) 2026-10-24 02:09:49 +00:00
aiongg b898ba7f03 Merge pull request #2260 from aiongg/contrib-batch-3
Integration batch 3: 19 contributor PRs (interface, engine, effects, GPU, PDF and EPS import)
2026-10-23 22:08:01 -04:00
aiongg 2cca29830e Batch fix: EPS: load returns an operator value, so an executable-name alias runs what its name is bound to (#1909) 2026-10-24 01:43:40 +00:00
aiongg a407281852 Batch fix: tests: the web-job GPU page blurs by 12, which the GPU still runs after #1968 (#1968) 2026-10-24 01:39:09 +00:00
aiongg 80a08e3a3f Batch fix: pdf: the u32 overflow tests reach their fonts from the page, as the object loader needs (#2163) 2026-10-24 01:29:13 +00:00
aiongg c028b49f99 Batch fix: EPS: executable names count against the PostScript call depth 2026-10-24 01:23:26 +00:00
aiongg 69d6e3d28a Batch fix: EPS: filter keeps its source, so an image's data source isn't skipped twice (#1909) 2026-10-24 01:22:55 +00:00