Editable layer fragments
Nested groups and frames remain editable instead of becoming a screenshot or a flat export.
Varve treats clipboard transfer as a document workflow: preserve the editable structure, carry the supported resources that make it look right, and tell you when a fallback is only text.
One coherent transfer
Copying a frame includes its descendants and the supported image, mask, icon, and mockup resources it references. Paste allocates fresh identities, adopts layers into a selected frame, and applies a defined placement policy: same-document copies preserve their world pose unless a frame is explicitly selected, in which case the fragment is centered inside it; foreign or image/SVG content is centered in the selected frame or visible canvas viewport.
What it handles
Nested groups and frames remain editable instead of becoming a screenshot or a flat export.
Clipboard files and a bounded SVG subset pass through Varve's existing import pipeline. SVG sibling order, nested groups, spacing, transforms, and logical artifact boundaries remain intact instead of becoming indiscriminately flattened.
On Linux desktop, native MIME transfer keeps editable layer paste available when WebKitGTK cannot expose the rich clipboard to the canvas.
Paste uses the selected visible frame or group as an explicit destination; otherwise it centers foreign content in the canvas viewport without changing your zoom or pan.
Textareas, fields, IME composition, Unicode, and caret behavior remain owned by the browser when you are typing. Bounded HTML clipboard content can become editable canvas paragraphs with supported bold, italic, decoration, font, and color runs; unsupported formatting is reported. Internal transfers also preserve logical vertical-writing intent and orientation instead of inserting visual column breaks.
Copy Text, Copy as SVG, Copy as PNG, Paste as Plain Text, and Paste SVG Markup are available from the Edit menu and palette without changing existing shortcuts. SVG uses the selection's world-space bounds; PNG uses a transparent 1× output by default with explicit 2×/3× choices.
Each picker and drop is tied to its initiating document and session. Starting a newer transfer cancels the older one before it can insert layers or overwrite progress, and Import Results reports only roots that actually landed.
When an import report includes inserted layers, Reveal selection selects those actual roots and fits their world bounds so offscreen results are easy to locate.
If only a names-only text fallback is available, Cut leaves the original layers in place.
Undo restores a Cut or Paste from document history without rereading or rewriting the system clipboard.
Capability matrix
| Representation | Route | Result | Known loss | Tested platform |
|---|---|---|---|---|
| Varve fragment | Copy / Cut / Paste | Editable layers, supported assets, and carried generative edit records | Unsupported external references are reported; advanced resources remain route-dependent | Vitest; browser/native lanes pending |
| SVG | External SVG / paste / Copy as SVG | Editable supported subset; exported roots retain order, grouping, transforms, and world-space arrangement | Unsupported XML, effects, and semantics are reported | Chromium visual fixture; Firefox/Wayland pending |
| PNG/JPEG/WebP | External image / paste | Raster image with alpha where supplied | Pixels are not editable vectors | Browser importer; native transport pending |
| Plain text / bounded HTML | System text or rich clipboard / paste | Editable canvas text with a supported rich-text subset, or native caret insertion | Embedded media and unsupported formatting are omitted with warnings | Vitest parser coverage; keyboard lane pending |
| Figma ordinary Copy | Private clipboard envelope | Unsupported / filtered | No undocumented decoder is enabled | Unverified until owned Firefox capture |