Skip to content

chore: M0 · branch + issue housekeeping for Gutenberg adoption - #326

Merged
ViewFromTheBox merged 3 commits into
add/phase-twofrom
feature/gutenberg-adoption
Apr 18, 2026
Merged

ViewFromTheBox merged 3 commits into
add/phase-twofrom
feature/gutenberg-adoption

Conversation

@ViewFromTheBox

@ViewFromTheBox ViewFromTheBox commented Apr 18, 2026 •

Copy link
Copy Markdown
Member

Description

M0 of the Gutenberg adoption epic (#309): branch + issue housekeeping. Moves the custom-React editor tree under resources/js/visual-editor/_legacy/ as reference-only code while M1–M15 rebuild the editor on top of Gutenberg's npm packages. No runtime behavior change — path updates only.

Closes: #310

Type of Change

  • Bug fix (fixes an issue)
  • New feature (adds new functionality)
  • Enhancement (improves existing functionality)
  • Refactoring (code improvement, no behavior change)
  • Documentation update
  • Performance improvement
  • Security fix
  • Breaking change (breaks backward compatibility)

Related Issue

Issue: #310

Part of the Gutenberg adoption epic: #309.

Motivation and Context

The package pivoted from rebuilding block-editor primitives in React from scratch to adopting Gutenberg's React packages as a library dependency. M0 sets up the workspace so M1–M15 can proceed against a clean baseline:

  • A dedicated feature/gutenberg-adoption branch off add/phase-two.
  • The prior custom-React editor preserved under _legacy/ as a reference (not as active code).
  • A canonical strategy doc at docs/gutenberg-adoption.md linked from the active memory.
  • Path references in configs updated so existing tests still pass against the relocated code.

See docs/gutenberg-adoption.md and #309 for the full rationale.

Changes Made

  • Moved resources/js/visual-editor/editor/ → resources/js/visual-editor/_legacy/editor/ (entire custom editor tree: blocks, components, store, primitives, inserter, REST client, tests).
  • Added resources/js/visual-editor/_legacy/README.md explaining what's there and what happens to it.
  • Added docs/gutenberg-adoption.md — canonical V1 strategy document with architecture diagram, locked decisions, and milestone pointers.
  • Updated path references in:
    • vite.config.ts, vitest.config.ts, tsconfig.json
    • resources/views/editor/mount.blade.php
    • src/VisualEditorServiceProvider.php
    • tests/Feature/EditorMountViewTest.php

Out of scope: the cherry-pick targets 77b5da0 and 2bb64d3 referenced in the M0 acceptance criteria are commits in the Laravel dev-app repo, not the package repo. They do not apply to this branch.

How Has This Been Tested?

Testing Environment:

  • Operating System: macOS (Darwin 25.3.0)
  • PHP Version: 8.4
  • Project Version: feature/gutenberg-adoption off add/phase-two

Tests Performed:

  1. npm test — 215/215 tests pass
  2. composer test — 27/27 tests pass
  3. npx tsc --noEmit — clean, no errors
  4. Visual inspection: _legacy/ tree present; no stale path references via grep -r resources/js/visual-editor/editor (excluding _legacy)

Accessibility Tests Run

N/A — no UI changes. File relocation only.

  • Keyboard navigation tested (not applicable — no UI change)
  • Screen reader tested (not applicable)
  • Color contrast verified (not applicable)
  • ARIA labels checked (not applicable)

Details: This is a housekeeping PR. No user-facing UI surfaces are modified.

Tests Added

  • Unit tests added/updated
  • Integration tests added/updated
  • All tests passing

Test details: No new tests. Existing tests validate the path updates — if any reference was missed, the test suite would fail. All 215 JS and 27 PHP tests pass.

Documentation

  • Inline code documentation added
  • README updated
  • Wiki updated
  • API documentation updated

Documentation details:

  • New docs/gutenberg-adoption.md as the canonical V1 strategy doc.
  • New resources/js/visual-editor/_legacy/README.md explaining the legacy tree.

Screenshots

N/A.

Pre-Submission Checklist

  • Followed contributing guidelines
  • Checked for other open PRs for same update
  • Code passes all tests
  • Code has been linted
  • Accessibility tests completed (N/A for this PR)
  • Code follows project style guide
  • Self-review completed
  • Comments added for complex code
  • No new warnings generated

Summary by CodeRabbit

  • New Features

    • Added Gutenberg adoption strategy docs and new legacy-based sidebar components for the editor.
    • Editor now loads the legacy editor build during V1 migration.
  • Documentation

    • Added a “Peer Dependencies” section to the README.
    • Added a comprehensive visual editor adoption and architecture guide with milestones.
  • Style

    • Reworked editor UI to use the shared component library for inputs, buttons, menus, and toolbar styling.

ViewFromTheBox and others added 2 commits April 17, 2026 20:09
Migrate the visual editor's UI chrome to use @artisanpack-ui/react primitives
where compatible, aligning the editor with the broader ArtisanPack UI design
system. Declare daisyui and tailwindcss as peer dependencies since the react
package's DaisyUI styling is now required at runtime.

Swapped to @artisanpack-ui/react:
- Button: TopBar, BlockToolbar pin, InspectorSidebar breakpoint buttons,
  EditorBoot retry, RichTextToolbar format/more-menu/link actions
- Input: InserterPanel search, RichTextToolbar link URL
- Select: InspectorSidebar state, RichTextToolbar heading level
- Tabs: LeftSidebar (Blocks/Patterns/Layers), InspectorSidebar (Settings/Styles)

Kept bespoke:
- Icon.tsx (FontAwesome adapter; react package's Icon takes raw SVG paths)
- Drag handles in BlockWrapper/LayersPanel (dnd-kit ref fragility)
- Block tiles, between-block inserter, SlashCommandPopover (layout-specific)
- Popover and Dropdown (triggered a main-thread freeze with Tiptap; filed
  upstream; reverted to inline manual patterns)

Workarounds:
- tabListClassName="tabs-box" — @artisanpack-ui/react Tabs emits DaisyUI 4
  variant names which are dead in DaisyUI 5
- Always subpath imports (/form, /layout) — root import pulls in Chart chunk
  which needs react-apexcharts that's an optional peer

Removed 263 lines of orphaned chrome CSS that was replaced by DaisyUI classes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Move the custom-React editor tree under resources/js/visual-editor/_legacy/
as reference-only code while the Gutenberg adoption (umbrella #309) plays
out across M1–M15. No runtime behavior change — path updates only.

Changes:
- `resources/js/visual-editor/editor/` → `resources/js/visual-editor/_legacy/editor/`
  Entire custom editor tree (block registry, Zustand store, Tiptap wiring,
  editor shell, per-block edit.tsx, REST client, tests).
- Add `resources/js/visual-editor/_legacy/README.md` explaining scope and
  pointers to the new strategy doc.
- Add `docs/gutenberg-adoption.md` as the canonical V1 strategy document
  linking umbrella #309 and milestones #310–#325.
- Update path references in `vite.config.ts`, `vitest.config.ts`,
  `tsconfig.json`, `resources/views/editor/mount.blade.php`,
  `src/VisualEditorServiceProvider.php`, `tests/Feature/EditorMountViewTest.php`
  to point at `_legacy/editor/`.

Out of scope (per issue #310):
- The cherry-pick targets 77b5da0 and 2bb64d3 are dev-app commits (they
  live in the Laravel dev app repo, not this package), so no cherry-pick
  happens here. Noted in the umbrella for M15 docs.

Verification:
- `npm test`: 215/215 tests pass
- `composer test`: 27/27 tests pass
- `npx tsc --noEmit`: clean

Closes #310

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

coderabbitai Bot commented Apr 18, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 91e274fa-47e9-4158-83e2-299dbc76fd29

📥 Commits

Reviewing files that changed from the base of the PR and between d69f635 and dc8ca75.

📒 Files selected for processing (1)
  • docs/gutenberg-adoption.md
✅ Files skipped from review due to trivial changes (1)
  • docs/gutenberg-adoption.md

📝 Walkthrough

Walkthrough

Relocates the active editor code to a legacy directory, updates build/test/module aliases and service/provider paths to point at the legacy tree, integrates @artisanpack-ui/react form components into legacy UI, adds Gutenberg-adoption documentation and peer-dependency notes in README, and removes duplicate editor implementations from the primary editor tree.

Changes

Cohort / File(s) Summary
Docs & README
README.md, docs/gutenberg-adoption.md, resources/js/visual-editor/_legacy/README.md
Added Peer Dependencies note to README; introduced detailed Gutenberg adoption V1 strategy doc and legacy-editor README describing snapshot status and migration plan.
Package metadata
package.json
Declared tailwindcss and daisyui as peerDependencies, added them as devDependencies, and introduced runtime dependency on @artisanpack-ui/react.
Build, tooling & aliases
vite.config.ts, vitest.config.ts, tsconfig.json
Repointed editor root/alias/configs from resources/js/visual-editor/editor to _legacy/editor, including test setup and build entry resolution.
Blade view & service provider
resources/views/editor/mount.blade.php, src/VisualEditorServiceProvider.php
Switched Vite mount entry to the legacy main bundle and updated block registration to read manifests from _legacy/editor/blocks.
Tests
tests/Feature/EditorMountViewTest.php
Updated assertions and referenced boot entry paths to the _legacy editor entry.
Legacy UI: component library integration
resources/js/visual-editor/_legacy/editor/components/... (BlockToolbar.tsx, EditorBoot.tsx, InserterPanel.tsx, TopBar.tsx, RichTextToolbar.tsx, SlashCommandPopover.tsx, etc.)
Replaced native inputs/buttons/selects with @artisanpack-ui/react/form components (Button, Input, Select), moved styling from bespoke classes to component props and adjusted markup for menus/popovers.
Legacy UI: new sidebar components
resources/js/visual-editor/_legacy/editor/components/InspectorSidebar.tsx, .../LeftSidebar.tsx
Added InspectorSidebar and LeftSidebar components (tabbed UIs) that read selection from Zustand store and provide Settings/Styles and Blocks/Patterns/Layers panels.
Deleted original editor components
resources/js/visual-editor/editor/components/InspectorSidebar.tsx, .../LeftSidebar.tsx
Removed the corresponding implementations from the primary editor tree to consolidate active code under _legacy/.
CSS / styling
resources/js/visual-editor/_legacy/editor/components/editor.css
Stripped many legacy button/menu styles, refactored inspector/left-sidebar tab selectors to root-based role selectors, and removed several custom popover/input rules.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰
I hopped through code and left a trail,
Old editor snug inside a vail,
Buttons now wear a fancier coat,
Docs and paths all point to that old note,
Tomorrow's blocks will find a new trail.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.76% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: housekeeping and infrastructure setup for Gutenberg adoption (M0), reflecting the PR's primary focus on branch creation, path reorganization, and documentation.
Linked Issues check ✅ Passed The PR substantially meets the acceptance criteria from #310: branch created, editor code preserved in _legacy/, paths updated across config/tests, and documentation added; cherry-pick targets noted as inapplicable (different repo).
Out of Scope Changes check ✅ Passed All changes directly support M0 objectives: documentation (README.md, gutenberg-adoption.md, _legacy README), package.json peer dependencies for UI components, component migrations to use @artisanpack-ui/react, and tooling/path updates align with editor relocation.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/gutenberg-adoption

Comment @coderabbitai help to get the list of available commands and usage tips.

@ViewFromTheBox ViewFromTheBox moved this from Backlog to In Review in ArtisanPack UI Overview Apr 18, 2026
@ViewFromTheBox ViewFromTheBox linked an issue Apr 18, 2026 that may be closed by this pull request
8 tasks
@ViewFromTheBox
ViewFromTheBox marked this pull request as ready for review April 18, 2026 22:36

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (5)
src/VisualEditorServiceProvider.php (1)

73-76: Consider extracting the legacy blocks path into a class constant

Line 76 introduces another hardcoded editor path. Given planned milestone swaps, a single constant here will reduce churn and typo risk.

♻️ Suggested refactor
 class VisualEditorServiceProvider extends ServiceProvider
 {
+    private const LEGACY_BLOCKS_DIR = __DIR__ . '/../resources/js/visual-editor/_legacy/editor/blocks';
+
@@
-        $blocksDir = __DIR__ . '/../resources/js/visual-editor/_legacy/editor/blocks';
+        $blocksDir = self::LEGACY_BLOCKS_DIR;
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/VisualEditorServiceProvider.php` around lines 73 - 76, Extract the
hardcoded legacy blocks path assigned to $blocksDir in
VisualEditorServiceProvider into a class constant (e.g., LEGACY_BLOCKS_PATH) on
the VisualEditorServiceProvider class and replace the inline string usage with
that constant; ensure the constant value equals __DIR__ .
'/../resources/js/visual-editor/_legacy/editor/blocks' and update any other
references/new uses to read from self::LEGACY_BLOCKS_PATH so future
milestone/path swaps only require a single constant change.
resources/js/visual-editor/_legacy/editor/components/SlashCommandPopover.tsx (1)

45-54: Consider using <button> or adding role="menuitem" for better accessibility.

The <a> element without an href attribute is a common DaisyUI pattern, but it may trigger accessibility warnings since anchors without href lack keyboard focusability by default and don't convey the correct semantic role. Since these items trigger actions rather than navigation, a <button> or adding role="menuitem" with tabindex="0" would be more semantic.

♻️ Optional: Use button for action semantics
-                            <a className={isSelected ? 'active' : undefined}>
+                            <a
+                                role="menuitem"
+                                tabIndex={0}
+                                className={isSelected ? 'active' : undefined}
+                            >

Or alternatively, if DaisyUI styling permits:

-                            <a className={isSelected ? 'active' : undefined}>
+                            <button type="button" className={isSelected ? 'active' : undefined}>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/js/visual-editor/_legacy/editor/components/SlashCommandPopover.tsx`
around lines 45 - 54, The anchor element used to render each command item (in
SlashCommandPopover.tsx around the element that renders isSelected, block.title
and block.description) is non-semantic for an action; replace the <a> with a
<button> (preserving DaisyUI classes and the isSelected styling) so items are
keyboard-focusable and have correct action semantics, or if you must keep an
anchor add role="menuitem" and tabindex="0" plus appropriate keyboard handlers
to emulate button behavior; ensure any onClick/onKeyDown handlers currently on
the anchor are moved/kept on the new element and that aria-selected or
aria-current is applied consistent with isSelected.
resources/js/visual-editor/_legacy/editor/components/RichTextToolbar.tsx (1)

415-422: The onClick={disabled ? undefined : onClick} pattern is redundant.

Since the <button> element has the disabled attribute set, the browser will prevent click events automatically. Setting onClick to undefined when disabled is unnecessary.

♻️ Simplify onClick handling
-                onClick={disabled ? undefined : onClick}
+                onClick={onClick}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/js/visual-editor/_legacy/editor/components/RichTextToolbar.tsx`
around lines 415 - 422, The onClick ternary is redundant because the native
disabled attribute prevents clicks; simplify the button in RichTextToolbar by
removing the conditional and using onClick={onClick} directly (leave
onMouseDown, disabled, data-testid and className as-is) so the handler is
defined consistently without changing behavior.
resources/js/visual-editor/_legacy/editor/components/InspectorSidebar.tsx (1)

13-30: Avoid repeated full-tree scans in the store selector.

findBlockInTree(...) inside the Zustand selector can become a hot path as document size grows. Consider indexing blocks by clientId in store state (or memoizing an index) and doing O(1) lookup for the selected block.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/js/visual-editor/_legacy/editor/components/InspectorSidebar.tsx`
around lines 13 - 30, The selector used in InspectorSidebar currently calls
findBlockInTree over state.blocks on every render (via useStore), which will
become expensive; instead add an O(1) lookup in the editor store (e.g., maintain
a blocksById map updated whenever state.blocks change) or expose a getter like
getBlockByClientId(clientId) on useEditorStore, then change the selector in
InspectorSidebar to use state.blocksById?.[state.selection.clientId] or call
state.getBlockByClientId(state.selection.clientId) rather than invoking
findBlockInTree; update store mutation points to keep the index in sync and
remove the full-tree scan from the selector.
resources/js/visual-editor/_legacy/editor/components/editor.css (1)

441-449: Consider tightening tab role selectors to avoid style bleed.

Using broad descendant selectors can affect nested tab widgets if they’re ever rendered inside these roots. Prefer a stricter scope (e.g., direct child or a library-specific class hook) to keep styles isolated.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@resources/js/visual-editor/_legacy/editor/components/editor.css` around lines
441 - 449, The current descendant selectors (.ve-inspector__tabs-root
[role="tablist"], .ve-left-sidebar__tabs-root [role="tablist"], and their
[role="tab"] descendants) are too broad and may style nested tab widgets;
tighten them by scoping to direct children or a dedicated class hook (e.g.,
target .ve-inspector__tabs-root > [role="tablist"] and .ve-inspector__tabs-root
> [role="tablist"] > [role="tab"], or add library-specific class hooks like
.ve-tablist / .ve-tab on the elements) so styles apply only to the immediate
tablist/tab instances used by these roots.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/gutenberg-adoption.md`:
- Line 39: The fenced architecture code block in docs/gutenberg-adoption.md is
missing a language specifier and triggers markdownlint MD040; update the opening
fence for that ASCII-art block from ``` to ```text (i.e., add the language
identifier "text" to the fenced code block surrounding the box diagram) so the
block is explicitly marked and linting passes.
- Around line 123-125: Update the Markdown link target so it points to the
stated directory: change the href that currently links to
"../resources/js/visual-editor/_legacy/" to
"../resources/js/visual-editor/_legacy/editor/" so the visible path
`resources/js/visual-editor/_legacy/editor/` and the actual link target match.

---

Nitpick comments:
In `@resources/js/visual-editor/_legacy/editor/components/editor.css`:
- Around line 441-449: The current descendant selectors
(.ve-inspector__tabs-root [role="tablist"], .ve-left-sidebar__tabs-root
[role="tablist"], and their [role="tab"] descendants) are too broad and may
style nested tab widgets; tighten them by scoping to direct children or a
dedicated class hook (e.g., target .ve-inspector__tabs-root > [role="tablist"]
and .ve-inspector__tabs-root > [role="tablist"] > [role="tab"], or add
library-specific class hooks like .ve-tablist / .ve-tab on the elements) so
styles apply only to the immediate tablist/tab instances used by these roots.

In `@resources/js/visual-editor/_legacy/editor/components/InspectorSidebar.tsx`:
- Around line 13-30: The selector used in InspectorSidebar currently calls
findBlockInTree over state.blocks on every render (via useStore), which will
become expensive; instead add an O(1) lookup in the editor store (e.g., maintain
a blocksById map updated whenever state.blocks change) or expose a getter like
getBlockByClientId(clientId) on useEditorStore, then change the selector in
InspectorSidebar to use state.blocksById?.[state.selection.clientId] or call
state.getBlockByClientId(state.selection.clientId) rather than invoking
findBlockInTree; update store mutation points to keep the index in sync and
remove the full-tree scan from the selector.

In `@resources/js/visual-editor/_legacy/editor/components/RichTextToolbar.tsx`:
- Around line 415-422: The onClick ternary is redundant because the native
disabled attribute prevents clicks; simplify the button in RichTextToolbar by
removing the conditional and using onClick={onClick} directly (leave
onMouseDown, disabled, data-testid and className as-is) so the handler is
defined consistently without changing behavior.

In
`@resources/js/visual-editor/_legacy/editor/components/SlashCommandPopover.tsx`:
- Around line 45-54: The anchor element used to render each command item (in
SlashCommandPopover.tsx around the element that renders isSelected, block.title
and block.description) is non-semantic for an action; replace the <a> with a
<button> (preserving DaisyUI classes and the isSelected styling) so items are
keyboard-focusable and have correct action semantics, or if you must keep an
anchor add role="menuitem" and tabindex="0" plus appropriate keyboard handlers
to emulate button behavior; ensure any onClick/onKeyDown handlers currently on
the anchor are moved/kept on the new element and that aria-selected or
aria-current is applied consistent with isSelected.

In `@src/VisualEditorServiceProvider.php`:
- Around line 73-76: Extract the hardcoded legacy blocks path assigned to
$blocksDir in VisualEditorServiceProvider into a class constant (e.g.,
LEGACY_BLOCKS_PATH) on the VisualEditorServiceProvider class and replace the
inline string usage with that constant; ensure the constant value equals __DIR__
. '/../resources/js/visual-editor/_legacy/editor/blocks' and update any other
references/new uses to read from self::LEGACY_BLOCKS_PATH so future
milestone/path swaps only require a single constant change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 515f6303-2475-4dd1-a5f4-39392208697a

📥 Commits

Reviewing files that changed from the base of the PR and between 6e666b1 and d69f635.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json, !package-lock.json
📒 Files selected for processing (109)
  • README.md
  • docs/gutenberg-adoption.md
  • package.json
  • resources/js/visual-editor/_legacy/README.md
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/code.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/heading.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/list.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/paragraph.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/preformatted.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/quote.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/__tests__/slashCommand.test.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/code/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/code/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/code/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/heading/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/heading/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/heading/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/list/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/list/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/list/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/paragraph/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/paragraph/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/paragraph/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/preformatted/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/preformatted/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/preformatted/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/quote/block.json
  • resources/js/visual-editor/_legacy/editor/blocks/quote/edit.tsx
  • resources/js/visual-editor/_legacy/editor/blocks/quote/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/shared/blockEditorRegistry.ts
  • resources/js/visual-editor/_legacy/editor/blocks/shared/blockSplitMerge.ts
  • resources/js/visual-editor/_legacy/editor/blocks/shared/index.ts
  • resources/js/visual-editor/_legacy/editor/blocks/shared/splitContent.ts
  • resources/js/visual-editor/_legacy/editor/blocks/shared/useBlockTiptap.ts
  • resources/js/visual-editor/_legacy/editor/components/BlockList.tsx
  • resources/js/visual-editor/_legacy/editor/components/BlockToolbar.tsx
  • resources/js/visual-editor/_legacy/editor/components/BlockWrapper.tsx
  • resources/js/visual-editor/_legacy/editor/components/Canvas.tsx
  • resources/js/visual-editor/_legacy/editor/components/EditorBoot.tsx
  • resources/js/visual-editor/_legacy/editor/components/EditorShell.tsx
  • resources/js/visual-editor/_legacy/editor/components/Icon.tsx
  • resources/js/visual-editor/_legacy/editor/components/InserterPanel.tsx
  • resources/js/visual-editor/_legacy/editor/components/InspectorSidebar.tsx
  • resources/js/visual-editor/_legacy/editor/components/LayersPanel.tsx
  • resources/js/visual-editor/_legacy/editor/components/LeftSidebar.tsx
  • resources/js/visual-editor/_legacy/editor/components/RichTextToolbar.tsx
  • resources/js/visual-editor/_legacy/editor/components/SlashCommandPopover.tsx
  • resources/js/visual-editor/_legacy/editor/components/StatusBar.tsx
  • resources/js/visual-editor/_legacy/editor/components/TopBar.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/BlockList.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/BlockListDnd.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/BlockListDndDispatch.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/BlockWrapper.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/EditorBoot.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/EditorShell.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/InserterPanel.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/__tests__/RichTextToolbar.test.tsx
  • resources/js/visual-editor/_legacy/editor/components/blockIconMap.ts
  • resources/js/visual-editor/_legacy/editor/components/editor.css
  • resources/js/visual-editor/_legacy/editor/components/index.ts
  • resources/js/visual-editor/_legacy/editor/index.html
  • resources/js/visual-editor/_legacy/editor/index.ts
  • resources/js/visual-editor/_legacy/editor/inserter/__tests__/insertBlockActions.test.ts
  • resources/js/visual-editor/_legacy/editor/inserter/__tests__/inserterRegistry.test.ts
  • resources/js/visual-editor/_legacy/editor/inserter/builtinInserterBlocks.ts
  • resources/js/visual-editor/_legacy/editor/inserter/filterInserterBlocks.ts
  • resources/js/visual-editor/_legacy/editor/inserter/index.ts
  • resources/js/visual-editor/_legacy/editor/inserter/insertBlockActions.ts
  • resources/js/visual-editor/_legacy/editor/inserter/inserterRegistry.ts
  • resources/js/visual-editor/_legacy/editor/inserter/loadInserterBlocks.ts
  • resources/js/visual-editor/_legacy/editor/main.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/BlockContext.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/EditorStoreContext.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/ReadOnlyContext.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/RichText.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/__tests__/BlockContext.test.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/__tests__/EditorStoreContext.test.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/__tests__/useBlockPreview.test.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/__tests__/useInnerBlocksProps.test.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/index.ts
  • resources/js/visual-editor/_legacy/editor/primitives/useBlockPreview.tsx
  • resources/js/visual-editor/_legacy/editor/primitives/useInnerBlocksProps.tsx
  • resources/js/visual-editor/_legacy/editor/registry/blockRegistry.ts
  • resources/js/visual-editor/_legacy/editor/registry/blockSupports.ts
  • resources/js/visual-editor/_legacy/editor/registry/index.ts
  • resources/js/visual-editor/_legacy/editor/registry/types.ts
  • resources/js/visual-editor/_legacy/editor/rest/__tests__/postRestClient.test.ts
  • resources/js/visual-editor/_legacy/editor/rest/__tests__/useAutosave.test.tsx
  • resources/js/visual-editor/_legacy/editor/rest/index.ts
  • resources/js/visual-editor/_legacy/editor/rest/postRestClient.ts
  • resources/js/visual-editor/_legacy/editor/rest/useAutosave.ts
  • resources/js/visual-editor/_legacy/editor/store/__tests__/editorStore.test.ts
  • resources/js/visual-editor/_legacy/editor/store/__tests__/editorStoreHistory.test.ts
  • resources/js/visual-editor/_legacy/editor/store/__tests__/editorStoreSelectors.test.tsx
  • resources/js/visual-editor/_legacy/editor/store/editorStore.ts
  • resources/js/visual-editor/_legacy/editor/store/ids.ts
  • resources/js/visual-editor/_legacy/editor/store/index.ts
  • resources/js/visual-editor/_legacy/editor/store/treeUtils.ts
  • resources/js/visual-editor/_legacy/editor/store/types.ts
  • resources/js/visual-editor/_legacy/editor/test-setup.ts
  • resources/js/visual-editor/editor/components/InspectorSidebar.tsx
  • resources/js/visual-editor/editor/components/LeftSidebar.tsx
  • resources/views/editor/mount.blade.php
  • src/VisualEditorServiceProvider.php
  • tests/Feature/EditorMountViewTest.php
  • tsconfig.json
  • vite.config.ts
  • vitest.config.ts
💤 Files with no reviewable changes (2)
  • resources/js/visual-editor/editor/components/LeftSidebar.tsx
  • resources/js/visual-editor/editor/components/InspectorSidebar.tsx

Comment thread docs/gutenberg-adoption.md Outdated
Comment thread docs/gutenberg-adoption.md
- Add `text` language identifier to the architecture fenced code block so
  markdownlint MD040 passes.
- Fix the legacy-tree link href to point at `_legacy/editor/` to match the
  visible link text.

Closes #310

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Development

Successfully merging this pull request may close these issues.

M0 · Branch + issue housekeeping

1 participant