Commit Graph
1608 Commits
Author SHA1 Message Date
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 80bf75526b #1026: the localization page's revision history lists the Vietnamese catalog 2026-10-24 13:04:28 +07:00
Salah1StandClaude Opus 5.5 b278d8f541 M7: the FIGCRAFT_WEB_FONTS example needs a craft-fonts checkout with the family
Review: the release pin has no Noto Sans Thai yet, so the example built
against it only warns. The docs now say to build with a craft-fonts
checkout that has the families named, and that a family the build
doesn't embed gets a warning.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 12:58:25 +07:00
bflatastic 565e0e8266 Merge main into #1217 2026-10-24 12:54:49 +07:00
bflatastic 3e99f489e1 Merge main into #1026
# Conflicts:
#	docs/localization-parity.md
#	docs/translating.md
2026-10-24 12:54:30 +07:00
bflatastic 0c549a4147 Merge main into #1224 2026-10-24 12:54:27 +07:00
bflatastic 48a5e03348 Merge main into #954
# Conflicts:
#	ROADMAP.md
2026-10-24 12:54:04 +07:00
bflatastic a0bd65f7b4 Merge main into #1009 2026-10-24 12:53:58 +07:00
bflatastic 13eba6a3ea Merge main into #1003
# Conflicts:
#	crates/engine/src/lib.rs
2026-10-24 12:53:57 +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 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
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 3b39f7cb3b #698: installing an API 4 plugin from a directory says it may offer files to save; the save strings in every catalog 2026-10-24 10:18:12 +07:00
bflatastic b35a4e85ab Merge main and the community batch into #698
# Conflicts:
#	README.md
#	crates/engine/src/cmd/file.rs
#	crates/plugin/src/manifest.rs
2026-10-24 10:12:35 +07:00
bflatastic 62a3072134 Merge main and the community batch into #1202
# Conflicts:
#	crates/engine/src/component_codegen.rs
#	crates/engine/src/tools.rs
#	crates/ui-egui/locales/fi.toml
#	crates/ui-egui/locales/nl.toml
#	crates/ui-egui/src/dev_mode_tests.rs
#	crates/ui-egui/src/shortcuts.rs
#	docs/dev-mode-parity.md
#	docs/file-format-parity.md
#	docs/ui-parity.md
2026-10-24 09:39:52 +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 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 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 eada8b0ff3 Merge #1042: M3: style links given in a call apply after its values (@MortenHusted)
# Conflicts:
#	crates/engine/src/cmd/props.rs
2026-10-24 09:16:54 +07:00
bflatastic 90e5e03b23 Merge #1160: M0.9: figcraft-cli export names files as the app's export does (#1154) (@switch87) 2026-10-24 09:16:12 +07:00
bflatastic adc8e81826 Merge #1161: M0.9: --help and -h after a figcraft-cli subcommand print the usage (#1155) (@switch87) 2026-10-24 09:16:07 +07:00
bflatastic 15321a56ff Merge #1198: fill/stroke props: accept 'none' and null as no paint (@lileeei)
# Conflicts:
#	ROADMAP.md
2026-10-24 09:16:04 +07:00
bflatastic 1e4a31a303 Merge #1199: M3: instance-swap properties in the Dev Mode component playground (@marcoarnulfo) 2026-10-24 09:15:41 +07:00
bflatastic 6063d3e9a9 Merge #1189: M4: vector edit transform box around points of several layers (@marcoarnulfo)
# Conflicts:
#	docs/target-app-parity.md
#	docs/ui-parity.md
2026-10-24 09:15:11 +07:00
bflatastic 83f840f802 Merge #1043: M3: a swapped nested instance keeps its outer main's overrides (@MortenHusted) 2026-10-24 09:13:18 +07:00
bflatastic ac5783d0cd Merge #1135: M5: prototype actions lay out what they change like the canvas does (@MortenHusted)
# Conflicts:
#	docs/prototyping-parity.md
2026-10-24 09:13:08 +07:00
midasdf 18832c620e Merge remote-tracking branch 'origin/main' into jp/kinsoku-jis
# Conflicts:
#	ROADMAP.md
#	docs/target-app-parity.md
2026-10-24 09:44:03 +09:00
vetlucasmartins 7a2568fe55 tailwind: emit @theme static; fix assertion precedence in tests
Tailwind v4 drops theme variables no utility uses, but page code also
reads tokens through var() and (--name) utilities, so the export keeps
them all. Two test assertions mixed && and || without parentheses.
2026-10-24 00:50:53 +01:00
vetlucasmartins 788d1df7be Merge remote-tracking branch 'origin/feat/css-export-px' into feat/tailwind-output 2026-10-24 00:47:30 +01:00
vetlucasmartins 3734965cce Merge remote-tracking branch 'upstream/main' into feat/css-export-px 2026-10-24 00:41:08 +01:00
vetlucasmartins 3a3746d45d Merge upstream/main into feat/data-fill 2026-10-24 00:33:14 +01:00
vetlucasmartins 601a9701a5 text.fit: keep sizes that fit, respect the floor, skip one-word paragraphs
- Text that already fits keeps its exact size; shrunk sizes round to a
  tenth but never below minSize (per run, its share of it).
- A last line after a hard break is not an orphan, and the no-break space
  is only placed inside the last paragraph.
- docs: data.fill documents formats? and errors?.
2026-10-24 00:32:24 +01:00
ArminandClaude Opus 5.5 95db91def9 M5: a top-level frame taller than the device scrolls without an overflow setting
On a device, a presented frame bigger than the screen now scrolls through
its whole size whatever its overflow, as Figma documents for top-level
frames. Before, "No scrolling" frames only clipped, so the landing page
template's long Phone frame couldn't be scrolled in Present. Content past
a frame's own edges still scrolls only on the axes its overflow allows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 00:04:28 +02:00
BFlat 8167f13a6a M12: Boards: a collaborative whiteboard file kind (#1229)
Board files (File > New board) with sticky notes, shapes with text, connectors that follow what they join (straight or elbow, arrowheads, labels), marker, highlighter and eraser, and stamps; a board toolbar and a contextual bar; the Design panel hidden on boards, Prototype and Dev Mode refused there. Boards are ordinary FigCraft files built from ordinary layers, so saving, undo, export, MCP and live sessions work unchanged. File tabs, recent files and Open files show a pen nib for design files and a note for boards (original icons drawn in code).
2026-10-24 04:18:55 +07:00
BFlat 17ed21d128 M6: Dev Mode tail: imports in layer trees, compare with versions, an inspect-only canvas (#538)
Import lines for connected components inside generated layer trees; Compare changes against any saved version; a Dev Mode behaviour suite with an inspect-only canvas (menus, shortcuts, paste and Revert to saved refuse design edits; a drag under way is dropped on entering), Changed in the ready list, statuses only on top-level frames and sections; read-only plugins' panels from the Inspect tab.
2026-10-24 02:56:55 +07:00
aiongg 70f702ca17 i18n: a missing translation fails no check; cargo xtask i18n-report lists them (#1228) 2026-10-23 15:43:21 -04:00
midasdf 04e60e23bc Merge remote-tracking branch 'origin/main' into jp/kinsoku-jis
# Conflicts:
#	ROADMAP.md
#	docs/target-app-parity.md
2026-10-24 04:11:13 +09:00
BFlat d6e8a6e874 Docs: roadmap entries for the community PRs in #507, #510, #529 and #530 (#587)
Roadmap, milestone and parity rows for the 93 community PRs landed in batches #507, #510, #529 and #530.
2026-10-24 02:02:19 +07:00
aiongg fc7a744519 CI: one test binary per crate, nextest, line tables only (#1208)
* Dev profile: line tables for workspace crates, no debug info for dependencies

* Tests: one integration-test binary per crate with several test files

* xtask ci: nextest, doctests, tests without examples, --keep-going; add xtask test
2026-10-23 13:01:12 -04:00
CosmoNetinfoandClaude Sonnet 5.5 98b90b3c56 Add Italian (it) interface language
Adds crates/ui-egui/locales/it.toml: all 1747 UI strings (42 plural entries,
one/other), 574 command labels and 31 menu wordings, marked as a draft awaiting
native review like the other machine-drafted catalogs. Adds a resolve/plural
test for Italian locales and lists Italian in docs/translating.md.

Not compiled locally; the catalog was validated with a script (same keys as
en.toml, identical placeholders and ellipses per entry).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fr2xzM8A8RiUwZWddELBCt
2026-10-23 16:49:31 +02:00
Salah1StandClaude Opus 5.5 c4be9c1a34 M7: say what a default font family in files does and doesn't promise
Review: a saved family renders only where that family is available. The
docs and the test's comment now say the variable changes only what new
text starts in, and that a file keeps its fonts in a build with another
default, falling back like any missing family elsewhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:34:43 +07:00
Salah1StandClaude Opus 5.5 b649035695 M7: FIGCRAFT_DEFAULT_FONT names the font new text starts in
TextStyle::default() hard-coded Inter, which has no Thai (nor Hebrew,
Devanagari, ...). In a build for users who mostly write such a script,
every new text layer started in a font that can't draw what they type:
fallback faces hide the boxes, but the layer still says Inter and gets
Inter's metrics and line height.

Like FIGCRAFT_DEFAULT_SERVER, a build variable read with option_env!
names another family; unset or empty means Inter. font_family is always
written, so files open in the same font whichever build reads them.
docs/releasing.md gets a "The default font" section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 13:28:29 +07:00
Salah1StandClaude Opus 5.5 6b46a9c81a M7: FIGCRAFT_WEB_FONTS embeds more craft-fonts families in the web build
The web build has no system fonts, so it can only draw text in faces
compiled into the wasm, and crates/text/build.rs keeps a fixed set:
Inter, Noto Sans Georgian, the Archivo wordmark, and Noto Sans CJK with
FIGCRAFT_EMBED_CJK. A distribution for users of another script (Thai,
Hebrew, Devanagari, ...) had no supported way to add the face they need,
so their text was drawn as missing-glyph boxes.

FIGCRAFT_WEB_FONTS names extra manifest families, comma-separated, to
embed on wasm32. Unset, nothing changes; the variable is declared with
rerun-if-env-changed. docs/releasing.md says how to use it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 13:24:53 +07:00
Nicek 261b8c5146 fix: 处理 PR 评审意见(剪贴板、图案填充、ArkUI 生成、资产缩略图)
粘贴其他应用的设计图层时保留已复制的填充/描边/效果行;粘贴重复图案前校验来源,拒绝自引用;ArkUI 生成补上变体枚举导出、对齐文本的宽度、auto layout 内绝对定位子节点,并用容器包裹带定位的 instance swap builder;资产列表只为可见行生成缩略图;Shift+Del 检查所有编辑图层的选中点;文档把 ArkUI 标为 FigCraft 自有能力并更新状态与修订历史。
2026-10-23 13:20:31 +08:00
RicardoandClaude Opus 5.5 19d6c17b6d .fig export: grid track sizes
Grids wrote their tracks as equal ones, with a warning. Track sizes
(fixed px, hug, fill shares) are now written as gridColumnsSizing /
gridRowsSizing, the fields the import already reads.

Checked on a synthetic grid in the incumbent (fixed 320/140/112/34/34 px
columns): written as equal tracks it came in with five equal columns and
its layers overflowing their cells; now its columns keep their sizes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:43:55 -06:00