Commit Graph
570 Commits
Author SHA1 Message Date
bflatastic ebca682595 Merge main into #2224 2026-11-12 11:12:04 +07:00
Trevor BrownandClaude Opus 5.5 71723cd428 Merge upstream/main into feat/text-style-font-weight-2174
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:38:54 -05:00
Trevor BrownandClaude Opus 5.5 132c6e9686 Merge upstream/main into fix/boolean-corner-radius-2222
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-11 20:38:29 -05:00
Trevor BrownandClaude Opus 5.5 20f02bb7c1 M12: Boards: mind maps in the document and engine (#2226, step 1) (#2228)
* M9: Boards: mind maps in the document and engine (#2226)

Part of #2226, step 1 of 4. A mind map node is a board object of its own (BoardItem::MindNode: a frame hugging its text, no box) and a branch is a connector marked `branch`; the tree is read from the branches alone. `board.mindMap` places a first node with three children and `board.mindMapAdd` adds a child or a sibling, each one undo step. The normalize pass (`board::settle_mind_maps`, `figcraft_doc::mind_layout`) lays a touched map out again from its first node: 88 between columns, 48 between siblings, each stack centred on its parent; a branch that no longer joins two layers of its page is removed. Branches are curved, stroke 4, #757575, round caps. Numbers are from a FigJam map saved and decoded. No toolbar entry, shortcuts or import yet.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.1 designed; Sonnet 5.5 wrote at medium

* M12: Mind maps: a map around its own container stays put; a moved branch re-flows its old map (#2226)

A map holding a layer and something inside it is skipped by the settle pass (it never settled). Every touched branch now stirs its old ends, so re-attaching a branch's start re-flows the map it left. Boards without branches return early, a map over MIND_MAX_NODES is left whole, shift skips non-finite moves, and the doc tests share one six-node helper.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.1 reviewed; Sonnet 5.5 wrote at medium

* M12: Mind maps: FigCraft's own starter texts (#2226)

A new map's starter children read "Idea 1", "Idea 2" and "Idea 3", as the design specified,
instead of the incumbent's wording, which the first commit had copied from the measurement.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove and wrote

* M12: Docs: the mind-map revision rows go in the revision history (#2226)

The 2026-11-10 rows sat in ROADMAP.md's Headline numbers table and docs/roadmap.md's Alpha gate
table; each now opens its file's revision history.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove and wrote

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-12 00:47:05 +01:00
Trevor BrownandClaude Opus 5.5 bae366ba51 M4: Boolean groups: test the one-radius panel through corner smoothing (#2222)
The field test's "no field per corner" check passed for any shape, since corner fields are built
only while the individual-corners popover is open. A boolean group's button now has its own test
beside the polygons' (shared helper): it is named Corner smoothing, opens no corner fields, and
sets the smoothing in one undo step. ROADMAP's status line reads minor, as the other docs do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove and wrote; Fable 5.1 reviewed
2026-11-10 13:53:13 -05:00
Trevor BrownandClaude Sonnet 5.5 529134b850 M4: a boolean group's corner radius rounds its result (#2222)
A boolean group takes a corner radius (and corner smoothing): the Design panel shows the field for it, `node.set cornerRadius` writes it, and the renderer rounds every sharp corner of the group's result after the fold, convex and concave alike. Layers inside keep their own radius and do not stack with it, a radius larger than the edges allow shrinks to fit while the field keeps the typed value, Flatten bakes the arcs, and a mixed selection reads Mixed. Measured in Figma's web app on 2026-11-10.

The rounded result is cached apart from the fold (keyed by the folded path, radius and smoothing), so scrubbing the radius never redoes the boolean steps. The .fig and REST importers and the .fig exporter now carry the radius and smoothing of a boolean group, and paste properties and radius variables reach it. Docs: ui-parity, target-app-parity, gaps, file-format-parity, ROADMAP, mcp.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.1 designed; Sonnet 5.5 wrote at medium
2026-11-10 13:36:10 -05:00
Trevor BrownandClaude Sonnet 5.5 281918e2f2 M7: Text styles: a face name bound after a weight clears the axis; review fixes (#2174)
A style's fontStyle binding now goes through set_font_style, so it drops the stale wght axis a weight binding left behind. Also: a test and doc line for the token_roles weight role, the apply-order comment, the weight chip opening the weight picker, junk weight values pinned, fixture assertions fixed, and the ROADMAP and parity status lines.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.1 reviewed; Sonnet 5.5 wrote at medium
2026-11-10 13:09:35 -05:00
Trevor BrownandClaude Sonnet 5.5 ccb33e0bbc M7: Text styles: bind a number variable to the weight (#2174)
A text style takes a Number variable on `fontWeight` (`style.bind`): the style gets the face nearest the number and sets the `wght` axis, so static and variable fonts both follow. A bound weight and a bound face name replace each other, and the weight wins in a file carrying both. The style editor's weight menu offers number variables beside string ones, and a variable bound to a weight is Unitless in the CSS export. A number bound to a line height stays pixels, as the reference tool applies it; a test pins that.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Model-Effort: Opus 5.5 drove; Fable 5.1 designed; Sonnet 5.5 wrote at medium
2026-11-10 12:43:24 -05:00
skylar taylor-barrick a2e87433d8 Naming: Developer Mode follow-ups (#2165)
* Naming: record Developer Mode in the feature-names doc and the stage paragraph

docs/feature-names.md gains the entry for the rename: the old label, the new one, Figma's
US registration for DEV MODE (7574348) as the reason with its TSDR record, the identifiers
that keep their names, and the translations that moved from a generic "dev mode" to the
developer mode. The stage paragraph in ROADMAP.md listed the mode as Dev Mode.

* Actions palette: put each search doc comment back on its function

search_text had grown a second doc line under matches's, so the sentence about the query sat
above a function that takes none. search_text now says what it reads and matches keeps its own.
2026-11-09 15:44:02 +01:00
skylar taylor-barrick 3839fe4a0c Naming: use Developer Mode instead of Figma's Dev Mode (#2135)
Figma holds a US registration for DEV MODE (US 7574348). Display text only: the view.devMode label, Inspect tab, shortcut row, refusal messages, CLI help, docs and all locale catalogs now say Developer Mode. Command ids, preference keys and saved fields are unchanged; "Dev Mode" stays a search alias in the Actions palette. Adds a naming guard test.
2026-11-09 06:24:44 +01:00
bflatastic 9278ee5451 Merge main into #1729 2026-11-07 12:14:41 +07:00
bflatastic 1546d29a66 Merge main into #1729 2026-11-07 12:07:03 +07:00
bflatastic f1eb55f58b Merge main into #1772 2026-11-07 11:56:11 +07:00
bflatastic bc47bcd17a Merge main into #1772 2026-11-07 11:41:20 +07:00
bflatastic a6f6c42886 Merge remote-tracking branch 'origin/main' into landb/1913 2026-11-07 11:28:35 +07:00
bflatastic f4f16f1ba1 Merge main into #1913 2026-11-07 10:57:11 +07:00
Trevor BrownandClaude Fable 5.1 ea1ae05d16 Merge upstream/main into feat/suggest-auto-layout-1823
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-06 22:39:35 -05:00
BFlat e603c341ff Merge pull request #2025 from TrevorBrown-dev/feat/variables-multi-select-2002
M3: the Local variables window selects several variables with Shift and Cmd/Ctrl, and acts on them at once (#2002)
2026-11-07 11:30:52 +08:00
bflatastic af0c1b2ba7 Merge main into #2050 2026-11-07 10:01:19 +07:00
bflatastic 05530b794e Merge main into #2049 2026-11-07 09:42:38 +07:00
Trevor BrownandClaude Fable 5.1 fd1a78bbb8 Local variables: the docs say bulk actions skip inherited variables (#2002)
Delete, Move to group and Scope act on the selected local variables; inherited ones are left out and the bulk menu needs two or more local variables selected.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-06 21:41:58 -05:00
Trevor BrownandClaude Fable 5.1 4dae256074 Merge upstream/main into feat/suggest-auto-layout-1823
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-06 21:39:54 -05:00
Trevor BrownandClaude Fable 5.1 47c5796ed5 Merge upstream/main into feat/variables-multi-select-2002
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-06 21:39:51 -05:00
bflatastic 905144708b Merge main into #2050 2026-11-07 09:35:50 +07:00
bflatastic e47c91e131 Merge main into #2048 2026-11-07 09:21:25 +07:00
bflatastic 748a75cdd3 Merge main into #2050 2026-11-07 09:20:52 +07:00
BFlat 5b39d5deaa Merge pull request #2018 from TrevorBrown-dev/fix/ui-script-fallbacks-2014
M10: the UI takes a system face for Ethiopic, the Indic scripts and the other scripts its fonts lack (#2014)
2026-11-07 10:14:14 +08:00
bflatastic 7af6a46f58 Merge main into #2048 2026-11-07 09:11:03 +07:00
bflatastic a632d63602 Merge main into #2049 2026-11-07 09:10:44 +07:00
bflatastic cd3c3a2fd4 Merge main into #2050 2026-11-07 09:10:30 +07:00
BFlat 8ea82be66b Merge pull request #2047 from StrajnarFilip/claude/fix-1906-minimised-control
M8: a minimised window under Wayland answers control requests (#1906)
2026-11-07 10:09:09 +08:00
bflatastic f98036456b Merge main into #2020 2026-11-07 09:01:23 +07:00
bflatastic 21c6f1ae17 Merge main into #2025 2026-11-07 09:00:50 +07:00
bflatastic 1c57967484 Merge main into #2018 2026-11-07 09:00:16 +07:00
bflatastic 562d83c161 Merge main into #2048 2026-11-07 09:00:13 +07:00
bflatastic c7570645e8 Merge main into #2050 2026-11-07 08:59:37 +07:00
BFlat 47b5979ef0 Merge pull request #2012 from TrevorBrown-dev/feat/text-direction-1830
M4: a paragraph's base direction can be forced: Text ▸ Text direction ▸ Left to right / Right to left (#1830)
2026-11-07 09:58:59 +08:00
bflatastic a93ce619ee Merge main into #2020 2026-11-07 08:58:24 +07:00
bflatastic 88f6986bda Merge main into #2049 2026-11-07 08:58:17 +07:00
bflatastic bb26014a7a Merge main into #2048 2026-11-07 08:57:59 +07:00
bflatastic 48fbffd25b Merge main into #2025 2026-11-07 08:57:50 +07:00
bflatastic 32f2f119f9 Merge main into #2050 2026-11-07 08:57:25 +07:00
bflatastic 3b1fc77ba1 Merge main into #2018 2026-11-07 08:57:17 +07:00
bflatastic e65c46761a Merge main into #1913 2026-11-07 08:55:12 +07:00
bflatastic 79d6335c90 Merge main into #2047 2026-11-07 08:54:47 +07:00
bflatastic a170ca7e3e Merge main into #1913 2026-11-07 08:45:02 +07:00
Trevor BrownandClaude Fable 5.1 aae6f55592 Merge upstream/main into fix/ui-script-fallbacks-2014
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-06 20:44:15 -05:00
bflatastic 7e9a853da6 Merge main into #2047 2026-11-07 08:43:16 +07:00
bflatastic 22abeefae2 Merge main into #2048 2026-11-07 08:41:38 +07:00
bflatastic 8523dd43b4 Merge main into #2050 2026-11-07 08:41:04 +07:00