FigCopy - v1.0.0 - Initial Release & Security Fixes
Changelog
All notable changes to this project will be documented in this file.
[1.0.0] - Recent Security & Robustness Updates
Security & Privacy
- SSRF / Beaconing Protection: The Figma plugin now scans pasted payloads for external image/media URLs. If a stranger's payload tries to load external assets, the plugin halts and presents a confirmation UI listing the domains. Local development URLs (
localhost, LAN IPs) bypass this check automatically for zero-friction workflows. - Privacy & Form Data: Password fields are no longer captured in plaintext.
- Skip Form Input Values: A new toggle has been added to the extension popup to easily omit live form data (emails, searches) from being captured in shared payloads.
- Stack Overflow Prevention: Added strict depth (max 500 levels) and node count (max 3000) limits to the Figma plugin to defend against malformed or malicious, deeply-nested JSON payloads.
- DOM XSS Mitigation: Plugin UI properly escapes dragged-and-dropped file names to prevent script injection in the iframe sandbox.
Fixes & Improvements
- Extension Cleanup: The background script now properly garbage-collects tab emulation states when browser tabs are closed, preventing memory leaks in session storage.
- Permissions Transparency: Added a
Permissionssection to the README to clarify the scoped usage of the ChromedebuggerAPI (it is only used forEmulation.setDeviceMetricsOverride). - Gradient Rasterization Security: Plugin UI now builds DOM elements natively using
document.createElementinstead of raw HTML string interpolation when rasterizing CSS gradients, hardening against injection vectors. - Payload Truncation Warning: The extension will now show a toast warning to the user if a DOM subtree exceeds the 1500-node hard limit, preventing silent truncation in the generated payload.
- Robust Pseudo-Element Parsing: Added null-checks to the pseudo-element parser in
content.jsto prevent the extension from crashing on malformed CSSurl()strings. - Comprehensive Form Capture: Expanded
isTextInputlist to natively handle modern HTML5 inputs (date,color,range,time, etc.), ensuring full-fidelity form capture. - CI & Automation: Added GitHub Action workflows for basic CI linting and automated release packaging, and removed checked-in binary
.zipartifacts from the repository.
[0.0.1] - Initial Release
Added
- Core Engine: DOM-to-JSON serialization in Chrome Extension and JSON-to-Figma reconstruction in Figma Plugin.
- Auto-Layout Support: Perfectly maps Flexbox (
display: flex) properties including direction, gaps, padding, wrapping, and alignment into native Figma Auto Layout frames. - Deep Styling Capture: Supports CSS margins, absolute positioning, borders, radii, opacity, and complex
box-shadowproperties (including inner shadows). - Text & Typography: High-fidelity capture of text content, fonts (falling back to Inter), weights, sizes, line heights, text-transform, and text-decoration.
- Media & Images: Native support for
<img>,<video>(mapped to Figma Video nodes), and<canvas>rendering. - Advanced CSS Rendering:
- Converts
-webkit-maskSVG data URLs into native, color-filled Figma vectors. - Native browser rasterization for complex
linear-gradientandradial-gradientbackgrounds.
- Converts
- Color Parsing: Full translation of HEX, RGB(A), HSL, Lab, and OKLCH (CSS Color Level 4) values into Figma-compatible RGBA objects.
- Viewport Emulation: Toggleable device width emulation directly from the extension popup using Chrome's debugger API.
- File Queueing: Support for dragging, dropping, and queuing multiple
.jsonpayloads in the Figma plugin for batch building.