Commit Graph
1691 Commits
Author SHA1 Message Date
aiongg e9edc298aa Merge #1283 2026-10-25 02:21:07 +00:00
aiongg cff215a107 Merge #1273 2026-10-25 02:21:07 +00:00
aiongg 996d96580e Merge #1293 2026-10-25 02:21:07 +00:00
Dylan M. TaylorandClaude Sonnet 5.5 9f78875338 security: linear vector import, stroking and rounding, validation, and cyclic dev snapshots (#1306)
* security: linear vector import, stroking and rounding, validation and a cycle check for dev snapshots

Closing a subpath, rounding corners and chaining stroke runs each rescanned the whole
network per step, and Document::validate searched a parent's children per child. They now
update only the current subpath's last segment, rebuild each region loop in one pass, walk
per-vertex adjacency lists, and check edges against a once-built index. A dev snapshot whose
layers contain a cycle under the root is refused instead of reconstructed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(doc): address review findings for snapshot children and 2-segment rounded loops

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 21:17:36 -04:00
dotCooCoo 27fc3cec81 Docs: list each file-format status topic once
The status line of docs/file-format-parity.md repeated eight topics,
from SVG/PDF export depth refusal (#208) to "last major". Each topic is
now listed once, and the boards entry closes its parenthesis.
2026-10-24 10:34:29 -07:00
dotCooCoo 954f9036da Docs: parity rows for mouse-trigger delays, outline options and missing fonts
Three parity rows still listed work that has landed on main. The
prototyping Triggers row listed delays on mouse enter, leave, down and
up as missing; they landed on 2026-10-13. Canvas & navigation's
remaining work in target-app-parity listed outline mode's Include
hidden layers and Include object bounds, which View > Outlines has.
The file-format Fonts row said missing fonts give warnings only; the
desktop app lists them in the Missing fonts window, and replacing them
is still missing.

Each file gets its status line and a revision-history row. The
percentages and hours are unchanged.
2026-10-24 09:19:45 -07:00
dotCooCoo 9f280cb2e0 M3: style variable pickers offer only variables scoped to the field
The variable picker opened from a style's field listed every variable of
the field's type, and the Fill and Stroke style picker's Color variables
listed every color variable, whatever their scopes. Both now offer only
variables scoped to the property, as the Design panel's pickers do. A
paint style's colors take variables scoped to a fill or to strokes, an
effect style's fields take effect variables, and a text style's fields
take the variables of their font property. Layout grid fields still take
any number variable. style.bind still binds a variable outside its
scopes, as variable.bind does.
2026-10-24 05:24:51 -07:00
NetterSilverandClaude Opus 5.5 10702311f3 Require a per-client secret to resume a collab client id (#1193)
Fixes #1054

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:26:27 -04:00
NetterSilverandClaude Opus 5.5 a80df8ed18 Count scalar kiwi fields against the decoded-value budget (#1188)
Fixes #1057

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:26:06 -04:00
NetterSilverandClaude Opus 5.5 35f5faa2e6 Check SVG nesting depth after DTD entity expansion (#1177)
Fixes #1081

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:25:43 -04:00
NetterSilverandClaude Haiku 5.5 8ab0de2690 Keep wrong join-code streak when a correct code is tried (#1174)
Fixes #1088

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 05:25:17 -04:00
NetterSilverandClaude Haiku 5.5 7bc594632d Cap layout.setTrack track count at MAX_TRACKS (#1168)
Fixes #1098

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 05:24:53 -04:00
NetterSilverandClaude Opus 5.5 9c0d1c19fe Restore the clipboard when a command fails and is rolled back (#1167)
Fixes #1100

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:24:29 -04:00
NetterSilverandClaude Haiku 5.5 8864e42dce Clear plugin settings when a plugin id is re-registered (#1159)
Fixes #1116

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 05:24:05 -04:00
NetterSilverandClaude Haiku 5.5 98298a3519 Validate image member names when reading .figcraft archives (#1148)
Fixes #1122

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 05:23:43 -04:00
NetterSilverandClaude Opus 5.5 7df328d1ca Clip Inside/Outside strokes by the shape's even-odd fill rule (#1253)
Found while testing crates/pathops/src/lib.rs:326-333 (stroke_outline_of, StrokeAlign::Inside and Outside arms calling binary(), which uses FillRule::NonZero at :82)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 05:23:23 -04:00
NetterSilverandClaude Haiku 5.5 3a1ddf339c Convert text decoration colour in colour profile conversion (#1247)
Found while testing crates/doc/src/colors.rs:30 (TextStyle::for_each_color_mut, used by TextData, Style and Document::map_colors / set_color_profile)

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-24 05:22:48 -04:00
43a255fe16 Clamp control-channel document.inspect depth to 64 (#1162)
Fixes #1115

Co-authored-by: Claude Haiku 5.5 <noreply@anthropic.com>
Co-authored-by: Dylan M. Taylor <dylan@dylanmtaylor.com>
2026-10-24 05:17:25 -04:00
Dylan M. Taylor cb38f68c0c fix(security): linear docprops reordering and deduplicate restored deletion nodes (#1258)
* fix(security): linear docprops reordering and deduplicate restored deletion nodes

* style: format if-let condition
2026-10-24 04:45:01 -04:00
Dylan M. TaylorandClaude Sonnet 5.5 3739b2863a fix(security): cap COLR layers, PNG glyph dimensions, and layout cache capacity (#1264)
* chore: explicit test imports in engine, part 1 (Sonar S2208)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(security): cap COLR layers, PNG glyph dimensions, and layout cache capacity

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 04:41:31 -04:00
Dylan M. Taylor 0cca56984f fix(security): bound decoration steps, text-on-path elements, and rename expansions (#1257) 2026-10-24 04:39:12 -04:00
Dylan M. Taylor 25d48530a9 fix(security): owner-only recovery permissions, linear cli export suffixing, and web noopener (#1256) 2026-10-24 04:37:38 -04:00
Dylan M. Taylor 996bf871cd fix(security): prevent symlink traversal in asset walker, safe cert tmpdir, and atomic icon copy (#1255) 2026-10-24 04:36:46 -04:00
Dylan M. TaylorandClaude Sonnet 5.5 fdc4f74034 chore: drop redundant 'static lifetimes in consts (Sonar S8863) (#1254)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 04:28:06 -04:00
dotCooCoo b2cb613ef0 Contributors: add dotCooCoo (Robert Lee) 2026-10-24 01:10:25 -07:00
dotCooCoo ce8e9a7d60 M3: apply and detach color variables from Selection colors
A Selection colors row could take a color style but not a color
variable, and a row linked to a style or variable could not be
unlinked from there.

selection.bindColorVariable binds a color variable to every solid fill
and stroke slot a row stands for. It replaces a color style on that
list and any earlier binding of the slot. A text range with fills of
its own takes the variable's value in the layer's modes. Gradients and
slots outside the variable's scopes are refused.
selection.detachColor unlinks the style or variable of a row's slots
and keeps their colors.

In the Design panel, the Styles menu of an unlinked row lists the
document's color variables after its color styles, and a linked row
shows a Detach button in the Styles button's place.
2026-10-24 01:10:25 -07:00
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