Commit Graph
30098 Commits
Author SHA1 Message Date
Dan Harrin 95fdf86ebb fix: clean up JavaScript resources on destruction 2026-09-19 10:50:51 +00:00
Dan Harrin 4bbc9c092d Merge remote-tracking branch 'origin/4.x' into 4.x 2026-09-19 10:39:49 +00:00
Dan Harrin 3b2b613b1a Stabilize parallel test assets and fixtures 2026-09-19 10:39:48 +00:00
Dan Harrin 12b877486f fix: improve mobile-stacked table layouts (#20527) 2026-09-19 11:34:31 +01:00
Dan Harrin 2f160150a0 Stabilize modal accessibility checks 2026-09-18 15:38:25 +00:00
Dan Harrin eeb4fc9c33 Fix Testbench root path during test discovery 2026-09-18 15:27:07 +00:00
Dan Harrin bee59521c8 Fix Rector fixture newlines 2026-09-18 14:40:24 +00:00
danharrin 795abf839a chore: format and build 2026-09-18 14:27:36 +00:00
Dan Harrin 1fd9512aad Ignore Rector fixtures from Prettier 2026-09-18 14:23:20 +00:00
Dan Harrin 63574151ac Add Rector rules for Pest test structure 2026-09-18 14:15:46 +00:00
Dan Harrin 9f005defbf Refine browser test coverage 2026-09-18 14:13:59 +00:00
Dan Harrin 6d4dae6d7a fix: secure multi-factor authentication actions (#20522) 2026-09-18 12:08:57 +01:00
Stefan KuhlmannandDan Harrin f7266ed1bc fix: Dropdown aria-controls loop when the component is initialised twice on the same element (#20503)
* fix: Dropdown aria-controls loop when the component is initialised twice on the same element

* test: Reproduce the dropdown `aria-controls` loop through a real morph

Prepending a row to a keyed list whose rows also carry an `x-text` binding makes
Alpine initialise every retained row's dropdown a second time: the `x-text` effect
flushes the mutation observer mid-morph, so a row's removal and re-insertion land in
different batches. A second prepend then strips `aria-controls` and the two instances
ping-pong. Fails on the previous `dropdown.js` (5000+ writes, renderer frozen) and
stays at ~100 writes with the fix. Includes the rebuilt support bundle so the browser
test runs against the fixed component.

* fix: Clean up dropdown observers when destroyed

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-09-18 10:26:29 +01:00
Lazizbek ErgashevandDan Harrin 3ff2d4f5a0 fix: query builder filter indicators when a rule is deleted from the deferred filters form (#20516)
* fix: query builder filter indicators when a rule is deleted from the deferred filters form

* test: reproduce the query builder indicator failure with the standard testing helpers

Delete the rule with `callAction()` and then sort the table, instead of
building the Livewire request by hand. Sorting re-renders the whole table,
which is what rebuilds the indicators and triggers the failure.

* fix: count applied query builder filters

* refactor: centralize applied filter form state

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-09-18 10:08:24 +01:00
Dan Harrin f5293f3ca0 chore: sync documentation versions with branch 2026-09-18 08:24:59 +00:00
danharrin 9403bdcb64 chore: format and build 2026-09-17 08:01:18 +00:00
RenHai Wen e4872ab7f9 fix: correct FileUpload audio preview interactions (#20511)
* fix: audio controls triggering FileUpload reordering

* fix: correct FileUpload audio timeline interactions

* chore: clarify FileUpload audio preview change comments
2026-09-17 08:59:35 +01:00
ItsKaimsandKaimar Laaniste 3ff4783f08 Added Estonian missing language files (#20518)
Co-authored-by: Kaimar Laaniste <kaimar@greaton.ee>
2026-09-17 08:58:58 +01:00
Jefferson GonçalvesandClaude Opus 5 c2537be5a1 fix: bind Livewire's DataStore as a singleton (#20515)
`bind()` is not shared, so when `filament/support` registers after
`livewire/livewire` it overwrites Livewire's shared `DataStore` instance
with a non-shared binding. Every `app(DataStore::class)` then builds a new
store with an empty `WeakMap`, losing all per-component state, and every
render throws from `ViewErrorBag::put()` with a null message bag.

`singleton()` is order-independent: either provider order ends up with one
shared `DataStoreOverride`, which is what the binding already intended.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 08:58:30 +01:00
TinaH c826d40f93 missing swedish (#20514) 2026-09-17 08:36:54 +01:00
6c5962898a fix: skip tenant association for HasOneThrough ownership relationships (#20506)
* fix: skip tenant association for HasOneThrough ownership relationships

The `created` observer registered by `observeTenancyModelCreation()` only
returned early for `BelongsTo` and `BelongsToThrough` ownership
relationships before calling `$relationship->save($tenant)`. Laravel's
`HasOneThrough` and `HasManyThrough` are read-only and have no `save()`
method, so creating a record in a resource whose ownership relationship
goes through an intermediate model crashed with
`Call to undefined method HasOneThrough::save()`.

Treat `HasOneOrManyThrough` like the other non-writable ownership
relationships and return early, since the tenant is already implied by
the intermediate model. Query scoping through `whereHas()` is unaffected.

* Simplify tenancy relationship tests

---------

Co-authored-by: Ricardo Sawir <rian.segalhidajat@gmail.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
v4.13.2
2026-09-15 14:42:08 +01:00
Sandro Gehri 38d684bbe5 add client-side searchable mentions (#20501) 2026-09-15 14:37:50 +01:00
RenHai Wen dbf627db9e fix: rebuild repeatable entry items after in-place collection mutation (#20500) 2026-09-15 14:34:07 +01:00
Chanthoeun Kim 21ec4e2708 Update km translations (#20499)
* feat: add missing Khmer translations for the view record page and chart widget.

* chore: update the missing Khmer language translations for multi-factor authentication and form components

* chore: update Khmer language translations for validation and email verification controller

* fix: fallback to default GITHUB_TOKEN if GH_ACCESS_TOKEN is not defined in workflow checkout

* feat: add and update Khmer language translations for various components and packages

* Update Khmer (km) translations
2026-09-15 14:26:52 +01:00
dependabot[bot] d1aefb59b8 chore(deps): bump sharp (#20498)
Bumps the npm_and_yarn group with 1 update in the /docs-assets/screenshots directory: [sharp](https://github.com/lovell/sharp).


Updates `sharp` from 0.35.0 to 0.35.4
- [Release notes](https://github.com/lovell/sharp/releases)
- [Commits](https://github.com/lovell/sharp/compare/v0.35.0...v0.35.4)

---
updated-dependencies:
- dependency-name: sharp
  dependency-version: 0.35.4
  dependency-type: direct:production
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-12 19:52:11 +01:00
Dan HarrinandAmp d07d3379ad fix: Center header actions when a subheading is present
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 11:27:06 +00:00
0fd23fcba9 refactor: define search configuration directly on CheckboxList (#20481)
* refactor: define search configuration directly on CheckboxList

* Fix CheckboxList search configuration details

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 12:23:11 +01:00
Dan HarrinandAmp efe65ff840 fix: Preserve header markup while wrapping actions
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 11:00:32 +00:00
dd4bde3df3 Disable session persistence for tables inside a TableSelect (#20486)
* fix: disable session persistence for tables inside a TableSelect

Every TableSelect and ModalTableSelect renders through the same
TableSelectLivewireComponent, and table session keys are derived from
the Livewire component class. Two pickers with different table
configurations therefore shared one set of persisted filters, search,
sort, grouping and column state, and a persisted query builder rule
from one picker threw a LogicException in the other.

Turn off every session persistence option on the table used by a
TableSelect, and stop the column manager reading persisted state from
the session when column persistence is disabled.

Fixes #20468

* Add `persistInSession()` to toggle all table session persistence at once

The TableSelect component was switching off six separate persistence
options, which would silently miss any session feature added later.
Move that into a single `persistInSession()` method on the Table so
there is one place to keep in step, and call it from the component.

* Fix all TableSelect session persistence

Co-authored-by: Amp <amp@ampcode.com>

* Preserve non-persisted table state behavior

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 11:32:46 +01:00
643b10c2ba fix: make rich editor content area fully clickable (#20483)
* fix: restore editor default min heights and make whole area focusable

* revert: restore 10rem editor default min height

* test: ensure rich editor content fills available height

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 11:21:54 +01:00
Dan HarrinandAmp d638b747f5 refactor: simplify page header markup
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 10:08:01 +00:00
a0ed797991 Strip scheme when checking if panel root route is taken (#20488)
* Strip scheme when checking if panel root route is taken

* Test panel domains containing schemes

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 11:04:52 +01:00
a5a766505e chore(deps-dev): bump @tiptap/core from 3.30.4 to 3.30.5 in the npm_and_yarn group across 1 directory (#20478)
* chore(deps-dev): bump @tiptap/core

Bumps the npm_and_yarn group with 1 update in the / directory: [@tiptap/core](https://github.com/ueberdosis/tiptap/tree/HEAD/packages/core).


Updates `@tiptap/core` from 3.30.4 to 3.30.5
- [Release notes](https://github.com/ueberdosis/tiptap/releases)
- [Changelog](https://github.com/ueberdosis/tiptap/blob/v3.30.5/packages/core/CHANGELOG.md)
- [Commits](https://github.com/ueberdosis/tiptap/commits/v3.30.5/packages/core)

---
updated-dependencies:
- dependency-name: "@tiptap/core"
  dependency-version: 3.30.5
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: update Tiptap dependencies to v3.30.5

Co-authored-by: Amp <amp@ampcode.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 10:46:41 +01:00
Matěj Brožek 87b326fdbb Fix the Czech translations (#20493)
* Fix Czech translations in login page

Signed-off-by: Matěj Brožek <38165077+ArrowCZ@users.noreply.github.com>

* Fixed the rest of Czech translations including malformed translations and syntax

---------

Signed-off-by: Matěj Brožek <38165077+ArrowCZ@users.noreply.github.com>
2026-09-12 10:39:52 +01:00
Jefferson GonçalvesandClaude Sonnet 5 c142618f54 fix: add missing pt_BR translations for select actions (#20497)
`select.actions.clear.label`, `select.actions.remove_option.label`, and `select.search_label` existed in `en/components.php` but were missing from `pt_BR/components.php`.


Claude-Session: https://claude.ai/code/session_016Tc1qzy8manZ4hmQvWKGQM

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 10:38:30 +01:00
Dan HarrinandAmp 31d21b415d fix: prevent page header content from being squeezed by actions (#20491)
* fix: prevent page header content from being squeezed by actions

Co-authored-by: Amp <amp@ampcode.com>

* fix: isolate page header layout without parent selectors

Co-authored-by: Amp <amp@ampcode.com>

* fix: omit empty header rows while preserving render hooks

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-12 10:37:00 +01:00
Dan HarrinandAmp 2fbc3ce02c fix: preserve desktop spacing in mobile-stacked tables (#20490)
Co-authored-by: Amp <amp@ampcode.com>
2026-09-11 09:23:24 +01:00
Dan HarrinandAmp e09c16a572 docs: document shared Blueprint workflow and Astra comparison (#20489)
Co-authored-by: Amp <amp@ampcode.com>
2026-09-11 09:17:35 +01:00
Dan HarrinandAmp f013f7ae15 docs: Document app authentication cache requirements (#20474)
* docs: Document app authentication cache requirements

Co-authored-by: Amp <amp@ampcode.com>

* docs: Use warning for app authentication cache requirements

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-09-09 10:42:41 +01:00
Boy132 c990885d6c fix filament-query-builder::query-builder.operators.is_filled.summary translations (#20470)
Signed-off-by: Boy132 <Boy132@users.noreply.github.com>
2026-09-08 20:48:56 +01:00
Dan HarrinandAmp d9ff26eb39 Improve sidebar scroll boundaries and preserve tenant avatar sizing
Co-authored-by: Amp <amp@ampcode.com>
v4.13.1
2026-09-08 08:51:03 +00:00
danharrin 62317bb726 chore: format and build 2026-09-08 07:48:49 +00:00
ec8a6d5afc Defer FileUpload's synthetic visibilitychange out of its own ResizeObserver callback (#20462)
* Fix FileUpload visibility observer re-entry

* Build FileUpload assets

Co-authored-by: Amp <amp@ampcode.com>

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
2026-09-08 08:47:16 +01:00
danharrin 6f039b0fea chore: format and build 2026-09-08 07:42:13 +00:00
RenHai Wen 06edb08915 fix: guard enum state casts against non-scalar values (#20464)
* test: Reproduce non-scalar enum state casting errors

* fix: Guard enum state casts against non-scalar values

* fix: Explicitly cast Stringable enum state values

* fix: Explicitly cast Stringable enum state values
2026-09-08 08:40:20 +01:00
Jonathan Danse 19e05837a9 fix: replace missing scrollbar-gutter-stable utility with raw CSS (#20465)
The rich editor and markdown editor max-height styles `@apply` a
`scrollbar-gutter-stable` utility that is not declared anywhere in
Filament's CSS. Any panel theme that imports Filament's theme.css
fails to build with:

  [@tailwindcss/vite:generate:build] Cannot apply unknown utility
  class `scrollbar-gutter-stable`

Replace the missing utility with the raw `scrollbar-gutter: stable`
declaration, matching how the sidebar (packages/panels/.../sidebar.css)
already uses it.
2026-09-08 08:39:16 +01:00
Dan HarrinandAmp ec36a799de docs: add compact panel theming guidance
Co-authored-by: Amp <amp@ampcode.com>
2026-09-07 19:27:43 +00:00
Dan Harrin 46600114fd Merge remote-tracking branch 'origin/3.x' into 4.x v4.13.0 2026-09-07 17:11:35 +00:00
dependabot[bot] e32a54ebc7 chore(deps): bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (#20454)
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/3dc1ecc9bcb9e94e9b2c709687979e1298497054...70fb788f84895a7701f5643d103d587e460b5c99)

---
updated-dependencies:
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-06 21:42:55 +01:00
dependabot[bot] a0e6a0f56e chore(deps): bump zizmorcore/zizmor-action from 0.6.2 to 0.6.3 (#20453)
Bumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.6.2 to 0.6.3.
- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)
- [Commits](https://github.com/zizmorcore/zizmor-action/compare/3dc1ecc9bcb9e94e9b2c709687979e1298497054...70fb788f84895a7701f5643d103d587e460b5c99)

---
updated-dependencies:
- dependency-name: zizmorcore/zizmor-action
  dependency-version: 0.6.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-06 21:42:47 +01:00