bflatastic
82568faf3b
Merge main into #1010
2026-10-24 12:54:07 +07:00
bflatastic
a0bd65f7b4
Merge main into #1009
2026-10-24 12:53:58 +07:00
bflatastic
13eba6a3ea
Merge main into #1003
...
# Conflicts:
# crates/engine/src/lib.rs
2026-10-24 12:53:57 +07:00
bflatastic
ede3c634ad
Merge main into #1004
2026-10-24 12:53:55 +07:00
bflatastic
6a172e4e52
Merge main into #1005
2026-10-24 12:53:53 +07:00
bflatastic
7cd4c5216d
Merge main into #1006
2026-10-24 12:53:50 +07:00
bflatastic
be8991d6a8
Merge main into #1011
2026-10-24 12:53:49 +07:00
bflatastic
ce32e07fe0
Merge main into #1008
2026-10-24 12:53:48 +07:00
SusieeTheFemboy and GPT-6 Luna
8989e7b253
Text: Backspace removes Thai and other marks one at a time ( #1220 )
...
Co-Authored-By: GPT-6 Luna <noreply@openai.com >
2026-10-24 06:27:49 +02:00
BFlat
3476f4b1e7
Merge pull request #1244 from storytold/batch/r2-1
...
Community batch r2-1: 63 reviewed PRs
2026-10-24 11:15:53 +07:00
bflatastic
3334ec6c16
Batch r2-1 review: vector_up in smaller helpers (SonarCloud cognitive complexity)
2026-10-24 10:31:10 +07:00
bflatastic
bd80829a27
Batch r2-1 review: a paint keeps its own opacity through unbind and rebind
...
color_alpha is the part of a solid paint's opacity that is its typed colour's alpha, not a flag:
binding a colour variable takes only that part out, unbinding puts the variable's alpha back in,
and REST import records it. A 50% paint bound to a 50% variable stays at 25% bound or not.
2026-10-24 10:30:49 +07:00
a1a842af9a
chore: resolve SonarCloud maintainability issues ( #1241 )
...
* chore: resolve SonarCloud maintainability issues
- Define SHA256_FMT constant in packaging script to remove duplicated string literal (shelldre:S1192)
- Remove redundant 'static lifetime annotations from const items (rust:S8863)
- Replace closures with method and function pointers (rust:S1612)
- Extract helper functions in synthetic document generation, bezier polyline flattening, and component restoration to reduce cognitive complexity (rust:S3776)
* fix(packaging): use verify_sha256 helper function to avoid shellcheck SC2059
* fix(engine): remove duplicate closing brace in large_document
* fix(engine): take &mut Document in restore_id_map; keep 'static on associated consts
restore_id_map allocates ids, so it needs a mutable document. Elided
lifetimes in associated consts trip elided_lifetimes_in_associated_constant,
so those annotations are restored.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
* Assign positional parameters to locals in sha256 verification
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com >
Co-authored-by: Dylan Taylor <dylan@craftmaker.dev >
2026-10-23 23:28:13 -04:00
Logan Jennings
3c2da837f0
engine: stash only closed tabs for group rollback instead of cloning every tab
2026-10-23 22:18:34 -05:00
bflatastic
b35a4e85ab
Merge main and the community batch into #698
...
# Conflicts:
# README.md
# crates/engine/src/cmd/file.rs
# crates/plugin/src/manifest.rs
2026-10-24 10:12:35 +07:00
bflatastic
a44bba56a0
#703 : Cmd/Ctrl-resize crops a layer whose size was bound to a variable as well: the resize detaches the binding ( #809 ), so the new size sticks
2026-10-24 10:09:28 +07:00
bflatastic
caeab4e89e
#703 : an explicit size edit detaches a binding made under the short names w and h too, as it does width and height
2026-10-24 10:09:27 +07:00
bflatastic
86e39cc9c0
#703 : a Cmd/Ctrl-resize crop whose coefficients aren't finite leaves the image fill as it is
2026-10-24 10:04:32 +07:00
bflatastic
ea77e7c38f
Merge main and the community batch into #703
...
# Conflicts:
# ROADMAP.md
# docs/ui-parity.md
2026-10-24 10:03:58 +07:00
bflatastic
2912222c53
#607 : the outline-stroke tests join the engine's one integration test binary (tests/it)
2026-10-24 10:02:53 +07:00
bflatastic
07b3daa738
Merge main and the community batch into #607
...
# Conflicts:
# ROADMAP.md
# docs/gaps.md
# docs/roadmap.md
# docs/target-app-parity.md
2026-10-24 10:01:40 +07:00
bflatastic
6595974a52
#921 : an image layer copied in FigCraft pastes as a layer; another app's image fills a selected layer only when it is newer than our copy
2026-10-24 09:52:54 +07:00
bflatastic
77540d8c73
#921 : a pasted image is added on top of the selected layer's fills; the others keep their variables
2026-10-24 09:52:53 +07:00
bflatastic
0f50e60e35
Merge main and the community batch into #921
...
# Conflicts:
# ROADMAP.md
# docs/ui-parity.md
2026-10-24 09:50:13 +07:00
bflatastic
1ed6447797
#1202 : a double-click inside an open path's or a line's box doesn't edit it (only a closed shape has an inside)
2026-10-24 09:47:34 +07:00
bflatastic
62a3072134
Merge main and the community batch into #1202
...
# Conflicts:
# crates/engine/src/component_codegen.rs
# crates/engine/src/tools.rs
# crates/ui-egui/locales/fi.toml
# crates/ui-egui/locales/nl.toml
# crates/ui-egui/src/dev_mode_tests.rs
# crates/ui-egui/src/shortcuts.rs
# docs/dev-mode-parity.md
# docs/file-format-parity.md
# docs/ui-parity.md
2026-10-24 09:39:52 +07:00
bflatastic
489da09905
Merge #740 : engine: fill rules as vector.fillRule and vector.reverseLoop (@yelintong)
2026-10-24 09:23:50 +07:00
bflatastic
0a99f0fb69
Merge #1032 : M8: save-format tests keep their temp folders apart (@MortenHusted)
2026-10-24 09:23:24 +07:00
bflatastic
75c1586011
Merge #1153 : Match widget data check depth to serde_json's recursion limit (@Silvertree2010)
...
# Conflicts:
# crates/engine/src/plugins.rs
2026-10-24 09:22:12 +07:00
bflatastic
70536a6265
Merge #948 : Keep a solid paint's own opacity when binding a colour variable (@Silvertree2010)
2026-10-24 09:21:42 +07:00
bflatastic
dc0ce6c176
Merge #1181 : Refuse text.loadFont path for plugins (@Silvertree2010)
2026-10-24 09:18:13 +07:00
bflatastic
2a20a4de0a
Merge #1190 : Refuse non-local library paths in the library Cache (@Silvertree2010)
2026-10-24 09:18:10 +07:00
bflatastic
e3c9d3f644
Merge #1191 : Deny library.publishToServer to plugins (@Silvertree2010)
2026-10-24 09:18:07 +07:00
bflatastic
f3782e6bc4
Merge #1023 : fix(engine): show the Pen's Shift 45° step in its preview line ( #970 ) (@vxMacDev)
2026-10-24 09:17:11 +07:00
bflatastic
eada8b0ff3
Merge #1042 : M3: style links given in a call apply after its values (@MortenHusted)
...
# Conflicts:
# crates/engine/src/cmd/props.rs
2026-10-24 09:16:54 +07:00
bflatastic
90e5e03b23
Merge #1160 : M0.9: figcraft-cli export names files as the app's export does ( #1154 ) (@switch87)
2026-10-24 09:16:12 +07:00
bflatastic
15321a56ff
Merge #1198 : fill/stroke props: accept 'none' and null as no paint (@lileeei)
...
# Conflicts:
# ROADMAP.md
2026-10-24 09:16:04 +07:00
bflatastic
6063d3e9a9
Merge #1189 : M4: vector edit transform box around points of several layers (@marcoarnulfo)
...
# Conflicts:
# docs/target-app-parity.md
# docs/ui-parity.md
2026-10-24 09:15:11 +07:00
bflatastic
8eb5624460
Merge #986 : fix: = zooms in, matching - zooming out ( #973 ) (@Ridzzz0Alam)
2026-10-24 09:13:43 +07:00
bflatastic
f31199d4ca
Merge #1018 : M1: a selected unfilled shape drags from inside its box ( #910 ) (@muamerETS)
2026-10-24 09:13:38 +07:00
bflatastic
370faa52da
Merge #1033 : M3: a variant switch takes the new variant's resizing unless the instance set its own (@MortenHusted)
2026-10-24 09:13:33 +07:00
bflatastic
98040b48a5
Merge #1037 : M3: a variable mode set on a layer inside an instance is an override (@MortenHusted)
2026-10-24 09:13:23 +07:00
bflatastic
83f840f802
Merge #1043 : M3: a swapped nested instance keeps its outer main's overrides (@MortenHusted)
2026-10-24 09:13:18 +07:00
bflatastic
2053098e8e
Merge #1200 : The colour picker's eyedropper applies the colour to the paint the picker edits (Reported in storytold/vectorcraft#3342 ) (@marcoarnulfo)
...
# Conflicts:
# crates/engine/src/tools.rs
2026-10-24 09:12:42 +07:00
vetlucasmartins
7a2568fe55
tailwind: emit @theme static; fix assertion precedence in tests
...
Tailwind v4 drops theme variables no utility uses, but page code also
reads tokens through var() and (--name) utilities, so the export keeps
them all. Two test assertions mixed && and || without parentheses.
2026-10-24 00:50:53 +01:00
vetlucasmartins
788d1df7be
Merge remote-tracking branch 'origin/feat/css-export-px' into feat/tailwind-output
2026-10-24 00:47:30 +01:00
vetlucasmartins
90455cc429
token roles: follow alias chains to their end
...
variable.set does not cap alias chains, so propagate until a pass adds
nothing instead of a fixed eight rounds.
2026-10-24 00:43:59 +01:00
vetlucasmartins
3734965cce
Merge remote-tracking branch 'upstream/main' into feat/css-export-px
2026-10-24 00:41:08 +01:00
vetlucasmartins
3a3746d45d
Merge upstream/main into feat/data-fill
2026-10-24 00:33:14 +01:00
vetlucasmartins
601a9701a5
text.fit: keep sizes that fit, respect the floor, skip one-word paragraphs
...
- Text that already fits keeps its exact size; shrunk sizes round to a
tenth but never below minSize (per run, its share of it).
- A last line after a hard break is not an orphan, and the no-break space
is only placed inside the last paragraph.
- docs: data.fill documents formats? and errors?.
2026-10-24 00:32:24 +01:00