v1.1.1
·
17 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Changed
- Widened
livewire/livewireconstraint to^3.6.4|^4.0so the package can be installed in Livewire 4 applications. The full test suite passes against Livewire 4.3. - Widened
artisanpack-ui/securityconstraint to^1.0|^2.0so the package can be installed alongside Security v2.x consumers. - Moved
ArtisanPackUI\Forms\Database\Factoriesfromautoload-devto productionautoloadso downstream applications can use the factories in their own test suites.
Fixed
UpdateFormApiRequestnow usessometimeson every field so PATCH-style partial updates (e.g. the FormBuilder's auto-save sending only a changedslug) don't triprequiredon untouched fields.- React
FormBuilder/SubmissionsList/SubmissionDetailadmin components now address forms byform.idin API URLs instead ofform.slug. Using the in-flight slug caused the auto-save PUT to 404 the moment a user renamed the slug. Keying by the stable primary key fixes that and lets the route key be opaque to the UI. (Consumers also need aRoute::bind('form', ...)that resolves numeric IDs, or to changeForm::getRouteKeyName()to'id'.) - React
FieldEditornow mirrors the field locally so every keystroke renders immediately. Previously the inputs were controlled by the parent'sfieldprop, which only updated after the 500 ms debounced save round-trip — characters typed during that window were dropped. - React
FormBuilderleft sidebar now stays populated (palette by default, settings on demand) while a field is selected. Previously selecting a field setactivePanel = 'editor', which blanked the sidebar because nothing rendered for that case. SubmissionService::isRateLimited()/recordAttempt()now honorartisanpack.forms.spam_protection.rate_limit.attempts/.decayfrom the package config. Previously both methods used hardcoded constants (5 attempts, 60-second window), so the published config values had no effect.