A correctness release from an audit of 5.x: rendering, the picker, the media observer, the cropper and the docs. It's a minor release because two behaviours change. Read Changed before upgrading.
Changed
- Pickers inherit the global upload settings.
CuratorPickernow uses its own setting first, then the facade's, then config. That coversdisk,directory,visibility,acceptedFileTypes,minSize,maxSizeand the image-resize options. If you configure the facade, for exampleCurator::disk('s3'), your pickers now use that setting unless they set their own. See Global upload defaults. - Facade settings last across queue jobs and Octane requests. Anything set on
Curator,GlideorCurationin a service provider'sregister()orboot()used to be lost after the first job or request. It now lasts. Settings changed during a request or job are still reset for the next one. - Deleting media removes only its own curation files. Deleting used to remove any folder named like the item. A crop file whose curation was already removed from the item is no longer deleted with it.
- The default
curation_formatsare the ones the cropper can save.bmp,gifandsvgwere offered by default but always failed to save. Published configs that still list them are filtered. - Single pickers accept one upload, and it replaces the selection.
Fixed
- RichEditor: inserted Curator images lost their
srcwhen rendered withRichContentRenderer. Content saved by earlier versions still carries adata-id. Rendering saved content has a one-off cleanup. - Glider:
- Density srcsets (
2x) requested a 2px-wide image. - Fallback sources from the public directory 404'd.
- Density srcsets (
- Picker:
rules()never reached the uploader. Per-file rules such asdimensions:andmimes:now apply to uploads.- With no minimum size set, every upload was rejected.
maxWidth()threw for anyWidthvalue.- MorphMany pickers lost their saved order on reload.
- "Load more" after a search appended unfiltered results.
- UUID keys threw a JavaScript error in the selection.
- File swap and rename:
- Swapping a file deleted the original before the replacement was in place, so a failed move lost it.
- Renaming left curations behind in the old folder.
- Cropper:
- Rotation was saved the opposite way from the preview.
- The flip buttons were swapped.
- Rotate plus flip came out 180° off.
- The output size depended on the admin's window. Presets are now saved at the preset's size, and custom crops at their size in the original image.
- Tenancy: tenancy enabled only in config broke the RichEditor panel.
curator:install: UUID and tenancy installs kept the base model, and the tenancy option wrote invalid PHP.<x-curator-curation>: it threw for UUID or ULID keys and whencurationwas omitted.- Config:
resource.pages.*,resource.schemas.formandresource.tables.tablewere ignored. urlProvider(): passing an instance threw.CuratorColumn::resolution(): it had no effect. It now requests the image at the display size times the resolution.- Docs:
- The relationship examples used snake_case names that never resolve.
- The picker defaults were wrong.
- The standalone forms setup now says to render
<x-filament-actions::modals />.
Removed
curator:upgrade: it was never registered and targeted v2 → v3.
Filament 4 users are covered: 5.x serves both majors.
What's Changed
- ci: pin the shared workflow to a commit SHA by @awcodes in #740
- docs: trim the README to a landing page that points at docs.aw.codes by @awcodes in #741
- chore: generate documentation screenshots and share cards with Focus by @awcodes in #742
- chore: move Focus cards to focus-templates v2.1.0 by @awcodes in #743
- fix: small correctness fixes from the 5.x audit by @awcodes in #744
- fix: RichEditor image sources, Glider density srcsets and local sources by @awcodes in #745
- fix: picker upload settings, MorphMany order, and panel search paging by @awcodes in #746
- fix: keep facade settings across jobs and requests, and apply them to the picker by @awcodes in #747
- fix: safer file swap, rename and delete in the media observer by @awcodes in #748
- fix: cropper rotation, flips, output size and default formats by @awcodes in #749
- docs: fix relationship names, picker defaults, standalone forms setup and CLAUDE.md by @awcodes in #750
- fix: regressions found reviewing the 5.x audit fixes by @awcodes in #751
Full Changelog: v5.4.0...v5.5.0