Commit Graph
1684 Commits
Author SHA1 Message Date
bflatastic cf0ebbe27e Merge main into #2319 2026-11-14 01:14:26 +07:00
bflatastic 62c5f8c17a Merge main into #2335 2026-11-14 00:59:04 +07:00
bflatastic 8e3c46b27d Merge main into #2319 2026-11-14 00:57:58 +07:00
bflatastic 4f38875087 Merge main into #2335 2026-11-14 00:42:26 +07:00
bflatastic c768dd7e4e Merge main into #2319 2026-11-14 00:41:20 +07:00
bflatastic e581dcba99 Merge main into #2298 2026-11-14 00:40:14 +07:00
Trevor BrownandClaude Opus 5.5 02b6280a75 Merge upstream/main into fix/align-auto-layout-child
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 12:36:32 -05:00
Trevor BrownandClaude Opus 5.5 32f5fd01c4 Merge upstream/main into feat/tidy-up-figma-rule
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 12:36:27 -05:00
Trevor BrownandClaude Opus 5.5 33e611d82a Merge upstream/main into fix/crop-from-picker-2307
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 12:36:23 -05:00
bflatastic 7fe1e67cf2 Merge main into #2291 2026-11-14 00:19:03 +07:00
bflatastic 66974c94b8 Merge main into #2335 2026-11-14 00:05:53 +07:00
bflatastic 87d5f993f7 Merge main into #2319 2026-11-14 00:04:47 +07:00
bflatastic 43f56a6dd3 Merge main into #2298 2026-11-14 00:03:42 +07:00
bflatastic c138c26ccc Merge main into #2291 2026-11-14 00:03:09 +07:00
bflatastic 0bf58651bf Merge main into #2285 2026-11-14 00:02:36 +07:00
BFlat ec18cc67cb Merge pull request #2320 from TrevorBrown-dev/fix/native-code-every-fill-2271
M10: SwiftUI, Compose and Flutter code export writes every colour and gradient fill, in paint order (#2271)
2026-11-14 00:00:13 +07:00
bflatastic 0475ceec26 Merge main into #2335 2026-11-13 23:45:42 +07:00
bflatastic e352aa8d61 Merge main into #2319 2026-11-13 23:44:35 +07:00
bflatastic cae4a71c0c Merge main into #2308 2026-11-13 23:43:29 +07:00
bflatastic 8ab984c258 Merge main into #2298 2026-11-13 23:42:55 +07:00
bflatastic 35aa524f8a Merge main into #2291 2026-11-13 23:42:21 +07:00
bflatastic 4ad2c52b28 Merge main into #2285 2026-11-13 23:41:48 +07:00
bflatastic aef88e0197 Merge main into #2320 2026-11-13 23:39:40 +07:00
bflatastic 8932347ef8 Merge main into #2139 2026-11-13 23:23:44 +07:00
bflatastic e1647fba6a Merge main into #2139 2026-11-13 23:04:53 +07:00
bflatastic 953383fff8 Merge main into #2331 2026-11-13 22:54:24 +07:00
BFlat c56d5d22ad Merge pull request #2327 from TrevorBrown-dev/fix/mind-map-parent-default
M12: a mind map in a section or frame without a place starts at the view's centre
2026-11-13 22:51:44 +07:00
BFlat 1f7e6e0482 Merge pull request #2321 from TrevorBrown-dev/fix/flutter-space-distribution-spacing
M10: Flutter code writes no spacing beside a space distribution
2026-11-13 22:48:28 +07:00
bflatastic 71e063de9f Merge main into #2139 2026-11-13 22:47:03 +07:00
BFlat 1448a91a54 Merge pull request #2086 from TrevorBrown-dev/fix/snap-threshold-measured
Smart guides: objects snap within 4.5 screen pixels, as measured in Figma
2026-11-13 22:45:56 +07:00
BFlat ec524f6cd3 Merge pull request #2315 from TrevorBrown-dev/fix/css-layered-background-2271
M10: CSS code export writes several fills as one layered background, top first, as Figma does (#2271)
2026-11-13 22:44:32 +07:00
BFlat ce7de19097 Merge pull request #2294 from TrevorBrown-dev/fix/fig-list-start-2273
M6: .fig import: a numbered list keeps its start only where it starts counting (#2273)
2026-11-13 22:41:46 +07:00
Trevor BrownandClaude Sonnet 5.5 e335ce7b73 Merge upstream/main into feat/select-layer-locked-1560
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 10:39:59 -05:00
Trevor BrownandClaude Sonnet 5.5 794a940aa1 Merge upstream/main into fix/align-auto-layout-child
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 10:39:45 -05:00
BFlat ebc0260017 Merge pull request #2289 from TrevorBrown-dev/feat/sticky-size-menu
M12: Boards: a sticky's text-size menu (Small 16 to Huge 96), remembered for new stickies
2026-11-13 22:39:41 +07:00
Trevor BrownandClaude Sonnet 5.5 cdef36b543 Merge upstream/main into feat/polygon-count-handle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 10:39:31 -05:00
Trevor BrownandClaude Sonnet 5.5 74bc74e4f6 Merge upstream/main into feat/tidy-up-figma-rule
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 10:38:49 -05:00
Trevor BrownandClaude Sonnet 5.5 95c909a9f6 Merge upstream/main into fix/crop-from-picker-2307
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 10:38:19 -05:00
bflatastic ae2e4799d7 Merge main into #2285 2026-11-13 22:35:39 +07:00
bflatastic 83a0177310 Merge main into #2139 2026-11-13 22:29:54 +07:00
bflatastic 91d2caf9df Merge main into #2086 2026-11-13 22:29:18 +07:00
BFlat 6fb76233ec Merge pull request #2087 from TrevorBrown-dev/feat/variables-duplicate-group-2084
Variables: Duplicate group copies a group's variables as "<name> 2" in one undo step
2026-11-13 22:27:09 +07:00
Trevor BrownandClaude Opus 5.5 bdf6ff9223 M8: after Crop is chosen in the image fill's menu, a drag on the image crops it, and no internal gesture message shows (#2307)
With the colour picker open on an image fill in Crop mode, a press on the layer closed the picker, and closing it committed the drag as a plain move: the whole layer moved instead of the picture inside it. The picker now treats a crop drag as its own control, as it does the open gradient's handles (#1852), so the press doesn't close it and the drag moves the crop.

A drag whose gesture something else committed under the held button went on calling the engine's preview, whose "no gesture in progress" error reached the canvas as a message. That error is now its own EngineError::NoGesture, which the canvas drops: the drag it belonged to is over, and it says nothing to the user.

Tests: crop_image_tests::crop_from_the_colour_picker_then_a_drag_on_the_image_moves_the_crop_not_the_layer (failed before: the crop didn't move) and a_drag_whose_gesture_was_committed_under_the_button_shows_no_message (failed before: "no gesture in progress").

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove and finished; Sonnet 5.5 wrote at medium (cut off by an API error)
2026-11-13 05:38:36 -05:00
Trevor BrownandClaude Opus 5.5 1a68ded581 M8: Tidy up keeps the second layer after a narrow first one when the gap is negative
raise_negative_gap raised a negative gap from the interior widths only, so a first layer narrower than the gap's size let the second start before it (widths 10, 100 x5 at X 0, 80, 200, 260, 400, 460: the modal -40 gave X 0, -30, 30, ...). The second must start after the first, g > -w(0), in whole pixels floor(-w(0)) + 1. Figma kept the order in every measured run; a narrow first layer was not measured, so this bound keeps the order rather than follow a reading. Test: tidy_tests::a_narrow_first_layer_still_keeps_the_second_after_it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove and wrote
2026-11-13 01:43:34 -05:00
Denis GomesandClaude Opus 5.5 c74bcd0b0e M1: Paste over selection puts the copies just above the selected layer
Shift+Cmd/Ctrl+V pasted into the selected layer's parent at its top-left,
but appended the copies, so they went to the top of the parent's layers
whatever was selected. In an auto layout frame that put them at the end of
the flow, away from the layer they were pasted over.

They now go just above the selected layer, in the copied order: in the
Layers panel the row above it, in an auto layout frame the item after it.
A section pasted over a layer in a frame still goes on the page, on top
of its layers, as before. Paste to replace already kept the replaced
layer's place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 01:41:48 -05:00
Trevor BrownandClaude Sonnet 5.5 e0e57dd42a M12: a mind map in a section or frame without a place is centred on the view
board.mindMap's default x and y came from the view's centre, which is on the page, but x and y are the root's place in its parent: under a section at (1000, 500) the map landed 1000 right and 500 down of the view's centre. The default now takes the centre through the parent's inverse world transform (a parent that can't be inverted gives a non-finite centre, which the coordinate check refuses). Explicit x and y stay parent-local. Tests: two in board_mindmap_tests (a section; a frame turned 30 degrees, with a given place carried through the frame).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 wrote at medium
2026-11-13 00:45:11 -05:00
Trevor BrownandClaude Sonnet 5.5 a7a9e62721 M8: Tidy up takes a row whose layers overlap in a chain, and raises a negative gap so no layer reaches the one two before it, as in Figma
Measured in Figma's web app on 2026-11-13. Co-Authored-By below.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Opus 5.5 briefed; Sonnet 5.5 measured and wrote at medium
2026-11-13 00:00:02 -05:00
Trevor BrownandClaude Opus 5.5 3be1a6a60b Merge upstream/main into feat/select-layer-locked-1560
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 22:19:23 -05:00
Trevor BrownandClaude Opus 5.5 7d94fa78e9 Merge upstream/main into fix/mirror-sharp-point-2110
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 22:06:21 -05:00
Trevor BrownandClaude Opus 5.5 be49412330 Merge upstream/main into fix/align-auto-layout-child
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 22:02:21 -05:00