Skip to content

v2.0.12

@mhortulanus mhortulanus tagged this 25 Feb 09:14
Replace the request-path-sniffing `shouldHydrate()` approach with explicit
hydration contracts (`HydratesValuesForFrontend`, `HydratesValuesForFilament`)
so each field class declares exactly how its value should be transformed for
frontend rendering vs Filament admin forms.

Key changes:
- Add `HydratesValuesForFrontend` and `HydratesValuesForFilament` contracts
- Add `DispatchesHydration` trait for dispatching to the right contract
- Implement both contracts on all built-in field types
- Register all built-in fields in FieldsServiceProvider (previously only Text)
- Fix Select relation resolution in nested Builder/Repeater context by
  preferring `$this->field_model` over the parent's model
- Text field no longer wraps in HtmlString on frontend (only Textarea,
  MarkdownEditor, and RichEditor do)
- Replace MySQL-specific FIELD() with PHP-based ordering in getContentRelation
- Improve backstage:audit command: timeouts/unreachable shown as warnings,
  slow page detection, per-page timing, --timeout and --slow options
- Move core package tests to monorepo-level test suite (SQLite :memory:)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Assets 2
Loading