Releases: jhb-software/payload-plugins
@jhb.software/payload-alt-text-plugin@0.5.0
! This release contains breaking changes.
Alt text is now scoped to image MIME types by default. Documents whose MIME type is not tracked no longer render the alt text field, are not validated for a required alt text, and are excluded from the alt text health widget.
This aligns the plugin with how other CMSs (WordPress, Drupal) handle alt text — as an image-only concept — and fixes mixed-media collections (e.g. videos alongside images) being counted as broken in the health widget. Projects whose configured upload collections only accept images see no behavior change.
The collections option now also accepts per-collection entries with a mimeTypes override. Bare slug strings continue to work as a shorthand for ['image/*']:
Before (v0.4.x):
payloadAltTextPlugin({
collections: ['media'],
})After (v0.5.0):
payloadAltTextPlugin({
// Bare slug — defaults to ['image/*']
collections: ['media'],
// Or restrict / extend MIME types per collection
collections: [
{ slug: 'media', mimeTypes: ['image/*'] },
{ slug: 'documents', mimeTypes: ['application/pdf'] },
],
})- feat: scope alt text tracking, validation, and health to configurable per-collection MIME types (default
['image/*']) - feat: add a per-collection
validateoption to override the alt text field validator. Exports the defaultvalidateAltTextso projects can compose around it — e.g. to skip the required-alt check when the request body does not touchalt(folder moves, partial API updates in localized setups withfallback: false, #95) - refactor: stop auto-injecting the alt text health widget into
admin.dashboard.defaultLayout. The widget is still registered underadmin.dashboard.widgets; add{ widgetSlug: 'alt-text-health', width: 'full' }to yourdefaultLayoutto show it by default. - fix: support both Next.js 15 and 16
revalidateTagtype signatures in the alt text health invalidation hook
@jhb.software/payload-pages-plugin@0.7.0
- feat: add request-scoped ancestor caching to avoid redundant DB queries when computing virtual fields for sibling pages
- feat: pass full req to payload.findByID in getBreadcrumbs
- fix: populate virtual fields (
path,breadcrumbs) onpreviousDocin theafterChangehook, and run the plugin's hook before user-defined hooks so thatdocalso contains the virtual fields - fix: gracefully handle errors when computing virtual fields (e.g. when a parent document no longer exists) instead of crashing the operation
- fix: use overrideAccess for parent document fetches in breadcrumb generation
- fix: prevent circular parent references
- fix: only set alternatePaths on previousDoc meta instead of copying entire meta
- fix: pass draft arg to parent document lookups in breadcrumb generation
- style: standardize icons to use Geist icon set (16x16 filled)
- refactor: use i18next interpolation for translations
- fix type issue in the
afterChangevirtual-fields hook - chore: upgrade to Payload 3.84.1
@jhb.software/payload-chat-agent@0.1.0-beta.4
BREAKING CHANGES:
- feat!: rename the
chat-conversationscollection toagent-conversationsand the defaultchat-token-usagebudget collection toagent-token-usage. Existing projects must migrate data or overridecreatePayloadBudget({ slug: 'chat-token-usage' })to keep the previous slug.
OTHER CHANGES:
- feat: surface a per-field
lexicalsummary onFieldSchema(returned bygetCollectionSchema/getGlobalSchema) that lists eachrichTextfield's enabled lexical features (bold,heading,link,blocks, ...) along with typed option projections (heading sizes, link fields, upload collections, block/inlineBlock slugs, relationship collections), so the agent can emit only the node types the editor actually allows. - feat: add
listBlocksandgetBlockSchematools so the agent can enumerate and inspect globally-declared blocks (config.blocks) on demand instead of only seeing them through the collections/globals that reference them. - feat: surface
endpoint.custom.schema(query / body / response shapes) throughlistEndpointsso the agent sees each custom endpoint's request/response contract and can construct validcallEndpointcalls without trial-and-error. - feat: add a
toolsplugin option that composes the final toolset the agent sees. Supports user-defined tools (Slack webhooks, Axiom/Vercel log queries, ...) and provider-native ones (anthropic.tools.webSearch_*,openai.tools.webSearch,google.tools.googleSearch, ...) under the same surface. - feat: show a "Responding…" indicator in the message list while the agent is working on a response but hasn't streamed any output yet, and a shimmer skeleton while conversation history is loading instead of a blank area
- feat: note in the system prompt that Payload uses Lexical for rich text so the agent reads/writes rich-text field values as Lexical editor JSON state instead of HTML or Markdown
- feat: note in the system prompt how Payload's
draftquery flag differs from the_statusfield (the document's actual'draft'/'published'state) so the agent stops conflating the two - feat: include the canonical Lexical
SerializedBlockNodeshape in the system prompt when a richText field carries theblocks/inlineBlocksfeature, so agents stop guessing the node structure and failing Lexical validation - perf: restrict the sidebar conversation list query to
title+updatedAtviaselectso the fullmessagesJSON is no longer fetched just to render the list - perf: index the
userfield on theagent-conversationscollection so read-access filtering and the sidebar list query no longer require a full scan - fix: redirect unauthenticated visitors of
/admin/chatto the login page instead of rendering the admin chrome around a "Not authorized" message - fix: drop tool calls that never reached a terminal state before forwarding messages to the provider, so resumed conversations with an interrupted tool call no longer fail with
tool_use.input: Input should be a valid dictionary(or analogous orphan-tool-use errors on other providers)
@jhb.software/payload-chat-agent@0.1.0-beta.3
- feat: surface tool-call status in the chat UI (running / failed / denied) and show failed tool error text in a collapsible panel instead of only a colored dot.
- feat: add an in-chat header showing the conversation title with inline rename, and move the mode / model selectors and token counter into it
- feat: make the chat view usable on narrow viewports
- fix: keep streamed messages visible after the first save of a new conversation
- fix: retarget saves to the new conversation id after switching conversations from the sidebar
@jhb.software/payload-chat-agent@0.1.0-beta.2
- fix: normalize all Payload label shapes (
string, localizedRecord,LabelFunction,false) ingetCollectionSchema/getGlobalSchemaoutput instead of emitting"[object Object]".
@jhb.software/payload-vercel-deployments@0.2.1
- style: standardize icons to use Geist icon set (16x16 filled)
- style: use cloud icon for deployment widget title instead of info icon
- refactor: improve widget translations (remove "Vercel" from title, simplify German translations)
@jhb.software/payload-vercel-deployments@0.2.0
- fix: prevent widget from refreshing when deployment data has not changed (fixes constant refresh in dashboard edit mode)
- feat: display icon and title in same row with larger title using Payload CSS vars
- feat: add optional
widget.websiteUrlconfig to display a website link - feat: make widget description optional and configurable via
widget.description - refactor: use i18next interpolation for translations
@jhb.software/payload-alt-text-plugin@0.4.4
- style: standardize icons to use Geist icon set (16x16 filled)
- refactor: improve widget translations (pluralize title, simplify German translations, use i18next plural keys for bulk generate button)
@jhb.software/payload-alt-text-plugin@0.4.3
- fix: reject unsupported file types (e.g. SVG) with clear error showing the MIME type
- style: use Payload Pill component and SVG icons in health widget
- refactor: use i18next interpolation for translations
@jhb.software/payload-alt-text-plugin@0.4.2
- fix: dashboard health widget not rendering on Payload <3.79.0 (
ComponentPathwas renamed toComponentin 3.79.0)