332 Commits

Author SHA1 Message Date
Yamila Moreno
ddba2ffa75
📎 Update Kaleidos Copyright (#9929) 2026-05-29 11:24:58 +02:00
Andrey Antukh
a395768987 🐛 Fix incorrect handlig of version restore operation (#9041)
- Add session ID tracking to RPC layer (backend and frontend)
- Send session ID header with RPC requests for request correlation
- Rename file-restore to file-restored for consistency
- Extract initialize-file function from initialize-workspace flow
- Improve file restoration initialization with wait-for-persistence
- Extract initialize-version event handler for version restoration
- Fix viewport key generation with file version numbers for proper re-renders
- Update layout item schema and constraints to use internal sizing state
- Add v-sizing state retrieval in layout-size-constraints component
- Refactor file-change notifications stream handling with rx/map
- Fix team-id lookup in restore-version-from-plugins

Improves request traceability across frontend/backend sessions and streamlines
the workspace initialization flow for file restoration scenarios.

Signed-off-by: Andrey Antukh <niwi@niwi.nz>
2026-04-21 20:50:41 +02:00
Andrey Antukh
e7e98255d9 Add scroll and zoom raf throttling (#8812)
* ⬆️ Update opencode and copilot deps

* 🐛 Decouple workspace-content from workspace-local to reduce scroll re-renders

Move workspace-local subscription from workspace-content* (parent) into
viewport* and viewport-classic* (children). workspace-content* now only
subscribes to the new workspace-vport derived atom, which changes only on
window resize — not on every scroll event. This prevents the sidebar,
palette and other workspace-content children from re-rendering on scroll.

* 🐛 Throttle wheel events to one state update per animation frame

Accumulate wheel event deltas in a mutable ref and flush them via
requestAnimationFrame, so that multiple wheel events between frames
produce a single state mutation instead of one per event. This prevents
the cascade of synchronous React re-renders (via useSyncExternalStore)
that can exceed the maximum update depth on rapid scrolling.

Both panning (scroll) and zoom (ctrl/mod+wheel) are throttled. Scroll
deltas are summed additively; zoom scales are compounded multiplicatively
with the latest cursor point used as the zoom center.

* ♻️ Extract schedule-zoom! and schedule-scroll! from on-mouse-wheel

* ♻️ Avoid zoom dep on on-mouse-wheel by using a ref
2026-03-30 12:06:56 +02:00
Andrey Antukh
a28c5b61ca 💄 Adapt viewport paste code codestyle
And remove some not necessary constructions
2025-12-03 08:09:13 +01:00
Elena Torró
544b118925
Merge pull request #7361 from penpot/azazeln28-feat-dom-textarea-position
🎉 Text Editor DOM textarea position
2025-10-16 14:30:41 +02:00
Aitor Moreno
7ca8bf32b2 🎉 Set DOM text editor element caret 2025-10-16 12:59:24 +02:00
alonso.torres
6a4d0f05bc 🐛 Fix pan cursor not disabling viewport guides 2025-10-15 13:02:56 +02:00
Luis de Dios
de5ff227d2
🎉 Create variant from the viewport (#7357)
* 🎉 Create variant from the viewport

* ♻️ Use DS styles and new component syntax

* 📎 PR changes
2025-09-30 18:15:17 +02:00
Andres Gonzalez
6049d97ed9 Display continously the distances between layers
When a user moves a layer with the keyboard.
2025-07-29 12:51:04 +02:00
Andrey Antukh
9ee488009f ♻️ Add substantial refactor on how types are organized
This mainly affects types related to colors, fills and texts, moving library
based operations from color namespace.
2025-07-23 08:03:23 +02:00
Andrey Antukh
3274a74611 Add missing fixes to the path edition mode 2025-06-20 11:06:48 +02:00
Andrey Antukh
db4721f692 Forward path edition state from vieweport to editor 2025-06-20 07:41:06 +02:00
Andrey Antukh
f8d63f5d9d 🐛 Fix incorrect path drawing/edition state management 2025-06-20 07:41:06 +02:00
Andrey Antukh
7cb2f307d8 Move path-editor from selection handlers 2025-05-06 13:39:17 +02:00
Andrey Antukh
f1a557c372 Add minor performance enhacements to viewport top-bar 2025-05-06 13:39:17 +02:00
Andrey Antukh
4f6dffabb4 ♻️ Use new call convention for path drawing components 2025-05-06 13:39:10 +02:00
alonso.torres
dcbf54fae1 🐛 Fix problem with readonly and inspect 2025-03-12 16:39:31 +01:00
Luis de Dios
91efcd17a2 🐛 Fix design panel does not reappear if comment draft is open 2025-02-25 10:30:11 +01:00
luisδμ
2219d91e4d
🐛 Fix all comments appear in every page (#5943) 2025-02-25 09:16:46 +01:00
luisδμ
0784d6b62a
🐛 Fix reposition comment bubbles under viewer role (#5905) 2025-02-19 16:47:53 +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
luisddm
b5e5c4b0dd ♻️ Visual changes in comments 2024-12-27 11:43:51 +01:00
Andrey Antukh
969c6a2e2f 💄 Add syntax optimization for gradient handlers component 2024-12-10 14:04:13 +01:00
Andrey Antukh
b17d7c0289 ♻️ Refactor dashboard bootstrap 2024-12-03 11:55:31 +01:00
AzazelN28
68397edd4d 🐛 Fix text editor selection 2024-11-19 14:47:38 +01:00
Andrey Antukh
5d4511fc6a Make workspace and features system aware of render.wasm loading 2024-11-14 11:20:39 +01:00
Belén Albeza
345d97792f Create a separate viewport for wasm/canvas 2024-10-29 18:05:17 +01:00
Alejandro Alonso
96bb282674 Fix many corner issues related to shape data structure change 2024-10-29 11:30:31 +01:00
Belén Albeza
4623f36042 Write shapes directly to wasm memory 2024-10-29 11:30:31 +01:00
Andrey Antukh
043c23899a 🎉 Add first impl of wasm-friendly for Shape data structure 2024-10-29 11:30:31 +01:00
Andrey Antukh
fc7fe41c98 Rename to render-wasm and make it load using dynamic import 2024-10-23 17:18:04 +02:00
Belén Albeza
e4eb80f643 🎉 Switch new renderer to Emscripten (from wasm-bindgen) 2024-10-23 13:14:17 +02:00
Andrey Antukh
d6da8afdce Add improved abstraction for team permissions
Relevant changes:
- replace user-viewer? with can-edit removing many double
  negations on the code
- always use team permissions making the permissions access uniform
  around all the code
- expose team permissions to ui tree through ctx/team-permissions
  context
2024-10-21 12:36:01 +02:00
Pablo Alba
226ab7233b Add viewer role to workspace 2024-10-15 13:38:46 +02:00
alonso.torres
3a9119cf29 🐛 Add visual feedback when moving an element into a board 2024-10-14 15:25:37 +02:00
AzazelN28
7398f7ce0d ♻️ Replace Draft.js with custom editor 2024-10-01 22:31:16 +02:00
Andrey Antukh
4f04dbc294 🐛 Fix frame flows issues related to the refactor 2024-09-18 12:15:12 +02:00
Andrey Antukh
4ad4057878 ♻️ Refactor page options data structure 2024-09-18 12:15:12 +02:00
Belén Albeza
c9258b5526 Remove workspace partial scss stylesheet 2024-06-27 15:35:57 +02:00
Eva Marco
232cfea709 🐛 Fix move scrollbar create a selection rectangle 2024-06-13 06:28:26 +02:00
Belén Albeza
00430d63eb Add test for drawing a shape in the workspace 2024-05-09 13:45:06 +02:00
AzazelN28
ccce550cda 🐛 Fix comments and history toggle 2024-04-08 10:07:16 +02:00
alonso.torres
4ef7af104d 🐛 Fix problem with show guides config 2024-03-27 08:41:43 +01:00
Eva Marco
cdab615cbb 🐛 Fix copies of snap to grid and show hide grid 2024-03-18 08:53:48 +01:00
Andrey Antukh
32ae1bcdc8 🐛 Add missing key prop on grid editor element 2024-02-22 15:53:15 +01:00
alonso.torres
564843b297 Add border to rulers 2024-02-06 10:07:22 +01:00
alonso.torres
497b581576 Change drag component to instantiate on enter the viewport 2024-02-01 10:23:34 +01:00
alonso.torres
7ddfdb1e15 🐛 Fix grid layout controls being clipped by scroll 2024-01-26 09:26:32 +01:00
Aitor
1991b44c00 🐛 Fix toolbar not centered in workspace 2024-01-22 18:34:16 +01:00
alonso.torres
e193261d7f Reduce handlers for the flex layout gaps and paddings 2024-01-19 09:53:07 +01:00