Commit Graph
1011 Commits
Author SHA1 Message Date
dotCooCoo ce0ae4e387 Fix #341: answered file dialogs run before the close decision
The close decision moved to App::logic, which runs before App::ui, while
the queued file-dialog answers still ran in ui. An answer that arrived in
the frame that closed the window changed the project after the decision,
so the window could close without asking to save. The answers now run in
logic, before the decision.
2026-10-24 08:38:14 -07:00
dotCooCoo eff747897d Fix #341: the close decision runs in App::logic
eframe runs App::logic without App::ui while the window is minimized or
hidden, and handles a close request then too. The unsaved-changes check, the
device-loss close and craft_quit::on_close_request ran from ui, so such a
close skipped the prompt and the macOS quit through terminate:. They now run
at the end of logic, with the platform hook last, as craft-quit asks.
2026-10-24 02:50:22 -07:00
dotCooCoo aa296cf273 Merge branch 'main' into fix/macos-quit-crash 2026-10-23 23:01:09 -07: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 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 c00170bcc6 Merge #1867: Fix scheduled ScriptUI tasks in host sessions (@dorfee) 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 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 546a9720b0 Batch fix: cargo fmt 2026-10-24 01:16:38 +00:00
aiongg 3b3b1846e5 Batch fix: i18n: drop the Georgian "Layer {}" row the Timeline no longer asks for (#2155) 2026-10-24 01:16:29 +00:00
aiongg 6e8111147b Merge #2155: Timeline: pick layer-valued properties from a layer drop-down (#2093) (@ChristopherLinnett) 2026-10-24 01:11:52 +00:00
aiongg c5f692abc6 Merge #2049: Light Settings: expose and preserve Environment lights (@tylerjenningsw) 2026-10-24 01:10:51 +00:00
aiongg 46302da794 Merge #2178: Reject malformed thumbnail text without crashing (#2135) (@Maokus) 2026-10-24 01:10:42 +00:00
aiongg 0c83acf79f Merge #2221: fix(ui): expose Duplicate in the Project panel context menu (#2207) (@Zaxaerith) 2026-10-24 01:10:42 +00:00
aiongg 6e1a38fd25 Merge pull request #2259 from aiongg/contrib-batch-2
Integration batch 2: 18 contributor PRs (SVG, engine, colour effects, effects, settings, tests)
2026-10-23 21:06:05 -04:00
aiongg 8cc7c7f2a4 Merge #2166: i18n(ja): AE says 縦横比, not アスペクト比 (@zitann2020) 2026-10-24 00:13:55 +00:00
aiongg d664e403ae Merge #2185: Project Settings: Frame Count, Start at 0 or Start at 1 (@marcoarnulfo) 2026-10-24 00:13:55 +00:00
Christopher Linnett a661f2ed60 Merge main into fix/issue-2096-deselect-during-text-edit
main moved crates/ui-egui/tests/ui_text_edit.rs to tests/it/ (one test binary per crate); this branch's test changes follow the move.
2026-10-24 07:59:29 +08:00
aiongg 33951267e7 Merge #1653: UI: native press-and-browse menus, with edge auto-scroll (@elZanco) 2026-10-23 23:33:23 +00:00
aiongg 22cdd26365 Merge #2223: Composition Settings: Resolution menu with the frame size and memory at that resolution (@marcoarnulfo) 2026-10-23 23:33:23 +00:00
aiongg ac5fc076df Merge #2050: 3D: add a New 3D Primitive dialog to Layer > New (@tylerjenningsw) 2026-10-23 23:33:19 +00:00
aiongg 662b620be4 Merge #2182: Regression tests for #354, #382, #979 and #1497 (@skylartaylor) 2026-10-23 23:32:52 +00:00
aiongg b370269a2f Batch fix: cargo fmt 2026-10-23 23:31:33 +00:00
aiongg d6ff173833 Batch fix: Effect Controls: the Curves graph draws the natural spline the effect renders (#1872) 2026-10-23 23:22:30 +00:00
aiongg 049070d65c Translations report: count repeated menu entries once; list panel strings no catalog has yet (#2252)
* Translations report: count a repeated menu entry once; list panel strings no catalog has yet

* Translations report: scan the dock and dropped-file messages too
2026-10-23 19:19:43 -04:00
aiongg eb89902c9c Batch fix: web: Match System skips languages the bundled fonts can't draw (#1842) 2026-10-23 21:49:37 +00:00
aiongg fefe4b8a91 Merge #1843: i18n: Georgian (ka) interface language (@devius) 2026-10-23 21:45:52 +00:00
aiongg 8197568559 Merge #1842: i18n: tab titles, workspaces and Project/Timeline column headers reach the catalogs; web language follows ?lang= and the browser (@devius) 2026-10-23 21:42:49 +00:00
aiongg e272e74f5b Merge #1920: Preview: keep rendering past the cached frames after a loop or restart (@ded-achtung) 2026-10-23 21:37:28 +00:00
aiongg 5ff332a206 Merge #2048: Timeline: the disk-cache bar checks only the visible frames (@arnav-hiwarkar) 2026-10-23 21:37:28 +00:00
aiongg 93477f0611 Merge #2046: Preview: a zoom or resolution change evicts the other sizes' frames first (@arnav-hiwarkar) 2026-10-23 21:37:00 +00:00
aiongg 295d104e19 Merge #1699: Preview: replaced browser media gets a new disk-cache key (#1253) (@vbasky) 2026-10-23 21:36:58 +00:00
aiongg 3744adc310 Batch fix: interface fonts: skip catalog characters in blocks that already found no face (#1973)
On a machine with no font covering the catalog, each uncovered 256-character
block re-read every installed font file on the UI thread; blocks that already
failed are skipped.
2026-10-23 21:32:24 +00:00
aiongg ce73d42c42 Merge #1929: Layer: replace a layer's source with Alt-drag and Ctrl+Alt+/ (#991) (@ki2pixel) 2026-10-23 21:26:51 +00:00
aiongg d0675be78b Merge #1850: Timeline: layer switches, labels and modes act on the whole selection (#1849) (@ki2pixel) 2026-10-23 21:26:33 +00:00
aiongg 52a0c6626d Merge #1931: Layer: Reveal Layer Source in Project from the context menus (#1809) (@ki2pixel) 2026-10-23 21:26:24 +00:00
aiongg 1520a11f9c Merge #1865: Text Range Selector: Start, End and Offset show as counts with Units = Index (#1814) (@SBaksa) 2026-10-23 21:26:16 +00:00
aiongg 38ca712cc2 Merge #2116: ui: Spacebar hand pans timeline rows vertically (#2083) (@gmrmad1) 2026-10-23 21:26:10 +00:00
aiongg bc8ddfa5ea Merge #1973: Fix incomplete system font coverage in the Chinese interface (@yuraizmailov) 2026-10-23 21:19:31 +00:00
aiongg 966f9d9894 Merge #1322: ui: the interface prefers the platform's UI faces, rendered text keeps the print ones (@FeiLiuEM) 2026-10-23 21:19:10 +00:00
aiongg fe0215a074 Merge #1907: fix(text): isolate CJK fallback language and cache entries (@TimotheusG) 2026-10-23 21:18:45 +00:00
aiongg c2df1c1a73 Translations: missing strings show in English and are listed by a report, not failed by tests (#2244)
* Translations: delete coverage and wording tests

A missing translation shows in English and never fails a test. Delete the
coverage and per-language parity tests, the tests that pin one language's
wording and the source scans for strings not routed through the catalog.
Keep the stale-row, duplicate-row and placeholder checks, and make the
engine tests that switch language compare against the catalog instead of a
literal. Drop the Traditional Chinese panel rows that only repeated the
English source to satisfy the parity test.

* Translations: missing-strings report in xtask ci

missing_translations_report prints, per language, the fixed menu entries,
panel strings, effect names and effect categories with no row. It always
passes. cargo xtask ci runs it with --nocapture after the test runs, so the
list shows in the gate log. The docs say a missing string shows in English
and where the list is.
2026-10-23 15:42:31 -04:00
skylar taylor-barrick b0c9d47725 Merge remote-tracking branch 'origin/main' into test/backfill-regression-tests 2026-10-23 12:09:54 -06:00
aiongg 0173abde8c CI: dev-profile gate, one test binary per crate, nextest, line tables only (#2235)
* Dev profile: line tables only for workspace crates, no debug info for dependencies

* xtask ci: dev-profile gate, nextest, tests without examples, wasm --keep-going

* One integration-test binary per crate

* xtask ci: run effectcraft-gpu's shared-device tests in one cargo test process

* xtask ci: run every stage and report all failures

* xtask ci: name the stage type (clippy type_complexity)

* xtask ci: run every test pass and report all failures

* cargo fmt
2026-10-23 12:59:51 -04:00
Christopher Linnett 0635649e42 fix: let a rebound Deselect All use Alt variants of Cmd+A and Cmd+Z (#2096)
The text editor's Select All and Undo arms ignored Alt, so a Deselect All
rebound to Cmd+Alt+A or Cmd+Alt+Z was taken as Select All or Undo while a
text edit was open.

The arms now match exactly the chords the editor owns (Cmd/Ctrl+A, and
Cmd/Ctrl+Z with or without Shift); their Alt variants fall through to the
Deselect All binding match. Chords the editor owns still win over a rebound
Deselect All, so Undo keeps working while typing.

Test: a UI kittest rebinds Deselect All to each Alt variant and checks that
Cmd+A and Cmd+Z still edit the text while the rebound chord ends the edit.
2026-10-24 00:03:10 +08:00