bflatastic
8cfd43f1c0
Merge remote-tracking branch 'origin/main' into feat/devmode-tail
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/devinspect.rs
2026-10-16 02:26:38 +07:00
bflatastic
c4c88900c4
Merge branch 'pr-563' into batch/t5
2026-10-16 01:36:10 +07:00
bflatastic
aadaa2d975
Merge branch 'pr-562' into batch/t5
2026-10-16 01:36:09 +07:00
bflatastic
580eee3572
Merge branch 'pr-561' into batch/t5
2026-10-16 01:36:08 +07:00
bflatastic
07130947f9
Merge branch 'pr-517' into batch/t5
2026-10-16 01:35:45 +07:00
bflatastic
16e26b69ff
Merge branch 'pr-516' into batch/t5
2026-10-16 01:35:44 +07:00
bflatastic
b1760ff098
Merge branch 'pr-497' into batch/t5
2026-10-16 01:35:30 +07:00
bflatastic
991cb604c2
Merge branch 'pr-493' into batch/t5
2026-10-16 01:35:23 +07:00
bflatastic
cdcf197cad
Merge remote-tracking branch 'origin/main' into feat/devmode-tail
...
# Conflicts:
# crates/ui-egui/src/lib.rs
# docs/gaps.md
2026-10-16 01:20:25 +07:00
MarekSpodBiedry
85d97a831c
Keep flows, prototype settings and guides when duplicating a page ( #417 )
2026-10-15 17:19:38 +02:00
MarekSpodBiedry
3062c6c4d6
Keep the selected guide selected when an earlier guide is removed ( #418 )
2026-10-15 17:18:38 +02:00
MarekSpodBiedry
fdf397d7dc
Refuse to create a variable collection with a name that is already taken ( #416 )
2026-10-15 17:17:44 +02:00
bflatastic
c3e2caf101
M6: Dev Mode: behaviour suite; the canvas inspects and never edits, Changed in the ready list, statuses only on frames and sections
2026-10-15 20:22:07 +07:00
bflatastic
4c7cf899f4
M6: Dev Mode: compare changes against any saved version
2026-10-15 20:04:31 +07:00
bflatastic
7a9e9de38c
Merge #305 : M1: save files automatically ( #296 ) (@AganzeFelicite)
...
# Conflicts:
# crates/ui-egui/src/idle_tests.rs
# docs/mcp.md
2026-10-15 19:53:52 +07:00
bflatastic
5a10623414
Merge #469 : i18n: Czech (cs) UI catalog (draft) (@Losminek)
...
# Conflicts:
# contributors/people.toml
# crates/engine/src/cmd/view.rs
# docs/mcp.md
# docs/translating.md
2026-10-15 19:34:05 +07:00
bflatastic
f3e6b00e1a
Merge #310 : engine: refuse page.move for node ids that are not pages (@midasmatterhorn)
2026-10-15 19:33:02 +07:00
bflatastic
58e33f8fbb
Merge #361 : Make edit.findReplace replace case-insensitive matches (@Silvertree2010)
2026-10-15 19:32:55 +07:00
bflatastic
8de536960e
Merge main and the community batch into #469
...
# Conflicts:
# ROADMAP.md
# contributors/people.toml
# docs/localization-parity.md
# docs/roadmap.md
2026-10-15 19:03:31 +07:00
bflatastic
68e130aae6
Merge main and the community batch into #310
...
# Conflicts:
# crates/engine/src/panels_behaviour_tests.rs
2026-10-15 18:56:41 +07:00
bflatastic
a95f95ae37
#361 : a replacement that only changes the case replaces every occurrence; the text's chars are collected once
2026-10-15 18:54:50 +07:00
bflatastic
6215cae877
Merge main and the community batch into #361
...
# Conflicts:
# crates/engine/src/cmd/edit.rs
2026-10-15 18:52:02 +07:00
NetterSilver and Claude Haiku 5.5
7d6a3ce137
Skip divider rows in Next page and Previous page
...
Fixes #413
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 11:49:53 +00:00
NetterSilver and Claude Haiku 5.5
ac7c91fc9c
Reject layer IDs as targets of page.rename, delete and setBackground
...
Fixes #414
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 13:44:17 +02:00
bflatastic
65c9352c5c
Merge main and the community batch into #257
...
# Conflicts:
# ROADMAP.md
# contributors/people.toml
# docs/localization-parity.md
# docs/roadmap.md
2026-10-15 18:13:34 +07:00
bflatastic
8616f3d1c5
#305 : save a file from a snapshot encoded elsewhere
...
FileSnapshot takes what saving writes, encodes it (thumbnail and all) on any
thread, and writes it back as of the snapshot: edits since stay unsaved, and
bytes from before another save never overwrite the newer file.
2026-10-15 18:11:52 +07:00
bflatastic
bebe509a25
Merge main and the community batch into #305
...
# Conflicts:
# ROADMAP.md
# docs/roadmap.md
2026-10-15 17:58:14 +07:00
bflatastic
3c52dad774
Merge #353 : engine: long digit strings no longer overflow object.opacityKeys (@midasmatterhorn)
2026-10-15 17:54:23 +07:00
bflatastic
5a57388b8d
Merge #344 : doc: name counters stop at u64::MAX instead of overflowing (@midasmatterhorn)
2026-10-15 17:54:21 +07:00
bflatastic
022821211f
Merge #358 : Replace every occurrence in edit.findReplace when replacement contains find (@Silvertree2010)
2026-10-15 17:53:06 +07:00
bflatastic
03716da731
Merge #384 : Reject negative or fractional index in effect.set, export.update and export.remove (@Silvertree2010)
2026-10-15 17:53:04 +07:00
bflatastic
2420791015
Merge #475 : Refuse negative or fractional indexes in page.select and doc.switch (@Silvertree2010)
2026-10-15 17:53:02 +07:00
bflatastic
8ae567c06b
Merge #254 : fix(engine): read the documented gradient shorthand on every route ( #252 ) (@pcastro93)
2026-10-15 17:53:00 +07:00
bflatastic
a25952dc60
Merge #284 : fix(format): exclusive unique staging files for atomic save/export (@notdezzi)
2026-10-15 17:52:58 +07:00
NetterSilver and Claude Haiku 5.5
8e56820168
Fix variable.update scopes: null not resetting to all supported
...
Fixes #443
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 10:14:49 +00:00
NetterSilver and Claude Haiku 5.5
dee13aefc5
Keep hidden export roots from enlarging the exported image
...
Fixes #447
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 11:48:39 +02:00
bflatastic
8c8c00fcba
Merge #283 : fix(engine): Alt-drag copies snap to their original; Cmd+D repeats the step ( #256 ) (@Nael-Nathanael)
2026-10-15 15:09:41 +07:00
bflatastic
f4a7b39731
Merge #444 : Fix Send to back leaving layers above siblings across frames (@Silvertree2010)
...
# Conflicts:
# crates/engine/src/tests.rs
2026-10-15 15:08:45 +07:00
bflatastic
f9b7dcf9d1
Merge #276 : fix(ui): disable alignment when the selection can't be aligned ( #256 ) (@Nael-Nathanael)
2026-10-15 15:08:11 +07:00
bflatastic
36c6cf6bd2
Merge #311 : fix(pages): inherit the current page background when adding pages (M1) (@tylerjenningsw)
...
# Conflicts:
# ROADMAP.md
2026-10-15 15:08:00 +07:00
bflatastic
4ac1d80fe8
Merge #386 : Outline stroke on every selected layer, not just the first (@Silvertree2010)
2026-10-15 15:07:19 +07:00
NetterSilver and Claude Haiku 5.5
7f2f8ee09a
Refuse negative or fractional indexes in page.select and doc.switch
...
Found while testing crates/engine/src/cmd/page.rs:50
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 08:02:06 +02:00
Losminek and Claude Opus 5.5
49a2c643c6
i18n: add Czech (cs) UI catalog as a draft
...
Adds crates/ui-egui/locales/cs.toml with all 2165 entries (ui, commands,
menu), marked "draft — needs native review" and kept out of COMPLETE.
Plurals use one/other only; the other form is worded count-neutral so it
reads correctly for 2-4 as well. Lists cs in the pref.language help text,
adds a cs_CZ.UTF-8 detection test and updates the localization docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 07:01:27 +02:00
NetterSilver and Claude Haiku 5.5
1199f690ad
Fix Send to back leaving layers above siblings across frames
...
Found while testing crates/engine/src/cmd/arrange.rs:327-330
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 06:12:21 +02:00
NetterSilver and Claude Haiku 5.5
3c00ea6440
Outline stroke on every selected layer, not just the first
...
Fixes #378
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 03:41:17 +02:00
NetterSilver and Claude Haiku 5.5
87b9a3a9ce
Reject negative or fractional index in effect.set, export.update and export.remove
...
Found while testing crates/engine/src/cmd/edit.rs:256 (effect.set), :305 (export.update), :317 (export.remove)
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 01:08:36 +00:00
vxMacDev
12d4dbfbc9
fix(engine): new text is readable on the frame it is drawn in ( #362 )
...
The colour of new text in the app was chosen from the page alone, so
on a dark page text drawn in a white frame (a new frame's default) was
white and invisible. readable_text_fills now looks at what the text is
drawn on: the nearest layer from its parent out whose top visible fill
is a mostly opaque solid colour, else the page. The Text tool and
text.create / node.create pass the text's parent.
The two tests that asserted the page-only rule in a frame now expect
black text in a white frame; new cases cover dark, unfilled, nested,
faint and stacked fills, and the Text tool.
2026-10-14 18:35:21 -05:00
NetterSilver and Claude Haiku 5.5
2aa3ca3c45
Make edit.findReplace replace case-insensitive matches
...
Found while testing crates/engine/src/cmd/edit.rs:962-977
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-14 22:26:37 +00:00
NetterSilver and Claude Haiku 5.5
c02e864873
Replace every occurrence in edit.findReplace when replacement contains find
...
Found while testing crates/engine/src/cmd/edit.rs:975-981
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-14 21:22:29 +00:00
midasmatterhorn
65e52aa7b9
engine: long digit strings no longer overflow object.opacityKeys
...
opacity_from_digits multiplied and added on every character of its input
string before the one-or-two-digit check, so "9999999999" overflowed u32 on
the way (panic in debug builds, wrap in release). The scan now steps n with
checked_mul/checked_add and stops (None) at the first character the number
cannot take, so a long digit string is refused like any other bad input.
Test: opacity_digits (engine keymap) covers the ten-digit string and the
command's BadParams refusal.
2026-10-14 23:22:41 +03:00