24170 Commits

Author SHA1 Message Date
danharrin b8d8205cdf chore: format and build 2026-08-26 21:32:33 +00:00
Dan Harrin 3582ba3136 Merge branch '4.x' of https://github.com/filamentphp/filament into 4.x 2026-08-26 22:18:54 +01:00
Dan Harrin 268caec1d6 Update select.js 2026-08-26 22:18:52 +01:00
danharrin 640c32328f chore: format and build 2026-08-26 20:40:57 +00:00
Dan Harrin dcb194dfdb Merge branch '4.x' of https://github.com/filamentphp/filament into 4.x 2026-08-26 21:39:28 +01:00
Dan Harrin 5bc94e8fe5 Update select.js 2026-08-26 21:39:26 +01:00
danharrin c807ef25e4 chore: format and build 2026-08-26 18:26:56 +00:00
Dan Harrin 382532730b Merge branch '4.x' of https://github.com/filamentphp/filament into 4.x 2026-08-26 19:15:44 +01:00
Dan Harrin 1abe36f2bf Update row.css 2026-08-26 19:15:39 +01:00
Lee 33cece19a0 fix: expose table filter indicators as an accessible list (#20343)
Co-authored-by: Lee Evans <lee@optimacloud.pro>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-25 11:59:59 +01:00
RenHai Wen ec1db7c43d fix: respect table prefixes in query builder relationship aggregates (#20386)
* fix: respect table prefixes in query builder relationship aggregates

* fix: preserve one-of-many relationship semantics in query builder aggregates

* fix: respect relationship method constraints in query builder aggregates

Aggregate subqueries were built from a fresh query on the related model,
so constraints defined inside the relationship method itself were never
applied. An aggregate over a relationship such as
`hasMany(Post::class)->where('is_published', true)` silently aggregated
every related row, and `wherePivot()` on a `BelongsToMany` was ignored
in the same way.

Merge the relationship's own query into the subquery with
`mergeConstraintsFrom()`, matching how Laravel builds its own
`withAggregate()` subqueries.

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-08-25 11:24:44 +01:00
danharrin dbefee2f66 chore: format and build 2026-08-25 09:06:38 +00:00
Dan Harrin 578f90ef25 Change chart defaults to better match Filament theme 2026-08-25 10:02:57 +01:00
Dan Harrin 81cc47d507 Clean up chart customization 2026-08-25 10:01:05 +01:00
Dan Harrin 4791d796f1 Chart consistency 2026-08-25 09:20:43 +01:00
Dan Harrin b1d3093259 Build font with more features 2026-08-25 09:14:30 +01:00
danharrin ea6da3c2c4 chore: format and build 2026-08-25 07:41:44 +00:00
Dan Harrin af1a3138fd Merge branch 'chore/theme-tweaks' into 4.x 2026-08-25 08:39:00 +01:00
Ryan DuVal 50c6ded635 Skip leading punctuation when building default avatar initials (#20385)
UiAvatarsProvider::get() takes the first character of each
space-separated word in the user's name with no filtering, so a name
starting with a bracket (a common convention for marking service or
system accounts, e.g. "[SYSTEM] Admin") leaks that bracket into the
initials: "[A" instead of "SA".

Fixes #20384
2026-08-24 17:45:09 +01:00
danharrin c632e975ec chore: format and build 2026-08-24 16:39:39 +00:00
Chinmay Purav bb0abf515c fix: remove the deprecated setAccessible() call in Macroable::mixin() (#20390)
`ReflectionMethod::setAccessible()` is deprecated as of PHP 8.5, and has had no
effect since PHP 8.1 - reflection ignores visibility on its own, so `invoke()`
still reaches the protected methods of a mixin. Calling it only raised a
deprecation notice on 8.5, so the call is removed.


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

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 17:37:37 +01:00
bitskina c57fe70594 fix: avoid null array offsets in Actions view and MorphToSelect on PHP 8.5 (#20381)
Co-authored-by: bitskina <davit.bitskinashvili@makingscience.com>
2026-08-24 17:35:45 +01:00
Dan Harrin d688269275 chore: Improve schema "concealing" visibility CSS and validation behaviour (#20369)
* chore: Consistent schema "concealing" visibility with `display: none` instead of `height: 0`

* simplify concealed components

* tweaks

* Update topbar.css

* Update TextColumn.php

* Update index.blade.php
2026-08-24 17:34:43 +01:00
Chanthoeun Kim e3fc6cf409 Update Khmer (km) translations (#20375)
* 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
2026-08-24 17:27:00 +01:00
Hamdy Elbatal e4d67d178e translation: improve Arabic translations and fix pluralization rules (#20376) 2026-08-24 17:26:33 +01:00
Godfrey E.M 4af580b0a6 translation: update and complete Swahili (sw) translations (#20394)
Completes all missing sw translations across 13 packages (694 keys in 50 files), removes stale keys, and fixes existing strings: untranslated rich editor link tool, duplicated h1/h2 headings, key_value row labels using the wrong noun, pagination overview pluralization, and terminology alignment (Hariri for edit actions).
2026-08-24 14:02:29 +01:00
Dan Harrin d930be97ce chart customizability 2026-08-24 11:54:19 +01:00
Dan Harrin f2e983097e fix 2026-08-24 11:53:22 +01:00
Dan Harrin d2f8cd130f icon aliases 2026-08-24 11:40:58 +01:00
Dan Harrin d1a275b533 Update index.blade.php 2026-08-21 14:41:02 +02:00
Dan Harrin 7f2e2a54d3 Update TextColumn.php 2026-08-21 14:05:24 +02:00
Dan Harrin 8de0d3425f Update topbar.css 2026-08-21 13:53:12 +02:00
Dan Harrin a71df502f0 tweaks 2026-08-21 13:31:02 +02:00
Dan Harrin 47779b8957 simplify concealed components 2026-08-18 10:50:52 +01:00
Dan Harrin 9ea614a037 chore: Consistent schema "concealing" visibility with display: none instead of height: 0 2026-08-17 22:26:28 +01:00
Hamdy Elbatal f5a17a1c22 translation(ar): improve pluralization and add missing keys in actions, panels, notifications, and widgets (#20332)
- Fix Arabic accusative pluralization rules for counts >= 11 (e.g. 'سجلاً' instead of nominative 'سجل') across delete, force-delete, and restore actions.
- Add missing accessibility and layout keys in panels layout (navigation, topbar, skip_to_content, label_with_unread_count).
- Add missing unread notification label key in database notifications.
- Add missing chart filter label key in widgets.
2026-08-07 14:15:59 +01:00
Dan Harrin 7fcca412a8 cleanup 2026-08-07 09:49:29 +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 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
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
Komyor 38eb676bcb -- Tajik language added to project (#20303) 2026-07-31 13:21:12 +01: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
RenHai Wen efe39f1ed6 fix: remove obsolete Tiptap workaround (#20302) 2026-07-29 16:24:23 -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