Skip to content

Conversation

@notAreYouScared
Copy link
Member

@notAreYouScared notAreYouScared commented Jan 22, 2026

Closes #2131

Updates some icons, fixes/updates all tooltips for actions, and fixes French, causing the file manager not to work.

image Icon Button image

Icon - the current layout, and set as the default.
image

@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

📝 Walkthrough

Walkthrough

Adds a ButtonStyle customization and a global Filament action configurator; standardizes many action presentations from visible icon buttons to hiddenLabel()+tooltip(), replaces many header create/save actions with explicit Action::make chains, moves many header create buttons into toolbarActions, and renames numerous action identifiers to hint_* or exclude_*.

Changes

Cohort / File(s) Summary
Global action configuration
app/Providers/Filament/FilamentServiceProvider.php
Adds global Action::configureUsing logic that reads CustomizationKey::ButtonStyle, sets default iconSize, and conditionally enables iconButton()/iconSize() vs hiddenLabel()/tooltip() with an exclusions list.
Customization key & profile UI
app/Enums/CustomizationKey.php, app/Filament/Pages/Auth/EditProfile.php
Adds ButtonStyle enum (default true) and a button_style ToggleButtons field in profile; persists/loads value in mutateFormDataBeforeFill/Save.
Action presentation standardization
many admin/components (app/Filament/Admin/**, app/Filament/Components/Actions/**, app/Filament/Server/**)
Replaced many label()/iconButton()/iconSize() usages with hiddenLabel() + tooltip(); removed numerous Filament\Support\Enums\IconSize imports and iconSize() calls.
Header save/create actions
multiple Create/Edit pages (.../Create*.php, .../Edit*.php)
Replaced previous getCreateFormAction()/getSaveFormAction() icon-button chains with explicit `Action::make('create'
Toolbar / bulk actions refactor
resources & list pages (app/Filament/*/Resource.php, .../Pages/List*.php)
Removed many getDefaultHeaderActions() overrides and groupedBulkActions; introduced toolbarActions with CreateAction (hiddenLabel) and BulkActionGroup wrapping bulk actions.
Files upload UI & safe translations
app/Filament/Server/Resources/Files/Pages/ListFiles.php, resources/views/filament/server/pages/file-upload.blade.php, resources/views/filament/server/pages/list-files.blade.php
Adds fileUploadAction() that selects variant by ButtonStyle; replaces static upload markup with {{ $this->fileUploadAction }} and escapes apostrophes in translated notification titles.
Action identifier renames (hint/exclude flows)
assorted files (e.g., app/Filament/Components/Actions/PreviewStartupAction.php, app/Filament/Components/Actions/RotateDatabasePasswordAction.php, widgets, listeners)
Renames many action names to hint_* or exclude_* variants (e.g., previewhint_preview, rotatehint_rotate, viewexclude_view) while preserving behavior.
Per-resource header/toolbar adjustments
examples: app/Filament/Admin/Resources/ApiKeys/*, .../Roles/*, .../Webhooks/*, .../DatabaseHosts/*, .../Servers/*
Moves create buttons into toolbars, adds CreateAction/BulkActionGroup where applicable, and removes many custom header overrides.
Views, translations & misc
resources/views/**, lang/en/**, various widgets/listeners
Escapes translation apostrophes in file upload notifications; adds import_image/delete_image translations; updates several widget/listener action identifiers to db_* or db_* variants.

Sequence Diagram(s)

sequenceDiagram
    participant User as User
    participant EditProfile as EditProfileForm
    participant CustomStore as CustomizationStore
    participant FilamentProv as FilamentServiceProvider
    participant ActionUI as FilamentActionRenderer

    rect rgba(0,128,0,0.5)
    User->>EditProfile: toggle "Button Style" & save
    EditProfile->>CustomStore: persist CustomizationKey::ButtonStyle
    CustomStore-->>EditProfile: ack
    end

    rect rgba(0,0,128,0.5)
    ActionUI->>FilamentProv: request Action configuration for rendering
    FilamentProv->>CustomStore: read ButtonStyle preference
    CustomStore-->>FilamentProv: returns true/false
    FilamentProv-->>ActionUI: apply configureUsing -> choose iconButton()/iconSize or hiddenLabel()/tooltip
    ActionUI-->>User: render actions accordingly
    end
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 64.20% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding tooltips to actions across the admin area, which is the primary objective of this PR.
Description check ✅ Passed The description is related to the changeset, mentioning fixes to tooltips, icons, and a French language-related file manager issue that aligns with the PR objectives.
Linked Issues check ✅ Passed The PR addresses the core issue from #2131 by fixing the file upload UI blocking problem through tooltip/action configuration updates and French language support in the file manager view.
Out of Scope Changes check ✅ Passed All changes are within scope: tooltip additions, icon updates, action renaming patterns, and file manager/French locale fixes all directly support the linked issue requirements.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/Filament/Pages/Auth/EditProfile.php`:
- Around line 569-577: The Cancel action on the EditProfile page is using the
create-record translation key; update the tooltip call on getCancelFormAction()
inside EditProfile (method where actions are defined) to use the edit-record
translation key (replace
'filament-panels::resources/pages/create-record.form.actions.cancel.label' with
'filament-panels::resources/pages/edit-record.form.actions.cancel.label') so the
Cancel label matches the edit page translations.
🧹 Nitpick comments (4)
app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php (1)

55-62: Consider adding a tooltip to the DeleteAction for consistency.

The DeleteAction uses hiddenLabel() and iconButton() but lacks a tooltip. Given the PR's objective to add tooltips to icon buttons across the admin area, this action should have a tooltip for consistency with the Save action and other actions in this PR.

Suggested change
 DeleteAction::make()
     ->hiddenLabel()
     ->iconButton()->iconSize(IconSize::ExtraLarge)
+    ->tooltip(trans('filament-actions::delete.single.modal.actions.delete.label'))
     ->after(function ($record) {
app/Filament/Admin/Resources/Webhooks/Pages/EditWebhookConfiguration.php (1)

27-28: Consider adding a tooltip to DeleteAction for consistency.

The DeleteAction is configured as an icon button but lacks a tooltip, unlike the save action on line 36. For consistency with other edit pages in this PR, consider adding a tooltip.

♻️ Suggested change
 DeleteAction::make()
-    ->iconButton()->iconSize(IconSize::ExtraLarge),
+    ->tooltip(trans('filament-actions::delete.single.modal.actions.delete.label'))
+    ->iconButton()->iconSize(IconSize::ExtraLarge),
app/Filament/Admin/Resources/Eggs/Pages/EditEgg.php (1)

449-462: Minor: Prefer === 0 over <= 0 for count comparison.

The count() method can never return a negative value, so <= 0 is functionally equivalent to === 0, but the latter is more precise and clearer in intent.

Suggested change
 DeleteAction::make()
     ->disabled(fn (Egg $egg): bool => $egg->servers()->count() > 0)
-    ->tooltip(fn (Egg $egg): string => $egg->servers()->count() <= 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use'))
+    ->tooltip(fn (Egg $egg): string => $egg->servers()->count() === 0 ? trans('filament-actions::delete.single.label') : trans('admin/egg.in_use'))
app/Providers/Filament/FilamentServiceProvider.php (1)

89-95: Use consistent translation key for DeleteAction tooltip across all instances.

The DeleteAction uses trans('filament-actions::delete.single.modal.actions.delete.label') for its global tooltip configuration in FilamentServiceProvider, but individual edit pages use different keys inconsistently: some use filament-actions::delete.single.label (EditEgg, EditRole, EditServer, EditNode) while others use filament-actions::delete.single.modal.actions.delete.label (EditDatabaseHost, EditUser). This inconsistency means the same action displays different tooltip text depending on context.

Standardize on one translation key throughout the codebase, preferably filament-actions::delete.single.label which appears to be the intended action label.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php`:
- Around line 103-110: The two CreateAction::make() calls inside the
ApiKeyResource::toolbarActions lack explicit identifiers and accessibility text;
update each CreateAction instance to include a unique action name (e.g.,
->name('createApiKey') and ->name('createApiKeyFromFile')) and a descriptive
tooltip (e.g., ->tooltip('Create a new API key') and ->tooltip('Create an API
key from a file/template')) so the actions are distinguishable and accessible;
ensure you modify both CreateAction::make() occurrences in ApiKeyResource.

In `@app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php`:
- Around line 95-98: The icon-only Create action (CreateAction::make() followed
by ->iconButton()) has its label hidden, so add a tooltip to that action to
improve discoverability and accessibility; update the CreateAction::make() chain
to include a tooltip (e.g., ->tooltip('Create') or a translated string)
immediately after ->iconButton() so the icon shows an accessible hover/focus
label.

In `@app/Filament/Admin/Resources/Webhooks/WebhookResource.php`:
- Around line 113-119: The CreateAction in the toolbarActions is icon-only and
lacks an explicit tooltip; update the CreateAction::make() invocation inside the
toolbarActions block to add a tooltip via ->tooltip(...) (use the same
label/text used for the action) so the icon-only button has an accessible,
discoverable name—follow the pattern used by ReplicateAction and other icon-only
actions in this resource.
🧹 Nitpick comments (1)
app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php (1)

100-107: Minor inconsistency: CreateAction placement differs from other resources.

In this file, CreateAction is placed before BulkActionGroup, while in UserResource.php (lines 142-149), BulkActionGroup comes first. Consider standardizing the order across all resources for a consistent toolbar layout.

♻️ Suggested reorder to match UserResource pattern
             ->toolbarActions([
+                BulkActionGroup::make([
+                    DeleteBulkAction::make(),
+                ]),
                 CreateAction::make()
                     ->iconButton()->iconSize(IconSize::ExtraLarge)
                     ->icon('tabler-plus'),
-                BulkActionGroup::make([
-                    DeleteBulkAction::make(),
-                ]),
             ])

Many buttons still need to be looked at.... Power actions/user menu options and upload file button
@notAreYouScared notAreYouScared marked this pull request as draft January 22, 2026 18:11
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Fix all issues with AI agents
In `@app/Filament/Admin/Resources/DatabaseHosts/DatabaseHostResource.php`:
- Around line 99-105: The CreateAction in the toolbarActions is icon-only
(CreateAction::make() with ->hiddenLabel() and ->icon('tabler-plus')) and needs
an accessibility tooltip; update the CreateAction instance to include a tooltip
(e.g., ->tooltip('Create') or the appropriate localized label) so the icon-only
button exposes its purpose to assistive tech and matches other resources'
pattern.

In `@app/Filament/Admin/Resources/Mounts/MountResource.php`:
- Around line 102-108: The CreateAction icon-only button in MountResource's
toolbarActions currently uses
CreateAction::make()->hiddenLabel()->icon('tabler-plus') without a tooltip;
update that action to include a tooltip by chaining the tooltip method (e.g.,
CreateAction::make()->hiddenLabel()->icon('tabler-plus')->tooltip(__('Create'))
or a plain 'Create' string) so the icon-only button shows the standard create
tooltip while keeping the hiddenLabel behavior.

In `@app/Filament/Pages/Auth/EditProfile.php`:
- Around line 603-610: The unset block for $data is missing the
'console_graph_period' key so that value remains and may be saved to the wrong
user field; update the unset(...) call in EditProfile.php to also remove
'console_graph_period' from $data (alongside 'console_font',
'console_font_size', 'console_rows', 'dashboard_layout', 'top_navigation',
'button_style') before saving, ensuring any references to the customization
array/keys are cleaned up.
- Around line 466-474: The ToggleButtons::make('button_style') field has
hardcoded label/option strings and a mismatched default type; update it to use
trans() for the label and both option values (e.g.
trans('filament::customization.icon') and
trans('filament::customization.icon_button')) to match the project's i18n
pattern used by the other customization toggles, and change the default from
default('icon') to a boolean default(true) (or default(false) as desired) so the
default key type matches the boolean option keys.

In `@app/Filament/Server/Pages/Settings.php`:
- Around line 90-92: The icon-only upload action Action::make('uploadIcon')
currently uses hiddenLabel() but lacks a tooltip and explicit label; update that
action to include a localized label (e.g., label(__('settings.upload_icon')))
and a matching tooltip via tooltip(__('settings.upload_icon_tooltip')) while
still keeping hiddenLabel() for visual icon-only display—this ensures
accessibility and user context for the uploadIcon action.

In `@app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php`:
- Around line 54-60: The DeleteAction currently uses hiddenLabel() without a
tooltip, so add a tooltip() call to the DeleteAction::make() chain to provide a
hover label (matching how run_now and save actions do it); locate the
DeleteAction::make() call in EditSchedule.php (the block that also calls
hiddenLabel() and after(...) which logs
Activity::event('server:schedule.delete')), and append a tooltip('Delete') or an
appropriate localized string to that action chain.

In `@app/Providers/Filament/FilamentServiceProvider.php`:
- Around line 114-121: The global Action::configureUsing callback is forcing
iconButton() (and ExtraLarge iconSize) for all Action instances when
user()?->getCustomization(CustomizationKey::ButtonStyle) is true, which hides
labels for actions that intend visible text (e.g., Console actions). Update the
callback to only call iconButton() when the action has no label or already has
its label hidden—e.g., check Action::getLabel() or a hypothetical
isLabelHidden()/hiddenLabel flag before calling iconButton()—or alternatively
restrict this configuration to a whitelist of actions that should be icon-only;
keep the iconSize adjustment separate so it can still apply without forcing
icon-only rendering.
♻️ Duplicate comments (2)
app/Filament/Admin/Resources/ApiKeys/ApiKeyResource.php (1)

101-105: Add a tooltip to the CreateAction for accessibility.

The PR objective is to add tooltips to icon buttons across the admin area. This CreateAction uses hiddenLabel() making it an icon-only button, but it lacks a ->tooltip() call. Without a tooltip, users won't see explanatory text when hovering over the button.

Suggested fix
            ->toolbarActions([
-               CreateAction::make()
+               CreateAction::make('createApiKey')
                    ->hiddenLabel()
+                   ->tooltip(trans('admin/apikey.actions.create'))
                    ->icon('tabler-plus'),
            ])
app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php (1)

93-95: Add a tooltip for the hidden-label Create action.

Line 93–95 hides the label and only shows an icon; without a tooltip the button lacks an accessible name.

✅ Suggested fix
 CreateAction::make()
     ->hiddenLabel()
-    ->icon('tabler-plus'),
+    ->icon('tabler-plus')
+    ->tooltip(trans('filament-actions::create.single.label')),
Filament action hiddenLabel tooltip accessibility guidance
🧹 Nitpick comments (3)
app/Providers/Filament/FilamentServiceProvider.php (1)

104-112: Inconsistent configuration: CreateAction missing hiddenLabel().

Unlike DeleteAction (which calls hiddenLabel() on line 95), CreateAction doesn't hide its label. This inconsistency means CreateAction will display both label and tooltip when ButtonStyle is false, while DeleteAction will only show the tooltip.

If the intent is uniform icon-button styling across these actions, consider adding hiddenLabel():

Suggested fix
 CreateAction::configureUsing(function (CreateAction $action) {
     $action->tooltip(fn (): string => trans('filament-actions::create.single.label', ['label' => $action->getModelLabel()]));
+    $action->hiddenLabel();
     $action->iconSize(IconSize::Large);
app/Filament/Server/Resources/Schedules/Pages/EditSchedule.php (1)

79-85: Prefer starting from getSaveFormAction() to preserve EditRecord defaults.

Switching to Action::make('save') may drop Filament’s default save behavior (label/i18n, submit/validation wiring, disabled state, etc.). If you keep the custom action, please verify parity with Filament’s defaults. Otherwise, consider extending the built-in action.

♻️ Proposed refactor (keeps Filament defaults)
-            Action::make('save')
-                ->hiddenLabel()
-                ->action('save')
-                ->keyBindings(['mod+s'])
-                ->icon('tabler-device-floppy')
-                ->tooltip(trans('server/schedule.save')),
+            $this->getSaveFormAction()
+                ->hiddenLabel()
+                ->icon('tabler-device-floppy')
+                ->tooltip(trans('server/schedule.save')),
app/Filament/Admin/Resources/Roles/Pages/EditRole.php (1)

59-61: Missing hiddenLabel() on DeleteAction for icon button consistency.

The save action uses ->hiddenLabel() to render as an icon-only button with a tooltip, but DeleteAction lacks this modifier. Without it, the delete button may still display its default label text alongside the icon, which is inconsistent with the PR's goal of switching to icon buttons with tooltips.

♻️ Suggested fix
 DeleteAction::make()
+    ->hiddenLabel()
     ->tooltip(fn (Role $role) => $role->isRootAdmin() ? trans('admin/role.root_admin_delete') : ($role->users_count >= 1 ? trans('admin/role.in_use') : trans('filament-actions::delete.single.label')))
     ->disabled(fn (Role $role) => $role->isRootAdmin() || $role->users_count >= 1),

@notAreYouScared notAreYouScared marked this pull request as ready for review January 22, 2026 22:27
Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The actions for the admin dashboard widgets also need tooltips.
https://github.com/pelican-dev/panel/tree/main/app/Filament/Admin/Widgets

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hint actions seem a bit too big, e.g. on the settings page:

Image

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actions on panel logs page also need tooltips.

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Save button is always an icon button?

Image

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some record actions are too big. (or too small?)

Node list, 28x28:
Image

Egg list: 24x24:
Image

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
app/Filament/Admin/Resources/Nodes/RelationManagers/AllocationsRelationManager.php (1)

87-103: Add translated labels to both actions for accessibility and localization.

Both actions are missing explicit ->label() calls and fall back to their English action names ('create new allocation', 'hint_refresh'). This impacts screen readers and non-English locales. Since these are icon-only actions, pair the label with ->hiddenLabel() to maintain the current UI while ensuring proper a11y support.

Suggested adjustment
 Action::make('create new allocation')
+    ->label(trans('admin/node.create_allocation'))
+    ->hiddenLabel()
     ->tooltip(trans('admin/node.create_allocation'))
     ->icon('tabler-world-plus')
     ->schema(fn () => [
 ...
                                 Action::make('hint_refresh')
+                                    ->label(trans('admin/node.refresh'))
+                                    ->hiddenLabel()
                                     ->icon('tabler-refresh')
                                     ->tooltip(trans('admin/node.refresh'))
                                     ->action(function () {
app/Filament/Admin/Resources/Servers/Pages/EditServer.php (1)

262-271: Add an explicit label to the suffix action for proper localization.
Without a label, Filament v3 uses the action name (hint_random) as the tooltip/title attribute, which is not localized and exposes the internal prefix. Add ->label(trans('admin/server.name_hint')) or similar translated label to the action.

🤖 Fix all issues with AI agents
In `@app/Providers/Filament/FilamentServiceProvider.php`:
- Around line 93-96: The call uses the wrong class casing: replace the incorrect
Copyaction::configureUsing(...) with CopyAction::configureUsing(...) so the
PSR-4 autoloader finds the class; update any corresponding use/import for
CopyAction if necessary and ensure the ConfigureUsing call remains identical to
the neighboring Select::configureUsing, KeyValue::configureUsing, and
Repeater::configureUsing invocations.
🧹 Nitpick comments (1)
app/Filament/Components/Actions/RotateDatabasePasswordAction.php (1)

16-26: Hide the default label for tooltip-only action

With the name now hint_rotate and no explicit label() or hiddenLabel(), Filament may render a visible label like “Hint Rotate” if the global Action configuration doesn’t apply to class-based actions. Please verify the global Action::configureUsing() covers this class; otherwise add hiddenLabel() here for consistency with other tooltip-only actions.

✅ Suggested tweak (if global config doesn’t cover it)
         $this->tooltip(trans('admin/databasehost.rotate'));
+        $this->hiddenLabel();

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hint actions are still big? And record actions are still too big.

Old:
Image

New:
Image

Copy link
Member

@Boy132 Boy132 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Console icon on server list ist 24x24, the edit icon is 28x28. Generally most record icons are now ExtraLarge (28x28), which seems a bit too big?

Image

@notAreYouScared
Copy link
Member Author

Console icon on server list ist 24x24, the edit icon is 28x28. Generally most record icons are now ExtraLarge (28x28), which seems a bit too big?

They should all be Large, some were hard-coded to Extra Large.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@app/Filament/Admin/Resources/Servers/Pages/ListServers.php`:
- Around line 99-103: The CreateAction in toolbarActions is currently icon-only
(->hiddenLabel()) and needs an accessible tooltip; update the CreateAction chain
in ListServers.php to add a tooltip (e.g., ->tooltip(__('Create Server')) or
->tooltip('Create Server')) so the icon-only action matches the other view
actions and provides accessible text for screen readers and hover/focus.
♻️ Duplicate comments (1)
app/Filament/Admin/Resources/Eggs/Pages/ListEggs.php (1)

86-88: Add a tooltip for the icon-only Create action.
hiddenLabel() removes the visible label, so a tooltip is needed for discoverability and accessibility.

✅ Suggested fix
 CreateAction::make()
     ->hiddenLabel()
-    ->icon('tabler-plus'),
+    ->icon('tabler-plus')
+    ->tooltip(trans('filament-actions::create.single.label')),

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
app/Filament/Admin/Pages/Settings.php (1)

269-277: unique() returns a new collection and doesn't mutate $ips.

Line 272 has no effect because Laravel's unique() returns a new collection rather than mutating the original. Additionally, the empty catch block silently swallows errors, leaving users unaware when the Cloudflare API call fails.

🐛 Proposed fix
                                 foreach (['ipv4_cidrs', 'ipv6_cidrs'] as $value) {
                                     $ips->push(...data_get($result, $value));
                                 }
-                                $ips->unique();
                             }
-                        } catch (Exception) {
+                        } catch (Exception $e) {
+                            Notification::make()
+                                ->title(trans('admin/setting.general.cloudflare_fetch_failed'))
+                                ->body($e->getMessage())
+                                ->warning()
+                                ->send();
                         }

-                        $set('TRUSTED_PROXIES', $ips->values()->all());
+                        $set('TRUSTED_PROXIES', $ips->unique()->values()->all());

Note: The unique() call is moved to the final $set() line where its result is actually used. If a translation key for the error notification doesn't exist yet, you may need to add one.

🤖 Fix all issues with AI agents
In `@app/Filament/Admin/Resources/Mounts/Pages/EditMount.php`:
- Around line 25-31: The DeleteAction::make() call is missing the UI modifiers
used elsewhere; update DeleteAction::make() to chain ->hiddenLabel() and
->tooltip(...) (using the same translation key pattern as other edit pages, e.g.
the existing edit-page delete tooltip used in EditEgg.php/EditNode.php) so the
delete action matches the save action and other pages for consistent hidden
label and tooltip behavior.

In `@app/Filament/Admin/Resources/Webhooks/Pages/CreateWebhookConfiguration.php`:
- Around line 31-36: The create header action currently calls
Action::make('create')->action('create') which invokes the Livewire method
directly and bypasses form submission/validation; update the
Action::make('create') configuration to include ->formId('form') (matching the
cancel action) so the action submits the form, triggers validation and deferred
field hydration before invoking the Livewire create method.

In `@app/Providers/Filament/FilamentServiceProvider.php`:
- Around line 105-108: The Repeater delete action currently uses the KeyValue
translation key; update the tooltip call inside Repeater::configureUsing(fn
(Repeater $repeater) => $repeater->deleteAction(function (Action $action) { ...
})) to use the Repeater-specific translation key
'filament-forms::components.repeater.actions.delete.label' instead of
'filament-forms::components.key_value.actions.delete.label' so the correct
localized label is shown for repeater delete actions.
🧹 Nitpick comments (3)
app/Filament/Admin/Resources/Plugins/PluginResource.php (1)

250-256: Reminder: Address the TODO comment.

There's a TODO indicating the file upload should be switched to a "new file upload" component.

Would you like me to open a new issue to track this task, or help implement the switch to the new file upload component?

app/Filament/Admin/Resources/Servers/RelationManagers/AllocationsRelationManager.php (1)

109-112: Set an explicit label before hiddenLabel() for a11y/localization consistency.
With hiddenLabel() and no explicit label(...), Filament may fall back to a generic default (e.g., “Create”), which can be less descriptive for screen readers and translations. Consider setting the label to the same translation used in the tooltip.

♻️ Proposed tweak
 CreateAction::make()
+    ->label(trans('admin/server.create_allocation'))
     ->hiddenLabel()
     ->tooltip(trans('admin/server.create_allocation'))
     ->icon(TablerIcon::Network)
app/Filament/Components/Actions/ExportEggAction.php (1)

43-52: Clarify the exclude_ prefix naming convention.

The modal footer actions are renamed from json/yaml to exclude_json/exclude_yaml. This appears to follow a PR-wide pattern (similar to hint_* prefixes elsewhere). Consider adding a brief code comment or documenting this naming convention if it's used to exclude actions from global styling/processing.

@notAreYouScared notAreYouScared merged commit dd77555 into main Jan 28, 2026
32 checks passed
@notAreYouScared notAreYouScared deleted the charles/add-tooltips branch January 28, 2026 01:07
@github-actions github-actions bot locked and limited conversation to collaborators Jan 28, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

File Upload blocked when user language is set to non English

4 participants