69 Commits

Author SHA1 Message Date
Luis de Dios
46f5346045
♻️ Merge :thumbnails and :thumbnails-meta into single state key (#10021)
* ♻️ Merge :thumbnails and :thumbnails-meta into single state key

♻️ Unify thumbnail refs in a single ref

🐛 Fix test

* ♻️ Update tests
2026-06-30 14:37:27 +02:00
Andrey Antukh
79227c4de8
Batch multiple thumbnail deletions into a single RPC call (#9943)
*  Batch multiple thumbnail deletions into a single RPC call

Replace the old per-object immediate thumbnail deletion with a
debounced batched approach. The frontend queues object-ids in state
and waits 200ms before sending a single RPC request with up to 200
object-ids. The backend deletes all matching thumbnails in one SQL
statement with a single RETURNING clause, then touches the affected
media objects.

This reduces RPC overhead when rapidly clearing thumbnails (e.g.
navigating pages) and makes deletions more efficient.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>

* 📎 Fix missing issues

---------

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-06-15 12:01:32 +02:00
Andrey Antukh
c5de4c27b0 Merge remote-tracking branch 'origin/main' into staging 2026-06-01 12:57:39 +02:00
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
Elena Torro
847d55bfb4 🐛 Update component thumbnails to match current shape 2026-05-12 12:21:06 +02:00
Andrey Antukh
a27ef26279 Merge remote-tracking branch 'origin/main' into staging 2026-04-07 19:23:37 +02:00
Andrey Antukh
e10bd6a8d3
🐛 Fix infinite recursion in get-frame-ids for thumbnail extraction (#8807)
The get-frame-ids function could enter infinite recursion when:
1. There's a circular reference in the frame hierarchy
2. A shape's frame-id points to itself (corrupt data)

The fix uses the cached version (get-frame-ids-cached) in recursive calls
and adds a guard to prevent self-referencing.
2026-04-07 16:34:08 +02:00
Andrey Antukh
b99157a246
🐛 Prevent thumbnail frame recursion overflow (#8763)
Cache in-progress frame traversals before following parent frame links so thumbnail updates stop recursing forever on cyclic or transiently inconsistent shape graphs.

Add a regression test that covers cyclic frame-id chains and keeps the expected frame/component extraction behavior intact.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-04-07 15:09:54 +02:00
Elena Torro
784ad8ab75 🔧 Use wasm render for components thumbnail 2026-03-31 08:53:50 +02:00
alonso.torres
3cb716ec30 🐛 Disable thumbnails render in wasm 2026-01-28 12:59:16 +01:00
Alejandro Alonso
a576c0404a
🐛 Fix focus mode across page and file navigation (#7695) 2025-11-05 12:05:00 +01:00
Andrey Antukh
283eb0419c ♻️ Refactor time related namespaces
Mainly removes the custom app.util.time namespace
from frontend and backend and normalize all to use
the app.common.time namespace
2025-08-01 11:20:01 +02:00
Andrey Antukh
25dd53290c 🐛 Fix component thumbnail refresh on change
Happens when a component is nested in an other top level frame
2025-04-11 10:40:56 +02:00
Marina López
a6133e9c48
🐛 Fix actions when workspace is visited first time (#6129)
* 🐛 Fix actions when workspace is visited first time

* 📎 Fix linter errors

* 🐛 Fix problem with integration test

* 📎 Fix linter errors

* 📎 Fix linter errors

---------

Co-authored-by: alonso.torres <alonso.torres@kaleidos.net>
2025-03-24 18:02:05 +01:00
Andrey Antukh
c9a8d2bd23
🚧 Tokens (part4) (#5952)
*  Use reduce-kv for creating tokens tree

Instead of reduce

*  Avoid double iteration on spliting text shapes from shapes

On processing color changes

* ♻️ Move the undo transaction out of transform-fill

The undo transaction is a high level construct and it should
be called from the first level events. Low level impl should
not handle transactions at all

*  Use low-level primitives for update-fill token event

* 📎 Add performance logging for style dictionary resolution

* 📎 Replace inline code with a helper

* ♻️ Refactor how fill and stroke color is applied on tokens

* 💄 Fix call convention for component-item-thumbnail component

*  Clean component thumbnail when frame change received

* 📎 Fix tests

---------

Co-authored-by: Eva Marco <evamarcod@gmail.com>
2025-02-28 09:47:13 +01:00
Marina López
8f06fa1026
🎉 Add AB test descriptive board tooltip (#5936)
* 🎉 Add AB test descriptive board tooltip

* 📎 Add changes from feedback
2025-02-25 12:50:16 +01:00
Andrey Antukh
6fa08fc75e
🐛 Fix issue on importing binfile-v3 with tokens (#5714)
* 🐛 Fix issue on importing binfile-v3 with tokens

* 🐛 Fix thumbnails generation (regression)

* 🐛 Fix thumbnails clearing issues (regression)
2025-01-29 16:52:40 +01:00
Andrey Antukh
85746e7cb2 ♻️ Refactor state locality
The main purpose of this refactor is reduce
a custom state from different pages and unify
them under common access patterns
2025-01-16 15:31:18 +01:00
alonso.torres
bcdf5d86ae 🐛 Fix problem with thumbnail generation when changing between versions 2025-01-02 12:01:30 +01:00
Andrey Antukh
64c8741233 🐛 Make thumbnails independent of current public uri
Mainly always resolve the public uri at frontend, making the
PENPOT_PUBLIC_URI less necessary to be changed. This improves
the experience of on-premise configuration.

Also removes unnecesary calls for thumbnail generation
on components.
2024-11-20 16:43:14 +01:00
Andrey Antukh
4ad4057878 ♻️ Refactor page options data structure 2024-09-18 12:15:12 +02:00
Andrey Antukh
b25a9f8626 🐛 Return back to use blob uris for transient thumbnails 2024-06-21 13:12:44 +02:00
Andrey Antukh
7b8d127583 🐛 Fix incorrect frame change detection on thumbnails generation 2024-06-21 13:12:44 +02:00
Andrey Antukh
c1463ebd12 🐛 Fix many race conditions on thumbnail generation process 2024-06-12 16:04:08 +02:00
Andrey Antukh
6436ef334b ♻️ Refactor persistence layer 2024-06-04 10:15:32 +02:00
Aitor
9ad0662409 🐛 Fix imposter being regenerated indefinitely 2024-03-05 16:20:03 +01:00
Aitor
07693a46f2 🐛 Fix thumbnails not being cleared immediately 2024-02-08 17:25:14 +01:00
Aitor
efddd6c35f 🐛 Fix thumbnail in shared library not updated 2024-02-06 10:09:41 +01:00
Aitor
b47cea7ead 🐛 Fix generating unnecessary thumbnails 2024-01-09 09:55:51 +01:00
Aitor
4fc892a856 🐛 Fix Update main component thumbnail 2023-12-26 14:51:42 +01:00
Andrey Antukh
96f5a33f5f ⬆️ Upgrade to beicon2 (part1) 2023-12-26 14:14:20 +01:00
Aitor
fd43091d3a 🐛 Fix components assets blend mode not applied 2023-12-07 12:57:27 +01:00
Andrey Antukh
925f2dc30f Remove duplicated rpc method for creating file object thumbnails 2023-11-24 10:41:27 +01:00
Andrey Antukh
52fbc678f3 ♻️ Move app.common.pages to app.common.files 2023-11-16 11:07:36 +01:00
Aitor
e24309b883 ♻️ Refactor thumbnails persistence 2023-11-10 14:15:54 +01:00
Aitor
c28c55bf0b 🎉 Add tag property to thumbnails 2023-11-02 11:06:30 +01:00
Aitor
8f5d315573 Add thumbnail/imposter queue 2023-10-20 16:12:26 +02:00
Aitor
917e6425d1 Schedule thumbnail component updates 2023-10-10 15:32:41 +02:00
Aitor
f639c73d03 🎉 Add component thumbnails 2023-10-06 11:03:47 +02:00
Andrey Antukh
d0c1a9683a ♻️ Refactor workspace thumbails (again)
We probably need a counter of number of types this
code was refactored hehe
2023-09-22 14:52:48 +02:00
Andrey Antukh
afa7931b0e Disable temporary workspace thumbnails 2023-09-22 10:38:08 +02:00
Aitor
0494dc843f ♻️ Refactor thumbnails 2023-09-18 17:00:13 +02:00
Aitor
0496b1f4e3 ♻️ Change how thumbnails are rendered 2023-09-18 17:00:13 +02:00
Aitor
a72e50f674 🐛 Fix SVG text rendering on thumbnails 2023-07-13 12:47:15 +02:00
Aitor
48834f96d3 ♻️ Refactor thumbnail rendering on workspace 2023-05-22 10:56:46 +02:00
Andrey Antukh
cf03cb4ca4 🐛 Fix unexpected exception on thumbnails & raf 2023-05-17 16:05:31 +02:00
alonso.torres
e7e80e99bd 🐛 Fix thumbnail not updating when changing pages 2023-02-02 09:18:53 +01:00
alonso.torres
d4921c8eb9 🐛 Fix problem with transparent frame thumbnails 2023-01-27 09:27:18 +01:00
alonso.torres
a56a9868dc 🐛 Fix error on thumbnail generation 2023-01-25 13:20:06 +01:00
alonso.torres
9782d9077f Improved and fixed thumbnail generation 2023-01-24 09:44:56 +01:00