bflatastic
f22e2ed825
Merge main into #870
2026-10-20 02:04:33 +07:00
BFlat
a1369310d4
Merge pull request #880 from YarilaFox/feat/figcraft-brand
...
M7: refresh FigCraft brand colors and wordmark
2026-10-20 01:25:12 +07:00
BFlat
b9bfc51273
Merge pull request #831 from YarilaFox/fix/tab-strip-overflow
...
M7: Keep tab strip usable with many files
2026-10-20 01:19:14 +07:00
bflatastic
bf917a4c4f
Merge main into #880
...
# Conflicts:
# crates/ui-egui/src/toolbar.rs
2026-10-20 01:13:35 +07:00
BFlat
b51c9b68d7
Merge pull request #866 from YarilaFox/fix/tab-engine-order
...
M7: Preserve active tab and support tab reordering
2026-10-20 01:11:21 +07:00
BFlat
b23d6b917b
Merge pull request #826 from slyim/fix/toolbar-icon-rhythm
...
M4: toolbar marks share one size and stroke weight; a simpler Slice icon (#737 , #738 , #739 )
2026-10-20 01:08:37 +07:00
BFlat
54ddb2a200
Merge pull request #829 from Silvertree2010/fix/h2788-swiftui-compose-code-generation
...
Keep multiline layer names inside the SwiftUI/Compose too-deep comment
2026-10-20 01:07:34 +07:00
BFlat
6382be2197
Merge pull request #878 from Silvertree2010/fix/h636-live-parse-color-accepts-signs-i
...
Reject non-hex characters in live::parse_color
2026-10-20 01:06:57 +07:00
BFlat
4c21d2df39
Merge pull request #875 from Silvertree2010/fix/h599-overflowing-css-colour-channel-e
...
Clamp overflowing colour channels to 1 instead of 0
2026-10-20 01:06:20 +07:00
bflatastic
3afd896e2e
Merge main into #876
...
# Conflicts:
# crates/collab-net/src/invite_tests.rs
2026-10-20 00:48:30 +07:00
BFlat
0e0c3c7be4
Merge pull request #869 from Silvertree2010/fix/h565-server-address-parser-accepts-a
...
Reject server addresses whose port is not all ASCII digits
2026-10-20 00:47:23 +07:00
BFlat
3ed4578112
Merge pull request #851 from MortenHusted/fix/effect-unknown-keys
...
M3: effects refuse keys they don't read instead of dropping them
2026-10-20 00:46:45 +07:00
bflatastic
16f6b92519
Merge main into #880
2026-10-20 00:46:27 +07:00
BFlat
f3c211eca5
Merge pull request #850 from MortenHusted/fix/make-slot-errors
...
M3: a refused slot names component.makeSlot
2026-10-20 00:46:07 +07:00
bflatastic
088693cfd3
#880 : canvas overlays take the green that stands out on the page; white text stays on the darker green
2026-10-20 00:45:56 +07:00
BFlat
ab5a508538
Merge pull request #849 from MortenHusted/fix/css-stroke-sides
...
M7: CSS borders follow individual stroke sides
2026-10-20 00:45:39 +07:00
bflatastic
b29e17f5c0
Merge main into #842
...
# Conflicts:
# crates/engine/src/variables_behaviour_tests.rs
2026-10-20 00:25:18 +07:00
BFlat
458cd5b141
Merge pull request #817 from muamerETS/fix/copy-text-as-plain-text
...
M1: copying text layers puts their text on the clipboard (#808 )
2026-10-20 00:24:07 +07:00
BFlat
7ca8c80a8f
Merge pull request #814 from muamerETS/fix/layout-remove-gap-binding
...
M3: removing auto layout drops its gap and padding bindings (#810 )
2026-10-20 00:23:28 +07:00
BFlat
409de1a762
Merge pull request #871 from justinjohn0306/fix/809-scalar-bound-edits
...
M3: explicit edits of bound scalar fields detach their variable (#809 )
2026-10-20 00:10:09 +07:00
BFlat
ba496eddca
Merge pull request #811 from MortenHusted/fix/bound-paint-edits-detach
...
M3: an explicit paint edit detaches the variable bound to what it changed
2026-10-19 23:59:18 +07:00
BFlat
ec512a7767
Merge pull request #807 from MortenHusted/fix/wrap-error-command
...
M1: wrap errors name the command that was run
2026-10-19 23:58:39 +07:00
bflatastic
17da39a5ea
Merge main into #870
2026-10-19 23:42:15 +07:00
bflatastic
113d7ec106
#831 : overflow menu lists open files with the shared menu rows (active checked); drop the falling close animation; update tab motion in place instead of cloning it every frame
2026-10-19 23:37:27 +07:00
YarilaFox
5a4b7c2795
M7: make brand accents legible and fix home tests
2026-10-19 20:51:47 +05:00
bflatastic
e1da3f36bb
Merge fix/830
2026-10-19 22:49:46 +07:00
bflatastic
80c8c7fa87
#830 : "Couldn't read {name}." in every full catalog
2026-10-19 22:39:25 +07:00
bflatastic
b744ff3e14
#830 : cap files read in the browser at 512 MiB, and say why a file isn't opened
2026-10-19 22:39:23 +07:00
bflatastic
0008fc7901
#878 : move the parse_color test into live_tests
2026-10-19 22:18:15 +07:00
bflatastic
479313bf67
Merge main into #830
2026-10-19 22:13:15 +07:00
bflatastic
25899735a8
Merge main into #819
2026-10-19 22:12:58 +07:00
bflatastic
09427e72be
#871 : text style shortcuts and text.set detach the bound field they change
2026-10-19 22:09:05 +07:00
bflatastic
46ce6102d8
Merge main into #829
2026-10-19 22:08:02 +07:00
bflatastic
1e1b59280d
Merge main into #849
2026-10-19 22:07:53 +07:00
bflatastic
97cd06fd14
Merge main into #842
2026-10-19 22:07:50 +07:00
bflatastic
ee99a89e08
Merge main into #817
2026-10-19 22:07:49 +07:00
bflatastic
9c7b315301
Merge main into #814
2026-10-19 22:07:48 +07:00
bflatastic
b55f009198
Merge main into #811
2026-10-19 22:07:45 +07:00
bflatastic
ca3832c0d9
Merge main into #807
2026-10-19 22:07:44 +07:00
YarilaFox
4b12a82839
M7: refresh FigCraft brand colors and wordmark
2026-10-19 19:43:58 +05:00
NetterSilver and Claude Haiku 5.5
258d6f61c0
Reject non-hex characters in live::parse_color
...
Found while testing crates/engine/src/live.rs:85
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 14:49:19 +02:00
NetterSilver and Claude Haiku 5.5
df42e380f2
Reject non-hex characters inside invite link percent escapes
...
Found while testing crates/collab-net/src/invite.rs:242 (percent_decode)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 12:37:21 +00:00
NetterSilver and Claude Haiku 5.5
ccddaa74cd
Clamp overflowing colour channels to 1 instead of 0
...
Found while testing crates/color/src/lib.rs:63 (clamp01, used by Color::new via parse_css at :155-166)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 12:27:23 +00:00
justinjohn0306 and Claude Opus 5.5
6a163721dc
M3: explicit edits of bound scalar fields detach their variable ( #809 )
...
An explicit edit of a bound width, height, opacity, gap, padding, corner
radius, stroke weight, arc or text field reported ok, but normalize wrote
the variable's value straight back. Now the edit sticks and that field's
binding is dropped, as paint edits already do.
- `styles::bound_before` / `detach_edited`: compare each layer-level
bound field's stored value before and after the edit (`bound_field`),
so keys written unchanged keep their bindings and fields moved along
with another (proportions, min/max) lose theirs. A binding the edit
itself made (`boundVariables`) stays. List and component property
bindings are left to their own rules.
- Hooked into node.set, transform.resize, object.opacityKeys, text.style
and `Session::preview` (canvas drags of the selected layers).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 17:33:29 +05:30
MortenHusted and Codex
0108a7c2f5
M3: copied components paste as instances within their file
...
Co-Authored-By: Codex (GPT-6) <noreply@openai.com >
2026-10-19 13:34:40 +02:00
NetterSilver and Claude Haiku 5.5
b7c9c712b1
Reject server addresses whose port is not all ASCII digits
...
Found while testing crates/collab-net/src/invite.rs:valid_host (around line 205)
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-19 11:21:34 +00:00
YarilaFox
2af54a26fb
M7: keep tab strip usable with many files
2026-10-19 14:23:04 +05:00
YarilaFox
d2dfe2ef20
M7: preserve active tab and support tab reordering
2026-10-19 14:21:52 +05:00
slyim and Claude Opus 5.5
be212f00e6
#826 : the stroke-width test covers the Frame and Text marks
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-19 11:25:34 +03:00
MortenHusted and Claude Opus 5.5
6f90717e71
M3: effects refuse keys they don't read instead of dropping them
...
node.set refuses unknown properties, but the effects inside it were read
by serde, which drops keys it doesn't know. A drop shadow given
offsetX/offsetY (the names variable bindings use for its offset) was
stored with the default offset [0, 4] and the call said ok. effect.add
and effect.set dropped them the same way.
The three now refuse what the effect doesn't read and say what it
takes: "effects[0]: unknown properties: offsetX, offsetY (a dropShadow
takes blend, color, offset, radius, showBehind, spread, type, visible)".
A key counts as read when setting it to null makes the effect fail to
parse or come out different, so serde's aliases count as read without a
list of them here.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-18 23:53:05 +02:00