admin-ui: Rebase and drop redundant headingLevel from dashboard route#77659
Closed
Copilot wants to merge 23 commits into
Closed
admin-ui: Rebase and drop redundant headingLevel from dashboard route#77659Copilot wants to merge 23 commits into
headingLevel from dashboard route#77659Copilot wants to merge 23 commits into
Conversation
* register dashboard-widgets experiment add gutenberg-dashboard-widgets to the experiments page and expose window.__experimentalDashboardWidgets flag * reword experimental flag experienmce Co-authored-by: simison <87168+simison@users.noreply.github.com>
* Move image output format filtering to upload response The image_editor_output_format filter was applied incorrectly in the REST index with wrong parameters (empty defaults, no filename context). Plugins couldn't make per-file decisions. This moves output format and progressive encoding data to the attachment upload response where actual file context is available. The client now reads image_output_format and image_save_progressive from the attachment response instead of generic settings from the REST index. * Update lib/media/class-gutenberg-rest-attachments-controller.php Co-authored-by: Weston Ruter <weston@ruter.net> * Fix duplicate variable declarations and PHPCS alignment Remove duplicate settings/allImageSizes declarations that were introduced during merge conflict resolution. Fix equals sign alignment in attachments controller to satisfy PHPCS. * Update lib/media/class-gutenberg-rest-attachments-controller.php Co-authored-by: Weston Ruter <weston@ruter.net> * Fix main-file output format mapping in client-side uploads Client-side uploads were sending convert_format=false, which disabled server-side format conversion. The replacement path tried to sideload a transcoded copy with image_size='original', but that code path only sets $metadata['original_image'] — it never updates _wp_attached_file or $metadata['file'], so wp_get_attachment_url() kept returning the unconverted JPEG even when a filter mapped JPEG to WebP. Let the server handle main-file conversion via its existing _wp_image_meta_replace_original logic. The client continues to handle sub-size conversion using the image_output_format hint in the upload response. Add PHPUnit coverage for both convert_format paths so the file-on-disk outcome is locked in. --------- Co-authored-by: Weston Ruter <weston@ruter.net> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* add dashboard route and page registration
Create routes/dashboard/ with a placeholder stage component,
assigned to a new "dashboard" page in wpPlugin.pages.
The build system auto-generates build/pages/dashboard/
with initSinglePage() bootstrap (wp-admin chrome preserved).
Files: routes/dashboard/{package.json,stage.tsx,tsconfig.json}
* add dashboard-widgets admin page loader
Register a top-level "Dashboard (Beta)" menu item in wp-admin,
gated behind the gutenberg-dashboard-widgets experiment.
Uses initSinglePage() mode so the classic wp-admin sidebar
is preserved — the stage renders inside #wpbody-content.
Slug: dashboard-wp-admin (position 1, dashicons-dashboard)
Render callback auto-generated by the build system.
* wire dashboard-widgets loader behind experiment flag
Require lib/experimental/dashboard-widgets/load.php only when
the gutenberg-dashboard-widgets experiment is enabled.
Follows the same pattern as gutenberg-guidelines.
* wrap dashboard stage in admin-ui Page shell
* update package-lock for dashboard route deps
Co-authored-by: simison <87168+simison@users.noreply.github.com>
Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org> Co-authored-by: tyxla <tyxla@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org> Co-authored-by: tyxla <tyxla@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
…77591) * Experimental Image Cropper: Ensure focus is on canvas when dragging * Add a test and ensure focus has been mocked to get things passing Co-authored-by: andrewserong <andrewserong@git.wordpress.org> Co-authored-by: ramonjd <ramonopoly@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
…terns and template parts (#77581) Co-authored-by: ramonjd <ramonopoly@git.wordpress.org> Co-authored-by: Mamaduka <mamaduka@git.wordpress.org> Co-authored-by: talldan <talldanwp@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
… handles and canvas (#77639) * Experimental Image Cropper: Tweak keyboard interactions for drag handles, canvas, and shift behaviour * Don't rotate if a modifier key is held when r is pressed * Add a CSS variable so that consumers can override the focus color Co-authored-by: andrewserong <andrewserong@git.wordpress.org> Co-authored-by: ramonjd <ramonopoly@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* fix: block-mover horizontal tooltip position * fix: block-mover tooltip for smaller viewports Co-authored-by: DarkMatter-999 <lakshyajeet@git.wordpress.org> Co-authored-by: ciampo <mciampini@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: lukecarbis <lukecarbis@git.wordpress.org> Co-authored-by: mirka <0mirka00@git.wordpress.org> Co-authored-by: jasmussen <joen@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
Use the design system `Badge` component for the Status column in the taxonomies DataView — `stable` intent for Active, `draft` for Inactive — instead of rendering the raw element label as text. Co-authored-by: tyxla <tyxla@git.wordpress.org> Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* Guidelines: Drop default_term from wp_guideline_type registration Registering the taxonomy with default_term triggers cross-site clean_term_cache work, which caused major load on multisite installs with many sites even when no guidelines existed. Replace it with a save_post_wp_guideline callback that assigns the artifact fallback only when the post has no type term yet. The REST controller's singleton path already sets content explicitly via tax_input, so that flow is unaffected. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Guidelines: Add unit tests for taxonomy default-term behavior Covers: - Regression guard that the taxonomy is registered without default_term. - The save_post fallback assigns artifact only when the post has no type. - An explicit type passed via tax_input is preserved, not overwritten. - Updates to an existing post do not reset the term. - The hook is scoped to wp_guideline and leaves other post types alone. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Guidelines: Scope the save_post hook to Gutenberg's own registration Move the save_post_wp_guideline registration inside the register() method so it lives behind the same post_type_exists() guard as the CPT itself. If WordPress core ever ships the guidelines CPT and its own fallback hook, Gutenberg will skip both and avoid registering a duplicate callback. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Guidelines: Use get_the_terms so the check hits the object term cache wp_get_object_terms() queries the database directly on every call. get_the_terms() uses the object term cache populated by update_object_term_cache(), which keeps repeated reads cheap within the same request. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Guidelines: Drop redundant autosave check and cover revisions in tests Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: gziolo <gziolo@git.wordpress.org> Co-authored-by: tyxla <tyxla@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
…ssion-notification, and form-submit-button (#61916) * Update block categories for form, form-input, form-submission-notification, and form-submit-button * Form blocks: move from Design to Widgets category --------- Co-authored-by: amitraj2203 <amitraj2203@git.wordpress.org> Co-authored-by: t-hamano <wildworks@git.wordpress.org> Co-authored-by: Mamaduka <mamaduka@git.wordpress.org> Co-authored-by: colorful-tones <colorful-tones@git.wordpress.org> Co-authored-by: carolinan <poena@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
#77637) Co-authored-by: tyxla <tyxla@git.wordpress.org> Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
Co-authored-by: simison <87168+simison@users.noreply.github.com>
Co-authored-by: simison <87168+simison@users.noreply.github.com>
* ButtonGroup: Inline z-index * Add changelog * Add changelog Co-authored-by: mirka <0mirka00@git.wordpress.org> Co-authored-by: ciampo <mciampini@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* VisuallyHidden: Update guidance * Migrate instances * Add manifest tag * Migrate remaining VisuallyHidden instances * Switch over lint disable for test file * Add ui tsconfig references * Update stale snapshot * Fixup * Fix CI type errors * Fixup * Fix VisuallyHidden render props * Tweak * Fix missed spots * Add changelog * Keep `className` on host component Co-authored-by: mirka <0mirka00@git.wordpress.org> Co-authored-by: ciampo <mciampini@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* FormToggle: Inline z-index * Add changelog * Add isolation * Add changelog * Clean up unnecessary `@use` * Add code comment Co-authored-by: mirka <0mirka00@git.wordpress.org> Co-authored-by: ciampo <mciampini@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* Inline ResizableBox handle z-index * Add changelog Co-authored-by: mirka <0mirka00@git.wordpress.org> Co-authored-by: ciampo <mciampini@git.wordpress.org> Co-authored-by: simison <87168+simison@users.noreply.github.com>
* Reduce VIPS library size in build output The VIPS library added ~30MB of unnecessary files to the build: source maps (~20MB) and duplicate unminified workers (~10MB) containing inlined WASM. This disables sourcemaps for script module builds, skips unminified builds for packages with wpWorkers, adds a SCRIPT_DEBUG fallback for missing unminified files, and excludes .map files from the plugin ZIP. * docblock cleanup * Scope VIPS build optimizations to avoid side effects The previous commit disabled sourcemaps and unminified builds for all module packages. This narrows the changes to only the vips package, which is the one that inlines large WASM binaries. * Add wpScriptModuleMinifiedOnly package.json flag Replace the hardcoded vips package name check with a generic wpScriptModuleMinifiedOnly flag that any package can set in its package.json to skip sourcemaps and unminified builds. * Fix JSDoc line alignment in package-utils.mjs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Propagate minifiedOnly flag to PHP module registry The previous commit added wpScriptModuleMinifiedOnly to package.json but didn't pass the flag through to the PHP registry data. Without the minified_only entry in the registry, the PHP template couldn't override the .js extension when SCRIPT_DEBUG is on, causing module resolution failures for packages that only ship .min.js files. * Rename wpScriptModuleMinifiedOnly to wpScriptDebugSupport Broadens the flag to cover all build outputs (scripts, script modules, and styles) instead of just script modules. When set to false, skips unminified builds and sourcemaps for all output types. Adds file_exists fallbacks in script and style PHP templates so SCRIPT_DEBUG gracefully falls back to minified files when unminified versions don't exist. * Remove minifiedOnly from module registry data The file_exists fallback in the PHP template handles missing unminified files generically, making the per-module minified_only flag in the registry unnecessary. * Fix prettier and JSDoc lint errors in wp-build - Collapse multiline `skipDebugBuilds` assignments to single lines (prettier) - Re-align JSDoc @typedef/@Property columns in package-utils.mjs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Revert unrelated whitespace change in package-utils.mjs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Remove unrelated comment and formatting changes from merge Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Remove hardcoded size from comment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: simison <87168+simison@users.noreply.github.com>
…77631) * Rotate rooms > MAX_ROOMS_PER_REQUEST in polling manager * Add tests for rotateWindow, postSyncUpdate changes * Only emit status changes to rooms in the current request pool * Fix polling tests to expect a single room on first poll * Fix tests by removing status changes from unregistered rooms Co-authored-by: simison <87168+simison@users.noreply.github.com>
Agent-Logs-Url: https://github.com/WordPress/gutenberg/sessions/c39ec6f2-e34c-4273-b515-a516945fff92 Co-authored-by: simison <87168+simison@users.noreply.github.com>
Copilot created this pull request from a session on behalf of
simison
April 24, 2026 20:31
View session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

PR #77617 changed the
Pagecomponent's defaultheadingLevelfrom2to1. After rebasing onto trunk (which addedroutes/dashboard/stage.tsxvia #77573), that new route was left with an explicitheadingLevel={ 1 }— now redundant.Changes
routes/dashboardrouteroutes/dashboard/stage.tsx— remove explicitheadingLevel={ 1 }prop; default is now1