Commit Graph
1968 Commits
Author SHA1 Message Date
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 be8991d6a8 Merge main into #1011 2026-10-24 12:53:49 +07:00
bflatastic ce32e07fe0 Merge main into #1008 2026-10-24 12:53:48 +07:00
Salah1StandClaude Opus 5.5 84ca850d5f M4: justified text doesn't widen U+200B
Thai, Lao, Khmer and Burmese are written without spaces between words.
Tools that know the words insert U+200B ZERO WIDTH SPACE so lines can
break between them, and line breaking already treats it as a space. But
justification counted every space-class char as a gap, so a justified
paragraph got extra room at every U+200B: visible gaps between all its
words, which is not how these scripts are justified.

Item::stretches() (a space other than U+200B) is used for the justify
gap count, the trailing width and the pen advance. Line breaking is
unchanged. Test: on a justified line of words joined by U+200B and one
real space, the extra room goes to the real space only; with no real
space the line is laid out as if left-aligned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:15:57 +07:00
SusieeTheFemboyandGPT-6 Luna 8989e7b253 Text: Backspace removes Thai and other marks one at a time (#1220)
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
2026-10-24 06:27:49 +02: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
bflatastic 4babe5a04a #1209: everything that opens or closes the left panel does so on a phone too
UiState::open_left_panel / close_left_panel set the narrow window's panel along with left_collapsed:
the Assets panel (Shift+I), libraries, file and layer rename, page select, version history, the rail
tabs, the panel's Collapse button and panel.leftSidebar (which toggles what a narrow window shows).
Test: view.assets opens the left panel in a phone-sized window.
2026-10-24 10:11:02 +07:00
bflatastic a44bba56a0 #703: Cmd/Ctrl-resize crops a layer whose size was bound to a variable as well: the resize detaches the binding (#809), so the new size sticks 2026-10-24 10:09:28 +07:00
bflatastic caeab4e89e #703: an explicit size edit detaches a binding made under the short names w and h too, as it does width and height 2026-10-24 10:09:27 +07:00
bflatastic 8f51875700 #1209: the open panel button's icon uses accent_on, and frame() keeps its doc comment
The icon was painted accent_text on the accent fill (green on green); the inserted fn had taken
frame()'s doc line.
2026-10-24 10:08:50 +07:00
bflatastic ad6af0c489 Merge main and the community batch into #1209
# Conflicts:
#	crates/ui-egui/src/lib.rs
#	crates/ui-egui/src/toolbar.rs
2026-10-24 10:08:32 +07:00
bflatastic 86e39cc9c0 #703: a Cmd/Ctrl-resize crop whose coefficients aren't finite leaves the image fill as it is 2026-10-24 10:04:32 +07:00
bflatastic ea77e7c38f Merge main and the community batch into #703
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 10:03:58 +07:00
bflatastic 2912222c53 #607: the outline-stroke tests join the engine's one integration test binary (tests/it) 2026-10-24 10:02:53 +07:00
bflatastic 07b3daa738 Merge main and the community batch into #607
# Conflicts:
#	ROADMAP.md
#	docs/gaps.md
#	docs/roadmap.md
#	docs/target-app-parity.md
2026-10-24 10:01:40 +07:00
bflatastic 839e9fa4bc #623: the colour scheme watcher wakes the window on a change, reads GNOME's 0 (no preference) as light, and falls back to Read on portals before 1.17 2026-10-24 09:59:26 +07:00
bflatastic 92db01a808 Merge main and the community batch into #1017
# Conflicts:
#	ROADMAP.md
2026-10-24 09:57:35 +07:00
bflatastic e596272d5a Merge main and the community batch into #623
# Conflicts:
#	docs/target-app-parity.md
2026-10-24 09:54:39 +07:00
bflatastic 6595974a52 #921: an image layer copied in FigCraft pastes as a layer; another app's image fills a selected layer only when it is newer than our copy 2026-10-24 09:52:54 +07:00
bflatastic 77540d8c73 #921: a pasted image is added on top of the selected layer's fills; the others keep their variables 2026-10-24 09:52:53 +07:00
bflatastic 0f50e60e35 Merge main and the community batch into #921
# Conflicts:
#	ROADMAP.md
#	docs/ui-parity.md
2026-10-24 09:50:13 +07: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
Susiee The Linux UserandGPT-6 Luna c6dd115e78 UI: Route text clipboard writes through egui (#1239)
Co-Authored-By: GPT-6 Luna <noreply@openai.com>
2026-10-24 04:28:02 +02: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