2 hours ago
zip.js

v2.10.0

What's Changed in v2.10.0

New features

  • New duplicates option on the import*() methods of the filesystem API, set to "throw", "keep-first" or "keep-last". A zip file stores a flat list of filenames while the filesystem API indexes the entries by path, so two entries can claim the same node of the tree: they can hold the same filename, hold filenames differing only by the path components ignored when building the tree such as "a/b.txt" and "./a/b.txt", or one can be a file and the other a directory holding it such as "a" and "a/b.txt". The three cases are now governed by one option instead of aborting the import in every case. The default stays "throw", an archive holding the same name twice being also the shape making an extractor and a scanner disagree on the file they see. "keep-last" is the behavior of most zip tools, verified against Info-ZIP, 7-Zip, libarchive, ditto, Python zipfile, fflate and JSZip
  • The name passed to an add*() method of the filesystem API is now split into path components, like the filename of an imported entry already was. addText("a/b.txt", text) adds "b.txt" to the "a" directory and creates that directory when it does not exist, instead of adding one entry whose name holds a "/". The directories created that way are implicit, they are not written when the tree is exported, so the exported zip file is unchanged. rename() splits the name the same way and moves the entry accordingly
  • New ERR_DUPLICATE_IMPORTED_ENTRY and ERR_INVALID_DUPLICATES errors, and new ZipDirectoryEntryImportOptions type. ERR_DUPLICATE_IMPORTED_ENTRY replaces ERR_ENTRY_EXISTS when an import is refused, the former reading as an error made by the caller while the caller only passed a zip file

Bug fixes

  • A failed import no longer modifies the filesystem. The entries created before the error are removed, and the content the ZipFS instance held before the import is restored instead of being discarded before the first entry is read
  • The replace*() methods of the filesystem API now update the size of the entry, which kept describing the content held before the call. The archive was written correctly, only getExportedSize() was affected: replacing 1 byte of text with 5000 bytes predicted 127 bytes for an export of 5126. replaceReadable() reports an undetermined size, like addReadable() does, instead of returning a prediction it cannot make. The five methods also clear the pass-through state of an entry imported with the passThrough option, the bytes copied verbatim being gone
  • ZipFS#find() no longer throws a TypeError when a component of the path it is given is a file entry rather than a directory
  • Renaming an entry to the name it already has is no longer refused as a collision with itself

Documentation

  • New Hello world with the filesystem API example in the README. The filesystem API needs a single import, infers the Reader and the Writer from the type of the data, and reaches an entry from its name, which is what the five other examples never showed
  • The encoding limitations of the filename options are now documented
  • The conditions making getExportedSize() unable to predict a size mention that a name holding "/" builds a nested tree

Tests and continuous integration

  • New tests covering the duplicate filename policies, the rollback of a failed import, the path components built from a name, and the size of an entry whose content is replaced
  • The size prediction tests cover the names holding "/", the two duplicate policies and the entries whose imported content is replaced
  • The CP437 table is now checked by a test instead of at runtime, and the characters it decodes are written as characters in that test
4 hours ago
next.js

v16.4.0-canary.16

Misc Changes

  • test: remove stale deploy manifest exclusions: #98051
  • Enable hourly next-maintainer auto-close workflow: #98225
  • Return client errors for unrecognized Server Actions: #98123
  • Add Next Maintainer auto-close workflow: #98197
  • perf(turbopack): skip ignored files during server tracing: #97475
  • docs: note that experimental.taint taints process.env: #98145
  • test: preserve static params during Cache Components migration: #98209
  • Upgrade web-vitals to v6 and report soft navigations: #97232
  • Upgrade React from 21c89c9f-20260901 to f4e439e1-20260902: #98188

Credits

Huge thanks to @gnoff, @marcoshernanz, @jimmyhmiller, @icyJoseph, @aurorascharff, and @timneutkens for helping!

7 hours ago
router

Release 2026-09-03 20:13

Release 2026-09-03 20:13

Changes

Features

  • solid-router: native SSR match transfer, hydration-claiming boot, provider-owned dispatch (#8213) (b445b89281) by @ryansolid
  • solid: named single-flight source + loadFlightTarget, the cache-agnostic trigger (#8192) (96f50d94a6) by @ryansolid

Fix

  • examples: migrate remaining legacy createEffect calls to Solid 2.0 two-phase signature (#8223) (c753d0a222) by @ryansolid

Refactor

  • solid: retire solid-router-ssr-query — native channels carry the Router + Query pairing (#8193) (5a6935f2d5) by @ryansolid

Packages

  • @tanstack/solid-router@2.0.0-rc.5
  • @tanstack/solid-router-devtools@2.0.0-rc.5
  • @tanstack/solid-router-ssr-query@2.0.0-rc.5
  • @tanstack/solid-start@2.0.0-rc.5
  • @tanstack/solid-start-client@2.0.0-rc.5
  • @tanstack/solid-start-server@2.0.0-rc.5
7 hours ago
router

@tanstack/solid-start@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • #8192 96f50d9 - Adopt Solid's multi-source single-flight protocol: the router's flight data (loader/match state, dehydrated data) registers under its own source id (tsr), so other caches' slices — e.g. solid-query's sq — coexist on the same mutation response instead of competing for a single consumer slot, and a user-supplied collectFlightData hook adds data alongside the router's rather than displacing it. Requires solid-js / @solidjs/web 2.0.0-rc.6+ (named flight-data sources).

  • Updated dependencies [96f50d9, 96f50d9, b445b89]:

    • @tanstack/solid-router@2.0.0-rc.5
    • @tanstack/solid-start-client@2.0.0-rc.5
    • @tanstack/solid-start-server@2.0.0-rc.5
7 hours ago
router

@tanstack/solid-router-devtools@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • Updated dependencies [96f50d9, 96f50d9, b445b89]:

    • @tanstack/solid-router@2.0.0-rc.5
7 hours ago
router

@tanstack/solid-router-ssr-query@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • #8193 5a6935f - Deprecated: Solid Query's QueryClientProvider now carries the Router + Query SSR pairing natively (registry hydration, named single-flight sources, redirect handling via userland glue), so this integration package is no longer needed. See the README for the migration.

7 hours ago
router

@tanstack/solid-router@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • #8192 96f50d9 - New loadFlightTarget helper (exported from @tanstack/solid-router/ssr/server): the router's half of a single-flight refresh. Given the mutation request's target href, it builds a router for that location, loads it, and returns the dehydrated payload for the tsr flight-data slice, so server collectors can refresh router state alongside other caches on the same mutation response.

  • #8213 b445b89 - Native SSR state transfer for Solid: router match state (loaderData, beforeLoad context, status, errors) now rides Solid's hydration registry under tsr: keys instead of a bespoke bootstrap script, deferred loaderData promises stream natively via seroval, the client primes router state from the registry in the Router constructor (before any render context, eliminating boot-time refetches and bootLoad-style workarounds), and RouterProvider owns the server-side router.load() dispatch so server entries no longer await it manually.

7 hours ago
router

@tanstack/solid-start-client@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • Updated dependencies [96f50d9, 96f50d9, b445b89]:

    • @tanstack/solid-router@2.0.0-rc.5
7 hours ago
router

@tanstack/solid-start-server@2.0.0-rc.5

Patch Changes

  • #8192 96f50d9 - Bump solid-js, @solidjs/web, and @solidjs/signals to ^2.0.0-rc.6 across the monorepo. rc.6 provides the named flight-data source API (registerFlightDataSource / two-argument subscribeFlightData) that the Start single-flight integration now requires; @tanstack/solid-start's peer floor moves to rc.6 accordingly.

  • Updated dependencies [96f50d9, 96f50d9, b445b89]:

    • @tanstack/solid-router@2.0.0-rc.5
7 hours ago
electron

electron v45.0.0-alpha.4

Note: This is an alpha release. Please file new issues for any bugs you find in it.

This release is published to npm under the alpha tag and can be installed via npm install electron@alpha, or npm install electron@45.0.0-alpha.4.

Release Notes for v45.0.0-alpha.4

Fixes

  • Fixed chrome.tabs.query() returning tab url and title to extensions without the tabs permission or host access, aligning with tabs.get. #53353 (Also in 42, 43, 44)
  • Fixed a pending read on a net.request chunked upload stream inside a protocol handler never settling when the request failed or was aborted. #53368 (Also in 43, 44)
  • Fixed an intermittent crash (access violation) on Windows when an ASAR integrity violation is detected, so the process now exits with code 1 as intended. #53438 (Also in 43, 44)
  • Fixed application crash after a large number of IPC messages from renderers. #53418 (Also in 42, 43, 44)
  • Fixed native addons deriving from node::ObjectWrap aborting during garbage collection on Node.js 24.19.0 and later. #53391 (Also in 42, 43, 44)

Other Changes

  • Updated Chromium to 155.0.8038.2. #53416
  • Updated Node.js to v24.20.0. #53251