24405 Commits

Author SHA1 Message Date
Dan Harrin 0d846d3df7 Merge branch '4.x' into 5.x 2026-08-07 09:50:02 +01:00
Dan Harrin 7fcca412a8 cleanup 2026-08-07 09:49:29 +01:00
Dan Harrin fea7d3ab5c Merge branch '4.x' into 5.x 2026-08-07 09:13:05 +01:00
Kian Acquoij 31a02e57ef fix: disable the clone action when max items on repeater is reached (#20342) 2026-08-07 08:54:44 +01:00
Dan Harrin e220b31a3e Merge branch '4.x' into 5.x 2026-08-05 21:00:11 +01:00
Dan Harrin b6bde8572b fix: Cache used MFA codes using hash of secret rather than secret and code (#20335)
* fix: Cache used MFA codes using hash of secret rather than secret and code

* support non-locking drivers

* consistency

* fix: return an array from `SpatieTagsEntry`/`SpatieTagsColumn` `getState()` when state is not a Collection or array

The early-return branch returned the raw state from a method typed `array`,
which threw a `TypeError` for any truthy scalar state. PHPStan 2.2.8 narrows
`mixed` more precisely and surfaced this, failing CI on every branch.
2026-08-05 16:03:36 +01:00
Dan Harrin 40daa8dadc fix: return an array from SpatieTagsEntry/SpatieTagsColumn getState() when state is not a Collection or array
The early-return branch returned the raw state from a method typed `array`,
which threw a `TypeError` for any truthy scalar state. PHPStan 2.2.8 narrows
`mixed` more precisely and surfaced this, failing CI on every branch.
2026-08-05 15:41:53 +01:00
Dan Harrin 7ce08094ef Merge branch '4.x' into 5.x 2026-08-04 10:22:03 +01:00
Kidd Tang 1d05d6b10d fix: derive per-key state path when unsetting missing array keys in tests (#20318)
* fix: derive per-key state path when unsetting missing array keys in tests

`unsetMissingNumericArrayKeys()` appended `.{$key}` to `$currentStatePath`
inside its `foreach`, so each sibling key inherited the preceding keys'
segments instead of deriving `parent.key` per key.

Walking `$this->mountedActions`, the entry's keys are ordered `name`,
`arguments`, `context`, `data`, so by the time the loop reaches `data` the
path has become:

    mountedActions.0.name.arguments.context.data

The `startsWith($schemaStatePath)` guard then never matches
`mountedActions.0.data`, which leaves the `unset()` for stale numeric keys
unreachable. In a test, filling a mounted action's form with a shorter list
silently keeps the removed items:

    // CheckboxList::make('roles'), mounted state ['viewer', 'creator']
    ->fillForm(['roles' => ['viewer']])
    // state is still ['viewer', 'creator']

`callAction(..., data: [...])` and `setActionData()` route through
`fillForm()`, so they are affected too. Growing the list works, and clearing
it to `[]` works because an empty array stays a leaf for `Arr::dot()` and
`data_set()` replaces the whole value. Only a partial shrink breaks, and it
breaks silently: the assertion after it passes against state that was never
changed.

Page-level forms were unaffected, because their state path is the single
segment `data` and every corrupted path still starts with it.

* Update InteractsWithSchemasTest.php

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-08-04 09:54:55 +01:00
RenHai Wen b9e8e1d708 fix: use raw Markdown editor instance when refreshing (#20320) 2026-08-04 09:16:14 +01:00
Hamdy Elbatal 7e1b8b26e4 i18n: add missing Arabic translation files in notifications and support packages (#20321)
* i18n: add missing Arabic translation files in notifications and support packages

Add 7 missing Arabic translation files in notifications and support packages:
- notifications/resources/lang/ar/notification.php
- support/resources/lang/ar/components/tabs.php
- support/resources/lang/ar/components/section.php
- support/resources/lang/ar/components/input/one-time-code.php
- support/resources/lang/ar/components/breadcrumbs.php
- support/resources/lang/ar/components/badge.php
- support/resources/lang/ar/components/loading-section.php

* fix(lang): use 'جارٍ التحميل...' instead of 'جاري التحميل...'
2026-08-04 09:15:40 +01:00
Dan Harrin 79e1e18f87 Merge branch '4.x' into 5.x 2026-07-31 13:21:29 +01:00
Komyor 38eb676bcb -- Tajik language added to project (#20303) 2026-07-31 13:21:12 +01:00
Dan Harrin 0a939954a8 Merge branch '4.x' into 5.x 2026-07-30 23:11:59 -04:00
Dan Harrin ad5aacbc6d fix: Check panel access before presenting MFA challenge (#20308)
* fix: Check panel access before presenting MFA challenge

* Update LoginTest.php

* Validate codes as strings

* Revert "Validate codes as strings"

This reverts commit 00763732b4.
2026-07-30 23:09:46 -04:00
Dan Harrin d06efc4f9c Extra tests for email authentication and validation 2026-07-30 22:32:36 -04:00
RenHai Wen f91c59a183 fix: append px to unitless image dimensions in rich editor style (#20304) 2026-07-30 18:19:35 -04:00
Dan Harrin 668b59ee31 Merge branch '4.x' into 5.x 2026-07-30 18:14:07 -04:00
RenHai Wen efe39f1ed6 fix: remove obsolete Tiptap workaround (#20302) 2026-07-29 16:24:23 -04:00
Dan Harrin 2e15aa9346 Merge branch '4.x' into 5.x 2026-07-28 14:35:51 -04:00
Dan Harrin e9348b2e37 fix: SPA mode resource create page back button cache (#20297)
* fix: SPA mode resource create page back button cache

* simplify
2026-07-28 14:34:39 -04:00
Dan Harrin b7eeae7fce Update rich-editor.js 2026-07-28 14:16:29 -04:00
Dan Harrin 87961b84c7 Update rich-editor.js 2026-07-28 14:16:11 -04:00
Dan Harrin 7645ffc2e9 Update FilamentServiceProvider.php 2026-07-28 14:09:33 -04:00
danharrin fa3a84ddab chore: format and build 2026-07-28 10:54:51 +00:00
Dan Harrin aa2333c1b8 Merge branch '4.x' into 5.x 2026-07-28 06:48:19 -04:00
Dan Harrin 519f073736 chore: update tiptap dependencies to v3.29.1 (#20295) 2026-07-28 06:47:24 -04:00
Dan Harrin 1578fe910d fix: MFA recovery code autocomplete (#20294) 2026-07-28 06:24:59 -04:00
Dan Harrin fb44e927bc fix: Repeater container binding before items evaluated (#20293) 2026-07-28 06:23:33 -04:00
Dan Harrin 72a0bf7a07 fix: Actions mounted from query parameters without modals (#20292) 2026-07-28 06:22:57 -04:00
Jefferson Gonçalves efd66de3d8 Complete pt_BR translations (#20290)
Adds missing keys and file (notification.php) that pt_BR had fallen behind on relative to en.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-28 05:57:55 -04:00
Ján Hamrák ef42f0a126 Added SK,CZ,PL,DE missing translations (#20291)
* Added SK,CZ,PL,DE missing translations

* chore: format and build

---------

Co-authored-by: hamrak <5807028+hamrak@users.noreply.github.com>
2026-07-28 05:57:13 -04:00
Yusuf Genç 906edb2465 Update Turkish translations (#20288) 2026-07-27 19:31:14 +01:00
Luis Parrado 1d424bda17 Update Spanish translations, Datepicker labels (#20260) 2026-07-23 10:30:24 +01:00
RenHai Wen fa98e0b810 fix: use preloadOptions() instead of preload() in select column docs (#20261) 2026-07-23 10:29:56 +01:00
Dan Harrin 55ab6fbe24 Merge branch '4.x' into 5.x 2026-07-22 20:50:13 +01:00
Dan Harrin dec0ce39dd fix: Nested MorphTo relationship path caching (#20255) 2026-07-22 20:34:00 +01:00
Dan Harrin 430dba1c97 Merge branch '4.x' into 5.x 2026-07-22 17:34:19 +01:00
Hamdy Elbatal 8ebb8cc2ed fix: table header height consistency and button loading height (#20249)
* fix: table header height consistency and button loading height

* fix button loading height with `align-middle` and scope header action margins to `sm`

* apply header action negative margins to the container so wrapped rows keep their gap

* remove vestigial `-mt-px` from table header so its optics match a section header

* keep the table heading visible while reordering, only hiding the header actions

* remove reordering header test

* pin link and badge baselines to their labels so loading indicators do not shift them in inline flow

* wrap the link label in optimized rendering paths to match the Blade component

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-22 17:32:02 +01:00
Hamdy Elbatal 16ed789da9 fix(forms): refresh CodeMirror when MarkdownEditor becomes visible (#20239)
* fix(forms): refresh CodeMirror when MarkdownEditor becomes visible

* Restore `#20134` state sync fix and only refresh on the hidden-to-visible transition

- Reinstates the current `4.x` change handler and state watcher, which were
  accidentally reverted when this patch was authored against an older copy of
  `markdown-editor.js`.
- Keeps the `ResizeObserver` and `IntersectionObserver` connected for the whole
  lifecycle of the editor, since the state may change while it is hidden and it
  can be revealed again, but only calls `refresh()` when the editor transitions
  from hidden to visible instead of on every resize or scroll.
- Detects visibility using both `offsetParent` (inactive tabs use
  `display: none`) and computed `visibility` (collapsed sections hide content
  with `visibility: hidden`).
- Rebuilds the dist output against the latest `4.x`, resolving the merge
  conflict.

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-22 17:01:16 +01:00
RenHai Wen 413d0737dc fix: respect Markdown editor minHeight() when maxHeight() is set (#20243) 2026-07-22 16:32:51 +01:00
Pedro Monteiro 458f7916a8 Fix BackedEnum tab badge icons (#20235)
Co-authored-by: Pedro Monteiro <pedro.monteiro@managemize.pt>
2026-07-22 16:26:50 +01:00
Oliver Payne c1fb8f48fe Fix non-interactive relation manager generation without an existing relationship (#20238)
* fix: generate relation managers non-interactively

* fix: apply non-interactive `select()` defaults consistently across commands

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-22 16:26:36 +01:00
Solaris-star 90800b5635 Fix modal focus restoration scrolling (#20242)
* fix: prevent modal focus restoration from scrolling

* tests

* cleanup

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-22 16:26:29 +01:00
Tiele d1970d7a1a fix: MorphToSelect crash when adding an item to a live Repeater (#20248) 2026-07-22 16:26:13 +01:00
RenHai Wen 1b34394ed4 fix: preserve configuration context when mounting navigation (#20250)
* fix: preserve configuration context when mounting navigation

* test: cover navigation mounting with active configurations

* consistency and more tests

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-22 16:25:59 +01:00
Dan Harrin 0f1d3f460e Merge branch '4.x' into 5.x 2026-07-21 14:23:47 +01:00
Dan Harrin 15df797fa2 fix: Spatie media library reordering in repeater (#20232) 2026-07-21 14:21:35 +01:00
Dan Harrin e0bbbca7e7 fix: Builder/Repeater/RepeatableEntry item cache based on state (#20230) 2026-07-21 10:02:53 +01:00
dotanm 4174701e0d Add accessible names to the non-native date/time picker panel (#20225)
* Add accessible names to the non-native date/time picker panel

The custom (`->native(false)`) date/time picker panel renders several
interactive controls with no accessible name, so screen readers announce
them without any indication of their purpose:

- the month `<select>`
- the year `<input>`
- the hour, minute, and second `<input>`s

This adds a translatable `aria-label` to each, sourced from new
`date_time_picker.aria_labels` translation keys. `DatePicker` extends
`DateTimePicker`, so it inherits the fix.

The change is purely additive: no existing HTML tags, attributes, or
behavior are altered, so it is backward-compatible for anyone targeting
the existing markup with CSS/JS/tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* cleanup

---------

Co-authored-by: Dotan Mazor <atlassian@dotanmazor.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-07-21 10:02:18 +01:00