3 hours ago
downshift

v9.5.0

9.5.0 (2026-11-09)

Features

  • stateReducer: add blur source when clicking outside (#1705) (5c96831)
4 hours ago
react-tooltip

v6.0.11

If you like ReactTooltip, please give the project a star on GitHub 🌟

What's Changed

Full Changelog: https://github.com/ReactTooltip/react-tooltip/compare/v6.0.10...v6.0.11

4 hours ago
axios

v1.21.1

v1.21.1 — November 9, 2026

This release raises the minimum follow-redirects version to fix a published CVE, fixes a Next.js prerendering failure caused by the response duration timer, corrects the getAdapter typings, and includes documentation corrections, new test coverage, CI runner changes and dependency updates.

🔒 Security Fixes

  • follow-redirects: Raised the follow-redirects range from ^1.16.0 to ^1.16.2 to fix CVE-2026-116689 (GHSA-mrwp-f3q8-3g9p). In the vulnerable versions, sensitiveHeaders arrays from another realm were ignored and custom credentials could follow redirects. Only the Node.js HTTP adapter is affected, and there are no API changes. (#11410)

🐛 Bug Fixes

  • Response Duration: dispatchRequest now measures response.duration with performance.now() and uses Date.now() only when performance.now() isn't available. In v1.21.0, any axios request from a Server Component failed Next.js production builds with Cache Components (cacheComponents: true), because Next.js rejects Date.now() while prerendering. The duration is still a whole number of milliseconds, and system clock changes no longer affect it. (#11411)
  • TypeScript: getAdapter now accepts an optional config?: AxiosRequestConfig in index.d.ts and index.d.cts, matching what it does at runtime. You can now call getAdapter('fetch', { env: { fetch: myFetch } }) without a cast. (#11404)

🔧 Maintenance & Chores

  • Documentation Corrections: Brought the README and docs site in line with how axios actually behaves:

    • transformRequest runs for every method, and transformers receive (data, headers, status).
    • responseType and Content-Type have no default value.
    • AxiosHeaders#get and #normalize are described correctly.
    • Errors should be identified with axios.isAxiosError(), not by name.
    • The error tables now list ECONNREFUSED and ERR_FORM_DATA_DEPTH_EXCEEDED, and note that FormData parsing has a fixed depth limit that maxDepth doesn't change.
    • New notes cover what redact doesn't scan, which adapters enforce maxContentLength / maxBodyLength, and how formToJSON() handles field name collisions.

    (#11374, #11373, #11389, #11419, #11429, #11430)

  • Docs Site: Added a Partners page, a shared card design for sponsors and partners, a Namespace sponsor badge, and a blog whose first post announces HeroDevs Never-Ending Support for Axios v0. Also applied the v1.20.0/v1.21.0 release notes to the docs, and fixed internal links in the es, fr and zh translations so they keep their locale prefix. (#11390, #11399, #11400, #11412, #11401)

  • Test Coverage: Added cancellation tests across the HTTP, fetch and XHR adapters. They cover AbortSignal, CancelToken, cancelling while a request interceptor is pending, and timeout precedence. Also added tests for no_proxy edge cases in shouldBypassProxy, such as internationalized domain names, malformed CIDR and IPv4 entries, and port-qualified entries. Neither changes runtime behavior. (#11376, #11431)

  • CI: GitHub Actions jobs now run on Namespace runners. The npm publish job stays on GitHub-hosted runners, because npm provenance and trusted publishing (OIDC) only work there. (#11396)

  • Dependencies: Updated development and tooling dependencies, including vitest and @vitest/* (to 5.x at the root), typescript (7.x at the root), vite, rollup, eslint, playwright, @commitlint/*, @rollup/plugin-alias, @rollup/plugin-terser, body-parser, multer, serialize-javascript, fast-uri, qs, zizmorcore/zizmor-action, and follow-redirects in /docs. (#11383, #11375, #11372, #11345, #11392, #11387, #11386, #11385, #11391, #11388, #11395, #11421, #11422, #11426)

  • Release: Prepared the 1.21.1 release. (#11435)

🌟 New Contributors

We are thrilled to welcome our new contributors. Thank you for helping improve axios:

  • @Ghoscro (#11374)
  • @pei711 (#11373)
  • @ivanhapaz (#11399)
  • @aelmanaa (#11404)
  • @Aryapatel-007 (#11429, #11430)
  • @umair-ghafoor-ai (#11376)
  • @yxshee (#11389)
  • @malinele (#11401)
  • @AnantDuhan (#11431)

Full Changelog

4 hours ago
vite

v6.4.6

Please refer to CHANGELOG.md for details.

5 hours ago
vite

v7.3.8

Please refer to CHANGELOG.md for details.

5 hours ago
vite

v8.1.7

Please refer to CHANGELOG.md for details.

5 hours ago
vite

v8.2.6

Please refer to CHANGELOG.md for details.

5 hours ago
vite

v8.2.5

Please refer to CHANGELOG.md for details.

5 hours ago
vite

v8.3.7

Bug Fixes

Miscellaneous Chores

Tests

Build System

6 hours ago
penpot

2.19.0

💥 Breaking changes & Deprecations

Migrate legacy file payloads to file_data and delete orphan revisions

File payloads now live in one place: every file state and snapshot is kept in file_data, and the orphan file_change rows that kept old payloads alive forever are removed. No read path reached those rows and nothing ever collected them, so the upgrade also reclaims the database and TOAST space they held. There is no API or UI change.

On small and medium instances this happens automatically on boot and there is nothing to do. On large instances (millions of snapshots, hundreds of GB in TOAST) the work does not fit in the startup transaction: run it by hand before upgrading to 2.19.0 following the large-instance runbook. The runbook tells you whether your instance needs it, keeps the instance online while the data moves, and verifies the result before you deploy.

#12784 (PR: #12785)

Enable the Admin Console by default

The Admin Console is now enabled by default and the enable-admin-console flag is no longer needed. Self-hosted instances must deploy the penpot-admin-console service and set PENPOT_ADMIN_CONSOLE_URI in frontend and backend (check the upgrade guide).

#12807 (PR: #12475)

🚀 Epics and highlights

  • Add configurable keyboard shortcuts #9924 (PR: #10237)
  • Improve path operations and edition in the path editor #10889 (PR: #10807)
  • Add individual stroke widths per side (top, right, bottom, left) #9854 (PR: #10648)
  • Add support for internal libraries and file sync for Design Tokens #9334 (PR: #10293)

🐛 Bugs fixed

  • Fix copying text from Penpot to the clipboard not working on MS Windows #11303 (PR: #11305)
  • Fix comment bubbles rendering on top of workspace dropdown menus #10283 (PR: #11201)
  • Fix inconsistent Mixed label in blur options and numeric inputs across 24 locales (by @filipsajdak) #11148 (PR: #11151)
  • Fix overlay shifting left when shown with top-center alignment in viewer prototype (by @filipsajdak) #9048 (PR: #10454)
  • Fix internal error when clicking the Copy button on the Access Token page (by @0xTHAC0) #8496 (PR: #11156)
  • Fix disable-registration flag not preventing non-users from creating accounts in the share prototypes page (by @0xTHAC0) #5164 (PR: #11199)
  • Fix "Cannot assign to read only property 'toString'" error during text resize (by @makesomethingshit) #10168 (PR: #11521)
  • Fix plugin postMessage channel broadcasting messages to all plugins without origin validation #10968 (PR: #10970)
  • Fix MCP plugin page navigation while connected crashing the workspace (by @makesomethingshit) #11001 (PR: #11521)
  • Fix shortcut search never matching on key combination, only on action label #11003 (PR: #11081)
  • Fix Shift + special character key shortcut capturing the shifted character instead of the physical key #11004 (PR: #11081, #11669)
  • Fix reassigning the "Paste" shortcut not updating the UI or taking effect in the workspace #11005 (PR: #11081)
  • Fix font-size dropdown clipping multi-digit values in Firefox (by @0xTHAC0) #11008 (PR: #11162, #11500)
  • Fix exporting shortcuts producing an invalid "toggle-fullscreen" entry that breaks re-import #11032 (PR: #11081)
  • Fix plugin API missing permission checks in tokens, shapes, variants, flows, layouts, and user identity #11137 (PR: #11139)
  • Fix library summary Redis cache keys omitting the tenant #11407 (PR: #11408)
  • Fix active theme name in the inspect tab displaying an id instead of the name #11437 (PR: #11439)
  • Fix variant property dropdown appearing empty and throwing an internal error when the component has no sibling variants #11524 (PR: #11499)
  • Fix invitation links not allowing registration when disable-registration is enabled #5178 (PR: #11912)
  • Fix Windows build failures caused by path resolution and start command conflicts (by @0xTHAC0) #8637 (PR: #11197)
  • Fix editing a path on an image, rectangle or ellipse corrupting the shape and failing backend validation #10621 (PR: #10807)
  • Fix board content disappearing when dragging a board near another board #10689 (PR: #11620)
  • Fix dashboard context menu being cut off for long lists, hiding the bottom options #10724 (PR: #11511)
  • Fix moving an element changing its size #10751 (PR: #11560)
  • Fix remote MCP websocket connecting but never receiving live browser commands #10753
  • Fix stroke to path not working with path ends (by @ShreyashAgare26) #10825 (PR: #11614)
  • Fix border style not working with stroke per side #10841 (PR: #11883)
  • Fix multiple selection not showing stroke per side when all shapes share the same per side values #10844 (PR: #10913)
  • Fix stroke width tokens not overriding stroke per side values #10850 (PR: #10913)
  • Fix internal error when applying a dimension token to stroke width #10918 (PR: #10913)
  • Fix stroke per side button detaching the applied token #10920 (PR: #10913)
  • Fix WebSocket subscription handlers missing authorization checks #11067 (PR: #11069)
  • Fix project title being truncated in the dashboard despite available space #11306 (PR: #11564, #11675)
  • Fix rect attribute NaN length error in the console when panning a file #11327 (PR: #11856)
  • Fix unclipped and rotated shapes being cut on render tiles #11401 (PR: #11423)
  • Fix Plugin API rejecting the documented fontFamilies applyToken property (by @makesomethingshit) #11405 (PR: #11566)
  • Fix flattening text ignoring non-zero letter spacing #11462 (PR: #11555)
  • Fix boolean results serialized as unordered subpaths, deforming them in the WebGL render and the exporter #11482 (PR: #11551)
  • Fix MCP reconnecting endlessly in inactive tabs and eventually freezing the browser (by @breken-ai) #11510 (PR: #11520, #11906)
  • Fix dashed strokes losing their properties when changing color (by @Shlok1729) #11549 (PR: #11557)
  • Fix text decoration not applying per text span in the WebGL render #11582 (PR: #11583)
  • Fix binfile import exhausting backend memory when a ZIP JSON entry decompresses without limit #11606 (PR: #11607)
  • Fix modal not closing when going to the plans page via "See my current plan" (by @makesomethingshit) #11611 (PR: #11615)
  • Fix view-only share links disclosing unshared library pages when the file links a library #11617 (PR: #11627)
  • Fix canvas tiles showing only the background color while dragging the canvas background color picker #11642 (PR: #11643)
  • Fix title spacing and "added" pill padding in the libraries modal #11645 (PR: #11650)
  • Fix workspace crash when pasting before the page finishes loading #11666 (PR: #11674)
  • Fix tap area not matching the visible screen when zoomed out in the WebGL render (by @makesomethingshit) #11689 (PR: #11793)
  • Fix app crash when logging receives an empty level, and add the missing fatal level #11690 (PR: #11693)
  • Fix WebGL render ignoring drop and inner shadows on masked groups #11697 (PR: #11754)
  • Fix curves being created while Ctrl+dragging a path segment #11702 (PR: #11715)
  • Fix viewer role showing the search and replace option #11706 (PR: #11713)
  • Fix toggling the visibility of a child in a flex layout main component deleting the prototype interactions of its copies (by @ShreyashAgare26) #11746 (PR: #11788)
  • Fix cursor not visible on page load in the WebGL render #11769 (PR: #11770)
  • Fix library text styles detaching when copying and pasting an element #11776 (PR: #11785)
  • Fix Plugin API crashing the workspace when a shapechange listener is registered with an empty shape id #11786 (PR: #11787)
  • Fix borders not being fully rendered #11805 (PR: #11807)
  • Fix design token controls being enabled for fills and strokes below the first position #11819 (PR: #10913)
  • Fix viewer role showing the open libraries modal button #11824 (PR: #11849)
  • Fix extra padding on the "Sets" title in the tokens panel #11826 (PR: #11849)
  • Fix thumbnails failing on older Chromium browsers and each thumbnail rendering several times #11878 (PR: #11879)
  • Fix internal error when opening the libraries modal #11943 (PR: #11946)
  • Fix Plugin API connectLibrary linking unpublished files as libraries #12001 (PR: #12002)
  • Fix incorrect padding at the top of the tokens and themes section #9585 (PR: #12422)
  • Fix token tree path handling for repeated and nested segments (by @makesomethingshit) #11588 (PR: #11591)
  • Fix comment input duplicating text when confirming a Japanese IME composition with Enter #11757 (PR: #11768)
  • Fix file not saving after deleting a variant #11758 (PR: #12216)
  • Fix component copies not syncing when a shape is moved out of a main component and another change follows at once #11978 (PR: #11981)
  • Fix MCP plugin showing a version mismatch warning on every patch release (by @robertkodra) #12007 (PR: #12009)
  • Fix workspace crash when switching to the path tool while drawing a shape #12100 (PR: #12101)
  • Fix referential integrity error when swapping a component #12144 (PR: #12333)
  • Fix workspace saving text shapes on every page open when a custom font is missing #12151 (PR: #12164)
  • Fix swapped nested components losing their absolute position after a library update #12176 (PR: #12556)
  • Fix theme selector showing the editor message when the tokens source is a library #12177 (PR: #12203)
  • Fix untranslated texts in the This file tab of the libraries modal #12178 (PR: #12204)
  • Fix workspace staying in the saving state and losing unsaved edits when a save request gets no answer #12222 (PR: #12223)
  • Fix scrub cursor showing on numeric inputs with mixed values in the sidebar #12227 (PR: #12229)
  • Fix internal error when copying a swapped nested component #12289 (PR: #12434)
  • Show an error when uploading a custom font fails #12304 (PR: #12315)
  • Fix React warning about the unknown tooltipClass prop in layout-item size inputs #12311 (PR: #12329)
  • Fix guides inside a board still being interactive #12322 (PR: #12460)
  • Fix pasted text not being visible in an empty text box until it is resized #12438 (PR: #12859)
  • Fix files failing referential integrity validation staying unsaveable in every session #12464 (PR: #12524, #12662)
  • Fix unicode characters not rendering in text layers with the new render engine #12469 (PR: #12471)
  • Fix text image fills staying blank when media loads after text layout #12563 (PR: #12564)
  • Fix swapped nested icons moving outside the layout after a library update #12657 (PR: #12716)
  • Fix garbled bullets before the element counts in the libraries modal #12677 (PR: #12678)
  • Fix token dropdown of numeric inputs showing the scrub cursor #12679 (PR: #12680)
  • Fix variant property names and values accepting , and = #12683 (PR: #12688)
  • Fix changing a variant property from another page leaving the main component label out of date #12692 (PR: #12693)
  • Fix :referential-integrity errors when moving variant mains in or out of a set #12696 (PR: #12706)
  • Fix :referential-integrity errors when creating, combining or renaming variant sets #12734 (PR: #12779)
  • Fix save errors after masking a variant with Ctrl+M #12748 (PR: #12749)
  • Fix icons in component instances not being shown on the canvas #12752
  • Fix upload endpoints accepting non-multipart upload paths and validation error bodies being truncated #12896 (PR: #12067)

✨ New features & Enhancements

  • Make backend storage resilient to interrupted writes, missing files and stalled cleanup #11344 (PR: #11345)
  • Improve path operations and edition in the path editor #10889 (PR: #10807)
  • Add configurable keyboard shortcuts #9924 (PR: #10237)
  • Add support for internal libraries and file sync for Design Tokens #9334 (PR: #10293)
  • Warn self-hosted users when their Penpot version is outdated and surface what they're missing #10497 (PR: #11411)
  • Add dedicated RPC methods for plugin registry operations with permission validation #10952 (PR: #10957)
  • Document MCP and internal resolver environment variables (by @ShreyashAgare26) #11318 (PR: #11572)
  • Add tokens source indicator to assets tab #11365 (PR: #11439)
  • Add Penpot-specific board size presets (file thumbnail, template cover, plugin icon/cover) #11561 (PR: #11565)
  • Apply tokens to stroke per side #9842 (PR: #10913)
  • Add individual stroke widths per side (top, right, bottom, left) #9854 (PR: #10648)
  • Expand the token tree right after importing it (by @AKnassa) #9819 (PR: #10664)
  • Update the selection size badge live during resize, replacing the resize tooltip #10259 (PR: #11884)
  • Add color variants, rotation correction, viewport flip and hide-when-too-small to the selection size badge #10264 (PR: #11884)
  • Support single-file SVG export with the WebGL render #10546
  • Persist the hide resolved comments preference and separate the filter options in the comments menu #10686 (PR: #10694)
  • Add rich link previews (Open Graph) for shared Penpot links #10699 (PR: #10700)
  • Add 3x export scale option #10740 (PR: #11598)
  • Show a validation message in the input instead of a toast when the email is already in use (by @ShreyashAgare26) #10890 (PR: #11647)
  • Take waitForLayoutUpdate into account in MCP instructions and implementation #10901 (PR: #11433)
  • Add a standard context menu (Cut, Copy, Paste, Select all) on right-click when editing text #10914 (PR: #11677)
  • Process export requests as export jobs #11133 (PR: #11296)
  • Enable closed schemas for RPC method parameters #11135 (PR: #11136)
  • Add Content-Security-Policy and Strict-Transport-Security headers to the frontend image #11374 (PR: #11375)
  • Send a notification email when the password is changed or set #11392 (PR: #11393)
  • Lock accounts after repeated failed login attempts #11397 (PR: #11402, #11895)
  • Enforce an absolute maximum session duration #11444 (PR: #11447)
  • Add a loading message to the libraries section #11452 (PR: #11594)
  • Resize image bounds independently from the image content on the canvas #11516 (PR: #11590)
  • Limit binfile import database connection time and stop rescanning ZIP entries #11579 (PR: #11584)
  • Apply the same validation rules in the Plugin API as in the UI #11586 (PR: #11587)
  • Fetch only the caller's share link in the view-only bundle (by @makesomethingshit) #11633 (PR: #11657)
  • Add Prometheus metrics for backend storage operations #11676 (PR: #11700)
  • Make "Fix when scrolling" work in the WebGL render #11684 (PR: #11752)
  • Complete Catalan translations #11739 (PR: #11741)
  • Remove the optional client-provided id from creation RPC endpoints #11783 (PR: #11784)
  • Allow color tokens for the canvas background #11791 (PR: #11923, #11950)
  • Show a "no assets yet" message for empty files in the libraries modal #11811 (PR: #11818)
  • Upgrade the MCP SDK to v2 and adopt the new protocol version #11827 (PR: #11841)
  • Remove legacy SSE support from the MCP server #11846 (PR: #11841)
  • Delete selected path handles with Backspace or Delete #11858 (PR: #11896)
  • Use the tooltip component in the token pill info #11886 (PR: #11900)
  • Hide the duplicate cursor when alt-dragging a shape that cannot be duplicated (by @0xTHAC0) #11905 (PR: #11195)
  • Document the team auto-add behavior with disable-email-verification #11376 (PR: #11425)
  • Make the workspace recover from interrupted saves and show a proper error instead of the internal error page #11799
  • Add component management operations to the Plugin API #12301 (PR: #12303)
  • Record the imported file ids in the import-binfile audit event #12485 (PR: #12491)