Penpot

Design Tools

The open-source design and prototyping platform.

Latest 2.17.0 · by KaleidosWebsitepenpot/penpot

Release activity

Release activity — 10 releases across 9 days since May 6, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before May 6, 2026. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026
MondayNo releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026
Tuesday2 releases on May 12, 2026No releases on May 19, 2026No releases on May 26, 20261 release on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026
Wednesday1 release on May 6, 20261 release on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 20261 release on Jun 24, 20261 release on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 20261 release on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on May 7, 20261 release on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 20261 release on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026

10 releases since May 6, 2026, busiest day 2

Changelog

2.17.0

:rocket: Epics and highlights
  • Render prototype viewer with WASM (Skia) engine instead of SVG #10037 (PR: #10038)
:sparkles: New features & Enhancements
  • Expose variants retrieval on LibraryComponent via isVariant() type guard in plugin API (by @opcode81) #9185 (PR: #9302)
  • Add search bar to prototype interaction destination dropdown (by @EvaMarco) #8618 (PR: #9769)
  • Add dashed stroke customization with dash and gap inputs (by @EvaMarco) #3881 (PR: #9765)
  • Add author, relative timestamp and short identifier to history entries (by @FairyPigDev) #7660 (PR: #9132)
  • Add typography token row to multiselected texts #9336 (PR: #9128)
  • Optimize propagation of tokens #9261 (PR: #9144)
  • Add typography information to token dropdown option #9377 (PR: #9375)
  • Cache OIDC provider records to skip per-login discovery (by @Dexterity104) #9294 (PR: #9295)
  • Validate shape on add-object to catch malformed inputs early (by @Dexterity104) #9507 (PR: #9291)
  • Remove unreachable try/catch in hex->hsl (by @Dexterity104) #9244 (PR: #9245)
  • Remove stray debug log in exporter upload-resource (by @iot2edge) #9270 (PR: #9272)
  • Release pool connection during font variant creation (by @Dexterity104) #9286 (PR: #9287)
  • Add autocomplete combobox to token creation and edition forms #9899 (PR: #9109, #8294)
  • Add list view mode to color picker UI #4420 (PR: #9953)
  • Use Clipboard API consistently across the application (by @MilosM348) #6514 (PR: #9188)
  • Use $ as DTCG token/group discriminator and make $description optional #8342 (PR: #9912)
  • Match version preview banner text to History sidebar labels (by @MilosM348) #9503 (PR: #9697)
  • Use "copia" as duplicate suffix for Spanish (by @Rene0422) #9623 (PR: #9671)
  • Harden CORS middleware to not reflect Origin with credentials enabled #9659 (PR: #9675)
  • Revert token migrations on clashing names to prevent data loss #9816 (PR: #9950)
  • Update contributing guidelines with current issue tags and CSS linting rules #9900 (PR: #9418)
  • Add composite typography token input to the Design sidebar #9932 (PR: #9128, #9375, #8749)
  • Avoid deduplicating temporary export files to prevent stale content (by @yong2bba) #9970 (PR: #9959)
  • Add layer blur effect #9844 (PR: #10034)
  • Add concurrency limiter for MCP Server Plugin Communications #9493 (PR: #9748)
  • Render guides in WebGL #10068 (PR: #10014)
  • Add configurable resource limits to ImageMagick image processing #10223 (PR: #10240)
  • Add resource limits to font processing child processes #10234 (PR: #10274)
  • Add color variants and positioning to selection size badge (by @bittoby) #10258 (PR: #9210)
  • Use hard reload for render engine switching in the workspace menu #10441 (PR: #10444)
  • Rotate size badge when shape is rotated #10386 (PR: #10393)
  • Add separate internal URI for exporter to handle Docker deployments where internal and public URIs differ #10627 (PR: #10630)
:bug: Bugs fixed
  • Fix LDAP provider params schema typo (bind-passworbind-password) introduced during the clojure.specmalli migration; the schema slot now matches the runtime key actually read by prepare-params (:password (:bind-password cfg)) and try-connectivity ((:bind-password cfg)), so a wrong type for the password no longer slips through unvalidated
  • Fix login-with-ldap silently dropping its error message on the ldap-not-initialized restriction (typo :hide:hint); the message "ldap auth provider is not initialized" now actually surfaces in logs and error responses instead of being discarded into an unread key
  • Fix get-view-only-bundle crashing when a share-link viewer encounters a team member whose email lacks @ (NullPointerException in obfuscate-email) or whose domain has no . (previously produced a dangling-dot ****@****.); now the viewer-side obfuscation is nil-safe and omits the trailing dot when the domain has no TLD
  • Fix Copy as SVG: emit a single valid SVG document when multiple shapes are selected, and publish image/svg+xml to the clipboard so the paste target works in Inkscape and other SVG-native tools Github #838
  • Add export panel to inspect styles tab Taiga #13582
  • Fix styles between grid layout inputs Taiga #13526
  • Fix id prop on switch component Taiga #13534
  • Update copy on penpot update message Taiga #12924
  • Fix scroll on library modal Taiga #13639
  • Fix dates to avoid show them in english when browser is in auto Taiga #13786
  • Fix focus radio button Taiga #13841
  • Token tree should be expanded by default Taiga #13631
  • Fix opacity incorrectly disabled for visible shapes Taiga #13906
  • Update onboarding image Taiga #13864
  • Fix plugin modal drag interactions over iframe and close-button behavior (by @marekhrabe) Github #8871
  • Fix hot update on color-row on texts Taiga #13923
  • Fix selected color tokens Taiga #13930
  • Display resolved values of inactive tokens Taiga #13628
  • Fix app crash when selecting shapes with one hidden Taiga #13959
  • Fix opacity mixed value Taiga #13960
  • Fix gap input throwing an error Github #8984
  • Fix copy to be more specific Taiga #13990
  • Fix colorpicker layout so the eyedropper button is visible again Taiga #14057
  • Fix SVG stroke line join not applied when pasting strokes #4836 (PR: #9982, #10019)
  • Fix blend-mode hover preview on canvas not reverted when dismissing dropdown (by @jack-stormentswe) #9235 (PR: #9237)
  • Fix View Mode mouse-leave and click in combination not working #4855 (PR: #9991)
  • Fix Storybook UI missing scrollbar (by @MilosM348) #6049 (PR: #9319)
  • Fix font selector missing intermediate font weights for Source Sans Pro and similar fonts (by @dhgoal) #7378 (PR: #9247)
  • Fix plugin API typography.remove() passing wrong parameter format (by @leonaIee) #8223 (PR: #9279)
  • Fix plugin API fills and strokes array elements being read-only (by @RenzoMXD) #8357 (PR: #9161)
  • Fix "Show Guides" shortcut not working on German keyboards (by @RenzoMXD) #8423 (PR: #9209)
  • Fix token validation failing when a malformed token exists in the Component category #9010 (PR: #9025, #9825)
  • Fix Docker frontend image missing CSS reference (by @NativeTeachingAidsB) #9135 (PR: #9840)
  • Fix MCP media upload error and SVG data URI image parsing (by @claytonlin1110) #9164 (PR: #9201)
  • Fix lost-update race on team features during concurrent file creation (by @JPette1783) #9197 (PR: #9198)
  • Fix get-profile RPC method silently masking DB errors as "Anonymous User" (by @jack-stormentswe) #9253 (PR: #9254)
  • Fix crash when creating or editing tokens named "white" or "black" #9256 (PR: #9034)
  • Fix conditional use-ctx hook violation in shape-wrapper (by @Dexterity104) #9280 (PR: #9281)
  • Make ShapeImageIds byte conversion fallible to prevent panics (by @Dexterity104) #9282 (PR: #9283)
  • Fix plugin API showing incorrect error messages for invalid operations (by @bitcompass) #9417 (PR: #9486)
  • Add inactivity timeout to SSE sessions to match Streamable HTTP sessions #9432 (PR: #9464)
  • Fix component variant switching behaving differently on two identical copies (by @MischaPanch) #9498 (PR: #9434)
  • Add missing error message for invalid shadow token #9583 (PR: #9809)
  • Fix moving a component in a library triggering stale update notification in dependent files #9629 (PR: #9616)
  • Fix newly created token not visible when placed above existing tokens in the tree #9711 (PR: #9803)
  • Fix B(V) input label misalignment in HSB color picker #9731 (PR: #9793)
  • Fix text style name input appending font name instead of replacing it when edited #9785 (PR: #9784)
  • Fix shadow token creation not allowing empty blur or spread value #9808 (PR: #9809)
  • Fix thinner line in path when its stroke is deleted and added again #9823 (PR: #9836)
  • Fix layers panel perceivable lag when displaying changes #9834
  • Fix settings form visual layout broken after recent contribution #9882 (PR: #9883)
  • Fix crash when duplicating shapes with fill/stroke properties #9893 (PR: #9647)
  • Fix S3 storage failing with IRSA/Web Identity Token credentials (by @jpc2350) #9927 (PR: #9928)
  • Fix onboarding template spinner stuck after failed template download (by @jeffrey701) #9931 (PR: #9504)
  • Fix stroke caps not working correctly when there are other nodes in the middle of a path #9987 (PR: #9989)
  • Fix missing three dots button for column and row edit menu in WebKit/Safari #9993 (PR: #9994)
  • Fix exported path with strokes being cut off in SVG file #9995 (PR: #9996)
  • Fix French Canada locale falling back to French translations instead of French Canadian (by @alexismo) #10017 (PR: #10027)
  • Fix inconsistent float precision in typography lineHeight API responses #3658 (PR: #9973)
  • Fix variant switching preserving stale absolute positions in nested instance overrides #9749 (PR: #9691)
  • Fix missing top border on first element in shared libraries list #9910 (PR: #10062)
  • Fix theme not applied correctly in sample plugins #9957 (PR: #9955)
  • Fix export presets not being saved in view mode inspect panel #9971 (PR: #9972)
  • Fix cropped outer stroke of rotated board in view mode #9978 (PR: #9979)
  • Fix re-registration with same email showing verification prompt when email verification is disabled #9998 (PR: #9999)
  • Fix toggle color library visibility from color picker shortcut button #10036 (PR: #10129)
  • Improve image rendering performance by making snapshots async #10045 (PR: #10150)
  • Fix text layers wrapping to two lines after copy-pasting between files until edited #10052 (PR: #10081)
  • Fix plugin API creating shapes on wrong page and cross-page appendChild silently no-ops #10078 (PR: #10085)
  • Fix token dropdown triggered with select arrow not replacing previous content #10104 (PR: #10174)
  • Fix incorrect color count in color libraries dropdown (by @Krishcode264) #10120 (PR: #10281)
  • Fix color picker eyedropper returning wrong color values on some GPUs #10135 (PR: #10255)
  • Fix content from previous rendered frame visible in rounded frame transparent areas in viewer WebGL #10161 (PR: #10191)
  • Fix exported HTML/CSS not correctly rendered #10214 (PR: #10217)
  • Fix template import failing from dashboard when downloading example files (by @mdbenito) #10317 (PR: #10308)
  • Emit grid layout telemetry when adding via MCP or plugins #10307 (PR: #10319)
  • Fix guide hover feedback sticking or stopping after interaction #10321 (PR: #10333)
  • Fix rulers visible in thumbnail rendering #10328
  • Fix page switch blur disappearing early #10332 (PR: #10337)
  • Fix open overlay board mispositioned with repeated image artifacts in viewer WebGL #10180 (PR: #10191)
  • Fix color picker preview when browser has non-100% zoom level #10265 (PR: #10305)
  • Fix negative margins no longer working #10001 (PR: #10353)
  • Fix undo in properties panel reversing each drag step instead of the entire drag when adjusting numeric inputs #10066 (PR: #10193)
  • Fix Plugin API reference token creation and token application failing when the target token set is inactive #10070, #10071 (PR: #10297)
  • Fix Plugin API rejecting numeric token values with a generic validation error #10073 (PR: #10270)
  • Fix Plugin API whole-page export failing with a generic HTTP error #10076 (PR: #10148)
  • Fix Plugin API applyToken failing on padding properties #10077 (PR: #10087)
  • Fix Plugin API crash when instancing or detaching variants #10099 (PR: #10140)
  • Fix black square appearing on first view mode launch #10188 (PR: #10210)
  • Fix Plugin API openPage() not switching active page within the same execution #10195 (PR: #10085)
  • Fix Plugin API appending shapes to the active page instead of the specified .root #10196 (PR: #10271)
  • Fix Plugin API createPage() not making the new page active synchronously #10197 (PR: #10085)
  • Fix Plugin API Flow.startingBoard returning null after createFlow #10203 (PR: #10244)
  • Fix Plugin API page.flows returning null instead of empty array when page has no flows #10204 (PR: #10246)
  • Fix Plugin API auto-creating a stray 'Flow 1' when wiring interactions #10205 (PR: #10231)
  • Fix Plugin API createText throwing error when called with an empty string #10206 (PR: #10219)
  • Fix export rendering auto-width text with a substituted fallback font #10208 (PR: #10238)
  • Expose 'Fix when scrolling' (sticky) constraint in the Plugin API #10209 (PR: #10218)
  • Fix long typography token name in remap modal #10301 (PR: #10356)
  • Fix 'Go to your Penpot' link on error page redirecting to the same team instead of user home #10324 (PR: #10322)
  • Fix premature WASM view-interaction end during pan/zoom pause #10424 (PR: #10425)
  • Fix emojis without fill but with outer stroke not being rendered #10473 (PR: #10519)
  • Fix texts with lots of emojis not being rendered across multiple tiles #10474 (PR: #10504)
  • Fix artifacts in texts with inner strokes #10476 (PR: #10509)
  • Fix open overlay position control showing only center icon instead of full grid #10176 (PR: #10512)
  • Fix wrong text color in selection size badge #10256 (PR: #10393)
  • Fix several issues with plugins #10394
  • Fix pixel grid rendered on top of the rulers #10426 (PR: #10430)
  • Fix double-clicking text without fills creating a black file #10472 (PR: #10483)
  • Fix SVG raw caching prevented by unnecessary Cow wrapping #10488 (PR: #10492)
  • Add component reset operation to plugin API #10561 (PR: #10533)
  • Fix blur menu alignment in Firefox #10576 (PR: #10575)
  • Fix sidebar not showing all elements with grid layout #10539 (PR: #10600)
  • Fix sidebar getting stuck when selecting shapes that haven't loaded yet #10599 (PR: #10600)
  • Fix text shape bounding boxes not updating after remote fonts finish loading #10585 (PR: #10566)
  • Fix text editor crash from Draft.js selection offset exceeding DOM node length #10607 (PR: #10608)
  • Fix workspace crash when converting SVG-raw shape to path #10612 (PR: #10613)
  • Fix component variant panel crash when selecting multiple copies with mismatched property counts #10615 (PR: #10616)
  • Fix workspace crash from recursion when clicking shape in comments mode #10620 (PR: #10622)
  • Fix Plugin API validation error when listing shared plugin data keys #10628 (PR: #10632)
  • Fix Plugin API silently dropping plugin data written to shared library #10629 (PR: #10632)
  • Fix workspace crash when event target is a DOM text node #10640 (PR: #10641)
View originalPermalink
How 2.17.0 went

2.16.2

:bug: Bugs fixed
  • Fix error 500 when submitting the contact form #10178 (PR: #10419)
  • Fix text editor modifying content and detaching applied typography tokens #10389 (PR: #10402)
View originalPermalink
How 2.16.2 went

2.16.1

:sparkles: New features & Enhancements
  • Batch multiple thumbnail deletions into a single RPC call #9944 (PR: #9943)
  • Add WebSocket proxy configuration for MCP in Nginx example (by @lancatlin) #10153 (PR: #10152)
  • Add tenant prefix to MCP Redis channel names for multi-environment isolation #10277 (PR: #10276)
  • Show MCP key on Integrations page and remove non-recoverable warning from modal #10290 (PR: #10298)
  • Add MCP status button with single-tab connection control #9923 (PR: #9930)
:bug: Bugs fixed
  • Fix race condition between MCP initialization and plugin runtime #10138 (PR: #10137)
  • Filter ignorable React removeChild errors from browser extensions in error boundary #10146 (PR: #10145)
  • Show resolved values in font family token combobox when pasting comma-separated values #10212 (PR: #10215)
  • Fix MCP server status toggle persistence and missing workspace connection options #10292 (PR: #10226)
  • Allow pasting comma-separated emails in the invite members modal #10173 (PR: #10186)
  • Fix text element edit detaching applied color tokens #9255 (PR: #9525, #9814, #10340)
View originalPermalink
How 2.16.1 went

2.16.0

:boom: Breaking changes & Deprecations
:rocket: Epics and highlights
  • WebGL rendering (beta) user preference #9683 (PR:9113)
  • Design Tokens at the design tab: numeric fields with token selection in place #9358
:sparkles: New features & Enhancements
  • Add delete group to assets panel context menu (by @FairyPigDev) #9141 (PR: #9151, #9211)
  • Show alpha percentage on library color values (by @rockchris099) #6328
  • Add clear artboard guides to frame context menu (by @eureka0928) #6987 (PR: #8936)
  • Add loader feedback while importing and exporting files (by @moorsecopers99) #9020 (PR: #9024)
  • Allow duplicating color and typography styles (by @MkDev11) #2912 (PR: #8449)
  • Add woff2 support on user uploaded fonts (by @Nivl) #3521 (PR: #8367)
  • Import Tokens from linked library (by @dfelinto) #9635 (PR: #8439)
  • Option to download custom fonts (by @dfelinto) #9672 (PR: #8335)
  • Add copy as image to workspace context menu (by @dfelinto) #9607 (PR: #8364, #9586)
  • Add Tab/Shift+Tab navigation to rename layers sequentially (by @bittoby) #2569 (PR: #8506)
  • Copy and paste entire rows in existing table (by @bittoby) #5969 (PR: #8498)
  • Rename token group #9637 (PR: #8275)
  • Duplicate token group #9638 (PR: #8886)
  • Copy token name from contextual menu #9639 (PR: #8566)
  • Add drag-to-change for numeric inputs in workspace sidebar (by @RenzoMXD) #2466 (PR: #8536)
  • Add per-group add button for typographies (by @eureka0928) #5275 (PR: #8895)
  • Add Find & Replace for text content and layer names (by @statxc) #7108 (PR: #8899, #9687)
  • Use page name for multi-export ZIP/PDF downloads (by @Dexterity104) #8773 (PR: #8874)
  • Make links in comments clickable (by @eureka0928) #1602 (PR: #8894)
  • Add visibility toggle for strokes (by @eureka0928) #7438 (PR: #8913)
  • Sort asset library subfolders alphabetically at every nesting level (by @eureka0928) #2572 (PR: #8952)
  • Add Paste to replace (Cmd+Shift+V) for selected shapes (by @eureka0928) #4240 (PR: #9033)
  • Differentiate incoming and outgoing interaction link colors (by @claytonlin1110) #7794 (PR: #8923)
  • Reorder prototyping overlay options to show Position before Relative to (by @rockchris099) #2910
  • Add customizable colors for ruler guides (by @Dexterity104) #5199 (PR: #8986)
  • Persist asset search and section filter across sidebar tabs (by @eureka0928) #2913 (PR: #8985)
  • Add delete and duplicate buttons to typography dialog (by @eureka0928) #5270 (PR: #8983)
  • Edit ruler guide position by double-clicking the guide pill (by @eureka0928) #2311 (PR: #8987)
  • Add search bar to color palette (by @eureka0928) #7653 (PR: #8994)
  • Add search bar to board size presets (by @eureka0928) #4658 (PR: #9117)
  • Allow customising the OIDC login button label (by @wdeveloper16) #7027 (PR: #9026)
  • Add page separators in Workspace #9180 (PR: #8561)
  • Preserve vector content when pasting SVG from external tools (by @RenzoMXD) #546 (PR: #9182)
  • Add pixel grid color picker in viewport settings (by @jack-stormentswe) #7750 (PR: #9155)
  • Add HEX/HSB/HSL support to color picker with persistent model switcher (by @edwin-rivera-dev) #9133 (PR: #9134)
  • Show specific invitation-link error messages (by @niwinz) #9220 (PR: #9223)
  • Show detailed file import error messages (by @jsdevninja) #8212 (PR: #9004)
  • Add read-only preview mode for saved versions (by @wdeveloper16) #7622 (PR: #8976, #9514)
  • Add clipboard read/write permissions to the plugin system (by @wdeveloper16) #6980 (PR: #9053)
  • Update auth hero illustration on login screen #9532 (PR: #9552)
  • Update Open Graph link preview metadata #9555 (PR: #9557)
  • Restore deleted team files in bulk instead of per file (by @Dexterity104) #9246 (PR: #9248)
  • Preserve Inkscape labels when pasting SVGs (by @jeffrey701) #7869 (PR: #9252)
  • Add Alt+click to expand layer subtree (by @MilosM348) #7736 (PR: #9179)
  • Allow deleting the profile avatar after uploading (by @moorsecopers99) #9067 (PR: #9068)
  • Improve file validation performance and fix orphan shape detection #9790 (PR: #9789)
  • Add v2.16 release notes (What's new modal) #9945 (PR: #9940)
  • Enable multi-instance horizontal scaling for MCP server #10000 (PR: #10013)
:bug: Bugs fixed
  • Add Shift+Numpad aliases for zoom shortcuts (by @RenzoMXD) #2457 (PR: #9063)
  • Save and restore selection state in undo/redo (by @eureka0928) #6007 (PR: #8652)
  • Add guide locking and fix locked element selection in viewer (by @Dexterity104) #8358 (PR: #8949)
  • Add natural sorting on token names #8635 (PR: #8672)
  • Fix warnings for unsupported token $type (by @Dexterity104) #8790 (PR: #8873)
  • Apply styles to selection (by @AzazelN28) #9661 (PR: #8625)
  • Fix Alt/Option to draw shapes from center point (by @offreal) #8360 (PR: #8381)
  • Fix library update button freezing #9330 (PR: #9513)
  • Fix typo in subscription settings success key (by @jack-stormentswe) #9203 (PR: #9204)
  • Add token name on broken token pill on sidebar #9534 (PR: #8527)
  • Fix tooltip activated when tab change #9539 (PR: #8719)
  • Fix title on shared button #9541 (PR: #8696)
  • Fix hover on layers #9542 (PR: #8885)
  • Fix highlight after name edition #9537 (PR: #8890)
  • Fix multiple small UI bugs — id prop, update copy, library modal scroll #9536 (PR: #8604)
  • Fix themes modal height #9535 (PR: #9105)
  • Fix layers panel rename showing default type name (by @jack-stormentswe) #9230 (PR: #9231)
  • Suppress browser context menu on workspace sidebar right-click (by @sujyotraut) #5127 (PR: #9196)
  • Fix plugin API fileVersion.restore() hanging on failure (by @thomascolden585-svg) #9092 (PR: #9111)
  • Fix stroke-only SVG paths losing rounded join on split (by @Chrissi2812) #5283 (PR: #9156)
  • Fix plugin API library.connectLibrary() not returning Promise (by @boskodev790) #9646 (PR: #9158)
  • Fix LDAP provider schema typo in malli migration (by @boskodev790) #9531 (PR: #9165)
  • Fix login-with-ldap dropping error on uninitialized LDAP (by @boskodev790) #9533 (PR: #9159)
  • Fix OIDC_USER_INFO_SOURCE flag being ignored (by @GeekClassy) #9108 (PR: #9114)
  • Fix share-link viewer crash on malformed email (by @boskodev790) #9530 (PR: #9120)
  • Fix crash pasting component variants from external library (by @FairyPigDev) #8144 (PR: #9136)
  • Remove corepack from MCP launcher for Node.js 25+ (by @TheAifam5) #8877 (PR: #9119)
  • Fix Copy as SVG for multi-shape selections (by @RenzoMXD) #9088 (PR: #9066)
  • Preserve OpenType variant name table for custom fonts in the dashboard (by @rutherfordcraze) #8924 (PR: #9193)
  • Add export panel to inspect styles tab #9660 (PR: #8645)
  • Fix styles between grid layout inputs #9656 (PR: #8673)
  • Fix dates to avoid show them in english when browser is in auto #8709 (PR: #8775)
  • Fix focus radio button #9657 (PR: #8774)
  • Token tree should be expanded by default #9662 (PR: #8799)
  • Fix opacity incorrectly disabled for visible shapes #9658 (PR: #8854)
  • Fix plugin modal drag over iframe and close button (by @marekhrabe) #9529 (PR: #8871)
  • Fix hot update on color-row on texts #9664 (PR: #8880)
  • Fix selected color tokens #9655 (PR: #8889)
  • Fix dashboard Recent/Deleted titles overlapped by scrolling content (by @rockchris099) #8577
  • Display resolved values of inactive tokens #9665 (PR: #8589)
  • Fix hyphens stripped from export filenames (by @jamesrayammons) #8901 (PR: #8944)
  • Fix app crash on multiselection with hidden shapes and opacity mixed value #9666 (PR: #8932)
  • Fix gap input throwing an error #9667 (PR: #8984)
  • Fix copy to be more specific #9668 (PR: #9028)
  • Fix incorrect rendering when exporting text as SVG, PNG and JPG (by @edwin-rivera-dev) #8516 (PR: #9094)
  • Fix typography style creation with tokenized line-height (by @juan-flores077) #8479 (PR: #9121)
  • Fix colorpicker layout hiding eyedropper button #9669 (PR: #9125)
  • Fix restore-deleted-team-files reduce typo (by @Dexterity104) #9240 (PR: #9241)
  • Fix internal error on layer prev/next sibling selection (by @jsdevninja) #7064 (PR: #9003)
  • Fix tooltip appearing two times when nested elements #9674 (PR: #9031)
  • Fix broken update library notification link in the UI #9673 (PR: #9070)
  • Fix plugin API ShapeBase.component() returning outermost instead of immediate component #9183 (PR: #9298)
  • Fix content attribute sync group resolution by shape type #9527 (PR: #8724)
  • Fix plugin parse-point returning plain map instead of Point record (by @FairyPigDev) #8409 (PR: #9129)
  • Fix :heigth typo in clipboard frame-same-size? (by @iot2edge) #9249 (PR: #9250)
  • Fix Settings Update button enabled state (by @moorsecopers99) #9090 (PR: #9091)
  • Fix library updates reappearing after reload #9326 (PR: #9563)
  • Fix internal error on margins #9309 (PR: #9311)
  • Remove drag-to-change when token applied on numeric input #9313 (PR: #9314)
  • Fix extra input on canvas background #9359 (PR: #9360)
  • Fix frame selection highlight persists after rename #9538 (PR: #8938)
  • Fix several color picker issues #9556 (PR: #9558)
  • Fix asset icon broken on Asset tab #9587 (PR: #9612)
  • Fix text fill color stops updating in multiselect with texts #9608 (PR: #9549)
  • Fix standalone tokens ordering separated from token groups #9733 (PR: #9736)
  • Fix delete invitation modal readability in light theme #9737 (PR: #9747)
  • Fix team invitation not automatically accepted after account validation #9776 (PR: #9782)
  • Fix Plugin API addRulerGuide creating guides on page instead of board (by @girafic) #8225 (PR: #8632)
  • Fix text editor not swapping correctly when enabling/disabling WebGL #10015
  • Fix WebGL renderer focus mode leaving artefacts #10061 (PR: #10091)
  • Fix double click on text selecting underlying element when WebGL render is enabled #10080 (PR: #10123)
  • Fix publishing or unpublishing file as library failing with unexpected state found error #10094 (PR: #10093)
  • Fix team invitation failing when email address contains consecutive dots in domain #10097 (PR: #10096)
  • Add detailed error messages for unspecified import errors #9759 (PR: #9886)
View originalPermalink
How 2.16.0 went

2.15.4

:sparkles: New features & Enhancements
  • Add rate limiting and concurrency safety for file snapshot operations #9723 (PR: #9722)
  • Prevent concurrent font uploads from causing excessive simultaneous requests #9922 (PR: #9921)
:bug: Bugs fixed
  • Emit create-shape-layout for flex/grid layout creation from plugins and MCP (same event as workspace) #9652 (PR: #9654)
  • Fix broken authentication on /assets handlers #9677 (PR: #9679)
  • Fix API doc endpoint returning HTML as text/plain #9680 (PR: #9681)
  • Fix unexpected error when opening the export dialog #9721 (PR: #9704)
View originalPermalink
How 2.15.4 went

2.15.0

:sparkles: New features & Enhancements
  • Add MCP server integration Github #9174
  • Add chunked upload API for large media and binary files (removes previous upload size limits) Github #9516
  • Add anonymous telemetry event collection Github #9467
  • Improve team name validation Github #9517
  • Enhance readability of applied tokens in plugins API Github #9175
  • Encourage use of flex/grid layouts in designs generated via MCP Github #9081
  • Improve MCP server logging, adding Loki support Github #9415
  • Add security headers to Nginx on Docker images Github #9519
:bug: Bugs fixed
  • Fix text edition mode not exited when changing selection, blocking token application Github #9346
  • Reduce memory usage of MCP server when handling images (by @opcode81) Github #9420
  • Fix Plugin API token methods rejecting JS array of strings (by @boskodev790) Github #9162
  • Fix release notes modal appearing behind the dashboard sidebar (by @RenzoMXD) Github #8296
  • Fix empty warning on login Github #9520
  • Fix maximum call stack size exceeded in SSE read-stream Github #9470
  • Fix incorrect handling of version restore operation Github #9515
  • Fix MCP ReplServer binding to all interfaces (0.0.0.0) instead of localhost, allowing unauthenticated RCE Github #9518
  • Fix MCP integrations URL copy action to match the URL displayed in settings Github #9238
  • Fix swapped analytics event names on MCP tab-switch dialog (by @Dexterity104) Github #9496
  • Fix multiple selection on shapes with token applied to stroke color Github #9522
  • Fix onboarding modals appearing behind libraries and templates panel Github #9521
  • Fix keep-alive interval leak in PluginBridge (by @opcode81) Github #9430
View originalPermalink
How 2.15.0 went
View all

Discussion