Studio: Filter out deprecated warnings from fatal errors#3018
Studio: Filter out deprecated warnings from fatal errors#3018katinthehatsite merged 7 commits intotrunkfrom
Conversation
📊 Performance Test ResultsComparing 9dec3c2 vs trunk app-size
site-editor
site-startup
Results are median values from multiple test runs. Legend: 🟢 Improvement (faster) | 🔴 Regression (slower) | ⚪ No change (<50ms diff) |
fredrikekelund
left a comment
There was a problem hiding this comment.
We now have two importer/exporter implementations: one in apps/cli and another in apps/studio.
In apps/cli, we only throw if WP-CLI returned a non-zero exit code, which I believe is the correct way to handle errors there.
I say let's do the same thing here.
Checking now 👀 |
|
@fredrikekelund the issue should now be addressed, let me know if you have any further comments. |
fredrikekelund
left a comment
There was a problem hiding this comment.
LGTM 👍 I'd probably make the equivalent change in apps/studio/src/lib/import-export/export/exporters/default-exporter.ts, too. Full-site exports already work when I test it with a PHP 8.5 site, but this change would ensure correctness.
Should now be done 👍 |
…dio into fix/pushing-site-with-8.5
* 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] 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 --------- Co-authored-by: Riad Benguella <benguella@gmail.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>
Related issues
Related to STU-1529
How AI was used in this PR
It was used to identify the solution after the fix raised in Automattic/wp-cli-sqlite-command#24 uncovered the issue.
Proposed Changes
PHP 8.5 triggers a deprecation notice from
react/promiseinsidewp-cli.phar. Studio treats any stderr output as a fatal export failure, so the notice was causing the export to fail even though the actual export succeeded. This PR ensures that we filter out the deprecation warning from the actual fatal error:This would ideally need to be fixed upstream but I think this fix should be sufficient for now.
Testing Instructions
SynctabPre-merge Checklist