1.9.0
closeBtnLabel(driver and step level) to set the close button'saria-label, for translated tours. Defaults toClose. (#623)overlayClickBehavior: "none"to ignore overlay clicks while Escape and the close button still close the tour. (#435)
- Keyboard control follows the popover buttons: arrow keys do nothing when their button is hidden or disabled, and Escape does nothing when the close button is disabled. (#589)
- The current popover is hidden while
waitForElementwaits for the next step's element, so a stale step no longer stays on screen. (#578) - Only one instance is on screen at a time. Starting a tour or highlight closes any other active instance; it gets
onDeselectedandonDestroyedbut notonDestroyStarted.
destroy()on an instance that is not active is now a no-op instead of tearing down another instance's tour. (#504)- The highlighted element's own
aria-controls,aria-expandedandaria-haspopupare restored when the highlight moves on or the tour ends, instead of being removed. (#495) - No more small white square between steps without an element. (#549)
onDeselectednow fires when moving between two steps on the same element, or between two steps without an element.- The driver-level
disableButtonsnow applies to tour steps. It used to be ignored during a tour. A step's owndisableButtonsstill replaces it.
1.9.0
closeBtnLabel(driver and step level) to set the close button'saria-label, for translated tours. Defaults toClose. (#623)overlayClickBehavior: "none"to ignore overlay clicks while Escape and the close button still close the tour. (#435)
- Keyboard control follows the popover buttons: arrow keys do nothing when their button is hidden or disabled, and Escape does nothing when the close button is disabled. (#589)
- The current popover is hidden while
waitForElementwaits for the next step's element, so a stale step no longer stays on screen. (#578) - Only one instance is on screen at a time. Starting a tour or highlight closes any other active instance; it gets
onDeselectedandonDestroyedbut notonDestroyStarted.
destroy()on an instance that is not active is now a no-op instead of tearing down another instance's tour. (#504)- The highlighted element's own
aria-controls,aria-expandedandaria-haspopupare restored when the highlight moves on or the tour ends, instead of being removed. (#495) - No more small white square between steps without an element. (#549)
onDeselectednow fires when moving between two steps on the same element, or between two steps without an element.- The driver-level
disableButtonsnow applies to tour steps. It used to be ignored during a tour. A step's owndisableButtonsstill replaces it.
v2.23.0
- Add the
filteroption to theimport*()methods ofZipFSandZipDirectoryEntry: the function receives each entry read from the zip file and returnstrue(or a promise resolving totrue) to import it. It can read the data of the entry to decide, and the entries left out never reach theduplicatespolicy - Add the
filteroption to theexport*()methods and togetExportedSize(): the function receives eachZipEntryof the tree and returnstrueto export it. Leaving out a directory leaves out its subtree, the entries left out are not read and are not counted byonprogressandonentryprogress - Add the
filteroption toexportFileSystemHandle(), with the same semantics as the zip exports - Add the
filteroption toaddFileSystemHandle()andaddFileSystemEntry(): the function receives each handle found and its path, so a directory likenode_modulesor hidden files can be left out without walking them
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.22.1...v2.23.0
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
v2.22.1
- A zip file written behind a prefix which was removed together with its whole first entry, like a self-extracting page whose first entry is the face shown by the host, is read again: the entries are shifted to their real positions and their data can be read. Since v2.21.0, the shift was decided on the first central directory record only, and a first record whose local file header lies in the removed bytes proves nothing, so the entries kept their stored offsets and
getData()failed withERR_LOCAL_FILE_HEADER_NOT_FOUND, whatever thestrictnessoption. The reader now checks the following records until one settles the question, and keeps the protection against a damaged end of central directory record whose local file headers are right - An entry which lies before the start of the zip file after such a shift is no longer reported as
WARNING_UNSORTED_CENTRAL_DIRECTORY
Full Changelog: https://github.com/gildas-lormeau/zip.js/compare/v2.22.0...v2.22.1
Co-Authored-By: Claude Fable 5.1 noreply@anthropic.com
v16.4.0-canary.58
- Optimize esm exports by shifting the protocol burden to getters: #98932
- fix: fix pnpm builds in Docker examples: #97352
- Assert transient task references are not serialized: #99300
- Reorganize bundle analyzer toolbar: #98920
- Show async module scope in bundle analyzer: #98918
- Show bundle changes in compare treemap: #98837
- improve disk read semantics around MustExist and AllowMissing: #99249
- Allow opt-in facade-backed export mangling: #99309
- Add bundle analyzer route summary: #98787
- [turbo-tasks-backend] Correctly maintain outdated_collectibles to prevent unnecessary stale executions: #99386
- Upgrade React from
8b0da1c6-20260922to278794d7-20261002: #99600 - Warn when Partial Prefetching is not configured: #99452
- Store the Turbopack module cache in a Map: #98947
- Improve agent feedback reporting reliability: #99591
- Enable empty generateStaticParams deploy diagnostics: #99406
- test: enable Nx deployment coverage: #99407
- test: enable deployment coverage for monorepo fixtures: #99395
- test: capture deployment experimental flags in config: #99534
- test: extract a shared helper for deployment feature flags: #99533
- Move App Page header parsing to handler entrypoints: #99506
- docs: clarify ensureStatic levels from dogfooding: #99590
- Gate param-matching deploy tests on the adapter: #99582
- docs: update the MCP guide for next-devtools-mcp 0.4: #99583
- Document agent upgrades across Next.js: #99293
- [test] Fix the legacy image preload order assertion for React 18: #99572
- docs: Remove task decomposition and validation boilerplate from AGENTS.md: #99558
- Turbopack: Use a FrozenMap for DiskFileSystemMap: #99569
- [test] Expose first-run e2e test failures in CI: #99528
- Turbopack:
resolveFileUrl/placeholderFileUrlis always called with a module path: #99560 - Turbopack: Remove implicit mismatched root fallthrough for AfterResolvePluginCondition, accept None as a root: #99556
- Turbopack: Allow ResolveMap entries to match against all possible roots: #99555
- Turbopack: Support import.meta.url in additional roots: #99511
Huge thanks to @lukesandberg, @6iu8a, @wbinnssmith, @sokra, @aurorascharff, @jamiboym, @gnoff, @devjiwonchoi, @unstubbable, and @bgw for helping!
mobx@7.0.6
-
4b1c8d3ea2b3de1a2ae852fd5631e33d28a82b15#4721 Thanks @giaBaoJS! - fix: assigninglengthon an observable array now respectsintercept. A cancelled or modified splice used to be overridden by a direct write to the backing array, which truncated it without notifying observers and made the next mutation throw "Modification exception". A non-integerlengthnow throws "Out of range" before touching the array. -
60be47cab0926d12f22449ec6c809fb5ec6601c4#4716 Thanks @AcEKaycgR! - fix:observable.box(array)no longer warns underobservableRequiresReactionwhen a spy is active. Thecreatespy event now reportsnewValueas the value itself rather than a string, matching the declaredIBoxDidChangetype. Previously the constructor stringified the value, and stringifying an observable array reads itslength, which counted as an observable read outside a reactive context. Spy listeners that relied onnewValuebeing a string forcreateevents will now receive the raw value. -
3551aeb051ff922717b03c4fbc04a6b98f7f3b3e#4717 Thanks @breken-ai! - Remove thesignalabort listener when a reaction disposes itself (r.dispose()or a resolvedwhen), so long-livedAbortSignals no longer accumulate listeners that keep disposed reactions in memory -
7e4e27dbfbf0b56770a11e9cba913e5d49c0c6f8#4718 Thanks @breken-ai! -observe/spyaddevents of an observable Set now report the value that was actually stored (e.g. the observable copy of a plain object), matching ObservableMap and observable arrays, soset.has(change.newValue)holds
v4.64.0
2026-10-02
- Improve try-catch deoptimization to cover calling methods on objects (#6541)
- Fix a situation where some feature-detections of core-js were not triggering properly (#6541)
- #6541: Retain callbacks of helper methods called from try statements (@lukastaegert)
- #6542: Run additional tests as part of the coverage job (@lukastaegert)
- #6544: Update msys2/setup-msys2 digest to ec48f7c (@renovate[bot], @lukastaegert)
- #6545: Update minor/patch updates (@renovate[bot])
- #6546: Update dependency @mermaid-js/mermaid-cli to v12 (@renovate[bot])
- #6547: Update Rust crate swc_compiler_base to v65 (@renovate[bot])