Skip to content

docs: V1 documentation set and release notes (#325) - #536

Merged
ViewFromTheBox merged 2 commits into
release/1.0from
docs/325-v1-docs-and-release
Jun 4, 2026
Merged

ViewFromTheBox merged 2 commits into
release/1.0from
docs/325-v1-docs-and-release

Conversation

@ViewFromTheBox

@ViewFromTheBox ViewFromTheBox commented Jun 4, 2026 •

Copy link
Copy Markdown
Member

Description

Writes the full V1 documentation set, refreshes README + CHANGELOG for the V1 ship, and records the audited @wordpress/* version decision for V1.0.0.

Closes: #325
Closes: #309

Type of Change

  • Documentation update

Related Issue

Issue: #325

Motivation and Context

M15 is the V1 release ticket. This PR delivers everything #325's acceptance criteria asks for under "docs" (15 doc files + README + CHANGELOG + plan 11 retained as historical record), plus the @wordpress/* audit pass from plan 11 §4.1 and the package's root MEMORY.md. Tagging v1.0.0-beta.1 and v1.0.0 happens after this PR merges.

Changes Made

New docs (12):

  • docs/getting-started.md — install, config, first post under an hour
  • docs/content-model.md — HasBlockContent, resource map, policies, site-editor access gate
  • docs/blade-component.md — full <x-visual-editor /> reference
  • docs/post-editor.md — canvas, inspector, document settings, media bridge, autosave flow
  • docs/renderers.md — Blade vs React vs Vue, registering custom renderers, parity
  • docs/site-editor.md — shell, navigator, canvas, sections, REST surface
  • docs/templates.md — hierarchy, TemplateResolver, template parts, fallback chain
  • docs/navigation.md — menus, locations, fallback chain, core/navigation block, REST
  • docs/patterns.md — synced vs unsynced, authoring, library/inserter, core/block references
  • docs/inertia.md — Inertia+React (mountVisualEditor) and Inertia+Vue (<VisualEditor>) recipes
  • docs/troubleshooting.md — core-data shim, WordPress package upgrade procedure, theme.json schema upgrades, theming quirks, common errors
  • docs/migration.md — visual-editor-wp-import companion pointer, in-package migrations, alpha.1 → 1.0.0 upgrade path

Refreshed docs:

  • docs/custom-blocks.md — added DynamicBlock hooks section (validateAttrs, searchableText, authorize) + preview endpoint contract
  • docs/global-styles.md — rewrote out of the C3-ship framing into the V1 final state; added panels reference (typography, colors, layout, blocks) and CSS emission section

Other:

  • README.md rewritten to lead with V1 final scope; new doc table linking every page
  • CHANGELOG.md — [1.0.0] section opened for the ship; alpha.1 entries moved under their own header; package name fixed
  • docs/release-notes-inputs-1.0.0.md §5 — V1.0.0 @wordpress/* audit conclusion (hold pins; resume Renovate post-tag; +3 majors on @wordpress/components is the blocker for adoption)
  • MEMORY.md (root) — final V1 architecture reference for future sessions

docs/livewire.md already covered the M13 recipe end-to-end, so left as-is. docs/plans/11-v1-expansion.md retained as historical record per acceptance criteria.

How Has This Been Tested?

Testing Environment:

  • Operating System: macOS Darwin 25.5.0
  • PHP Version: 8.4.3 (Herd)
  • Project Version: 1.0.0 (composer.json), 1.0.0-spike (package.json — bump to 1.0.0-beta.1 happens post-merge at tag time)

Tests Performed:

  1. ./vendor/bin/pest --compact → 878 passed (2450 assertions)
  2. npm test → 1836 passed across 229 test files
  3. CodeRabbit local CLI pass — 0 findings after two iterations
  4. Manual sense-check of new docs vs codebase (API paths, config keys, class names quoted verbatim from the Explore-agent survey of src/, routes/, config/)

Accessibility Tests Run

Tests Added

  • All tests passing — no code changes, so no new tests needed.

Test details: Docs-only PR. Existing Pest + Vitest suites both green against the branch HEAD.

Documentation

  • Inline code documentation added — N/A (no code changes)
  • README updated — rewritten for V1 final scope
  • Wiki updated — out of scope; in-repo docs are the V1 source of truth

Documentation details: This PR is the documentation update.

Screenshots

N/A — docs only.

Pre-Submission Checklist

  • Followed contributing guidelines
  • Checked for other open PRs for same update
  • Code passes all tests (Pest 878 ✅, Vitest 1836 ✅)
  • Code has been linted (N/A — docs only)
  • Accessibility tests completed (N/A — no UI changes)
  • Code follows project style guide
  • Self-review completed
  • Comments added for complex code (N/A)
  • No new warnings generated

Post-merge

After this merges, the v1.0.0 release sequence is:

  1. Bump package.json version to 1.0.0-beta.1; tag v1.0.0-beta.1 from release/1.0 HEAD.
  2. Smoke-test against the dev app per docs/g6-smoke-flow.md + docs/h8-smoke-flow.md.
  3. Bump to 1.0.0; tag v1.0.0.
  4. Confirm both packages of the version pair tag together (cms-framework V1.x must be tagged first per docs/release-notes-inputs-1.0.0.md §2.3).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation

    • Added comprehensive v1.0.0 docs: installation, post & site editors, custom blocks, patterns, navigation, templates, global styles, renderers, embedding (Blade/Livewire/Inertia), troubleshooting, migration, and API/usage guides.
  • Changelog

    • Rewrote release notes to a v1.0.0‑oriented structure with an alpha adoption marker and organized Added/Changed sections.

Write the full V1 documentation set: install/onboarding, content model,
Blade component reference, post-editor surface, custom blocks (with
dynamic-block hook reference), Blade/React/Vue renderers, site-editor
surface, templates with fallback chain, theme.json-backed global styles,
navigation menus, synced/unsynced patterns, Inertia embedding (React +
Vue), troubleshooting, and migration.

Refresh README to lead with the final V1 scope (post editor + site
editor + patterns) and link to every doc. Move alpha.1 entries into a
dedicated CHANGELOG section and open a 1.0.0 section for the ship.

Record the @wordpress/* audit conclusion for V1.0.0 in
release-notes-inputs-1.0.0.md §5: hold the pins, document the
multi-major delta on @wordpress/components as the blocker, resume
Renovate post-tag.

Add MEMORY.md capturing the final V1 architecture for future sessions.

Closes #325
Closes #309

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 4, 2026 •

Copy link
Copy Markdown

Review Change Stack

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: 26a2815c-4122-4d32-bbcb-2fcd81b048c1

📥 Commits

Reviewing files that changed from the base of the PR and between 0b33205 and 60e33e2.

📒 Files selected for processing (7)
  • README.md
  • docs/blade-component.md
  • docs/content-model.md
  • docs/custom-blocks.md
  • docs/inertia.md
  • docs/site-editor.md
  • docs/templates.md
✅ Files skipped from review due to trivial changes (7)
  • docs/templates.md
  • docs/custom-blocks.md
  • docs/blade-component.md
  • docs/content-model.md
  • docs/site-editor.md
  • docs/inertia.md
  • README.md

📝 Walkthrough

Walkthrough

This PR delivers the complete V1.0.0 documentation set and release artifacts: restructures CHANGELOG and README for V1.0.0 scope, adds MEMORY.md as architecture reference, and introduces 14 comprehensive new docs covering getting started, post editor, site editor, renderers, embedding, migration, and troubleshooting—fulfilling acceptance criteria for issue #325.

Changes

Visual Editor V1.0.0 Documentation & Release

Layer / File(s) Summary
Release artifacts and architecture reference
CHANGELOG.md, MEMORY.md, docs/release-notes-inputs-1.0.0.md
CHANGELOG rewritten to Keep-a-Changelog with V1.0.0 and alpha marker; MEMORY.md added with V1 architecture, surfaces, REST API, block-fork strategy, renderer contracts, embedding stacks, smoke flows, and deferred items; release-notes inputs updated with v1 audit conclusion.
README and Getting Started
README.md, docs/getting-started.md
README rewritten for V1 scope (post editor + site editor), installation and compatibility guidance, Gutenberg shims, block defaults, extensibility and i18n; getting-started.md adds step-by-step install, config, resource registration, mounting, and build/test checklist.
Content model and Blade component
docs/content-model.md, docs/blade-component.md
Content model docs explain HasBlockContent, resource-map merging/resolution, policies, ve_contents fallback; blade-component.md documents <x-visual-editor /> attributes, resource mapping, API routes, middleware, emitted events, and multi-editor mounting.
Post editor, custom blocks, and renderers
docs/post-editor.md, docs/custom-blocks.md, docs/renderers.md
Post editor docs (canvas, inspector, block library, media bridge, autosave); custom-blocks.md defines DynamicBlock hooks and preview endpoint execution order; renderers.md documents Blade/React/Vue renderer packages, dynamic-block fallback, parity verification, and usage examples.
Site editor and templates
docs/site-editor.md, docs/templates.md
Site editor overview (shell, entity categories, fail-closed access gate, autosave, routing, previews, REST surface); templates.md documents template resolver, template parts, fallback chain, REST endpoints, and storage locations.
Global styles and CSS emission
docs/global-styles.md
Global-styles rewritten as a theme.json-shaped singleton with pinned schema version, record schema example, REST endpoints including CSS emission, validation rules for per-block styles, multi-theme scoping, Styles panels, and schema-bump checklist.
Navigation and patterns
docs/navigation.md, docs/patterns.md
Navigation docs cover menus/locations, resolver fallback, core/navigation block attributes, editor UI, REST endpoints, and rendering; patterns docs define synced vs unsynced modes, authoring lifecycle, inserter discovery, theme-provided merges, REST CRUD, and pattern locking.
Embedding, Inertia recipes, and extensibility
docs/inertia.md, README.md (Gutenberg adoption, Extensibility, i18n)
Inertia+React and Inertia+Vue embedding recipes, SSR guards, auth middleware notes; README updated for transient Gutenberg shims, ap.visual-editor.resources filter, icon set registration, and i18n regeneration instructions.
Migration and troubleshooting
docs/migration.md, docs/troubleshooting.md
Migration guide introduces visual-editor-wp-import plan, in-package migrations and JSON backfill, upgrade path from alpha; troubleshooting.md provides 10 structured troubleshooting sections covering boot failures, shim gaps, theme.json upgrades, theming quirks, REST errors, parity drift, and ve-sandbox specifics.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

"🐰 In a burrow of docs I write,
Guides and APIs take flight,
Editors, styles, templates too—
V1 blooms bright for devs like you!"

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'docs: V1 documentation set and release notes (#325)' clearly summarizes the main change—delivering comprehensive V1 documentation and updating release artifacts.
Linked Issues check ✅ Passed All primary objectives from #325 and #309 are met: 12 new docs added (getting-started, content-model, blade-component, post-editor, renderers, site-editor, templates, navigation, patterns, inertia, troubleshooting, migration), README and CHANGELOG refreshed for V1, custom-blocks and global-styles updated, release-notes-inputs-1.0.0 records @wordpress audit, MEMORY.md added as architecture reference.
Out of Scope Changes check ✅ Passed All changes are documentation-only and directly aligned with the V1 release objectives: documentation additions, README/CHANGELOG updates, and release notes—no unrelated code modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ 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 docs/325-v1-docs-and-release

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 Jun 4, 2026
@ViewFromTheBox ViewFromTheBox linked an issue Jun 4, 2026 that may be closed by this pull request
22 tasks
@ViewFromTheBox
ViewFromTheBox marked this pull request as ready for review June 4, 2026 21:05

@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: 9

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/blade-component.md`:
- Around line 54-55: The docs incorrectly state that a missing resource-map
class match throws InvalidArgumentException; update the documentation to
reference RuntimeException instead and mention the specific failure point
(resource lookup / dynamic renderer resolution) so readers know that
RuntimeException is thrown by the resource-map lookup logic when no class match
is found (replace `InvalidArgumentException` with `RuntimeException` in the
relevant text).

In `@docs/content-model.md`:
- Around line 113-115: Docs incorrectly state that unknown resources throw
InvalidArgumentException and that controllers use $this->authorize; update the
text to reflect the implementation: unknown resources result in a 404
(NotFoundHttpException) and controllers call Gate::authorize(...) rather than
$this->authorize(...). Also ensure the discussion about deferred validation of
models with HasBlockContent remains accurate (validated on first resolving
request) and adjust the same wording at the other occurrence referenced (lines
~137-138).

In `@docs/custom-blocks.md`:
- Around line 233-243: The docs snippet for class DynamicBlock is invalid
because validateAttrs(), searchableText(), and authorize() are shown without
bodies; update the snippet to match the real safe-default implementations in
src/Blocks/DynamicBlock.php by making them concrete methods: implement
validateAttrs(array $attrs): array to return the incoming $attrs,
searchableText(array $attrs): string to return an empty string '', and
authorize(?Authenticatable $user, array $attrs): bool to return true (keep
name() and render() abstract as shown).

In `@docs/inertia.md`:
- Around line 107-112: The snippet uses editor.current?.isDirty() while the
earlier mount example uses a local editor variable; make the handle shape
consistent by changing handleNavigate to use the same editor handle as the mount
example (e.g., replace editor.current?.isDirty() with editor?.isDirty() if the
mount example exposes a local editor, or alternatively update the mount example
to use useRef and editor.current everywhere) — update the handleNavigate
function (symbol: handleNavigate) to reference the same editor variable shape
used in the mount example so both snippets are executable and consistent.
- Around line 146-164: The template binds `@change`="onChange" but no onChange
handler is defined in the <script setup>; add a handler named onChange (e.g.,
const onChange = (payload) => { /* sync local state / handle validation / mark
dirty */ }) or remove the `@change` binding from the VisualEditor instantiation;
update the script block where onSave is declared so the symbol onChange is
declared alongside onSave and used consistently with VisualEditor events.

In `@docs/post-editor.md`:
- Line 199: The link "[Theming](theming.md) — restyle editor chrome" in
docs/post-editor.md is pointing to a non-existent theming.md; update that
markdown link to point to the existing global-styles.md (i.e. replace theming.md
with global-styles.md) or alternatively add a new theming.md that
forwards/duplicates the content from global-styles.md so the navigation isn't
broken; ensure the link text remains descriptive and that the target file is
committed alongside this change.

In `@docs/site-editor.md`:
- Around line 144-150: The fenced code block containing the list starting with
"/visual-editor/site/templates/single" should include a language identifier to
satisfy markdownlint MD040; update the opening fence from "```" to "```text" so
the block becomes "```text" followed by the lines
"/visual-editor/site/templates/single",
"/visual-editor/site/template-parts/header",
"/visual-editor/site/patterns/hero", "/visual-editor/site/styles",
"/visual-editor/site/navigation/primary" and the closing "```".

In `@docs/templates.md`:
- Around line 19-24: The fenced code block showing the template hierarchy is
missing a language tag (triggers MD040); update the opening fence from ``` to
```text for the block containing "single-post-hello-world  (slug-specific) ..."
so the code fence is language-specified (e.g., ```text ... ```).

In `@README.md`:
- Around line 168-169: The README mixes two config path names; replace the
inconsistent reference so the doc uses one canonical path name everywhere—update
the occurrence of "config/visual-editor.php" to the preferred
"config/artisanpack/visual-editor.php" (or vice versa if the project standard is
the shorter path) and ensure all mentions of the visual editor config in the
README consistently reference the same string
("config/artisanpack/visual-editor.php" and "config/visual-editor.php" are the
symbols to check and reconcile).
🪄 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: 6891aca4-96a3-48bc-a277-059df3d3b176

📥 Commits

Reviewing files that changed from the base of the PR and between 57cdc88 and 0b33205.

📒 Files selected for processing (18)
  • CHANGELOG.md
  • MEMORY.md
  • README.md
  • docs/blade-component.md
  • docs/content-model.md
  • docs/custom-blocks.md
  • docs/getting-started.md
  • docs/global-styles.md
  • docs/inertia.md
  • docs/migration.md
  • docs/navigation.md
  • docs/patterns.md
  • docs/post-editor.md
  • docs/release-notes-inputs-1.0.0.md
  • docs/renderers.md
  • docs/site-editor.md
  • docs/templates.md
  • docs/troubleshooting.md

Comment thread docs/blade-component.md Outdated
Comment thread docs/content-model.md Outdated
Comment thread docs/custom-blocks.md
Comment thread docs/inertia.md
Comment thread docs/inertia.md
Comment thread docs/post-editor.md
- [Blade component reference](blade-component.md)
- [Custom blocks](custom-blocks.md)
- [Renderers](renderers.md) — get saved content back onto the public site
- [Theming](theming.md) — restyle editor chrome

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix likely broken internal docs link.

Line 199 points to theming.md, but this PR’s docs set references theming via global-styles.md. Please update this link or add the missing file to avoid dead navigation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/post-editor.md` at line 199, The link "[Theming](theming.md) — restyle
editor chrome" in docs/post-editor.md is pointing to a non-existent theming.md;
update that markdown link to point to the existing global-styles.md (i.e.
replace theming.md with global-styles.md) or alternatively add a new theming.md
that forwards/duplicates the content from global-styles.md so the navigation
isn't broken; ensure the link text remains descriptive and that the target file
is committed alongside this change.

Comment thread docs/site-editor.md Outdated
Comment thread docs/templates.md Outdated
Comment thread README.md Outdated
Fix 8 actionable findings from CodeRabbit's review pass:

- blade-component.md: VisualEditorComponent throws RuntimeException
  (not InvalidArgumentException) when the resource map has no match.
- content-model.md: clarify that unknown resources raise
  NotFoundHttpException (404) and only missing HasBlockContent raises
  InvalidArgumentException; controllers use Gate::authorize() not
  \$this->authorize().
- custom-blocks.md: rewrite the DynamicBlock signature snippet so the
  default-bodied methods (validateAttrs, searchableText, authorize)
  match the real implementations rather than presenting them as bodyless
  pseudo-abstract methods.
- inertia.md: hold the editor handle in a ref so handleNavigate's
  isDirty() check is consistent with the mount example; declare the
  onChange handler referenced by the Vue template.
- site-editor.md, templates.md: add 'text' lang tags to bare fenced
  code blocks (markdownlint MD040).
- README.md: use the published config path
  config/artisanpack/visual-editor.php consistently in the block
  defaults section.

Skipped one finding: docs/post-editor.md:199 reports docs/theming.md as
missing, but it exists on release/1.0 — left as-is.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@ViewFromTheBox

Copy link
Copy Markdown
Member Author

Addressed 8 of 9 actionable findings in 60e33e2. Skipped the post-editor.md:199 theming.md finding — docs/theming.md exists on release/1.0 and the link resolves correctly, so the suggested change isn't needed.

@ViewFromTheBox
ViewFromTheBox merged commit 80dc23e into release/1.0 Jun 4, 2026
4 checks passed
@ViewFromTheBox
ViewFromTheBox deleted the docs/325-v1-docs-and-release branch June 4, 2026 21:51
@github-project-automation github-project-automation Bot moved this from In Review to Done in ArtisanPack UI Overview Jun 4, 2026
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.

M15 · Docs, website, release

1 participant