Skip to content

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

Merged
wojtekn merged 3 commits into
trunkfrom
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 into
trunkfrom
upgrade-archiver-v7-fix-glob-inflight-warnings

Conversation

@wojtekn

@wojtekn wojtekn commented Apr 10, 2026

Copy link
Copy Markdown
Contributor

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 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

wpmobilebot commented Apr 10, 2026

Copy link
Copy Markdown
Collaborator

📊 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)

@epeicher epeicher left a comment

Copy link
Copy Markdown
Contributor

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

wojtekn commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

@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

@youknowriad youknowriad left a comment

Copy link
Copy Markdown
Contributor

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.

@sejas sejas left a comment

Copy link
Copy Markdown
Member

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

wojtekn commented Apr 10, 2026

Copy link
Copy Markdown
Contributor Author

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

epeicher commented Apr 10, 2026

Copy link
Copy Markdown
Contributor

@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>
katinthehatsite added a commit that referenced this pull request Apr 13, 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

* Add Studio Code section to CLI README (#3059)

- Add a new "Studio Code" section to the CLI README introducing the AI agent feature
- Update the table of contents with a link to the new section
- Clarify existing AI agent integration bullet point to distinguish from Studio Code

* Fix white border around scrollbar in light mode (#3051)

* Bump actions/checkout from 4 to 6 (#3048)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Rename audit skill directory to match need-for-speed skill name (#3067)

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

* Track more CLI bump stats (#3054)

* Track more CLI bump stats

- Monthly active users
- First launch
- Total launches
- Site creation

* Fix global definitions

* Fix types

* __ENABLE_CLI_TELEMETRY__

* Fix site thumbnail not displaying correctly for newly created sites (#3028)

* Fix error/load race condition for site screenshots

* Revert styling changes

* Stop capturing screenshots on every UPDATED site-event

* Add archiver patches back to fix following symlinks on export

* [skip ci] Bump version to 1.7.8-beta4

* Remove @types/archiver patches

The @types/archiver patches added followSymlinks to CoreOptions, but
this is unnecessary — ARCHIVER_OPTIONS in constants.ts uses plain object
inference so followSymlinks is never checked against CoreOptions. The CLI
patch also broke CI because install:bundle uses --omit=dev, meaning
@types/archiver is absent when patch-package runs.

* Remove @types/archiver patches and restore ArchiverOptions casts

The @types/archiver patches added followSymlinks to CoreOptions, but
@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime). The CLI patch also broke CI because install:bundle
uses --omit=dev, meaning @types/archiver is absent when patch-package
runs. Restore the `as archiver.ArchiverOptions` casts at call sites.

* Remove unused @ts-expect-error from archive.ts

* Remove cast and explicitly silence TS error

---------

Signed-off-by: dependabot[bot] <support@github.com>
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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wojtek Naruniec <wojtek@naruniec.me>
katinthehatsite added a commit that referenced this pull request Apr 13, 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

* Add Studio Code section to CLI README (#3059)

- Add a new "Studio Code" section to the CLI README introducing the AI agent feature
- Update the table of contents with a link to the new section
- Clarify existing AI agent integration bullet point to distinguish from Studio Code

* Fix white border around scrollbar in light mode (#3051)

* Bump actions/checkout from 4 to 6 (#3048)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Rename audit skill directory to match need-for-speed skill name (#3067)

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

* Track more CLI bump stats (#3054)

* Track more CLI bump stats

- Monthly active users
- First launch
- Total launches
- Site creation

* Fix global definitions

* Fix types

* __ENABLE_CLI_TELEMETRY__

* Fix site thumbnail not displaying correctly for newly created sites (#3028)

* Fix error/load race condition for site screenshots

* Revert styling changes

* Stop capturing screenshots on every UPDATED site-event

* Add archiver patches back to fix following symlinks on export

* [skip ci] Bump version to 1.7.8-beta4

* Remove @types/archiver patches

The @types/archiver patches added followSymlinks to CoreOptions, but
this is unnecessary — ARCHIVER_OPTIONS in constants.ts uses plain object
inference so followSymlinks is never checked against CoreOptions. The CLI
patch also broke CI because install:bundle uses --omit=dev, meaning
@types/archiver is absent when patch-package runs.

* Remove @types/archiver patches and restore ArchiverOptions casts

The @types/archiver patches added followSymlinks to CoreOptions, but
@types/archiver@7 dropped followSymlinks from CoreOptions (it's still
supported at runtime). The CLI patch also broke CI because install:bundle
uses --omit=dev, meaning @types/archiver is absent when patch-package
runs. Restore the `as archiver.ArchiverOptions` casts at call sites.

* Remove cast and explicitly silence TS error

* Update release notes

* Adjust notes feedback

* [skip ci] Bump version to 1.7.8

---------

Signed-off-by: dependabot[bot] <support@github.com>
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>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Wojtek Naruniec <wojtek@naruniec.me>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

6 participants