# Penpot changelog > The open-source design and prototyping platform. - Vendor: Kaleidos - Category: Design Tools - Official site: https://penpot.app - Tracked by: What's New (https://whatsnew.fyi/product/penpot) - Harvested from: GitHub (penpot/penpot) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. ## Releases ### 2.17.0 - Date: 2026-07-22 - Version: 2.17.0 - Original notes: https://github.com/penpot/penpot/releases/tag/2.17.0 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.17.0 - **changed** — Render prototype viewer with WASM (Skia) engine instead of SVG - **added** — Expose variants retrieval on LibraryComponent via isVariant() type guard in plugin API - **added** — Add search bar to prototype interaction destination dropdown - **added** — Add dashed stroke customization with dash and gap inputs - **added** — Add author, relative timestamp and short identifier to history entries - **added** — Add typography token row to multiselected texts - **changed** — Optimize propagation of tokens - **added** — Add typography information to token dropdown option - **changed** — Cache OIDC provider records to skip per-login discovery - **fixed** — Validate shape on add-object to catch malformed inputs early - **added** — Add autocomplete combobox to token creation and edition forms - **added** — Add list view mode to color picker UI - **changed** — Use Clipboard API consistently across the application - **changed** — Use $ as DTCG token/group discriminator and make $description optional - **security** — Harden CORS middleware to not reflect Origin with credentials enabled - **fixed** — Revert token migrations on clashing names to prevent data loss - **added** — Add composite typography token input to the Design sidebar - **fixed** — Avoid deduplicating temporary export files to prevent stale content - **added** — Add layer blur effect - **added** — Render guides in WebGL ###### :rocket: Epics and highlights - Render prototype viewer with WASM (Skia) engine instead of SVG [#10037](https://github.com/penpot/penpot/issues/10037) (PR: [#10038](https://github.com/penpot/penpot/pull/10038)) ###### :sparkles: New features & Enhancements - Expose `variants` retrieval on `LibraryComponent` via `isVariant()` type guard in plugin API (by @opcode81) [#9185](https://github.com/penpot/penpot/issues/9185) (PR: [#9302](https://github.com/penpot/penpot/pull/9302)) - Add search bar to prototype interaction destination dropdown (by @EvaMarco) [#8618](https://github.com/penpot/penpot/issues/8618) (PR: [#9769](https://github.com/penpot/penpot/pull/9769)) - Add dashed stroke customization with dash and gap inputs (by @EvaMarco) [#3881](https://github.com/penpot/penpot/issues/3881) (PR: [#9765](https://github.com/penpot/penpot/pull/9765)) - Add author, relative timestamp and short identifier to history entries (by @FairyPigDev) [#7660](https://github.com/penpot/penpot/issues/7660) (PR: [#9132](https://github.com/penpot/penpot/pull/9132)) - Add typography token row to multiselected texts [#9336](https://github.com/penpot/penpot/issues/9336) (PR: [#9128](https://github.com/penpot/penpot/pull/9128)) - Optimize propagation of tokens [#9261](https://github.com/penpot/penpot/issues/9261) (PR: [#9144](https://github.com/penpot/penpot/pull/9144)) - Add typography information to token dropdown option [#9377](https://github.com/penpot/penpot/issues/9377) (PR: [#9375](https://github.com/penpot/penpot/pull/9375)) - Cache OIDC provider records to skip per-login discovery (by @Dexterity104) [#9294](https://github.com/penpot/penpot/issues/9294) (PR: [#9295](https://github.com/penpot/penpot/pull/9295)) - Validate shape on add-object to catch malformed inputs early (by @Dexterity104) [#9507](https://github.com/penpot/penpot/issues/9507) (PR: [#9291](https://github.com/penpot/penpot/pull/9291)) - Remove unreachable try/catch in hex->hsl (by @Dexterity104) [#9244](https://github.com/penpot/penpot/issues/9244) (PR: [#9245](https://github.com/penpot/penpot/pull/9245)) - Remove stray debug log in exporter upload-resource (by @iot2edge) [#9270](https://github.com/penpot/penpot/issues/9270) (PR: [#9272](https://github.com/penpot/penpot/pull/9272)) - Release pool connection during font variant creation (by @Dexterity104) [#9286](https://github.com/penpot/penpot/issues/9286) (PR: [#9287](https://github.com/penpot/penpot/pull/9287)) - Add autocomplete combobox to token creation and edition forms [#9899](https://github.com/penpot/penpot/issues/9899) (PR: [#9109](https://github.com/penpot/penpot/pull/9109), [#8294](https://github.com/penpot/penpot/pull/8294)) - Add list view mode to color picker UI [#4420](https://github.com/penpot/penpot/issues/4420) (PR: [#9953](https://github.com/penpot/penpot/pull/9953)) - Use Clipboard API consistently across the application (by @MilosM348) [#6514](https://github.com/penpot/penpot/issues/6514) (PR: [#9188](https://github.com/penpot/penpot/pull/9188)) - Use `$` as DTCG token/group discriminator and make `$description` optional [#8342](https://github.com/penpot/penpot/issues/8342) (PR: [#9912](https://github.com/penpot/penpot/pull/9912)) - Match version preview banner text to History sidebar labels (by @MilosM348) [#9503](https://github.com/penpot/penpot/issues/9503) (PR: [#9697](https://github.com/penpot/penpot/pull/9697)) - Use "copia" as duplicate suffix for Spanish (by @Rene0422) [#9623](https://github.com/penpot/penpot/issues/9623) (PR: [#9671](https://github.com/penpot/penpot/pull/9671)) - Harden CORS middleware to not reflect Origin with credentials enabled [#9659](https://github.com/penpot/penpot/issues/9659) (PR: [#9675](https://github.com/penpot/penpot/pull/9675)) - Revert token migrations on clashing names to prevent data loss [#9816](https://github.com/penpot/penpot/issues/9816) (PR: [#9950](https://github.com/penpot/penpot/pull/9950)) - Update contributing guidelines with current issue tags a _[Truncated at 4000 characters — full notes: https://github.com/penpot/penpot/releases/tag/2.17.0]_ ### 2.16.2 - Date: 2026-07-01 - Version: 2.16.2 - Original notes: https://github.com/penpot/penpot/releases/tag/2.16.2 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.16.2 - **fixed** — Fix error 500 when submitting the contact form - **fixed** — Fix text editor modifying content and detaching applied typography tokens ###### :bug: Bugs fixed - Fix error 500 when submitting the contact form [#10178](https://github.com/penpot/penpot/issues/10178) (PR: [#10419](https://github.com/penpot/penpot/pull/10419)) - Fix text editor modifying content and detaching applied typography tokens [#10389](https://github.com/penpot/penpot/issues/10389) (PR: [#10402](https://github.com/penpot/penpot/pull/10402)) ### 2.16.1 - Date: 2026-06-24 - Version: 2.16.1 - Original notes: https://github.com/penpot/penpot/releases/tag/2.16.1 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.16.1 - **added** — Batch multiple thumbnail deletions into a single RPC call - **added** — Add WebSocket proxy configuration for MCP in Nginx example - **added** — Add tenant prefix to MCP Redis channel names for multi-environment isolation - **added** — Show MCP key on Integrations page and remove non-recoverable warning from modal - **added** — Add MCP status button with single-tab connection control - **fixed** — Fix race condition between MCP initialization and plugin runtime - **fixed** — Filter ignorable React removeChild errors from browser extensions in error boundary - **fixed** — Show resolved values in font family token combobox when pasting comma-separated values - **fixed** — Fix MCP server status toggle persistence and missing workspace connection options - **fixed** — Allow pasting comma-separated emails in the invite members modal - **fixed** — Fix text element edit detaching applied color tokens ###### :sparkles: New features & Enhancements - Batch multiple thumbnail deletions into a single RPC call [#9944](https://github.com/penpot/penpot/issues/9944) (PR: [#9943](https://github.com/penpot/penpot/pull/9943)) - Add WebSocket proxy configuration for MCP in Nginx example (by @lancatlin) [#10153](https://github.com/penpot/penpot/issues/10153) (PR: [#10152](https://github.com/penpot/penpot/pull/10152)) - Add tenant prefix to MCP Redis channel names for multi-environment isolation [#10277](https://github.com/penpot/penpot/issues/10277) (PR: [#10276](https://github.com/penpot/penpot/pull/10276)) - Show MCP key on Integrations page and remove non-recoverable warning from modal [#10290](https://github.com/penpot/penpot/issues/10290) (PR: [#10298](https://github.com/penpot/penpot/pull/10298)) - Add MCP status button with single-tab connection control [#9923](https://github.com/penpot/penpot/issues/9923) (PR: [#9930](https://github.com/penpot/penpot/pull/9930)) ###### :bug: Bugs fixed - Fix race condition between MCP initialization and plugin runtime [#10138](https://github.com/penpot/penpot/issues/10138) (PR: [#10137](https://github.com/penpot/penpot/pull/10137)) - Filter ignorable React removeChild errors from browser extensions in error boundary [#10146](https://github.com/penpot/penpot/issues/10146) (PR: [#10145](https://github.com/penpot/penpot/pull/10145)) - Show resolved values in font family token combobox when pasting comma-separated values [#10212](https://github.com/penpot/penpot/issues/10212) (PR: [#10215](https://github.com/penpot/penpot/pull/10215)) - Fix MCP server status toggle persistence and missing workspace connection options [#10292](https://github.com/penpot/penpot/issues/10292) (PR: [#10226](https://github.com/penpot/penpot/pull/10226)) - Allow pasting comma-separated emails in the invite members modal [#10173](https://github.com/penpot/penpot/issues/10173) (PR: [#10186](https://github.com/penpot/penpot/pull/10186)) - Fix text element edit detaching applied color tokens [#9255](https://github.com/penpot/penpot/issues/9255) (PR: [#9525](https://github.com/penpot/penpot/pull/9525), [#9814](https://github.com/penpot/penpot/pull/9814), [#10340](https://github.com/penpot/penpot/pull/10340)) ### 2.16.0 - Date: 2026-06-11 - Version: 2.16.0 - Original notes: https://github.com/penpot/penpot/releases/tag/2.16.0 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.16.0 - **added** — WebGL rendering beta user preference - **added** — Design Tokens at the design tab with numeric fields and token selection - **added** — Delete group option to assets panel context menu - **added** — Alpha percentage display on library color values - **added** — Clear artboard guides option to frame context menu - **added** — Loader feedback while importing and exporting files - **added** — Ability to duplicate color and typography styles - **added** — WOFF2 support for user uploaded fonts - **added** — Import Tokens from linked library - **added** — Option to download custom fonts - **added** — Copy as image option to workspace context menu - **added** — Tab and Shift+Tab navigation to rename layers sequentially - **added** — Copy and paste entire rows in existing table - **added** — Rename token group functionality - **added** — Duplicate token group functionality - **added** — Copy token name from contextual menu - **added** — Drag-to-change for numeric inputs in workspace sidebar - **added** — Per-group add button for typographies - **added** — Find and Replace for text content and layer names - **added** — Use page name for multi-export ZIP and PDF downloads ###### :boom: Breaking changes & Deprecations ###### :rocket: Epics and highlights - WebGL rendering (beta) user preference [#9683](https://github.com/penpot/penpot/issues/9683) (PR:[9113](https://github.com/penpot/penpot/pull/9113)) - Design Tokens at the design tab: numeric fields with token selection in place [#9358](https://github.com/penpot/penpot/issues/9358) ###### :sparkles: New features & Enhancements - Add delete group to assets panel context menu (by @FairyPigDev) [#9141](https://github.com/penpot/penpot/issues/9141) (PR: [#9151](https://github.com/penpot/penpot/pull/9151), [#9211](https://github.com/penpot/penpot/pull/9211)) - Show alpha percentage on library color values (by @rockchris099) [#6328](https://github.com/penpot/penpot/issues/6328) - Add clear artboard guides to frame context menu (by @eureka0928) [#6987](https://github.com/penpot/penpot/issues/6987) (PR: [#8936](https://github.com/penpot/penpot/pull/8936)) - Add loader feedback while importing and exporting files (by @moorsecopers99) [#9020](https://github.com/penpot/penpot/issues/9020) (PR: [#9024](https://github.com/penpot/penpot/pull/9024)) - Allow duplicating color and typography styles (by @MkDev11) [#2912](https://github.com/penpot/penpot/issues/2912) (PR: [#8449](https://github.com/penpot/penpot/pull/8449)) - Add woff2 support on user uploaded fonts (by @Nivl) [#3521](https://github.com/penpot/penpot/issues/3521) (PR: [#8367](https://github.com/penpot/penpot/pull/8367)) - Import Tokens from linked library (by @dfelinto) [#9635](https://github.com/penpot/penpot/issues/9635) (PR: [#8439](https://github.com/penpot/penpot/pull/8439)) - Option to download custom fonts (by @dfelinto) [#9672](https://github.com/penpot/penpot/issues/9672) (PR: [#8335](https://github.com/penpot/penpot/pull/8335)) - Add copy as image to workspace context menu (by @dfelinto) [#9607](https://github.com/penpot/penpot/issues/9607) (PR: [#8364](https://github.com/penpot/penpot/pull/8364), [#9586](https://github.com/penpot/penpot/pull/9586)) - Add Tab/Shift+Tab navigation to rename layers sequentially (by @bittoby) [#2569](https://github.com/penpot/penpot/issues/2569) (PR: [#8506](https://github.com/penpot/penpot/pull/8506)) - Copy and paste entire rows in existing table (by @bittoby) [#5969](https://github.com/penpot/penpot/issues/5969) (PR: [#8498](https://github.com/penpot/penpot/pull/8498)) - Rename token group [#9637](https://github.com/penpot/penpot/issues/9637) (PR: [#8275](https://github.com/penpot/penpot/pull/8275)) - Duplicate token group [#9638](https://github.com/penpot/penpot/issues/9638) (PR: [#8886](https://github.com/penpot/penpot/pull/8886)) - Copy token name from contextual menu [#9639](https://github.com/penpot/penpot/issues/9639) (PR: [#8566](https://github.com/penpot/penpot/pull/8566)) - Add drag-to-change for numeric inputs in workspace sidebar (by @RenzoMXD) [#2466](https://github.com/penpot/penpot/issues/2466) (PR: [#8536](https://github.com/penpot/penpot/pull/8536)) - Add per-group add button for typographies (by @eureka0928) [#5275](https://github.com/penpot/penpot/issues/5275) (PR: [#8895](https://github.com/penpot/penpot/pull/8895)) - Add Find & Replace for text content and layer names (by @statxc) [#7108](https://github.com/penpot/penpot/issues/7108) (PR: [#8899](https://github.com/penpot/penpot/pull/8899), [#9687](https://github.com/penpot/penpot/pull/9687)) - Use page name for multi-export ZIP/PDF downloads (by @Dexterity104) [#8773](https://github.com/penpot/penpot/issues/8773) (PR: [#8874](https://github.com/penpot/penpot/pull/8874)) - Make links in comments clickable (by @eureka0928) [#1602](https://github.com/penpot/penpot/issues/1602) (PR: [#8894](https://github.com/penpot/penpot/pull/8894)) - Add visibility toggle for strokes (by @eureka0928) [#7438](https://github.com/penpot/penpot/issues/7438) (PR: [#8913](https://github.com/penpot/penpot/pull/8913)) - Sort asset library subfolders alphabetically at every nesting level (by @eureka0928) _[Truncated at 4000 characters — full notes: https://github.com/penpot/penpot/releases/tag/2.16.0]_ ### 2.15.4 - Date: 2026-06-02 - Version: 2.15.4 - Original notes: https://github.com/penpot/penpot/releases/tag/2.15.4 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.15.4 - **added** — Add rate limiting and concurrency safety for file snapshot operations - **added** — Prevent concurrent font uploads from causing excessive simultaneous requests - **fixed** — Emit create-shape-layout for flex/grid layout creation from plugins and MCP - **fixed** — Fix broken authentication on /assets handlers - **fixed** — Fix API doc endpoint returning HTML as text/plain - **fixed** — Fix unexpected error when opening the export dialog ###### :sparkles: New features & Enhancements - Add rate limiting and concurrency safety for file snapshot operations [#9723](https://github.com/penpot/penpot/issues/9723) (PR: [#9722](https://github.com/penpot/penpot/pull/9722)) - Prevent concurrent font uploads from causing excessive simultaneous requests [#9922](https://github.com/penpot/penpot/issues/9922) (PR: [#9921](https://github.com/penpot/penpot/pull/9921)) ###### :bug: Bugs fixed - Emit `create-shape-layout` for flex/grid layout creation from plugins and MCP (same event as workspace) [#9652](https://github.com/penpot/penpot/issues/9652) (PR: [#9654](https://github.com/penpot/penpot/pull/9654)) - Fix broken authentication on /assets handlers [#9677](https://github.com/penpot/penpot/issues/9677) (PR: [#9679](https://github.com/penpot/penpot/pull/9679)) - Fix API doc endpoint returning HTML as text/plain [#9680](https://github.com/penpot/penpot/issues/9680) (PR: [#9681](https://github.com/penpot/penpot/pull/9681)) - Fix unexpected error when opening the export dialog [#9721](https://github.com/penpot/penpot/issues/9721) (PR: [#9704](https://github.com/penpot/penpot/pull/9704)) ### 2.15.3 - Date: 2026-05-14 - Version: 2.15.3 - Original notes: https://github.com/penpot/penpot/releases/tag/2.15.3 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.15.3 - **fixed** — Fix Plugin API token methods failing with schema validation error on PRO - **fixed** — Sanitize comment content on rendering - **fixed** — Sanitize font family names on custom uploaded fonts ###### :bug: Bugs fixed - Fix Plugin API token methods failing with schema validation error on PRO [Github #9641](https://github.com/penpot/penpot/issues/9641) (PR: [#9632](https://github.com/penpot/penpot/pull/9632)) - Sanitize comment content on rendering [Github #9642](https://github.com/penpot/penpot/issues/9642) (PR: [#9605](https://github.com/penpot/penpot/pull/9605)) - Sanitize font family names on custom uploaded fonts [Github #9643](https://github.com/penpot/penpot/issues/9643) (PR: [#9601](https://github.com/penpot/penpot/pull/9601)) ### 2.15.2 - Date: 2026-05-13 - Version: 2.15.2 - Original notes: https://github.com/penpot/penpot/releases/tag/2.15.2 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.15.2 - **fixed** — Fix mcp related internal config for docker images ###### :bug: Bugs fixed - Fix mcp related internal config for docker images [Github #9565](https://github.com/penpot/penpot/pull/9565) ### 2.15.1 - Date: 2026-05-12 - Version: 2.15.1 - Original notes: https://github.com/penpot/penpot/releases/tag/2.15.1 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.15.1 - **added** — Support for chunked uploading of fonts ###### :sparkles: New features & Enhancements - Add support for chunked uploading of fonts [Github #9560](https://github.com/penpot/penpot/issues/9560) ### 2.15.0 - Date: 2026-05-12 - Version: 2.15.0 - Original notes: https://github.com/penpot/penpot/releases/tag/2.15.0 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.15.0 - **added** — Add MCP server integration - **added** — Add chunked upload API for large media and binary files, removing previous upload size limits - **added** — Add anonymous telemetry event collection - **added** — Add security headers to Nginx on Docker images - **changed** — Improve team name validation - **changed** — Enhance readability of applied tokens in plugins API - **changed** — Encourage use of flex/grid layouts in designs generated via MCP - **changed** — Improve MCP server logging, adding Loki support - **fixed** — Fix text edition mode not exited when changing selection, blocking token application - **fixed** — Reduce memory usage of MCP server when handling images - **fixed** — Fix Plugin API token methods rejecting JS array of strings - **fixed** — Fix release notes modal appearing behind the dashboard sidebar - **fixed** — Fix empty warning on login - **fixed** — Fix maximum call stack size exceeded in SSE read-stream - **fixed** — Fix incorrect handling of version restore operation - **security** — Fix MCP ReplServer binding to all interfaces (0.0.0.0) instead of localhost, preventing unauthenticated RCE - **fixed** — Fix MCP integrations URL copy action to match the URL displayed in settings - **fixed** — Fix swapped analytics event names on MCP tab-switch dialog - **fixed** — Fix multiple selection on shapes with token applied to stroke color - **fixed** — Fix onboarding modals appearing behind libraries and templates panel ###### :sparkles: New features & Enhancements - Add MCP server integration [Github #9174](https://github.com/penpot/penpot/issues/9174) - Add chunked upload API for large media and binary files (removes previous upload size limits) [Github #9516](https://github.com/penpot/penpot/issues/9516) - Add anonymous telemetry event collection [Github #9467](https://github.com/penpot/penpot/issues/9467) - Improve team name validation [Github #9517](https://github.com/penpot/penpot/issues/9517) - Enhance readability of applied tokens in plugins API [Github #9175](https://github.com/penpot/penpot/issues/9175) - Encourage use of flex/grid layouts in designs generated via MCP [Github #9081](https://github.com/penpot/penpot/issues/9081) - Improve MCP server logging, adding Loki support [Github #9415](https://github.com/penpot/penpot/issues/9415) - Add security headers to Nginx on Docker images [Github #9519](https://github.com/penpot/penpot/issues/9519) ###### :bug: Bugs fixed - Fix text edition mode not exited when changing selection, blocking token application [Github #9346](https://github.com/penpot/penpot/issues/9346) - Reduce memory usage of MCP server when handling images (by @opcode81) [Github #9420](https://github.com/penpot/penpot/issues/9420) - Fix Plugin API token methods rejecting JS array of strings (by @boskodev790) [Github #9162](https://github.com/penpot/penpot/issues/9162) - Fix release notes modal appearing behind the dashboard sidebar (by @RenzoMXD) [Github #8296](https://github.com/penpot/penpot/issues/8296) - Fix empty warning on login [Github #9520](https://github.com/penpot/penpot/issues/9520) - Fix maximum call stack size exceeded in SSE read-stream [Github #9470](https://github.com/penpot/penpot/issues/9470) - Fix incorrect handling of version restore operation [Github #9515](https://github.com/penpot/penpot/issues/9515) - Fix MCP ReplServer binding to all interfaces (0.0.0.0) instead of localhost, allowing unauthenticated RCE [Github #9518](https://github.com/penpot/penpot/issues/9518) - Fix MCP integrations URL copy action to match the URL displayed in settings [Github #9238](https://github.com/penpot/penpot/issues/9238) - Fix swapped analytics event names on MCP tab-switch dialog (by @Dexterity104) [Github #9496](https://github.com/penpot/penpot/issues/9496) - Fix multiple selection on shapes with token applied to stroke color [Github #9522](https://github.com/penpot/penpot/issues/9522) - Fix onboarding modals appearing behind libraries and templates panel [Github #9521](https://github.com/penpot/penpot/issues/9521) - Fix keep-alive interval leak in PluginBridge (by @opcode81) [Github #9430](https://github.com/penpot/penpot/issues/9430) ### 2.14.5 - Date: 2026-05-06 - Version: 2.14.5 - Original notes: https://github.com/penpot/penpot/releases/tag/2.14.5 - Permalink: https://whatsnew.fyi/product/penpot/releases/2.14.5 - **fixed** — Fix incorrect invitation token handling on register process ###### :bug: Bugs fixed - Fix incorrect invitation token handling on register process [Github #9380](https://github.com/penpot/penpot/pull/9380)