Skip to content

Upgrade archiver to v7 to fix glob and inflight deprecation warnings#3050

Merged
wojtekn merged 3 commits intotrunkfrom
upgrade-archiver-v7-fix-glob-inflight-warnings
Apr 10, 2026
Merged

Upgrade archiver to v7 to fix glob and inflight deprecation warnings#3050
wojtekn merged 3 commits intotrunkfrom
upgrade-archiver-v7-fix-glob-inflight-warnings

Conversation

@wojtekn
Copy link
Copy Markdown
Contributor

@wojtekn wojtekn commented Apr 10, 2026

Related issues

  • Fixes deprecation warnings for glob@8 and inflight in the CLI and Studio dependency trees

How AI was used in this PR

This PR was created with Claude Code assistance.

Proposed Changes

  • Upgrades archiver from ^6.0.2 to ^7.0.1 in both apps/cli and apps/studio
  • Upgrades @types/archiver from ^6.0.4 to ^7.0.0 in both
  • archiver@7 pulls in archiver-utils@5 which uses glob@10 instead of glob@8, eliminating the glob and inflight deprecation warnings
  • Drops apps/studio/patches/@types+archiver+6.0.4.patch — no longer needed
  • Fixes type errors introduced by @types/archiver@7 (applied consistently in both apps):
    • followSymlinks was removed from CoreOptions in the types (still supported at runtime) — fixed with as archiver.ArchiverOptions cast at call sites
    • ProgressData named import broken with export= module style — fixed by importing the archiver namespace type and using archiver.ProgressData
    • vi.mocked(archiver) cast updated to work with the new type shape in both test files

Testing Instructions

  • Run npm run typecheck — should pass with no errors
  • Run npm test — archive/export tests should pass
  • Build the CLI: npm run cli:build and verify no deprecation warnings about glob or inflight appear

Pre-merge Checklist

  • Have you checked for TypeScript, React or other console errors?

wojtekn added 2 commits April 10, 2026 10:39
…ings

archiver@6 → archiver@7 pulls in archiver-utils@5 which uses glob@10
instead of glob@8, eliminating the glob and inflight deprecation warnings.

@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime), so cast ArchiverOptions at call sites instead of
patching node_modules. Also fixes the broken ProgressData named import
which doesn't work with the export= module style in @types/archiver@7.
Consistent with the CLI upgrade. Drops the @types+archiver+6.0.4 patch
in favour of the same cast-based approach used in apps/cli.
@wojtekn wojtekn changed the title CLI: upgrade archiver to v7 to fix glob and inflight deprecation warnings Upgrade archiver to v7 to fix glob and inflight deprecation warnings Apr 10, 2026
@wojtekn wojtekn self-assigned this Apr 10, 2026
@wojtekn wojtekn requested a review from a team April 10, 2026 08:51
@wpmobilebot
Copy link
Copy Markdown
Collaborator

wpmobilebot commented Apr 10, 2026

📊 Performance Test Results

Comparing e89c955 vs trunk

app-size

Metric trunk e89c955 Diff Change
App Size (Mac) 1276.55 MB 1285.65 MB +9.10 MB 🔴 0.7%

site-editor

Metric trunk e89c955 Diff Change
load 1977 ms 1853 ms 124 ms 🟢 -6.3%

site-startup

Metric trunk e89c955 Diff Change
siteCreation 8117 ms 8128 ms +11 ms ⚪ 0.0%
siteStartup 4170 ms 4303 ms +133 ms 🔴 3.2%

Results are median values from multiple test runs.

Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff)

Copy link
Copy Markdown
Contributor

@epeicher epeicher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @wojtekn for updating this! I think as part of this upgrade we need to test if the zips generated include symLinks and in that case we can remove the patch-package for archiver@6.0.2.

I have also found one warning when installing, not sure if it's related to this

Image

@wojtekn
Copy link
Copy Markdown
Contributor Author

wojtekn commented Apr 10, 2026

@epeicher this PR already removes the types patch, but not the library patch one. I removed the other one now.

The follow-symlink still works. The source site:

% ls -l
total 16
drwxr-xr-x@ 17 USER staff   544 Apr 10 10:08 akismet
-rw-r--r--@  1 USER  admin  2671 Apr 10 10:08 hello.php
-rw-r--r--@  1 USER admin    28 Apr 10 10:08 index.php
lrwxr-xr-x@  1 USER staff    47 Apr 10 12:39 studio-demo-site-companion -> /Users/USER/Sites/studio-demo-site-companion

And exported package:

% ls -l studio-backup-my-sparkly-website-2026-04-10-12-39-40/wp-content/plugins 
total 16
drwxr-xr-x  18 USER staff   576 Apr 10 12:39 akismet
-rw-r--r--   1 USER staff  2671 Apr 10 08:08 hello.php
-rw-r--r--   1 USER staff    28 Apr 10 08:08 index.php
drwxr-xr-x   9 USER staff   288 Jul 16  2025 studio-demo-site-companion

Copy link
Copy Markdown
Contributor

@youknowriad youknowriad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving, I didn't see warnings when building but I'm honestly not 100% that I'm testing properly.

Copy link
Copy Markdown
Member

@sejas sejas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got an error when exporting a site, but I was able to reproduce the same error on trunk , so it seems not related to this PR.

Image Image

npm run cli:build doesn't show the library errors, although neither does on trunk. I think we could try it in next beta 🤞 .

@wojtekn
Copy link
Copy Markdown
Contributor Author

wojtekn commented Apr 10, 2026

Thanks for reviews @youknowriad @epeicher and @sejas !

The error is caused by SQLite issue - I forgot to mention that we need to comment out the database export part to test it.

@wojtekn wojtekn merged commit c9ed8c1 into trunk Apr 10, 2026
10 checks passed
@wojtekn wojtekn deleted the upgrade-archiver-v7-fix-glob-inflight-warnings branch April 10, 2026 11:49
lezama pushed a commit that referenced this pull request Apr 10, 2026
…3050)

* CLI: upgrade archiver to v7 to fix glob and inflight deprecation warnings

archiver@6 → archiver@7 pulls in archiver-utils@5 which uses glob@10
instead of glob@8, eliminating the glob and inflight deprecation warnings.

@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime), so cast ArchiverOptions at call sites instead of
patching node_modules. Also fixes the broken ProgressData named import
which doesn't work with the export= module style in @types/archiver@7.

* Studio: upgrade archiver to v7, drop @types/archiver patch

Consistent with the CLI upgrade. Drops the @types+archiver+6.0.4 patch
in favour of the same cast-based approach used in apps/cli.

* Studio: remove obsolete archiver@6 runtime patch
@fredrikekelund
Copy link
Copy Markdown
Contributor

@wojtekn, the followSymlinks option was something custom that @epeicher implemented (see archiverjs/node-archiver#810). This PR seems to have removed both the @types/archiver and archiver patches, which makes me think we lost this behavior…

@epeicher
Copy link
Copy Markdown
Contributor

epeicher commented Apr 10, 2026

@fredrikekelund I think that is the default behaviour of that version (after a quick visual look at the source code of the transient dependency) and @wojtekn has tested that so I think we are safe. If the generated zip includes symlinked files and folders, the patch is not required anymore.

But we should remove the leftovers if that's the case

@fredrikekelund
Copy link
Copy Markdown
Contributor

I just tested this and did not get the same results. My export contains a symlink, not the resolved contents of that symlink

@fredrikekelund
Copy link
Copy Markdown
Contributor

This does expose an issue in the previous implementation, though, which is that we needed an archiver patch for apps/cli, too

katinthehatsite pushed a commit that referenced this pull request Apr 10, 2026
…3050)

* CLI: upgrade archiver to v7 to fix glob and inflight deprecation warnings

archiver@6 → archiver@7 pulls in archiver-utils@5 which uses glob@10
instead of glob@8, eliminating the glob and inflight deprecation warnings.

@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime), so cast ArchiverOptions at call sites instead of
patching node_modules. Also fixes the broken ProgressData named import
which doesn't work with the export= module style in @types/archiver@7.

* Studio: upgrade archiver to v7, drop @types/archiver patch

Consistent with the CLI upgrade. Drops the @types+archiver+6.0.4 patch
in favour of the same cast-based approach used in apps/cli.

* Studio: remove obsolete archiver@6 runtime patch
katinthehatsite added a commit that referenced this pull request Apr 10, 2026
* [skip ci] Code freeze: Update translatable strings for 1.7.8

* [skip ci] Code freeze: Add draft release notes for 1.7.8

* Add push/pull/import/export MCP tools for AI agents (#3022)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* Sort studio code commands and subcommands alphabetically (#3027)

* Moved the `code` command registration in `apps/cli/index.ts` so that top-level CLI commands appear in alphabetical order

* Strip unnecessary fields in wpcom_request response (#3005)

* Strip bloated plan.features from wpcom_request responses

The WP.com /sites/{id} endpoint returns a plan object whose features
sub-field alone is 60K+ characters, pushing the total response past
Claude Code's ~100K character MCP tool result limit. The agent only
needs product_slug, is_free, and expired to gate features, since the
system prompt hardcodes what each plan tier can and can't do. Strip
plan.features and keep only essential plan properties.

* Also compact large array responses by stripping content and _links

List endpoints like GET /templates can return 80K+ chars of block markup.
Strip content and _links from array items when the response exceeds 80K
chars — the agent can still identify items by slug/title and fetch
individual ones for full content.

* Add _fields prompt guidance and scope plan compaction as special case

Add system prompt hint instructing the agent to use _fields on wp/v2
listing endpoints to minimize response sizes. Scope compactResponse()
to only handle plan.features stripping with a clear comment that this
is a special case (the API doesn't support sub-field filtering). Remove
the generic array compaction in favor of prompt-driven field selection.

* Add fields guidance for v1.1, rename stripOversizedFields

Update system prompt to instruct the agent to use fields (v1.1) and
_fields (wp/v2) to minimize response sizes, always including ID for
v1.1 requests. Rename compactResponse to stripOversizedFields for
clarity.

* Remove indentation in JSON to save tokens

* Fix dark mode visibility for error/success text in site list (#3034)

* Fix dark mode onbiarding screen (#3025)

Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com>

* Studio: Filter out deprecated warnings from fatal errors (#3018)

* Filter out deprecated warnings from fatal errors

* Ensure our error filtering approach is consistent with CLI

* Apply changes to default exporter

* Fix unit tests

---------

Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com>

* [skip ci] Update translations

* [skip ci] Bump version to 1.7.8-beta1

* CLI: ensure Studio root exists before starting code agent (#3039)

* Ensure startAiAgent() checks whether ~/Studio exists before launching the Claude SDK.

* Define a localeData type to fix lint error: The inferred type of this
node exceeds the maximum length the compiler will serialize. An explicit
type annotation is needed. (ts 7056)

* [skip ci] Bump version to 1.7.8-beta2

* Update illustration colors and add dot grid background (#3004)

* Update Sync and Preview illustrations with dark mode support and dot grid background

Rebuild the Sync tab illustration SVG with proper light/dark mode color switching.
Update the Preview tab browser chrome to use light colors in light mode.
Add an interactive DotGrid canvas component behind both illustrations with a
radial gradient mask for a clean fade effect.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Extract IllustrationGrid wrapper, use CSS tokens in SVGs, add tests

- Extract shared IllustrationGrid component (DotGrid + radial mask)
  used by both Sync and Preview tabs
- Replace hardcoded SVG colors with CSS custom properties
  (--color-frame-surface, --color-frame-bg, etc.) so illustrations
  adapt automatically to theme changes
- Scope SVG class names with short prefixes (sti-, sds-) to avoid
  collisions
- Add basic tests for DotGrid and IllustrationGrid components

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Mock DotGrid in sync tests to fix canvas error in jsdom

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Respect prefers-reduced-motion in DotGrid

When reduced motion is preferred, render a static grid with no intro
animation, hover repulsion, or click ripples. Mouse event listeners
are not attached at all. The grid still responds to resize and color
scheme changes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Keep WP logo white in dark mode on blue browser, dedup resize logic

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Solve for strange sidebars

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: katinthehatsite <katerynakodonenko@gmail.com>
Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com>

* Upgrade archiver to v7 to fix glob and inflight deprecation warnings (#3050)

* CLI: upgrade archiver to v7 to fix glob and inflight deprecation warnings

archiver@6 → archiver@7 pulls in archiver-utils@5 which uses glob@10
instead of glob@8, eliminating the glob and inflight deprecation warnings.

@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime), so cast ArchiverOptions at call sites instead of
patching node_modules. Also fixes the broken ProgressData named import
which doesn't work with the export= module style in @types/archiver@7.

* Studio: upgrade archiver to v7, drop @types/archiver patch

Consistent with the CLI upgrade. Drops the @types+archiver+6.0.4 patch
in favour of the same cast-based approach used in apps/cli.

* Studio: remove obsolete archiver@6 runtime patch

* Studio: Fix sync info icon color in dark mode (#3053)

The info icons next to the push progress bar had no fill color class,
defaulting to black which is invisible on the dark background. Add
fill-frame-text-secondary to match the existing offline icon style.

* Update CLI README with GIF and import/export/push/pull (#3029)

* Update CLI README

* Tweaks

* More tweaks

* Tweak

* Wider

* Enforce minimum node version in the CLI (#3049)

* Enforce minimum node version in the CLI

* Tweaks

* Allow translations to load first

* Fix sidebar top padding on Windows (#3026)

* [skip ci] Update translations

* [skip ci] Bump version to 1.7.8-beta3

---------

Co-authored-by: Riad Benguella <benguella@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Antonio Sejas <antonio.sejas@automattic.com>
Co-authored-by: Roberto Aranda <roberto.aranda@automattic.com>
Co-authored-by: Bernardo Cotrim <bmmcotrim@gmail.com>
Co-authored-by: katinthehatsite <katerynakodonenko@gmail.com>
Co-authored-by: Kateryna Kodonenko <kateryna@automattic.com>
Co-authored-by: Jorge Costa <jorge.costa@developer.pt>
Co-authored-by: Antonio Sejas <antonio@sejas.es>
Co-authored-by: Shaun Andrews <shaun@automattic.com>
Co-authored-by: Wojtek Naruniec <wojtek.naruniec@automattic.com>
Co-authored-by: Gergely Csécsey <gergely.csecsey@automattic.com>
Co-authored-by: Fredrik Rombach Ekelund <fredrik@f26d.dev>
Co-authored-by: Volodymyr Makukha <nei.css@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants