Commit Graph
1633 Commits
Author SHA1 Message Date
bflatastic f68f748418 M12: boards dot grid: blending a dot in a function of its own (Sonar) 2026-10-24 14:19:14 +07:00
bflatastic 99b45d8e52 Merge remote-tracking branch 'origin/main' into feat/board-canvas
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
2026-10-24 13:34:14 +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 762277fb7d M12: boards dot grid, re-attaching connector ends, curved connectors
Board pages draw a dot grid in the canvas render, after the page colour
and under the layers (figcraft_render::Dots), thinned out when zoomed out
and coloured from the theme's ink against the page. A selected connector
shows its ends as handles; dragging one onto an object re-attaches it,
onto empty canvas leaves it free (board.reattach, one undo step, also
over MCP). Connectors can be curved, and elbows go around the objects
they join when the short way would cross them.
2026-10-24 11:20:05 +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
bflatastic 9f60f5470d Batch r2-1 review: status lines and rows in ROADMAP, prototyping and UI parity 2026-10-24 10:31:31 +07:00
bflatastic 8af2efd1b9 Batch r2-1 review: U+2007 glues beside ideographs too 2026-10-24 10:31:29 +07:00
bflatastic d0db758684 Batch r2-1 review: SVG ids unique as written; a filled open curve closes for its fill 2026-10-24 10:31:26 +07:00
bflatastic 31d4c6eba4 Batch r2-1 review: per-side strokes follow smoothed corners for every alignment 2026-10-24 10:31:24 +07:00
bflatastic c45c693278 Batch r2-1 review: a report reason blank after cleaning is refused 2026-10-24 10:31:22 +07:00
bflatastic d114c6ed92 Batch r2-1 review: CLI export file names stay within 200 bytes 2026-10-24 10:31:19 +07:00
bflatastic 46b02d44e6 Batch r2-1 review: paste_nodes refuses two nodes mapped to one new id 2026-10-24 10:31:17 +07:00
bflatastic 5d7eb04d44 Batch r2-1 review: the hello and close-drain deadlines bound every read
Duplex::read_until gives a reader a deadline: each socket read waits at most what's left of it.
The server reads the handshake and hello under the hello deadline, so a hello trickled in
fragments can't outlast it; manage's close drains under CLOSE_DRAIN, so a silent server can't
hold it for the idle timeout.
2026-10-24 10:31:15 +07:00
bflatastic aac76ebeca Batch r2-1 review: Save on close waits a frame for a panel field to commit
A click on Save takes the keyboard from a focused panel field, which commits next frame: the files
save then, as the field-save shortcut does. OsStr::to_str as a method reference (SonarCloud).
2026-10-24 10:31:13 +07:00
bflatastic 3334ec6c16 Batch r2-1 review: vector_up in smaller helpers (SonarCloud cognitive complexity) 2026-10-24 10:31:10 +07:00
bflatastic 8dcba0684b Batch r2-1 review: .fig export grid sizing in helpers; instance layers clear inherited track sizes
auto_layout's grid branch moves to grid_layout and grid_sizing (SonarCloud cognitive complexity).
unset() clears gridColumnsSizing and gridRowsSizing, so an instance layer with equal tracks no
longer reads back its main layer's track sizes.
2026-10-24 10:31:08 +07:00
bflatastic bd80829a27 Batch r2-1 review: a paint keeps its own opacity through unbind and rebind
color_alpha is the part of a solid paint's opacity that is its typed colour's alpha, not a flag:
binding a colour variable takes only that part out, unbinding puts the variable's alpha back in,
and REST import records it. A 50% paint bound to a 50% variable stays at 25% bound or not.
2026-10-24 10:30:49 +07:00
a1a842af9a chore: resolve SonarCloud maintainability issues (#1241)
* chore: resolve SonarCloud maintainability issues

- Define SHA256_FMT constant in packaging script to remove duplicated string literal (shelldre:S1192)
- Remove redundant 'static lifetime annotations from const items (rust:S8863)
- Replace closures with method and function pointers (rust:S1612)
- Extract helper functions in synthetic document generation, bezier polyline flattening, and component restoration to reduce cognitive complexity (rust:S3776)

* fix(packaging): use verify_sha256 helper function to avoid shellcheck SC2059

* fix(engine): remove duplicate closing brace in large_document

* fix(engine): take &mut Document in restore_id_map; keep 'static on associated consts

restore_id_map allocates ids, so it needs a mutable document. Elided
lifetimes in associated consts trip elided_lifetimes_in_associated_constant,
so those annotations are restored.

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

* Assign positional parameters to locals in sha256 verification

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Dylan Taylor <dylan@craftmaker.dev>
2026-10-23 23:28:13 -04:00
aiongg c668e21759 PDF: write with craft-libs' krilla, which bounds decoded PNGs (#1240)
* PDF: write with craft-libs' krilla, which bounds decoded PNGs

* PDF: pin craft-libs' krilla at 9f75d3dc
2026-10-23 22:46:21 -04:00
bflatastic 1f9effd25d #660: a file saved as Proto.figcraft presents as Proto (titles follow file names on main) 2026-10-24 09:34:40 +07:00
bflatastic f00b62ba2d Merge fix: the server store tests keep each test closed 2026-10-24 09:26:44 +07:00
bflatastic 9fb88b6668 Merge #904: M1: write grid track sizes in .fig export (#465) (@xiaou61)
# Conflicts:
#	docs/file-format-parity.md
2026-10-24 09:24:04 +07:00
bflatastic 489da09905 Merge #740: engine: fill rules as vector.fillRule and vector.reverseLoop (@yelintong) 2026-10-24 09:23:50 +07:00
bflatastic 550c3e8bbb Merge #905: M1: say that the automation roots reach only the headless side (#835) (@xiaou61) 2026-10-24 09:23:48 +07:00
bflatastic fac42785c1 Merge #1158: FreeBSD: package the aarch64 cross build (craft-common-actions#39) (@zuujiscom) 2026-10-24 09:23:45 +07:00
bflatastic ba8b608673 Merge #660: M5: one presentation tab per page of a file (@JimKnoxx)
# Conflicts:
#	docs/prototyping-parity.md
2026-10-24 09:23:43 +07:00
bflatastic 21a334b3ef Merge #976: fix(ui): keep the style picker open while editing a style's colour (@kollakek1) 2026-10-24 09:23:29 +07:00
bflatastic 075f5bfc98 Merge #1197: Regression test for #237 (@skylartaylor) 2026-10-24 09:23:26 +07:00
bflatastic 0a99f0fb69 Merge #1032: M8: save-format tests keep their temp folders apart (@MortenHusted) 2026-10-24 09:23:24 +07:00
bflatastic 2577f53e2c Merge #1212: Control server: wait after a failed accept instead of retrying at once (@oracola91) 2026-10-24 09:23:21 +07:00
bflatastic 53b8b531ce Merge #1031: Treat U+2007 FIGURE SPACE as non-breaking in line breaking (@Silvertree2010) 2026-10-24 09:23:18 +07:00
bflatastic 771a0060b6 Merge #1038: Keep literal true/false distinct from variables named true/false (@Silvertree2010)
# Conflicts:
#	crates/doc/src/proto_expr_parse_tests.rs
2026-10-24 09:23:15 +07:00
bflatastic 60e1ef9976 Merge #1041: Keep not <var> from reading back as a variable named 'not …' (@Silvertree2010) 2026-10-24 09:23:02 +07:00
bflatastic a5e8d256e6 Merge #1052: Drop XML-forbidden control characters from live-text SVG export (@Silvertree2010) 2026-10-24 09:23:00 +07:00
bflatastic 3610a7cb12 Merge #1142: Write a final Greek sigma in lower-case text layout (@Silvertree2010) 2026-10-24 09:22:57 +07:00
bflatastic 378c015eb3 Merge #1145: Remove all leftover temp files at server startup (@Silvertree2010)
# Conflicts:
#	apps/figcraft-server/src/store_tests.rs
2026-10-24 09:22:54 +07:00
bflatastic 53e61e2a5d Merge #1146: Guard file generation increments against u64 overflow (@Silvertree2010)
# Conflicts:
#	apps/figcraft-server/src/store_tests.rs
2026-10-24 09:22:42 +07:00
bflatastic 3774f9e51d Merge #1149: Bound the library/plugins close drain with a deadline (@Silvertree2010) 2026-10-24 09:22:28 +07:00
bflatastic 75c1586011 Merge #1153: Match widget data check depth to serde_json's recursion limit (@Silvertree2010)
# Conflicts:
#	crates/engine/src/plugins.rs
2026-10-24 09:22:12 +07:00
bflatastic 52afac49fe Merge #1164: Reject non-finite coordinates in control-channel ui.input (@Silvertree2010) 2026-10-24 09:21:48 +07:00
bflatastic f4541d8b24 Merge #1147: Restrict a pre-existing data directory to 0700 (@Silvertree2010) 2026-10-24 09:21:45 +07:00
bflatastic 70536a6265 Merge #948: Keep a solid paint's own opacity when binding a colour variable (@Silvertree2010) 2026-10-24 09:21:42 +07:00
bflatastic d93b806323 Merge #1151: Never drop Sync events when the live inbox is full (@Silvertree2010) 2026-10-24 09:21:39 +07:00
bflatastic ef6a6c49b2 Merge #1185: Make is_ancestor fail closed on deep or looping parent chains (@Silvertree2010)
# Conflicts:
#	crates/doc/src/tests.rs
2026-10-24 09:21:37 +07:00
bflatastic 82004c6e9c Merge #1187: Cap the issue list returned by Document::validate (@Silvertree2010) 2026-10-24 09:21:24 +07:00
bflatastic 15fd9fe1bf Merge #1192: Strip bidi control characters from names and report reasons (@Silvertree2010)
# Conflicts:
#	apps/figcraft-server/src/store_tests.rs
2026-10-24 09:21:04 +07:00
bflatastic 6b37d779e0 Merge #1195: Accept a version string for the plugin manifest api field (@Silvertree2010) 2026-10-24 09:20:03 +07:00
bflatastic fed124fa77 Merge #1238: Fix duplicate SVG ids when a layer name matches a generated id (@Silvertree2010)
# Conflicts:
#	crates/svg/src/tests.rs
2026-10-24 09:20:00 +07:00
bflatastic f109945c47 Merge #1165: Make SVG unique_id linear for repeated layer names (@Silvertree2010) 2026-10-24 09:19:41 +07:00
bflatastic 404916a949 Merge #1169: Refuse library versions that leave no newer one to publish (@Silvertree2010) 2026-10-24 09:19:38 +07:00