docs(translator): rewrite the README around the plugin's interface - #143
Merged
Merged
Conversation
Cut it from 5812 to 4461 words by describing what a reader sees and controls, and dropping how the plugin is built where that changes neither. Corrected what was false: - "every public API carries @SInCE" — 22 of 53 exports have no tag - the job-pruning recipe filtered taskSlug, which the runner has not set since 0.11.4; the query matched nothing - drafts-and-publishing read as universal; without drafts a translation goes straight to the live document and publish-on-translation is a silent no-op - "pin the model" sat on openAIComplete, where model is required - block and array ids do not survive inside a localized container - retries has a default; the table said it had none - react ^18 does not install against current @payloadcms/ui Added what was missing: - how to declare capabilities.inlineMarks, without which container mode silently does nothing - auto-translate publishes what it writes, with no way to hold it back - createSyncRunner takes options and forgets its status on restart Also: a table of contents, the terms 0.x is released under, and Since notes on every feature that carries an @SInCE.
SearheiParkhamchuk
requested review from
ChiefCreator and
dogfrogfog
as code owners
September 15, 2026 15:22
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
🎉 This PR is included in version 0.13.3 🎉 The release is available on npm package (@latest dist-tag) Your semantic-release bot 📦🚀 |
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.
Rewrites the translator README. It had grown to 5812 words, much of it describing how the plugin is built rather than how to use it, and several of its claims had stopped being true.
What changed
Shape. The page now opens with what the plugin does, a quickstart that runs as written, and a list of capabilities — then the reference below a table of contents. 5812 → 4461 words.
Only what a reader sees or controls. Mechanism was dropped wherever it changed neither observable behaviour nor a setting: how fields are walked, how results are written back, how jobs are drained, how the transaction is scoped. What stayed is behaviour and parameters.
Corrections
Each of these was in the old README and is wrong:
@since"taskSlugworkflowSlugand leavestaskSlugunset — the query matched nothing, silentlyversions.draftson; without drafts the translation goes straight to the live document and publish-on-translation is a silent no-opopenAICompletemodelis required there; the default belongs to the deprecatedcreateOpenAIProviderlocalizedcontainer, where each locale owns its rowsretrieshas no default{ attempts: 3, backoff: { type: 'exponential', delay: 5000 } }react ^18@payloadcms/uiand@payloadcms/richtext-lexicalrequire react 19response_formatPOST /fieldand auto-translate also doAdditions
capabilities.inlineMarks— container mode is silently ignored unless the provider declares it, and the recommendedcreateTranslationProvider+openAICompleterecipe did not. Without this the feature could not be switched on by following the docs.createSyncRunnertakes options (maxSize,ttlMs) and forgets task status on restart.0.xis released under, andSince vX.Y.Znotes on every feature that carries an@since.Removed
The job-history section: the recipe did nothing, and maintaining Payload's jobs table is not this plugin's interface. The fact that Payload deletes jobs on completion is kept, since it explains why the panels never show "Completed".
Verification
tscagainst the published0.13.2tarball and its peers — not the working copy.Not in this PR
Three things surfaced while auditing, each its own change:
from "./plugin"), so plain Node cannot import the package —ERR_MODULE_NOT_FOUND, though bundlers resolve it. It bites anyone writing a standalone script.DryRunConfigis exported but itstransformfield's type is not, so the type cannot be written in full by a consumer. Both die with the deprecation.apps/dev/src/app/(payload)/admin/importMap.jsis dirty in the working tree with unrelated analytics entries removed; left untouched deliberately.The second commit turns on multi-target selection in the dev sandbox.