aiongg
47c807f209
refactor(engine): move cmd/file.rs rest_import_tests to file/rest_import_tests.rs
2026-10-26 20:17:48 +00:00
aiongg
f0f1c2003d
refactor(engine): move cmd/file.rs tab_order_tests to file/tab_order_tests.rs
2026-10-26 20:17:48 +00:00
aiongg
1e9e0a4e75
refactor(engine): split session.rs into session/
2026-10-26 20:17:48 +00:00
aiongg
c4bd0dd542
refactor(engine): move Session state, prefs, errors and methods out of lib.rs
2026-10-26 20:17:48 +00:00
aiongg
0b9fcb7f4e
refactor(engine): split cmd/component.rs into component/
2026-10-26 20:17:48 +00:00
aiongg
cea90cf935
refactor(engine): split cmd/edit.rs into edit/
2026-10-26 20:17:48 +00:00
aiongg
688eeccc7a
refactor(engine): split boards/board.rs into board/
2026-10-26 20:17:48 +00:00
aiongg
ad4ba1ae9b
refactor(engine): split dev/codegen.rs into codegen/
2026-10-26 20:17:48 +00:00
aiongg
c631450b0c
refactor(engine): split sharing/live.rs into live/
2026-10-26 20:17:48 +00:00
aiongg
0bc49705bd
refactor(engine): split assets/components.rs into components/
2026-10-26 20:17:48 +00:00
aiongg
2e7790b58b
refactor(engine): split canvas/tools.rs into tools/
2026-10-26 20:17:48 +00:00
aiongg
e1b0ea2c1d
refactor(engine): move batch, params, inspect, file_access, doc_urls to automation/
2026-10-26 20:17:48 +00:00
aiongg
2cf15106e1
refactor(engine): move datafill, textfit, templates, synthetic, synthetic_ds to content/
2026-10-26 20:17:48 +00:00
aiongg
53b04cc784
refactor(engine): move plugins, plugin_directory, widgets to extensions/
2026-10-26 20:17:48 +00:00
aiongg
fa8e917ede
refactor(engine): move collab, live, online, branches, invite_links, background to sharing/
2026-10-26 20:17:48 +00:00
aiongg
9452ec1ada
refactor(engine): move annotations, code_connect, codegen, component_codegen, tailwind, devcompare, devinspect, dev_measurements, dev_resources to dev/
2026-10-26 20:17:48 +00:00
aiongg
e466f4a03a
refactor(engine): move components, library, library_server, library_swap, style_vars, playground, token_roles to assets/
2026-10-26 20:17:48 +00:00
aiongg
a587d964c9
refactor(engine): move selection_colors, selection_reorder, selection_spacing, rename to selection/
2026-10-26 20:17:47 +00:00
aiongg
094b01e501
refactor(engine): move tools, snap, distance, guides, drop, arc_handles, shape_handles, rotation_origin, al_keys, booleans, shapebuilder, textedit, textpreview, vectoredit to canvas/
2026-10-26 20:17:47 +00:00
aiongg
5d1b826f7a
refactor(engine): move board, board_table, board_templates to boards/
2026-10-26 20:17:47 +00:00
aiongg
a3179236f3
refactor(engine): move textedit.rs inline tests to crates/engine/src/textedit/tests.rs
2026-10-26 20:17:47 +00:00
aiongg
71524803d1
refactor(engine): move crates/engine/src/templates/mod.rs to crates/engine/src/templates.rs
2026-10-26 20:17:47 +00:00
aiongg
d853eee820
refactor(engine): move crates/engine/src/cmd/mod.rs to crates/engine/src/cmd.rs
2026-10-26 20:17:47 +00:00
BFlat
cac54fd552
Merge pull request #840 from StrajnarFilip/feat/vector-drawable-export
...
M6: export as Android Vector Drawable (XML)
2026-10-27 01:06:21 +07:00
BFlat
740cc2a2c6
Merge pull request #726 from ijashuzain/feat/variables-dart-export
...
M6: export variables as Dart constants for Flutter
2026-10-27 00:53:10 +07:00
BFlat
29c89f7d5b
Merge pull request #650 from JimKnoxx/overlay-anchor-trigger
...
M5: overlay positions relative to the layer that opens them
2026-10-27 00:49:52 +07:00
bflatastic
2aae395310
Merge main into #840
2026-10-27 00:31:32 +07:00
bflatastic
fd0f4d8b60
Merge main into #664
...
Main's class_name takes the node kind (#1372 ); Vue's slot names pass slot.
2026-10-27 00:30:42 +07:00
BFlat
83c7940293
Merge pull request #1384 from muamerETS/fix/1370-drag-unfilled-selection
...
M1: a selected unfilled shape drags over a filled layer stacked below it (#1370 )
2026-10-27 00:25:59 +07:00
BFlat
7cb369db8c
Merge pull request #1372 from lileeei/1235-transliterate-class-names
...
Transliterate non-ASCII layer names into code-export class names
2026-10-27 00:23:36 +07:00
BFlat
8583588839
Merge pull request #1366 from Silvertree2010/fix/h2716-px-to-rem-conversion-rounds-to-2
...
Keep full precision when converting px to rem in code export
2026-10-27 00:13:42 +07:00
BFlat
ad9abe7ce6
Merge pull request #1133 from g1obalworlds/fix-batch-rollback-closed-tabs
...
engine: restore tabs closed inside a failed command group
2026-10-27 00:13:37 +07:00
BFlat
dd5b5c0dc0
Merge pull request #1374 from Ridzzz0Alam/fix/1330-save-disk-changes
...
fix: Issue #1330 Save no longer overwrites changes another app made to the open file
2026-10-27 00:13:15 +07:00
bflatastic
632f2cef4b
Merge main into #840
...
# Conflicts:
# docs/roadmap.md
2026-10-27 00:12:27 +07:00
bflatastic
15c6834114
Merge main into #1384
2026-10-27 00:10:34 +07:00
bflatastic
56ed786e0e
#726 : reuse codegen's kotlin_color for Dart colours
2026-10-26 23:54:09 +07:00
bflatastic
5a5175cc7e
#726 : write Dart numbers at full precision
2026-10-26 23:54:08 +07:00
bflatastic
a683e51045
#726 : Dart names never shadow Dart types (classes and constants)
2026-10-26 23:54:08 +07:00
bflatastic
8653597c3d
#664 : Vue layer trees import connected components in <script setup>
2026-10-26 23:53:30 +07:00
bflatastic
4176400e09
Merge main into #664
...
# Conflicts:
# crates/engine/src/code_connect.rs
# crates/engine/src/codegen.rs
# crates/engine/src/component_codegen.rs
# crates/engine/src/lib.rs
# crates/engine/src/playground.rs
# crates/ui-egui/locales/bn.toml
# crates/ui-egui/locales/cs.toml
# crates/ui-egui/locales/de.toml
# crates/ui-egui/locales/en.toml
# crates/ui-egui/locales/es.toml
# crates/ui-egui/locales/fi.toml
# crates/ui-egui/locales/fr.toml
# crates/ui-egui/locales/id.toml
# crates/ui-egui/locales/ja.toml
# crates/ui-egui/locales/ka.toml
# crates/ui-egui/locales/ko.toml
# crates/ui-egui/locales/nl.toml
# crates/ui-egui/locales/pl.toml
# crates/ui-egui/locales/pt-BR.toml
# crates/ui-egui/locales/ru.toml
# crates/ui-egui/locales/sv.toml
# crates/ui-egui/locales/tr.toml
# crates/ui-egui/locales/zh-Hans.toml
# crates/ui-egui/src/dev_mode.rs
# docs/dev-mode-parity.md
# docs/gaps.md
# docs/mcp.md
# docs/target-app-parity.md
2026-10-26 23:52:51 +07:00
bflatastic
6145409859
Merge main into #726
...
# Conflicts:
# ROADMAP.md
# crates/engine/src/cmd/variables_io.rs
# crates/engine/src/variables_io_tests.rs
# docs/components-parity.md
# docs/mcp.md
2026-10-26 23:28:15 +07:00
bflatastic
de826e14cf
Merge main into #650
...
# Conflicts:
# crates/ui-egui/locales/es.toml
# crates/ui-egui/locales/pl.toml
# docs/prototyping-parity.md
2026-10-26 23:24:22 +07:00
bflatastic
e469cc8135
Merge main into #840
...
# Conflicts:
# apps/figcraft-cli/src/files.rs
# apps/figcraft-cli/src/main.rs
# crates/engine/src/cmd/file.rs
# crates/engine/src/lib.rs
# crates/ui-egui/locales/en.toml
# crates/ui-egui/locales/es.toml
# crates/ui-egui/src/export_panel.rs
# crates/ui-egui/src/export_preview_tests.rs
# docs/file-format-parity.md
# docs/mcp.md
# docs/roadmap.md
# docs/ui-parity.md
2026-10-26 23:23:07 +07:00
bflatastic
5a9b509074
Merge main into #1366
2026-10-26 22:57:27 +07:00
bflatastic
b90749b377
Merge main into #1133
2026-10-26 22:57:23 +07:00
Muamer Mustafic and Cursor
45326b3b1a
M1: a layer in the gap between selected layers still takes the press ( #1370 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-26 14:13:36 +01:00
Muamer Mustafic and Cursor
2136ec20b1
M1: a selected unfilled shape drags over a filled layer stacked below it ( #1370 )
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-26 14:02:23 +01:00
Muamer Mustafic and Cursor
b6d3e002df
M4: truncated text fills its last line, keeps truncating when resized, and auto height takes max lines ( #1375 , #1376 , #1377 )
...
- The last line shown runs on into the word wrapped after it, so the ellipsis
fills the line ("Lorem consec…") instead of following the last whole word.
- An explicit height (node.set, transform.resize, a resize handle, fixed
sizing) on truncating text keeps it truncating (TextData::fix_size).
- Max lines on auto-height text hugs up to that many lines and ends in an
ellipsis; text.maxLines keeps auto height, Type settings show it as
truncating, .fig export writes textTruncation and import keeps auto height.
- node.get reports maxLines; text.fit measures every line.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-10-26 13:14:51 +01:00
Ridzzz0Alam
0d7d9ebd00
M1: stamp the file before reading it, so a change made during the read isn't missed ( #1330 )
...
Open and Revert to saved recorded the file's size and modification time after reading it: a change written in between would be stamped as already loaded and a later save would replace it. Taking the stamp first makes such a change refuse the next save instead (CodeRabbit on #1374 ).
2026-10-26 11:46:23 +01:00
Ridzzz0Alam
a648700fcc
M1: Save no longer overwrites changes another app made to the open file ( #1330 )
...
With a file open in the desktop app, figcraft-cli could change it on disk;
the next Save (or auto-save) wrote the app's copy over it and said
"Saved", losing the CLI's changes.
Each tab now remembers its file's size and modification time when it
opens, reverts or saves it (the Stamp library files already use), and
Save and auto-save refuse while the file on disk differs, pointing to
Revert to saved or Save as. Scripts pass `file.save {overwrite: true}`.
Save as and saves to an explicit path are unchanged.
2026-10-26 11:04:01 +01:00