mirror of
https://github.com/penpot/penpot.git
synced 2026-07-03 04:45:28 +00:00
* ✨ Adds static dispatch safe stubs in tests * 🐛 Fix shapesColors metadata key to match ColorShapeInfo * 🐛 Fix CommentThread.remove rejecting the owner's own threads * 🐛 Fix page.removeCommentThread throwing on a spurious Promise * ✨ Implement ShapeBase.swapComponent in the plugin API * ✨ Expose File.revn in the plugin API * 🐛 Fix FileVersion.createdAt calling Luxon method on a js/Date * 🐛 Fix plugin font/typography application to text and ranges * 🐛 Default plugin overlay interaction position for non-manual types * 🐛 Fix plugin interaction setters passing an id-only shape * 🐛 Fix grid addColumnAtIndex rejecting valid track types * 🐛 Expose libraryId on library color/typography/component proxies * ✨ Implement LibraryTypography.setFont in the plugin API * 🐛 Fix typography.applyToTextRange reading unexposed range bounds * 🐛 Fix utils.geometry.center argument mismatch * 🐛 Fix localStorage.removeItem calling getItem * 🐛 Fix shape backgroundBlur proxy key casing * 🐛 Report boolean shape type as 'boolean' in the plugin API * 🐛 Return the resulting paths from plugin flatten * 🐛 Make plugin z-order methods act on the target shape * 🐛 Make is-variant-container? return a boolean * ✨ Implement Group.isMask in the plugin API * 🐛 Return a shape proxy from TextRange.shape * 🐛 Return the duplicated set from TokenSet.duplicate * 🐛 Fix theme addSet/removeSet reading set name with a keyword * 🐛 Accept string fontFamilies token value in the plugin API * 🐛 Fix combineAsVariants ignoring the passed component ids * 🐛 Fix board removeRulerGuide ignoring its argument * 🐛 Fix board guides setter schema and parser * 🐛 Avoid 0-byte allocation when syncing empty grid tracks * 🐛 Validate grid track indices in the plugin API * 🐛 Return null for empty input in group() and centerShapes() * 🐛 Return TokenTypographyValue[] from a typography token's resolvedValue * 🐛 Return TokenShadowValue[] from a shadow token's resolvedValue * 🐛 Return string[] from a fontFamilies token's resolvedValue * 🐛 Clear mutually-exclusive reps when setting LibraryColor gradient/image * 🐛 Add readonly tags to types, deprecate Image type * 📚 Update plugins changelog
18 KiB
18 KiB
1.5.0 (Unreleased)
💣 Breaking changes & Deprecations
- plugins-runtime: changes outside the current page now raise a validation error when the target belongs to a page that is not currently active, instead of silently operating on the active page.
- plugin-types: Change return type of
combineAsVariants - plugin-types: Deprecate the legacy
Imageshape interface — image shapes exist only for backward compatibility with old files; new images are embedded in aFillvia itsfillImage(anImageData). - We've solved several inconsistencies accross the API, if you relied on an undocumented property or method be aware that might have changed.
🚀 Features
- plugins-runtime: Added
versionfield that returns the current version - plugins-runtime: Added optional parameter
throwOnErrortopenpot.ui.sendMessage(default false, backwards-compatible) - plugin-types: Added a flags subcontexts with the flag
naturalChildrenOrdering - plugin-types: Added flag
throwValidationErrorsto enable exceptions on validation - plugin-types:
penpot.openPage()now returnsPromise<void>and should be awaited before performing operations on the new page - plugin-types: Change
LibraryComponent.isVariant()return type to type guardthis is LibraryVariantComponent - plugin-types: Added
createVariantFromComponents - plugin-types: Added
textBoundsproperty for text shapes - plugin-types: Fix missing
webpexport format inExport.type - plugin-types: Added
fixedWhenScrollingproperty for shapes - plugin-runtime:
addTokennow resolves references against all token sets, allowing references to tokens in inactive sets - plugin-types:
TokenCatalog.addSetnow accepts an optionalactiveflag to create an already-active set (sets are inactive by default) - plugin-runtime: A
fontFamiliestoken'sresolvedValuenow returns the documentedstring[](the resolved family list) instead of leaking the raw tokenscript list symbol
🩹 Fixes
- plugins-runtime: Fix inverted validation that rejected valid values (and accepted invalid ones) on text range
align,direction,textDecoration,letterSpacingand on layout childzIndex. - plugins-runtime: Array-typed properties (e.g.
page.flows,shape.exports,shape.shadows, layoutrows/columns, ruler guides, pathcommands) now always return an array, returning an empty array instead ofnullwhen there are no items - plugin-types: Fix penpot.openPage() to navigate in same tab by default
- plugin-types: Rename
LibraryTypography.fontFamiliestofontFamilyto match the runtime (it holds a single font family, not an array) - plugin-runtime: Setting a
LibraryColor'sgradientorimagenow clears the other color representations (solid/gradient/image are mutually exclusive), so the result is a valid color instead of being rejected with "expected valid color" - plugin-types: Mark members that have no runtime setter as
readonly, fixing a mismatch where they were typed as writable: font metadata (Font.*,FontVariant.*,FontsContext.all), theEllipse/Image/SvgRawtypediscriminants (now consistent with the other shapes),File.name/pages/revn,Page.root,TokenTheme.activeSets,Variants.properties,ImageData.*, the board guide value objects (GuideColumn/GuideRow/GuideSquareand their params —board.guidesreturns a formatted snapshot, so reconfiguring means reassigning the whole array), thePointandBoundsvalue objects, thePenpot.ui/Penpot.utilssubcontexts, the derivedBooleanpath data (d/content/commandsare computed from the operands;Booleanis not editable like aPath), and theEventsMapevent entries (a type-only event→callback map, never assigned). Members that do expose a setter stay writable:Board.children,Path.d/content/commandsandFileVersion.label.
1.4.2 (2026-01-21)
- plugin-runtime: fix atob/btoa functions
1.4.0 (2026-01-21)
🚀 Features
- switch component (7d68450)
- Add variants to plugins API (04f3c26)
- format ci job (17b5834)
- fix problem with ci (4b3c50f)
- change in workflow (3a69f51)
- plugin-types: add methods to modify the index for shapes (4ad50af)
- plugin-types: change content type and added new attributes (dbb68a5)
- plugins-runtime: add data method to image data (f077481)
- plugins-runtime: fix problem with linter (30f4984)
- plugins-runtime: allow openPage() to toggle opening on a new window or not (da8288b)
🩹 Fixes
- package-lock.json (d1d940a)
- fonts gdpr & switch provider (d63231e)
- missing changes (b8fc936)
- format ci (e0fab2e)
- fetch main only in pr (e48c5d4)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- Michał Korczak
- Miguel de Benito Delgado
- Pablo Alba
1.3.2 (2025-07-04)
🩹 Fixes
- plugins-runtime public package.json (70fd69f)
❤️ Thank You
- Juanfran @juanfran
1.3.1 (2025-07-04)
🚀 Features
- plugins-runtime as npm library (41c56b1)
🩹 Fixes
- package-lock.json (16b29f8)
❤️ Thank You
- Juanfran @juanfran
1.3.0 (2025-06-25)
🚀 Features
- plugin-types: add skipChildren to exports (b3373ba)
- plugins-runtime: change plugins modal z-index (c6a4a7d)
- plugins-runtime: adds max resize to the screen size (f2fe501)
- plugins-runtime: adds localstorage wrapper API for plugins (0006ca9)
- plugins-runtime: add generateFontFaces method (30e1d02)
- poc-state-plugins: add some methods to the example (b95961a)
- poc-state-plugins: example using the localstorage api (b101523)
🩹 Fixes
- plugin-colors-to-tokens: adapt to Penpot tokens metadata format (3a1ff00)
- plugin-colors-to-tokens: avoid unvalid character in names (dd0fd1a)
- plugin-types: add missing board properties (de4a2a0)
- plugin-types: fix problem with type (9759964)
- plugins-runtime: add allow-same-origin to iframe (65d5351)
- plugins-runtime: fixes null checking issue (6b5b562)
- plugins-runtime: fix problem with resize modal position (45dc41d)
- plugins-styles: migrate to fonts css api v2 (45a9ee9)
❤️ Thank You
- alonso.torres
- Martynas Barzda
- Xavier Julian
1.2.0 (2025-02-27)
🚀 Features
- upgrade nx & angular & prettier (32de075)
- add ui.resize & ui.size api (815181d)
- colors to tokens export plugin (7f8a011)
- transform color & opacity to rgba (9a3e6e0)
- plugin-colors-to-tokens: only rgba when the opacity is not 1 (e922cf9)
- plugin-types: deprecated fields in colors (6adcc4c)
- plugins-runtime: add upload svg with images (df925b5)
🩹 Fixes
- duplicated css (19ca648)
- add error styles on invalid input (1c29c34)
- remove nonexistent api (3837f1c)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- Michał Korczak
1.1.0 (2024-12-12)
🚀 Features
🩹 Fixes
❤️ Thank You
- alonso.torres
- María Valderrama @mavalroot
- Marina López @cocotime
1.0.0 (2024-10-25)
🚀 Features
🩹 Fixes
- search in icons plugin (b4664a2)
- table-plugin: i#8965 empty cell values when importing csv files (#8965)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- María Valderrama @mavalroot
- Marina López @cocotime
0.12.0 (2024-10-04)
🚀 Features
- e2e tests (1371af9)
- add build to CI (a434209)
- api-doc: update readme (99ff81d)
- docs: add examples for new permissions (2f0f7a6)
- e2e: add screenshots ENV variable (9292bf2)
- plugin-types: add ruler guides and new zoom methods (c8066be)
- plugin-types: add apis for comments (e34e56c)
- plugin-types: update comment related methods (50bc7ba)
- plugin-types: removed old method and replaced with attributes (1866299)
- plugins-runtime: plugin live reload (bbc77e4)
- plugins-runtime: adds new permissions
comment:read,comment:writeandallow:downloads(5adbee2) - plugins-runtime: expose some public JS APIs to the plugins code (22dfa92)
- poc-state-plugin: add new functions to the plugin to test comments and rulers (6adee11)
- rename-layers: final review - undo group (2909bcc)
- runtime: refactor plugin state (16595c2)
- runtime: remove deprecated method (ccc5f78)
- table-plugin: enhancement save config (07af57d)
🩹 Fixes
- e2e: update dump params to shape model (ade39ee)
- plugin-types: optional path curves (0ea57f1)
- plugins-runtime: clean pending timeouts (8870dda)
- plugins-runtime: prevent plugin execution after close (b65492a)
- plugins-styles: import svg inline (567b0b5)
- runtime: ses errorTrapping interferes with penpot error handler (8c0e36d)
- runtime: prevent override Penpot objects (120e9e5)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- María Valderrama @mavalroot
0.10.0 (2024-07-31)
🚀 Features
- change permissions names (99126f8)
- stop offering icons in the style library (5a219e9)
- new publish script (5114e78)
- init e2e test (b0af705)
- docs: how api docs are generated (e047977)
- docs: basic css theme for typedoc (0eac44d)
- plugin-types: update API types (bffa467)
- plugin-types: add pages info to the file (b54edb3)
- plugin-types: add parent reference to the shape (2588778)
- plugin-types: add root shape reference to the pages (c712759)
- plugin-types: add undo block operations to api (1d3ad89)
- plugins-runtime: update selection (f36fa23)
- plugins-runtime: add new events 'contentsave' and 'shapechange', changed on/off signatures (2b8a76b)
- plugins-runtime: add detach shape from component method (ff488d4)
- plugins-runtime: add API to access to prototypes (a554775)
- plugins-runtime: add method for pages (9a9b33a)
- plugins-types: expose new attributes (9ce45a2)
🩹 Fixes
- typo checkox > checkbox (877a3f2)
- avoid plugin location question (b4c6165)
- add files so no unexpected when creating new plugin (ef5629a)
- eslint migration to ESM docs (249ea62)
- fix runtime version (95afbf3)
- horizontal scroll height on plugins modal (08f989a)
- contrast-plugin: update colors when shape change (8ce04d3)
- docs: add missing variant on destructive button (9fa96e9)
- plugin-types: readonly PenpotShapeBase width & height (415284f)
- plugins-runtime: remove plugin event listener on close (2138985)
- plugins-runtime: fix problem with types in test (17db173)
- styles: input, button & select worksans font family (1b9d3b2)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- María Valderrama @mavalroot
- Marina López @cocotime
- Xaviju
0.9.0 (2024-07-10)
🚀 Features
- change permissions names (99126f8)
- stop offering icons in the style library (5a219e9)
- new publish script (5114e78)
- plugin-types: update API types (bffa467)
- plugins-runtime: update selection (f36fa23)
- plugins-types: expose new attributes (9ce45a2)
🩹 Fixes
- typo checkox > checkbox (877a3f2)
- avoid plugin location question (b4c6165)
- fix runtime version (2401a77)
- styles: input, button & select worksans font family (1b9d3b2)
❤️ Thank You
- alonso.torres
- Juanfran @juanfran
- Marina López @cocotime
- Xaviju @xaviju