NetterSilver and Claude Haiku 5.5
330b237c9c
Refresh linked layers when a library update changes only a style
...
Fixes #461
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 14:45:47 +00:00
NetterSilver and Claude Haiku 5.5
7689af50d6
Keep character-range text styles when publishing and placing components
...
Fixes #463
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 16:31:53 +02:00
tylerjenningsw
d769320d45
test(canvas): grow the slow zoom-preview scene until it crosses the threshold (M8)
...
The browser-worker test assumed a fixed 2400x2400 glass scene renders
in at least 12 ms; a faster machine or renderer (the glass speedups)
would make it quick and the test fail. The scene now gets more and
more blurred rectangles until renders from scratch of the views the
test uses take three times the threshold.
Refs #295
2026-10-15 10:04:09 -04:00
Hamza
01c0b38669
fix(rest): keep a text hyperlink's destination whole on import ( #459 )
...
A hyperlink longer than 200 characters came back as a different 200-character
URL -- one that still looks like a working link -- and the import reported
nothing. It applied to a text layer's base style and to a character style
override alike.
The destination went through `clip_str`, which exists so that names and labels
from a file stay readable when they are quoted in a warning. Every other caller
is a name, a description, a style id or a layer type; a hyperlink is data, and
clipping it silently rewrote it. Two things say so: the FIG importer already
keeps the URL whole, so the two importers disagreed, and `rest::props` bounds
numbers and list lengths but no string beyond that label helper -- the text
content itself is not clipped either.
The reporter's integration test is included, with its assertions unchanged. Its
helper is restructured to return what it found rather than unwrap: the crate
denies `unwrap_used` and `panic`, and `clippy.toml` allows them only inside a
`#[test]` function, so the original shape failed the gate before it ran. Its
failure message now reports the input and output lengths.
2026-10-15 19:03:24 +05:00
NetterSilver and Claude Haiku 5.5
b61122ccca
Fix eraser missing brush crossings narrower than the sample spacing
...
Fixes #421
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 15:28:43 +02:00
bflatastic
4fbe8d2976
Merge batch 3's FreeBSD font fix
2026-10-15 20:22:41 +07:00
bflatastic
8c731ddedc
ci: the FreeBSD VM installs DejaVu, so text tests measure with a real font as on Ubuntu
2026-10-15 20:22:37 +07:00
NetterSilver and Claude Haiku 5.5
524b538908
Report changed=false when list indentation is capped
...
Fixes #425
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 13:21:05 +00:00
NetterSilver and Claude Haiku 5.5
72b826d65b
Fix cross-axis arrows and drop slot on single-item wrapped lines
...
Fixes #422
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 15:17:21 +02:00
NetterSilver and Claude Haiku 5.5
0d125374d3
Don't record an undo step for an abandoned empty text box
...
Fixes #423
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 13:05:07 +00:00
bflatastic
745e599118
Merge #272 and #322 updates
2026-10-15 20:03:07 +07:00
bflatastic
ffc01cbac9
Merge #322 's update (main merged in; same change)
2026-10-15 20:03:01 +07:00
bflatastic
d2e0ac40aa
Merge #272 's update (main merged in; same change)
2026-10-15 20:02:50 +07:00
bflatastic
4ed5190d7f
Merge the updated community batch 3
2026-10-15 20:00:20 +07:00
bflatastic
3ce80b25ab
Merge #300 fix: colour emoji on Linux
2026-10-15 19:59:45 +07:00
bflatastic
ff3981de73
#300 : emoji take a colour face before a style face without colour glyphs (DejaVu Sans on Linux drew them in one colour); the scale test allows faces wider than the em
2026-10-15 19:59:24 +07:00
bflatastic
f32e8c5d2d
Merge #306 : M1: say why when the window can't open ( #261 ) (@Barzabel)
2026-10-15 19:55:06 +07:00
bflatastic
4812b3ebfa
Merge #317 : M1: drop shadows under a background blur ( #255 ) (@Barzabel)
2026-10-15 19:55:05 +07:00
bflatastic
2c51dbe4e3
Merge #322 : fix(vector): keep the canvas still when entering vector edit mode and picking a region (@rcoenen)
2026-10-15 19:55:04 +07:00
bflatastic
261225340f
Merge #308 : M1: leaving Design ends the pen path and goes back to Move (@marcoarnulfo)
2026-10-15 19:55:03 +07:00
bflatastic
0444dc39a0
Merge #352 : fix(ui): step through the font picker with Up and Down ( #345 ) (@vxMacDev)
2026-10-15 19:55:02 +07:00
bflatastic
01463fb78e
Merge #368 : Variables export as a download in the browser (@mateusvillain)
...
# Conflicts:
# crates/ui-egui/src/variables_panel.rs
2026-10-15 19:55:00 +07:00
bflatastic
3acffcd362
Merge #272 : fix(ui): scroll a long pages list in its own area so the layers stay in view (@marcoarnulfo)
2026-10-15 19:54:10 +07:00
bflatastic
2ea8c3f86f
Merge #338 : M9: remove someone from a live session (@HaSh3003)
2026-10-15 19:54:09 +07:00
bflatastic
9ba207e900
Merge #400 : Let batch steps reference ids created by earlier steps (@edivanteixeira)
2026-10-15 19:54:08 +07:00
bflatastic
6551f870b6
Merge #363 : fix(engine): drag with the Text tool to make a fixed-width text box ( #360 ) (@vxMacDev)
2026-10-15 19:54:07 +07:00
bflatastic
7a9e9de38c
Merge #305 : M1: save files automatically ( #296 ) (@AganzeFelicite)
...
# Conflicts:
# crates/ui-egui/src/idle_tests.rs
# docs/mcp.md
2026-10-15 19:53:52 +07:00
Marco Arnulfo
1d5c9ae010
fix(ui): scroll a long pages list in its own area so the layers stay in view ( fixes #258 )
2026-10-15 14:44:31 +02:00
NetterSilver and Claude Haiku 5.5
8199623267
Include empty outlines in no-op shapeBuilder.merge response
...
Fixes #424
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 14:36:34 +02:00
midasmatterhorn
6ea957ec5d
doc: runs of a file that reach past the text can't overflow a text edit
...
StyleRun start/end are usize taken straight from a .figcraft document.json
(nothing clamps them on load; only the REST and SVG importers normalize),
so TextData::replace_range's p - removed + inserted panics in a debug or
test build and wraps to zero in release, where normalize then drops the
run and the layer silently loses its formatting.
Shift the runs with saturating arithmetic; normalize drops whatever is
left. Regression test: text_runs_past_the_text_never_overflow — panics
at crates/doc/src/text.rs:605 on main, passes with the clamp.
2026-10-15 15:36:06 +03:00
bflatastic
51549f9a60
#306 : say why the window can't open in the interface language
...
The message now comes from the UI crate (dialogs::window_failed) through
tr() and trf(), with entries in every catalog, and the app picks the
language from the preferences before the event loop starts, so the box
reads in it even though no frame was ever drawn. The commands to type stay
as written.
2026-10-15 19:36:00 +07:00
bflatastic
3d7191f4d3
people.toml: one entry per person after the merges
2026-10-15 19:35:24 +07:00
bflatastic
d25e302a57
README: list the Czech and Indonesian drafts
2026-10-15 19:35:02 +07:00
bflatastic
4004aecaea
Merge #477 : M9: Indonesian draft catalog (@RevDonz)
...
# Conflicts:
# contributors/people.toml
# crates/ui-egui/src/cjk.rs
# crates/ui-egui/src/i18n_tests.rs
# docs/translating.md
2026-10-15 19:34:49 +07:00
NetterSilver and Claude Haiku 5.5
b29cc01d55
Fix perf failing with 'no card' on small instance counts
...
Fixes #394
Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com >
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
2026-10-15 12:34:16 +00:00
bflatastic
5a10623414
Merge #469 : i18n: Czech (cs) UI catalog (draft) (@Losminek)
...
# Conflicts:
# contributors/people.toml
# crates/engine/src/cmd/view.rs
# docs/mcp.md
# docs/translating.md
2026-10-15 19:34:05 +07:00
bflatastic
be875da985
Merge #346 : Set the native window identity to match the desktop entry (@IanHollow)
2026-10-15 19:33:07 +07:00
bflatastic
2a3309902a
Merge #474 : M7: find Unix user fonts under XDG_DATA_HOME (@IanHollow)
2026-10-15 19:33:06 +07:00
bflatastic
f3e6b00e1a
Merge #310 : engine: refuse page.move for node ids that are not pages (@midasmatterhorn)
2026-10-15 19:33:02 +07:00
bflatastic
58e33f8fbb
Merge #361 : Make edit.findReplace replace case-insensitive matches (@Silvertree2010)
2026-10-15 19:32:55 +07:00
bflatastic
ef375c623e
Merge #326 : M1: memory budgets for decoded images and a file's images ( #203 , #189 ) (@Barzabel)
2026-10-15 19:32:43 +07:00
bflatastic
e4d0b92e55
Merge #300 : Text: colour emoji draw from their own colour tables ( #268 ) (@fede9234)
2026-10-15 19:32:34 +07:00
bflatastic
650049b469
Merge #281 : fix(format): import explicit variable modes referenced by asset key (@notdezzi)
2026-10-15 19:32:32 +07:00
bflatastic
731bb0247c
Merge #279 : M6: .fig import lays out the layers of resized instances by their constraints (@marcoarnulfo)
2026-10-15 19:32:30 +07:00
bflatastic
b13fbb52b3
Merge #332 : M0.9: every hidden window answers control requests, not only the main one ( #269 ) (@patlux)
2026-10-15 19:32:28 +07:00
bflatastic
48f75c92da
Merge #313 : M0.9: answer control requests while the window is hidden ( #269 ) (@AganzeFelicite)
2026-10-15 19:32:27 +07:00
bflatastic
f39b9a11fd
Merge #280 : Fix text edits rolling back prior document changes (@justinjohn0306)
2026-10-15 19:32:25 +07:00
bflatastic
120aa8a7a0
Merge #336 : M1: keep a recovery copy until this run has its own ( #187 ) (@Barzabel)
2026-10-15 19:32:23 +07:00
bflatastic
09ad21489b
Merge #331 : fix(recovery): keep the version history and branches in recovery copies ( #185 ) (@vxMacDev)
2026-10-15 19:32:22 +07:00
bflatastic
0a2ed2fb65
Merge #303 : Recovery: wait for the write in flight before an emergency save and before removing copies ( #202 ) (@MarekSpodBiedry)
2026-10-15 19:32:20 +07:00