BFlat
70227e30fc
Merge pull request #1009 from lucasmartins-ai/feat/data-fill
...
data.fill and text.fit: fill copies of a frame from rows of data
2026-10-24 14:17:14 +07:00
BFlat
127247433a
Merge pull request #1004 from kkilchrist/feat-1001-vector-path
...
node.set: accept `path` to replace a vector's geometry
2026-10-24 14:17:06 +07:00
BFlat
448019c43a
Merge pull request #1005 from kkilchrist/fix-992-reparent-index
...
node.reparent: index is the layer's final position
2026-10-24 14:16:56 +07:00
BFlat
6d91528d2a
Merge pull request #915 from Hamza0101/fix/mcp-inspect-bound
...
MCP: inspect_document answers within what a client can read
2026-10-24 14:16:48 +07:00
BFlat
62e1e57626
Merge pull request #1006 from kkilchrist/fix-993-boolean-default-main
...
Show a boolean property's default on the main component's bound layers
2026-10-24 14:16:37 +07:00
BFlat
a111638378
Merge pull request #1008 from lucasmartins-ai/feat/css-export-px
...
variable.export css: number lengths in px
2026-10-24 14:16:29 +07:00
bflatastic
9f766dcbf7
Merge main into #1009
2026-10-24 13:47:22 +07:00
BFlat
e3e39bbc4d
M6: Dev Mode measurements kept on the canvas, a read-only layers panel ( #1248 )
...
* M6: Dev Mode measurements kept on the canvas, a read-only layers panel
Measurements placed between two layers, along a side or to the layer
around one (devMode.addMeasurement / removeMeasurement / measurements),
stored on the layer they start from (saved, synced, undoable; old files
open without them), drawn in Dev Mode as labelled redlines that follow
the layers and listed, placed and removed in the Inspect tab. In Dev Mode
the layers panel only selects and expands.
* M6: Dev Mode measurements: explicit imports, a measurement row of its own (Sonar)
2026-10-24 13:33:26 +07:00
bflatastic
d9d9e1d978
#1009 : Dev Mode refuses data.fill, a design edit recorded as one grouped step
2026-10-24 13:02:11 +07:00
bflatastic
a7b7dfe1c4
#1009 : data.fill refused before it copies or writes in a read-only live file
2026-10-24 13:01:55 +07:00
bflatastic
35fada1161
#1009 : data.fill and text.fit in smaller helpers (Sonar)
2026-10-24 13:01:48 +07:00
bflatastic
5376e4d25d
#1009 : explicit imports
2026-10-24 13:01:47 +07:00
bflatastic
bc0f61eeee
#1004 : a size given with a new path still fixes its auto layout axis
2026-10-24 13:01:46 +07:00
bflatastic
b00d12b623
#915 : get_node refuses a layer too large for maxBytes on its own; a window only an offset made says it is paging
2026-10-24 13:01:33 +07:00
bflatastic
b6f5c29d19
#915 : MCP get_node pages past a child too large for the limit and keeps the truncation marker
2026-10-24 12:58:10 +07:00
bflatastic
91af3782e0
#915 : the inspect response-limit tests join the MCP crate's one test binary (tests/it, as on main since #1208 )
2026-10-24 12:57:58 +07:00
bflatastic
e1117d2a3c
#1008 : token_roles names its imports
2026-10-24 12:57:42 +07:00
bflatastic
a0bd65f7b4
Merge main into #1009
2026-10-24 12:53:58 +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
1b41d129e6
Merge main into #915
2026-10-24 12:53:52 +07:00
bflatastic
7cd4c5216d
Merge main into #1006
2026-10-24 12:53:50 +07:00
bflatastic
ce32e07fe0
Merge main into #1008
2026-10-24 12:53:48 +07: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
9f60f5470d
Batch r2-1 review: status lines and rows in ROADMAP, prototyping and UI parity
2026-10-24 10:31:31 +07:00
bflatastic
8af2efd1b9
Batch r2-1 review: U+2007 glues beside ideographs too
2026-10-24 10:31:29 +07:00
bflatastic
d0db758684
Batch r2-1 review: SVG ids unique as written; a filled open curve closes for its fill
2026-10-24 10:31:26 +07:00
bflatastic
31d4c6eba4
Batch r2-1 review: per-side strokes follow smoothed corners for every alignment
2026-10-24 10:31:24 +07:00
bflatastic
c45c693278
Batch r2-1 review: a report reason blank after cleaning is refused
2026-10-24 10:31:22 +07:00
bflatastic
d114c6ed92
Batch r2-1 review: CLI export file names stay within 200 bytes
2026-10-24 10:31:19 +07:00
bflatastic
46b02d44e6
Batch r2-1 review: paste_nodes refuses two nodes mapped to one new id
2026-10-24 10:31:17 +07:00
bflatastic
5d7eb04d44
Batch r2-1 review: the hello and close-drain deadlines bound every read
...
Duplex::read_until gives a reader a deadline: each socket read waits at most what's left of it.
The server reads the handshake and hello under the hello deadline, so a hello trickled in
fragments can't outlast it; manage's close drains under CLOSE_DRAIN, so a silent server can't
hold it for the idle timeout.
2026-10-24 10:31:15 +07:00
bflatastic
aac76ebeca
Batch r2-1 review: Save on close waits a frame for a panel field to commit
...
A click on Save takes the keyboard from a focused panel field, which commits next frame: the files
save then, as the field-save shortcut does. OsStr::to_str as a method reference (SonarCloud).
2026-10-24 10:31:13 +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
8dcba0684b
Batch r2-1 review: .fig export grid sizing in helpers; instance layers clear inherited track sizes
...
auto_layout's grid branch moves to grid_layout and grid_sizing (SonarCloud cognitive complexity).
unset() clears gridColumnsSizing and gridRowsSizing, so an instance layer with equal tracks no
longer reads back its main layer's track sizes.
2026-10-24 10:31:08 +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
bflatastic
1f9effd25d
#660 : a file saved as Proto.figcraft presents as Proto (titles follow file names on main)
2026-10-24 09:34:40 +07:00
bflatastic
f00b62ba2d
Merge fix: the server store tests keep each test closed
2026-10-24 09:26:44 +07:00
bflatastic
9fb88b6668
Merge #904 : M1: write grid track sizes in .fig export ( #465 ) (@xiaou61)
...
# Conflicts:
# docs/file-format-parity.md
2026-10-24 09:24:04 +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
550c3e8bbb
Merge #905 : M1: say that the automation roots reach only the headless side ( #835 ) (@xiaou61)
2026-10-24 09:23:48 +07:00
bflatastic
fac42785c1
Merge #1158 : FreeBSD: package the aarch64 cross build (craft-common-actions#39) (@zuujiscom)
2026-10-24 09:23:45 +07:00
bflatastic
ba8b608673
Merge #660 : M5: one presentation tab per page of a file (@JimKnoxx)
...
# Conflicts:
# docs/prototyping-parity.md
2026-10-24 09:23:43 +07:00
bflatastic
21a334b3ef
Merge #976 : fix(ui): keep the style picker open while editing a style's colour (@kollakek1)
2026-10-24 09:23:29 +07:00
bflatastic
075f5bfc98
Merge #1197 : Regression test for #237 (@skylartaylor)
2026-10-24 09:23:26 +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
2577f53e2c
Merge #1212 : Control server: wait after a failed accept instead of retrying at once (@oracola91)
2026-10-24 09:23:21 +07:00
bflatastic
53b8b531ce
Merge #1031 : Treat U+2007 FIGURE SPACE as non-breaking in line breaking (@Silvertree2010)
2026-10-24 09:23:18 +07:00
bflatastic
771a0060b6
Merge #1038 : Keep literal true/false distinct from variables named true/false (@Silvertree2010)
...
# Conflicts:
# crates/doc/src/proto_expr_parse_tests.rs
2026-10-24 09:23:15 +07:00
bflatastic
60e1ef9976
Merge #1041 : Keep not <var> from reading back as a variable named 'not
' (@Silvertree2010)
2026-10-24 09:23:02 +07:00
bflatastic
a5e8d256e6
Merge #1052 : Drop XML-forbidden control characters from live-text SVG export (@Silvertree2010)
2026-10-24 09:23:00 +07:00
bflatastic
3610a7cb12
Merge #1142 : Write a final Greek sigma in lower-case text layout (@Silvertree2010)
2026-10-24 09:22:57 +07:00
bflatastic
378c015eb3
Merge #1145 : Remove all leftover temp files at server startup (@Silvertree2010)
...
# Conflicts:
# apps/figcraft-server/src/store_tests.rs
2026-10-24 09:22:54 +07:00
bflatastic
53e61e2a5d
Merge #1146 : Guard file generation increments against u64 overflow (@Silvertree2010)
...
# Conflicts:
# apps/figcraft-server/src/store_tests.rs
2026-10-24 09:22:42 +07:00
bflatastic
3774f9e51d
Merge #1149 : Bound the library/plugins close drain with a deadline (@Silvertree2010)
2026-10-24 09:22:28 +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
52afac49fe
Merge #1164 : Reject non-finite coordinates in control-channel ui.input (@Silvertree2010)
2026-10-24 09:21:48 +07:00
bflatastic
f4541d8b24
Merge #1147 : Restrict a pre-existing data directory to 0700 (@Silvertree2010)
2026-10-24 09:21:45 +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
d93b806323
Merge #1151 : Never drop Sync events when the live inbox is full (@Silvertree2010)
2026-10-24 09:21:39 +07:00
bflatastic
ef6a6c49b2
Merge #1185 : Make is_ancestor fail closed on deep or looping parent chains (@Silvertree2010)
...
# Conflicts:
# crates/doc/src/tests.rs
2026-10-24 09:21:37 +07:00
bflatastic
82004c6e9c
Merge #1187 : Cap the issue list returned by Document::validate (@Silvertree2010)
2026-10-24 09:21:24 +07:00
bflatastic
15fd9fe1bf
Merge #1192 : Strip bidi control characters from names and report reasons (@Silvertree2010)
...
# Conflicts:
# apps/figcraft-server/src/store_tests.rs
2026-10-24 09:21:04 +07:00
bflatastic
6b37d779e0
Merge #1195 : Accept a version string for the plugin manifest api field (@Silvertree2010)
2026-10-24 09:20:03 +07:00
bflatastic
fed124fa77
Merge #1238 : Fix duplicate SVG ids when a layer name matches a generated id (@Silvertree2010)
...
# Conflicts:
# crates/svg/src/tests.rs
2026-10-24 09:20:00 +07:00
bflatastic
f109945c47
Merge #1165 : Make SVG unique_id linear for repeated layer names (@Silvertree2010)
2026-10-24 09:19:41 +07:00
bflatastic
404916a949
Merge #1169 : Refuse library versions that leave no newer one to publish (@Silvertree2010)
2026-10-24 09:19:38 +07:00
bflatastic
b5a8dcb059
Merge #1230 : Honour even-odd fill rule when hit testing vectors (@Silvertree2010)
...
# Conflicts:
# crates/doc/src/tests.rs
2026-10-24 09:19:18 +07:00
bflatastic
fcace33059
Merge #1178 : Enforce per-address storage caps per IPv6 /64, /56 and /48 (@Silvertree2010)
2026-10-24 09:18:28 +07:00
bflatastic
45a3069dce
Merge #1175 : Keep the hello size limit until a connection is admitted (@Silvertree2010)
2026-10-24 09:18:25 +07:00
bflatastic
f0a7037a53
Merge #1183 : Enforce an absolute pre-hello deadline against ping slowloris (@Silvertree2010)
2026-10-24 09:18:22 +07:00
bflatastic
d40ec98ef6
Merge #1182 : Shut kicked and removed connections when their close can't be queued (@Silvertree2010)
2026-10-24 09:18:19 +07:00
bflatastic
00074d0041
Merge #1186 : Stop stale next_id from making pastes overwrite existing nodes (@Silvertree2010)
2026-10-24 09:18:16 +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
243728b758
Merge #1196 : Don't run the expiry sweep from offline CLI commands (@Silvertree2010)
2026-10-24 09:18:03 +07:00
bflatastic
c7062db387
Merge #1171 : Never overwrite a file's log when it can't be read (@Silvertree2010)
2026-10-24 09:17:59 +07:00
bflatastic
ad5d502200
Merge #1014 : M7: keep keyboard focus inside the Interface size menu (@YarilaFox)
2026-10-24 09:17:56 +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
adc8e81826
Merge #1161 : M0.9: --help and -h after a figcraft-cli subcommand print the usage ( #1155 ) (@switch87)
2026-10-24 09:16:07 +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
1e4a31a303
Merge #1199 : M3: instance-swap properties in the Dev Mode component playground (@marcoarnulfo)
2026-10-24 09:15:41 +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
8f9e2fedc7
Merge #1047 : M7: Type settings keeps its width with long labels ( #1029 ) (@AganzeFelicite)
...
# Conflicts:
# ROADMAP.md
2026-10-24 09:14:10 +07:00
bflatastic
07191c881d
Merge #1030 : M1: individual corner fields sit at their corners, each with its own icon ( #1002 ) (@muamerETS)
2026-10-24 09:13:48 +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
ab5a62387b
Merge #1034 : M6: SVG import fills open subpaths the way SVG does (@MortenHusted)
2026-10-24 09:13:28 +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
d394e952c6
Merge #1044 : M4: individual stroke weights follow the corner radius like CSS borders (@MortenHusted)
2026-10-24 09:13:13 +07:00
bflatastic
ac5783d0cd
Merge #1135 : M5: prototype actions lay out what they change like the canvas does (@MortenHusted)
...
# Conflicts:
# docs/prototyping-parity.md
2026-10-24 09:13:08 +07:00
bflatastic
293ab33eaa
Merge #1166 : M7: Cmd/Ctrl+S saves while a panel field has the keyboard ( #1157 ) (@switch87)
2026-10-24 09:12:49 +07:00
bflatastic
90f401d73c
Merge #1173 : M8: the unsaved-changes question on close offers Save ( #1170 ) (@switch87)
2026-10-24 09:12:45 +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
bflatastic
2c9f5267a9
Merge #1232 : M5: a top-level frame taller than the device scrolls without an overflow setting (@seltzdesign)
2026-10-24 09:11:46 +07:00