Repository navigation
feat(visual-editing): move visual editing plugin into the public repo - #156
Merged
Merged
Conversation
Move the visual editing plugin from the private monorepo into the public one as @focus-reactive/payload-plugin-visual-editing (public npm access). - rename scope from @fr-private to @focus-reactive, point repository at focusreactive/payload-plugins - switch lint/format from ESLint + Prettier to Ultracite, add a tsgo check-types script, and fix the resulting oxlint errors - drop the private CHANGELOG; semantic-release starts a fresh one - list the plugin in the root README and CLAUDE.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Ux3fP9C1PgQ5zg1tQak1M
Now that visual editing lives in this repo, consume it from the workspace instead of the private @fr-private npm scope. - apps/cms and apps/multi-tenancy-demo depend on @focus-reactive/payload-plugin-visual-editing via workspace:* - create-ideal-cms drops the private-registry token prompt, the strip-private-plugins transform and the .npmrc writer; visual editing is pinned like the other plugins and always listed in the README - remove the @fr-private registry lines from the root .npmrc Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016Ux3fP9C1PgQ5zg1tQak1M
dogfrogfog
requested review from
ChiefCreator and
SearheiParkhamchuk
as code owners
September 30, 2026 15:41
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…n14o # Conflicts: # apps/cms/package.json # apps/multi-tenancy-demo/package.json # bun.lock
|
🎉 This PR is included in version 1.3.0 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 0.15.0 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.2.0 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 2.10.1 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.11.2 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
This branch was successfully deployed
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.
Summary
Moves the visual editing plugin from
payload-plugins-privateinto this repo as@focus-reactive/payload-plugin-visual-editing(public npm access), following thepayload-plugins-add-packageskill. It also switches the apps and scaffolder in this repo, which already used the private@fr-privatebuild, over to the workspace package.New package:
packages/payload-plugin-visual-editing@fr-private→@focus-reactive, including the admin import-map path insrc/index.ts.package.jsonfollows the skill:version: 1.0.0,private: false,publishConfig.access: "public",repository.url: https://github.com/focusreactive/payload-plugins(no.git). Also addsauthor,keywords,bugsandhomepagelike the other packages. Dev deps are on Payload3.90.1/ Next16.3.6, matchingmain.check-typesscript (tsgo --noEmit) is added. The oxlint errors are fixed:for…inon plain objects becomesObject.keys.noop.getElementByIdcalls are kept, with lint-disable comments. Ultracite's auto-fix turns them intoquerySelector(`#${id}`), which breaks on ids that aren't valid CSS selectors (and caused a type error).Consumers
apps/cmsandapps/multi-tenancy-demonow use@focus-reactive/payload-plugin-visual-editingviaworkspace:*. The imports andimportMap.jsare updated to match, and the multi-tenancy README no longer asks forNPM_TOKEN.create-ideal-cms:stripPrivatePluginstransform and the.npmrcwriter.1.0.0inPLUGIN_VERSIONSand adds it toPRUNE_PATHS..npmrcno longer has the@fr-privateregistry and token lines.Verification
bun run testin the package: 20 files, 203 tests pass.turbo run build --filter='./packages/*': 11/11 pass. After that,turbo run check-types: 7/7 pass.content-agent-demo, because its privatepayload-content-agentgit dependency can't be installed in the environment I ran this in. This PR doesn't touch it.bunx ultracite checkon the whole repo: 0 errors.After merging: release runbook
Merge with a merge commit (the repo's usual "Merge pull request" style), not a squash.
Expected: the Release run on the merge fails
The package has no git tag yet, so semantic-release will try to publish it as
1.0.0on its own. That fails because the package doesn't exist on npm and has no Trusted Publisher. Nothing gets published for visual-editing, and that's fine. Check whether that run publishedcreate-ideal-cms. If it did, it pins@focus-reactive/payload-plugin-visual-editing@1.0.0, which only exists after step 2, so do step 2 right away.A. Publish under the new name
@focus-reactive/payload-plugin-visual-editing@focus-reactivescope:npm whoami.1.0.0by hand from the mergedmain:focusreactive/payload-pluginsand workflowrelease.yml.docs:commit that touches the package. Don't usechore:, and don't re-run the failed job, because that reports "0 packages released".1.0.1, plus acreate-ideal-cmsminor if the merge run didn't already publish it.npm view @focus-reactive/payload-plugin-visual-editing versionslists["1.0.0", "1.0.1"].npx create-ideal-cmsinstalls cleanly with no registry token.B. Deprecate the old
@fr-private/payload-plugin-visual-editing@focus-reactive/payload-plugin-visual-editing@^1.0.1..,/clientand/admin.payload generate:importmap. The plugin registers@focus-reactive/payload-plugin-visual-editing/admin#VisualEditingBridgeProvider, so a stale import map breaks the admin.@fr-privatelines from.npmrcandNPM_TOKENfrom CI if nothing else needs them.focusreactive/payload-plugins-private, deletepackages/payload-plugin-visual-editingand pointapps/devat the public package, using achore:commit so no release fires. Update that repo's CLAUDE.md structure list.@fr-privatepublish token and any Actions secrets used only for this package.🤖 Generated with Claude Code
https://claude.ai/code/session_016Ux3fP9C1PgQ5zg1tQak1M