Commit Graph
1603 Commits
Author SHA1 Message Date
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
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 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
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 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 Sonnet 5.5 7057fbf3a5 Merge upstream/main into feat/variables-duplicate-group-2084
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-12 20:41:57 -05:00
Trevor BrownandClaude Opus 5.5 a0a0570d64 Merge upstream/main into feat/tidy-up-figma-rule
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 20:36:50 -05:00
NetterSilverandClaude Opus 5.5 7b34dbab00 Keep library links working when the project folder is moved or cloned (#2132)
Fixes #2122

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-13 01:48:30 +01:00
Trevor BrownandClaude Sonnet 5.5 3d22c606a7 M10: Tailwind mobile merge keeps a max-width both frames share (#2272) (#2296)
inspect.code {language: "tailwind", mobile} dropped every mobile max-width and put the desktop one behind lg:, so a fixed-size layer that is the same size on both frames (a 48 x 48 badge) stretched to the full width below 1024 px. A mobile max-width that equals the desktop one is now kept as a plain class, with no lg: copy. A differing max-width still goes fluid on mobile with the desktop cap behind lg:.

Tests: the issue's two frames (a 1440 and a 390 page, each with a 48 x 48 badge) keep max-w-[48px] unprefixed, and a page-wide banner still gets its lg: cap only. The slashed-names test gave the CTAs frame the same 342 px on both frames, which the new rule rightly keeps, so its desktop frame is now 600 px wide. docs/mcp.md notes the rule.


Model-Effort: Opus 5.5 drove; Fable 5.2 queued; Opus 5.5 briefed; Sonnet 5.5 wrote at medium

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-13 01:44:17 +01:00
NetterSilverandClaude Haiku 5.5 04a6c76a9b Return an error for non-numeric miterLimit, cornerSmoothing and paragraph props (#2303)
Found while testing crates/engine/src/cmd/props.rs:660 (also :710, :984, :985)

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-11-13 01:42:52 +01:00
Trevor BrownandClaude Opus 5.5 477f004400 Merge upstream/main into fix/mirror-sharp-point-2110
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-12 19:39:01 -05:00
Trevor BrownandClaude Sonnet 5.5 d3f7ae9029 M8: Tidy up rounds the gap, tidies overlapping rows and grids along their longer axis, as measured
Third Figma run (web app, 2026-11-12): the mean gap rounds half up (X 0, 60, 135, 215 gives 0, 72, 144, 216; 0, 60, 135 gives 0, 68, 136); a tie between repeated gaps takes the smaller; a row is one row group of layers and may overlap along X, a negative gap counting in the mean (X 0, 60, 105, 170 gives 0, 57, 114, 171); a grid is packed along the axis with more groups (2 x 3 by centred columns, 3 x 2 by centred rows); a diagonal, an irregular layout and layers that all overlap are unavailable. The earlier cell rule is removed.

Choices, not measured: a 2 x 2 grid as columns, auto layout flow children unavailable, the 2,000 layer cap, rotated layers by their box, spacing with two layers, no rounding with Snap to pixel grid off. Grid positions along a stack can differ by a pixel from Figma's (it read 52 and 51 for the same mean 51.67).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.2 briefed; Sonnet 5.5 measured and wrote at medium
2026-11-12 16:32:48 -05:00
Trevor BrownandClaude Sonnet 5.5 cfd6bf5273 M8: Tidy up keeps the order and sizes and evens the gaps, as measured in Figma
Measured in Figma's web app on 2026-11-12 (top-level rectangles): a row, a column and a 2 x 3 grid of unequal sizes, eight runs on the gap, and the cases where Tidy up is greyed out (fewer than three layers, overlapping layers). Figma keeps the order, the sizes and the first layer, evens one gap per axis (the most common existing gap, else the mean taken down to a whole number) and tidies a grid by columns.

Choices, not measured: the smaller of two equally common gaps, a mean ending in .5 going down, gaps a pixel apart differing, a diagonal being a row, a grid with an empty place, a grid always read by columns, one overlapping pair making it unavailable, auto layout flow children making it unavailable, the 2,000 layer cap, rotated layers by their box, spacing with two layers, and no rounding with Snap to pixel grid off. A selection that is none of a row, a column or a grid keeps the earlier rule unchanged.

The Design panel's Tidy up row is greyed out with a tip when unavailable; the command then moves nothing and adds no undo step.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.2 briefed; Sonnet 5.5 measured and wrote at medium
2026-11-12 16:18:06 -05:00
Trevor BrownandClaude Sonnet 5.5 3d781caa92 Merge remote-tracking branch 'upstream/main' into feat/variables-duplicate-group-2084
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-12 05:00:10 -05:00
bflatastic 12b293efe5 Merge main into #2200 2026-11-12 14:04:50 +07:00
bflatastic 23db6dbddb Merge main into #2192 2026-11-12 13:14:43 +07:00
bflatastic 39b7c54766 Merge main into #2200 2026-11-12 13:13:38 +07:00
bflatastic d656417b02 Merge main into #2192 2026-11-12 12:57:51 +07:00
bflatastic 0bfb944d4d Merge main into #2200 2026-11-12 12:56:45 +07:00
bflatastic b6b9b2995f Merge main into #2224 2026-11-12 12:56:12 +07:00
bflatastic 007f495e89 Merge main into #2192 2026-11-12 12:41:50 +07:00
bflatastic 50d2d63090 Merge main into #2200 2026-11-12 12:40:43 +07:00
bflatastic 77fcc564a3 Merge main into #2224 2026-11-12 12:40:10 +07:00
bflatastic 997e022ecf Merge main into #2121 2026-11-12 12:39:36 +07:00
bflatastic 80f4f36290 Merge main into #2192 2026-11-12 12:26:15 +07:00
bflatastic 8cb527bd21 Merge main into #2200 2026-11-12 12:25:09 +07:00
bflatastic 5549c4cc2e Merge main into #2224 2026-11-12 12:24:36 +07:00
bflatastic 09a128525a Merge main into #2241 2026-11-12 12:24:03 +07:00
bflatastic 7f0e94508d Merge main into #2121 2026-11-12 12:23:30 +07:00
bflatastic a6f98591d3 Merge main into #2147 2026-11-12 12:22:57 +07:00
bflatastic 405c0939ca Merge main into #2192 2026-11-12 12:10:34 +07:00
bflatastic 8e04a4ab10 Merge main into #2200 2026-11-12 12:09:15 +07:00
bflatastic 04c7856d1b Merge main into #2224 2026-11-12 12:08:42 +07:00
bflatastic 24e0cd5d7c Merge main into #2241 2026-11-12 12:08:09 +07:00
bflatastic 05c666add5 Merge main into #2096 2026-11-12 12:07:36 +07:00
bflatastic 2d5729e7ee Merge main into #2121 2026-11-12 12:06:52 +07:00
bflatastic b742d7464b Merge main into #2147 2026-11-12 12:05:53 +07:00
bflatastic 477b75a753 Merge main into #2224 2026-11-12 11:41:20 +07:00
bflatastic 3cd2b85819 Merge main into #2241 2026-11-12 11:40:47 +07:00
bflatastic e892788a62 Merge main into #2147 2026-11-12 11:39:02 +07:00
bflatastic 4e0a2e2a35 Merge main into #2200 2026-11-12 11:34:51 +07:00
bflatastic 30cf2c9200 Merge main into #2096 2026-11-12 11:34:17 +07:00
bflatastic ae6e6231c6 Merge main into #2121 2026-11-12 11:33:43 +07:00
bflatastic 7d860329a2 Merge main into #2244 2026-11-12 11:30:59 +07:00
bflatastic a7cb701705 Merge main into #2192 2026-11-12 11:29:18 +07:00
BFlat 9fd0bb6918 Merge pull request #2175 from TrevorBrown-dev/fix/table-resize-2172
M12: a board table's height change goes into its rows (#2172)
2026-11-12 11:25:27 +07:00
bflatastic 6bbd92856c Merge main into #2224 2026-11-12 11:24:51 +07:00
bflatastic 16bf97d538 Merge main into #2241 2026-11-12 11:24:18 +07:00
bflatastic 68b261a76b Merge main into #2147 2026-11-12 11:23:43 +07:00
BFlat a49817259d Merge pull request #2106 from TrevorBrown-dev/fix/arrow-pan-step-measured
View: the arrow keys pan 64 px, 320 with Shift, as measured in Figma
2026-11-12 11:22:17 +07:00