Commit Graph
2691 Commits
Author SHA1 Message Date
AganzeFelicite 374ebdb0b9 docs: record the vector edit marquee fix (#1508) 2026-10-29 11:24:30 +02:00
AganzeFelicite 3e0e00c3fd test(vector): a marquee starts anywhere on the canvas (#1508) 2026-10-29 11:16:33 +02:00
AganzeFelicite 24a512793c M4: a drag anywhere in vector edit mode draws a marquee (#1508)
A press more than a few pixels from the edited shape left edit mode at
once, so a drag over another layer moved that layer. The press now
starts a marquee; released without a drag it still leaves edit mode and
replays the click to the normal tool.
2026-10-29 11:16:33 +02:00
BFlat 3d5185c2ab M0.9: web wasm back under the 24 MiB gate (#1472) (#1511)
The browser build's wasm was 25,982,540 bytes, past the gate raised for 0.12.1. It is now
23,915,213 bytes (22.8 MiB), 1.2 MiB under the restored 24 MiB gate:

- Catalog rows keep their plural forms behind a reference: Text is two words, not room for
  four strings, across ~52,000 baked-in rows (-454 KB).
- The browser build compiles with wasm SIMD (apps/figcraft-web/.cargo/config.toml, wasm-opt
  --enable-simd), so egui's glyph rasterizer leaves out its scalar SIMD fallback (-1.6 MB).
  The plugin workspace is built from the repository root and stays without SIMD.
- Revert the gate raise (cb227c97); the hosting guide names the WebAssembly SIMD requirement.
2026-10-29 16:14:40 +07:00
BFlat 1df9190d0c M3: shadows of images with transparent pixels follow their alpha (#1289) (#1509)
* M3: shadows of images with transparent pixels follow their alpha (#1289)

A drop shadow on an image fill was hidden behind the layer's whole box, so a
transparent PNG's shadow only showed outside its bounding box. Fills that
paint their own alpha (patterns; images with transparent pixels or that leave
part of the box empty) now cast and hide drop shadows, and shade inner
shadows, by the layer's pixels, like groups. Opaque pictures keep their
outline. Each image is scanned for transparency once. Canvas, PNG, SVG and PDF.

* M3: the image shadow tests import their names explicitly (#1289)
2026-10-29 15:43:08 +07:00
BFlat 7ba22fb2b6 M1: Crop image from the Object menu, the right-click menu and the image fill row (#1464) (#1501)
* M1: Crop image from the Object menu, the right-click menu and the image fill row (#1464)

* M1: crop mode shows the image dimmed outside the layer and heavier crop marks (#1464)

* M1: the handle overlay draws gradients and crops in their own helpers (#1464)
2026-10-29 15:07:21 +07:00
NetterSilverandClaude Haiku 5.5 31d7d5ca7e Keep full precision in export size labels so they parse back
Found while testing crates/doc/src/props.rs:1341 (ExportSize::label, via trim_num at crates/doc/src/text.rs:62)

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 09:06:47 +01:00
BFlat 7c9184b023 docs: rows from the round-4 community PRs (#858, #1409, #1397, #1389, #1143, #1427, #1421) (#1504) 2026-10-29 14:48:37 +07:00
BFlat fe7b4bac63 Merge pull request #1143 from Guillergood/feat/penpot-import-export
M6: import and export Penpot 2.x files offline
2026-10-29 14:20:14 +07:00
Ahmed Mahmoud f3017259ff Merge branch 'main' into feat/guide-snapping 2026-10-29 10:08:31 +03:00
BFlat cabf8641fb Merge pull request #1409 from avhn/feat/1386-batch-continue
M0.9: let batches continue after failed steps (#1386)
2026-10-29 14:04:46 +07:00
BFlat 99575f215d Merge pull request #1427 from muamerETS/fix/1385-alt-mid-drag-duplicate
M1: Alt pressed during a drag turns the move into a copy (#1385)
2026-10-29 14:02:06 +07:00
BFlat 68169b8146 Merge pull request #1421 from avhn/feat/1000-variable-props
M3: bind fill and stroke variables directly in layer props (#1000)
2026-10-29 14:01:40 +07:00
BFlat e1c7879957 Merge pull request #1360 from denisg0mes/place-images-at-own-size
M7: place images at their own size, in points for 2x screenshots
2026-10-29 13:52:42 +07:00
BFlat f2d90da58d Merge pull request #1389 from sarsonj/fix/sketch-import-rundogo
M6: Sketch import (#1021 follow-up): match Sketch's renders rule by rule
2026-10-29 13:52:26 +07:00
BFlat b625e48381 Merge pull request #858 from yelintong/feat/panel-grid
M4: the Design panel's sections on the design's 240 pt grid
2026-10-29 13:52:05 +07:00
BFlat 3a82058083 Merge pull request #1397 from StrajnarFilip/codex/fix-1341-figjam-import
M6: Preserve FigJam sticky notes and shapes with text on import
2026-10-29 13:51:49 +07:00
bflatastic 0a6642747a Merge main into #1143
file.open and file.export docs: main's (reload, export options) plus the Penpot format.
2026-10-29 13:51:11 +07:00
Ahmed Mahmoud eedc66bddc M1: address guide snapping review findings
Hidden containers hide their whole branch from snapping, the 5 px reach is converted through the owner's scaled axis so a zoomed frame snaps at 5 screen pixels, and a click on a guide only selects it. Tests cover all three in guide_snap_tests.rs.

Signed-off-by: Ahmed Mahmoud <ahmedmhmouad41@gmail.com>
2026-10-29 09:47:11 +03:00
bflatastic e89def2068 Merge main into #1409 2026-10-29 13:46:42 +07:00
bflatastic c87be091ac Merge main into #1421
apply_order takes #1458's numbering; a $var wrapper ranks 7, after boundVariables.
2026-10-29 13:46:39 +07:00
bflatastic 7158419698 Merge main into #1427 2026-10-29 13:42:33 +07:00
BFlat c2a6b71020 Merge pull request #1459 from MortenHusted/fix/system-font-names
M7: CSS system font names draw in macOS's System Font
2026-10-29 13:41:53 +07:00
BFlat c2c720087c Merge pull request #1408 from avhn/feat/996-node-find
M0.9: find layer ids without changing the selection (#996)
2026-10-29 13:41:43 +07:00
BFlat 3be354d227 Merge pull request #1461 from MortenHusted/fix/open-file-reload
M1: opening a file that is already open says when it changed on disk, and can read it again (#997)
2026-10-29 13:41:21 +07:00
BFlat f3e7db0b2a Merge pull request #1460 from MortenHusted/fix/unknown-params
M0.9: commands, MCP tools and batch steps refuse names they don't take (#1413)
2026-10-29 13:40:58 +07:00
bflatastic 08ac26299e Merge main into #1143 2026-10-29 13:39:41 +07:00
bflatastic 75b4b5a72b Merge main into #1389 2026-10-29 13:39:38 +07:00
bflatastic a2fb40e3ef Merge main into #1397 2026-10-29 13:39:34 +07:00
bflatastic d4aae905a2 Merge main into #1409 2026-10-29 13:39:30 +07:00
bflatastic 50826b3a32 Merge main into #858 2026-10-29 13:38:45 +07:00
BFlat 9b441ae916 Merge pull request #789 from yelintong/feat/popover
M4: a generic popover —  a 40-high header, dragged by its header
2026-10-29 13:38:12 +07:00
BFlat 8dc3ab5703 Merge pull request #669 from yelintong/feat/flutter-codegen
M7: Flutter code generation
2026-10-29 13:37:49 +07:00
BFlat 299c1d5f59 Merge pull request #1458 from MortenHusted/fix/layout-key-order
M2: auto layout settings in one call don't depend on how their keys are spelled
2026-10-29 13:37:32 +07:00
bflatastic 0bac4f5083 Merge main into #1360 2026-10-29 13:36:26 +07:00
BFlat 611ff941f0 Merge pull request #634 from Skyfuller1303/feat/fig-vector-region-fills
M4: preserve vector region fills across .fig import and native rendering
2026-10-29 13:35:07 +07:00
samhyunandClaude Fable 5.1 f0996645b1 M8: the browser applies input sent over its control channel
`ui.input` over `window.figcraft` (the page's control channel, `?control`) never did anything in
the browser: the batch was queued for the next frame as on the desktop, but the browser shell
has no `raw_input_hook`, the eframe callback that hands a queued batch to the frame about to
draw (`windows::take_input`). The events stayed in their queue and the request's promise never
settled, so an agent driving the page could run commands and take screenshots but not point,
click or type.

The browser shell now has the hook the desktop app has: the batch goes into the frame's raw
input, is applied by it and is acknowledged once the frame is presented, as on the desktop.

Checked in Chrome on the release web build: `ui.input` with a key (O, R, F: the ellipse,
rectangle and frame tools) and with a pointer gesture (a drag with the rectangle tool: a
rectangle drawn) resolves and takes effect, where on `main` the same requests time out and
change nothing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-29 15:34:14 +09:00
BFlat 1497d8ddc4 Merge pull request #1210 from yelintong/feat/nav-toolbar
ui: rebuild the toolbar pill on a 32 pt grid, without the Resources button
2026-10-29 13:34:02 +07:00
Ahmed Mahmoud 475a7da502 M1: guides snap to layer edges and centres when dragged
Dragging a guide, or moving one, now snaps to nearby layer edges and centres on the guide's own axis: within 5 screen pixels, gated by Snap to Objects and suspended with Cmd/Ctrl. Page guides see the page's top-level layers; frame guides see the frame's box, its layout grids and every visible layer inside it, in the frame's own space.

Snapping sits in the interaction path (canvas/guides.rs, not guide.add/guide.move) so the commands stay deterministic for the control channel and MCP. Tests: guide_snap_tests.rs in the engine and ui-egui crates; docs/ui-parity.md updated.

Signed-off-by: Ahmed Mahmoud <ahmedmhmouad41@gmail.com>
2026-10-29 09:00:47 +03:00
bflatastic 4b743fee95 #1143: split add_layer (an importer context instead of 19 arguments and its allow), import_themed_tokens and the exporter's shape for cognitive_complexity 2026-10-29 12:54:49 +07:00
bflatastic 1e22268602 Merge main into #1143 2026-10-29 12:44:42 +07:00
bflatastic 67c69f86b6 #634: drop the removed import warning from the Arabic catalog 2026-10-29 12:40:47 +07:00
bflatastic 2a63418d57 #634: region fills drawn by their own helper, and the long region-paint test split by case, for cognitive_complexity 2026-10-29 12:28:47 +07:00
bflatastic 789fa33444 Merge main into #634 2026-10-29 12:25:06 +07:00
bflatastic f6407b1ba0 Merge main into #1389 2026-10-29 12:24:46 +07:00
bflatastic 65d6424bb6 Merge main into #1397 2026-10-29 12:24:45 +07:00
bflatastic dde58e35b9 Merge main into #1427
# Conflicts:
#	docs/roadmap.md
2026-10-29 12:24:43 +07:00
bflatastic fc6ea73154 Merge main into #1421
# Conflicts:
#	crates/engine/src/cmd/props.rs
#	docs/roadmap.md
2026-10-29 12:24:32 +07:00
bflatastic c6c11471db Merge main into #1408
# Conflicts:
#	crates/engine/src/cmd/edit.rs
#	docs/roadmap.md
2026-10-29 12:23:48 +07:00
bflatastic c5ba6dd2e8 Merge main into #1409
# Conflicts:
#	crates/engine/src/session/undo.rs
#	docs/roadmap.md
2026-10-29 12:23:11 +07:00