close
Skip to content

admin-ui: Rebase and drop redundant headingLevel from dashboard route#77659

Closed
Copilot wants to merge 23 commits into
admin-ui/default-heading-level-1from
copilot/remove-heading-level-prop
Closed

admin-ui: Rebase and drop redundant headingLevel from dashboard route#77659
Copilot wants to merge 23 commits into
admin-ui/default-heading-level-1from
copilot/remove-heading-level-prop

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 24, 2026

PR #77617 changed the Page component's default headingLevel from 2 to 1. After rebasing onto trunk (which added routes/dashboard/stage.tsx via #77573), that new route was left with an explicit headingLevel={ 1 } — now redundant.

Changes

  • Rebase onto trunk — picks up 22 commits including the new routes/dashboard route
  • routes/dashboard/stage.tsx — remove explicit headingLevel={ 1 } prop; default is now 1
// Before
<Page title={ __( 'Dashboard' ) } headingLevel={ 1 }>

// After
<Page title={ __( 'Dashboard' ) }>

retrofox and others added 23 commits April 24, 2026 20:24
* 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>
Co-authored-by: ntsekouras <ntsekouras@git.wordpress.org>
Co-authored-by: tyxla <tyxla@git.wordpress.org>
Co-authored-by: mirka <0mirka00@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>
@simison simison closed this Apr 24, 2026
@simison simison deleted the copilot/remove-heading-level-prop branch April 27, 2026 09:47
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.