Elena Torro
eede023d6b
🐛 Fix fill aliasing when a shape has multiple fills
2026-02-11 11:21:08 +01:00
Alejandro Alonso
8d033de145
Merge pull request #8299 from penpot/elenatorro-13242-review-performance
...
🔧 Improve layout performance
2026-02-11 10:45:40 +01:00
Elena Torró
2e77c09ca5
Merge pull request #8309 from penpot/superalex-fix-stroke-dot-dash-mix
...
🐛 Fix dot strokes
2026-02-11 10:37:46 +01:00
Elena Torró
47346e478e
Merge pull request #8303 from penpot/superalex-fix-stroke-opacity-for-boards
...
🐛 Fix stroke opacity for boards
2026-02-11 10:05:47 +01:00
Alejandro Alonso
f32c377f17
🐛 Fix stroke opacity for boards
2026-02-11 09:08:03 +01:00
Alejandro Alonso
9eef4de87d
🐛 Fix dot/dahs/mixed strokes
2026-02-11 07:08:28 +01:00
Belén Albeza
1c270ac9c6
✨ Remove leftover println in render code
2026-02-10 10:59:47 +01:00
Elena Torro
969666b39b
🔧 Simplify view interaction log message
...
Remove zoom_changed from log output as it's no longer needed
for debugging after the tile optimization changes.
2026-02-09 11:44:50 +01:00
Elena Torro
a8322215dd
🔧 Optimize pan/zoom tile handling
...
- Add incremental tile update that preserves cache during pan
- Only invalidate tile cache when zoom changes
- Force visible tiles to render synchronously (no yielding)
- Increase interest area threshold from 2 to 3 tiles
2026-02-09 09:38:01 +01:00
Elena Torro
e1ce97a2b4
🔧 Prioritize visible tiles over interest-area tiles
...
Partition pending tiles into 4 groups by visibility and cache status.
Visible tiles are processed first to eliminate empty squares during
pan/zoom. Cached tiles within each group are processed before uncached.
2026-02-09 09:38:01 +01:00
Elena Torro
2ccd2a6679
🔧 Use HashSet for grid layout children lookup
...
HashSet provides O(1) contains() vs Vec's O(n), improving
child lookup performance in grid cell data creation.
2026-02-09 09:38:01 +01:00
Elena Torro
2d9a2e0d50
🔧 Use swap_remove in flex layout distribution
...
swap_remove is O(1) vs remove's O(n) when order doesn't matter.
These loops iterate backwards, so swap_remove is safe.
2026-02-09 09:38:01 +01:00
Elena Torro
216d400262
🔧 Prevent duplicate layout calculations
...
Use HashSet for layout_reflows to avoid processing the same
layout multiple times. Also use std::mem::take instead of
creating a new Vec on each iteration.
2026-02-09 09:37:58 +01:00
Elena Torro
c87ffdcd30
🔧 Add forward children iterator for flex layout
...
Avoid Vec allocation + reverse for reversed flex layouts.
The new children_ids_iter_forward returns children in original order,
eliminating the need to collect and reverse.
2026-02-09 09:35:04 +01:00
Elena Torro
8ef6600cdc
🔧 Return HashSet from update_shape_tiles
...
Avoid final collect() allocation by returning HashSet directly.
Callers already use extend() which works with both types.
2026-02-09 09:35:04 +01:00
Elena Torro
a3764b9713
🔧 Avoid clone in rebuild_touched_tiles
...
Use std::mem::take instead of clone to avoid HashSet allocation.
The set was cleared anyway by clean_touched(), so take() is safe.
2026-02-09 09:35:03 +01:00
Alejandro Alonso
7c7e32d85f
🐛 Fix grid lines
2026-02-06 09:34:58 +01:00
alonso.torres
fd3d549f9c
✨ Batch text layout updates
2026-02-05 17:29:43 +01:00
alonso.torres
53c2acb3e6
🐛 Fix several problems with layouts and texts
2026-02-05 17:29:43 +01:00
Alejandro Alonso
5be887f10b
🎉 Improve plain shape calculation
2026-02-03 12:44:43 +01:00
Alejandro Alonso
f7403935c8
🎉 Improve shadows rendering performance
2026-02-03 12:33:05 +01:00
Alejandro Alonso
6a84215911
🐛 Fix stroke weight visually different with different levels of zoom
2026-01-29 12:18:26 +01:00
Alejandro Alonso
7d3ac38749
🎉 Improve huge shapes rendering
2026-01-27 11:11:38 +01:00
Elena Torro
8d1bc6c50c
🐛 Fix flex layout sorting on reverse order with no z-index
2026-01-27 09:34:36 +01:00
Elena Torro
5209a8b423
🔧 Improve surface rendering performance
2026-01-26 16:10:22 +01:00
Alejandro Alonso
3dc9e28230
Merge pull request #8155 from penpot/elenatorro-13089-improve-page-load-render
...
🔧 Improve render UX on first load
2026-01-26 10:40:44 +01:00
Alejandro Alonso
d112c0a33b
🐛 Fix text boxes with auto-height don't update height when resized by dragging side handles
2026-01-23 09:05:20 +01:00
Elena Torro
8637c46ba1
🐛 Fix empty pool state
2026-01-22 08:52:26 +01:00
Elena Torro
5d7d23a2c7
🔧 Keep clear cached canvas
2026-01-22 08:51:58 +01:00
Elena Torro
aab1d97c4c
🔧 Clean up and use proper imports
2026-01-21 16:01:06 +01:00
Elena Torro
499aac31a4
🔧 Improve tile invalidation to prevent visual flickering
...
When tiles are invalidated (during shape updates or page loading), the old tile
content is now kept visible until new content is rendered to replace it. This
provides a smoother visual experience during updates.
2026-01-21 15:42:52 +01:00
Elena Torro
962d7839a2
🔧 Add progressive rendering support for improved page load experience
...
When loading large pages with many shapes, the UI now remains responsive by
processing shapes in chunks (100 shapes at a time) and yielding to the browser
between chunks. Preview renders are triggered at 25%, 50%, and 75% progress to
give users visual feedback during loading.
2026-01-21 14:55:53 +01:00
Elena Torro
83387701a0
🔧 Add batched shape base properties serialization for improved WASM performance
2026-01-21 14:55:07 +01:00
Elena Torro
5775fa61ba
🔧 Refactor ShapesPool to use index-based storage instead of unsafe lifetime references
...
Replace `HashMap<&'a Uuid, ...>` with `HashMap<usize, ...>` for all auxiliary maps
(modifiers, structure, scale_content, modified_shape_cache)
2026-01-21 14:53:56 +01:00
Andrey Antukh
ff25df0457
Merge remote-tracking branch 'origin/staging' into staging-render
2026-01-21 10:17:22 +01:00
Alejandro Alonso
b7c2d9a079
Merge pull request #8130 from penpot/superalex-improve-zoom-pan-performance-7
...
🐛 Fix some tiles disappear after fast zoom and pan
2026-01-20 12:56:02 +01:00
Alejandro Alonso
6fa0c3af0c
🐛 Fix some tiles disappear after fast zoom and pan
2026-01-20 12:40:01 +01:00
Alejandro Alonso
884954f4ff
🐛 Fix text selrect calculation
2026-01-20 12:37:57 +01:00
Andrey Antukh
1ffa956251
✨ Include timestamp on version tag
2026-01-20 12:26:39 +01:00
Alejandro Alonso
324d54ad28
🐛 Fix set all rounded corners to 0
2026-01-20 09:34:06 +01:00
Alejandro Alonso
c411aefc6c
🐛 Fix rotated shapes extrect calculation
2026-01-15 12:53:21 +01:00
Alejandro Alonso
311e124658
🎉 Reduce extrect work in tile traversal
...
Avoid repeated extrect calculations and simplify root ordering per tile.
2026-01-15 12:53:21 +01:00
Alejandro Alonso
afc914f486
🎉 Render simple shapes directly on Current
...
Bypass intermediate surfaces for simple shapes without effects.
2026-01-15 12:53:21 +01:00
Alejandro Alonso
84f750da0d
🎉 Skip heavy effects in fast mode
...
Avoid blur and shadow passes for text and shapes when FAST_MODE is enabled.
2026-01-15 08:45:21 +01:00
Alejandro Alonso
c60d74df62
🐛 Fix nested frames border clipping
2026-01-14 11:10:03 +01:00
Alejandro Alonso
d593e299e3
🐛 Fix mask erros on save/restore optimizations
2026-01-14 11:10:03 +01:00
Alejandro Alonso
4a8e02987f
🐛 Fix mask erros on save/restore optimizations
2026-01-14 11:10:03 +01:00
Alejandro Alonso
ee766e85a0
🎉 Wasm render dirty surfaces
2026-01-14 11:10:03 +01:00
Alejandro Alonso
35e3b7f19a
🎉 Root ids refactor
2026-01-14 11:10:03 +01:00
Alejandro Alonso
1810df232b
🎉 Ignore frames and groups when they have no visual extra information
2026-01-14 11:10:03 +01:00