Collection of smaller v4 fixes (#1684)

Co-authored-by: RMartinOscar <40749467+RMartinOscar@users.noreply.github.com>
Co-authored-by: notCharles <charles@pelican.dev>
This commit is contained in:
Boy132 2025-09-15 23:28:57 +02:00 committed by GitHub
parent cba8717188
commit d5d50d4150
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
58 changed files with 329 additions and 675 deletions

View File

@ -0,0 +1,27 @@
<?php
namespace App\Enums;
use Filament\Support\Contracts\HasColor;
use Filament\Support\Contracts\HasLabel;
enum ScheduleStatus: string implements HasColor, HasLabel
{
case Inactive = 'inactive';
case Processing = 'processing';
case Active = 'active';
public function getColor(): string
{
return match ($this) {
self::Inactive => 'danger',
self::Processing => 'warning',
self::Active => 'success',
};
}
public function getLabel(): string
{
return trans('server/schedule.schedule_status.' . $this->value);
}
}

View File

@ -73,9 +73,8 @@ class GSLTokenSchema implements FeatureSchemaInterface
}
},
])
->hintIcon('tabler-code')
->hintIcon('tabler-code', fn () => implode('|', $serverVariable->variable->rules))
->label(fn () => $serverVariable->variable->name)
->hintIconTooltip(fn () => implode('|', $serverVariable->variable->rules))
->prefix(fn () => '{{' . $serverVariable->variable->env_variable . '}}')
->helperText(fn () => empty($serverVariable->variable->description) ? '—' : $serverVariable->variable->description),
])

View File

@ -153,14 +153,12 @@ class Settings extends Page implements HasSchemas
->schema([
TextInput::make('APP_LOGO')
->label(trans('admin/setting.general.app_logo'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/setting.general.app_logo_help'))
->hintIcon('tabler-question-mark', trans('admin/setting.general.app_logo_help'))
->default(env('APP_LOGO'))
->placeholder('/pelican.svg'),
TextInput::make('APP_FAVICON')
->label(trans('admin/setting.general.app_favicon'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/setting.general.app_favicon_help'))
->hintIcon('tabler-question-mark', trans('admin/setting.general.app_favicon_help'))
->required()
->default(env('APP_FAVICON', '/pelican.ico'))
->placeholder('/pelican.ico'),

View File

@ -143,7 +143,7 @@ class DatabaseHostResource extends Resource
->maxValue(65535),
TextInput::make('max_databases')
->label(trans('admin/databasehost.max_database'))
->helpertext(trans('admin/databasehost.max_databases_help'))
->helperText(trans('admin/databasehost.max_databases_help'))
->numeric(),
TextInput::make('name')
->label(trans('admin/databasehost.display_name'))

View File

@ -143,7 +143,7 @@ class CreateDatabaseHost extends CreateRecord
->maxValue(65535),
TextInput::make('max_databases')
->label(trans('admin/databasehost.max_database'))
->helpertext(trans('admin/databasehost.max_databases_help'))
->helperText(trans('admin/databasehost.max_databases_help'))
->placeholder(trans('admin/databasehost.unlimited'))
->numeric(),
TextInput::make('name')

View File

@ -102,8 +102,7 @@ class CreateEgg extends CreateRecord
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 1, 'lg' => 1]),
Toggle::make('force_outgoing_ip')
->label(trans('admin/egg.force_ip'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/egg.force_ip_help')),
->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')),
Hidden::make('script_is_privileged')
->default(1),
TagsInput::make('tags')
@ -111,8 +110,7 @@ class CreateEgg extends CreateRecord
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
TextInput::make('update_url')
->label(trans('admin/egg.update_url'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/egg.update_url_help'))
->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help'))
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2])
->url(),
KeyValue::make('docker_images')
@ -203,8 +201,7 @@ class CreateEgg extends CreateRecord
->maxLength(255)
->prefix('{{')
->suffix('}}')
->hintIcon('tabler-code')
->hintIconTooltip(fn ($state) => "{{{$state}}}")
->hintIcon('tabler-code', fn ($state) => "{{{$state}}}")
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
->rules(EggVariable::getRulesForField('env_variable'))
->validationMessages([

View File

@ -97,8 +97,7 @@ class EditEgg extends EditRecord
Toggle::make('force_outgoing_ip')
->inline(false)
->label(trans('admin/egg.force_ip'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/egg.force_ip_help')),
->hintIcon('tabler-question-mark', trans('admin/egg.force_ip_help')),
Hidden::make('script_is_privileged')
->helperText('The docker images available to servers using this egg.'),
TagsInput::make('tags')
@ -107,8 +106,7 @@ class EditEgg extends EditRecord
TextInput::make('update_url')
->label(trans('admin/egg.update_url'))
->url()
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/egg.update_url_help'))
->hintIcon('tabler-question-mark', trans('admin/egg.update_url_help'))
->columnSpan(['default' => 1, 'sm' => 1, 'md' => 2, 'lg' => 2]),
KeyValue::make('docker_images')
->label(trans('admin/egg.docker_images'))
@ -192,8 +190,7 @@ class EditEgg extends EditRecord
->maxLength(255)
->prefix('{{')
->suffix('}}')
->hintIcon('tabler-code')
->hintIconTooltip(fn ($state) => "{{{$state}}}")
->hintIcon('tabler-code', fn ($state) => "{{{$state}}}")
->unique(modifyRuleUsing: fn (Unique $rule, Get $get) => $rule->where('egg_id', $get('../../id')))
->rules(EggVariable::getRulesForField('env_variable'))
->validationMessages([

View File

@ -226,8 +226,7 @@ class CreateNode extends CreateRecord
->label(trans('admin/node.maintenance_mode'))->inline()
->columnSpan(1)
->default(false)
->hinticon('tabler-question-mark')
->hintIconTooltip(trans('admin/node.maintenance_mode_help'))
->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help'))
->options([
true => trans('admin/node.enabled'),
false => trans('admin/node.disabled'),
@ -254,8 +253,7 @@ class CreateNode extends CreateRecord
TextInput::make('upload_size')
->label(trans('admin/node.upload_limit'))
->helperText(trans('admin/node.upload_limit_help.0'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/node.upload_limit_help.1'))
->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help.1'))
->columnSpan(1)
->numeric()->required()
->default(256)
@ -417,7 +415,7 @@ class CreateNode extends CreateRecord
protected function getRedirectUrlParameters(): array
{
return [
'tab' => '-configuration-file-tab',
'tab' => 'configuration-file::data::tab',
];
}

View File

@ -311,8 +311,7 @@ class EditNode extends EditRecord
'lg' => 1,
])
->label(trans('admin/node.upload_limit'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/node.upload_limit_help.0') . trans('admin/node.upload_limit_help.1'))
->hintIcon('tabler-question-mark', trans('admin/node.upload_limit_help.0') . trans('admin/node.upload_limit_help.1'))
->numeric()->required()
->minValue(1)
->maxValue(1024)
@ -366,8 +365,7 @@ class EditNode extends EditRecord
])
->label(trans('admin/node.maintenance_mode'))
->inline()
->hinticon('tabler-question-mark')
->hintIconTooltip(trans('admin/node.maintenance_mode_help'))
->hintIcon('tabler-question-mark', trans('admin/node.maintenance_mode_help'))
->stateCast(new BooleanStateCast(false, true))
->options([
1 => trans('admin/node.enabled'),

View File

@ -42,7 +42,7 @@ class AllocationsRelationManager extends RelationManager
return $table
->recordTitleAttribute('address')
->checkIfRecordIsSelectableUsing(fn (Allocation $allocation) => $allocation->server_id === null)
->paginationPageOptions(['10', '20', '50', '100', '200', '500'])
->paginationPageOptions([10, 20, 50, 100, 200, 500])
->searchable()
->heading('')
->selectCurrentPageOnly() //Prevent people from trying to nuke 30,000 ports at once.... -,-

View File

@ -193,7 +193,7 @@ class RoleResource extends Resource
])
->schema([
CheckboxList::make(strtolower($model) . '_list')
->label('')
->hiddenLabel()
->options($options)
->columns()
->gridDirection('row')

View File

@ -169,8 +169,7 @@ class CreateServer extends CreateRecord
TextInput::make('password')
->label(trans('admin/user.password'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/user.password_help'))
->hintIcon('tabler-question-mark', trans('admin/user.password_help'))
->password(),
])
->createOptionUsing(function ($data, UserCreationService $service) {
@ -521,8 +520,7 @@ class CreateServer extends CreateRecord
->hidden(fn (Get $get) => $get('unlimited_mem'))
->label(trans('admin/server.memory_limit'))->inlineLabel()
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
->hintIcon('tabler-question-mark')
->hintIconToolTip(trans('admin/server.memory_helper'))
->hintIcon('tabler-question-mark', trans('admin/server.memory_helper'))
->default(0)
->required()
->columnSpan(2)

View File

@ -288,8 +288,7 @@ class EditServer extends EditRecord
->hidden(fn (Get $get) => $get('unlimited_mem'))
->label(trans('admin/server.memory_limit'))->inlineLabel()
->suffix(config('panel.use_binary_prefix') ? 'MiB' : 'MB')
->hintIcon('tabler-question-mark')
->hintIconToolTip(trans('admin/server.memory_helper'))
->hintIcon('tabler-question-mark', trans('admin/server.memory_helper'))
->required()
->columnSpan(2)
->numeric()
@ -567,10 +566,10 @@ class EditServer extends EditRecord
Action::make('change_egg')
->label(trans('admin/server.change_egg'))
->action(function (array $data, Server $server, EggChangerService $service) {
$service->handle($server, $data['egg_id'], $data['keepOldVariables']);
$service->handle($server, $data['egg_id'], $data['keep_old_variables']);
// Use redirect instead of fillForm to prevent server variables from duplicating
$this->redirect($this->getUrl(['record' => $server, 'tab' => '-egg-tab']), true);
$this->redirect($this->getUrl(['record' => $server, 'tab' => 'egg::data::tab']), true);
})
->schema(fn (Server $server) => [
Select::make('egg_id')
@ -580,7 +579,7 @@ class EditServer extends EditRecord
->searchable()
->preload()
->required(),
Toggle::make('keepOldVariables')
Toggle::make('keep_old_variables')
->label(trans('admin/server.keep_old_variables'))
->default(true),
])
@ -793,7 +792,7 @@ class EditServer extends EditRecord
Action::make('transfer')
->label(trans('admin/server.transfer'))
->disabled(fn (Server $server) => Node::count() <= 1 || $server->isInConflictState())
->modalheading(trans('admin/server.transfer'))
->modalHeading(trans('admin/server.transfer'))
->schema($this->transferServer())
->action(function (TransferServerService $transfer, Server $server, $data) {
try {

View File

@ -130,26 +130,23 @@ class DatabasesRelationManager extends RelationManager
Select::make('database_host_id')
->label(trans('admin/databasehost.model_label'))
->required()
->placeholder(trans('admin/databasehost.table.select_placeholder'))
->options(fn () => DatabaseHost::query()
->whereHas('nodes', fn ($query) => $query->where('nodes.id', $this->getOwnerRecord()->node_id))
->pluck('name', 'id')
)
->default(fn () => (DatabaseHost::query()->first())?->id)
->selectablePlaceholder(false),
->selectablePlaceholder(false)
->default(fn () => (DatabaseHost::query()->first())?->id),
TextInput::make('database')
->label(trans('admin/server.name'))
->alphaDash()
->prefix(fn () => 's' . $this->getOwnerRecord()->id . '_')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/databasehost.table.name_helper')),
->hintIcon('tabler-question-mark', trans('admin/databasehost.table.name_helper')),
TextInput::make('remote')
->columnSpan(1)
->regex('/^[\w\-\/.%:]+$/')
->label(trans('admin/databasehost.table.remote'))
->default('%')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('admin/databasehost.table.remote_helper')),
->hintIcon('tabler-question-mark', trans('admin/databasehost.table.remote_helper')),
]),
]);
}

View File

@ -71,7 +71,7 @@ class ServerResource extends Resource
}
return CheckboxList::make('mounts')
->label('')
->hiddenLabel()
->relationship('mounts')
->live()
->options(fn () => $allowedMounts->mapWithKeys(fn ($mount) => [$mount->id => $mount->name]))

View File

@ -140,8 +140,7 @@ class UserResource extends Resource
->maxLength(255),
TextInput::make('password')
->label(trans('admin/user.password'))
->hintIcon(fn ($operation) => $operation === 'create' ? 'tabler-question-mark' : null)
->hintIconTooltip(fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null)
->hintIcon(fn ($operation) => $operation === 'create' ? 'tabler-question-mark' : null, fn ($operation) => $operation === 'create' ? trans('admin/user.password_help') : null)
->password(),
CheckboxList::make('roles')
->hidden(fn (?User $user) => $user && $user->isRootAdmin())

View File

@ -216,7 +216,7 @@ class ListServers extends ListRecords
cache()->forget("servers.$server->uuid.status");
$this->redirect(self::getUrl(['activeTab' => $this->activeTab]));
$this->redirect(self::getUrl(['tab' => $this->activeTab]));
} catch (ConnectionException) {
Notification::make()
->title(trans('exceptions.node.error_connecting', ['node' => $server->node->name]))
@ -233,26 +233,26 @@ class ListServers extends ListRecords
->color('primary')
->icon('tabler-player-play-filled')
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_START, $server))
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isStartable())
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isStartable())
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'start']),
Action::make('restart')
->color('gray')
->icon('tabler-reload')
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_RESTART, $server))
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isRestartable())
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isRestartable())
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'restart']),
Action::make('stop')
->color('danger')
->icon('tabler-player-stop-filled')
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isStoppable())
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isStoppable())
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'stop']),
Action::make('kill')
->color('danger')
->icon('tabler-alert-square')
->tooltip('This can result in data corruption and/or data loss!')
->authorize(fn (Server $server) => auth()->user()->can(Permission::ACTION_CONTROL_STOP, $server))
->visible(fn (Server $server) => !$server->isInConflictState() & $server->retrieveStatus()->isKillable())
->visible(fn (Server $server) => !$server->isInConflictState() && $server->retrieveStatus()->isKillable())
->dispatch('powerAction', fn (Server $server) => ['server' => $server, 'action' => 'kill']),
];

View File

@ -130,8 +130,7 @@ class ImportEggAction extends Action
->searchable()
->preload()
->live()
->hintIcon('tabler-refresh')
->hintIconTooltip(trans('admin/egg.import.refresh'))
->hintIcon('tabler-refresh', trans('admin/egg.import.refresh'))
->hintAction(function () {
Artisan::call(UpdateEggIndexCommand::class);
})
@ -144,7 +143,7 @@ class ImportEggAction extends Action
}
}),
Repeater::make('urls')
->label('')
->hiddenLabel()
->itemLabel(fn (array $state) => str($state['url'])->afterLast('/egg-')->beforeLast('.')->headline())
->hint(trans('admin/egg.import.url_help'))
->addActionLabel(trans('admin/egg.import.add_url'))

View File

@ -46,9 +46,7 @@ class StartupVariable extends Field
$this->prefix(fn (StartupVariable $component) => '{{' . $component->getVariableEnv() . '}}');
$this->hintIcon('tabler-code');
$this->hintIconTooltip(fn (StartupVariable $component) => implode('|', $component->getVariableRules()));
$this->hintIcon('tabler-code', fn (StartupVariable $component) => implode('|', $component->getVariableRules()));
$this->helperText(fn (StartupVariable $component) => !$component->getVariableDesc() ? '—' : $component->getVariableDesc());
@ -90,11 +88,11 @@ class StartupVariable extends Field
public function fromRecord(): static
{
$this->variableName(fn (ServerVariable $record) => $record->variable->name);
$this->variableDesc(fn (ServerVariable $record) => $record->variable->description);
$this->variableEnv(fn (ServerVariable $record) => $record->variable->env_variable);
$this->variableDefault(fn (ServerVariable $record) => $record->variable->default_value);
$this->variableRules(fn (ServerVariable $record) => $record->variable->rules);
$this->variableName(fn (?ServerVariable $record) => $record?->variable->name);
$this->variableDesc(fn (?ServerVariable $record) => $record?->variable->description);
$this->variableEnv(fn (?ServerVariable $record) => $record?->variable->env_variable);
$this->variableDefault(fn (?ServerVariable $record) => $record?->variable->default_value);
$this->variableRules(fn (?ServerVariable $record) => $record?->variable->rules);
return $this;
}

View File

@ -27,6 +27,7 @@ use Filament\Infolists\Components\TextEntry;
use Filament\Forms\Components\Repeater;
use Filament\Schemas\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Schemas\Components\StateCasts\BooleanStateCast;
use Filament\Schemas\Components\Tabs;
use Filament\Schemas\Components\Tabs\Tab;
use Filament\Forms\Components\TagsInput;
@ -150,6 +151,7 @@ class EditProfile extends BaseEditProfile
->avatar()
->acceptedFileTypes(['image/png'])
->directory('avatars')
->disk('public')
->getUploadedFileNameForStorageUsing(fn () => $this->getUser()->id . '.png')
->hintAction(function (FileUpload $fileUpload) {
$path = $fileUpload->getDirectory() . '/' . $this->getUser()->id . '.png';
@ -176,9 +178,9 @@ class EditProfile extends BaseEditProfile
$unlink = array_key_exists($id, $this->getUser()->oauth ?? []);
$actions[] = Action::make("oauth_$id")
->label(($unlink ? trans('profile.unlink') : trans('profile.link')) . $name)
->label(trans('profile.' . ($unlink ? 'unlink' : 'link'), ['name' => $name]))
->icon($unlink ? 'tabler-unlink' : 'tabler-link')
->color(Color::generateV3Palette($schema->getHexColor()))
->color(Color::hex($schema->getHexColor()))
->action(function (UserUpdateService $updateService) use ($id, $name, $unlink) {
if ($unlink) {
$oauth = auth()->user()->oauth;
@ -232,7 +234,7 @@ class EditProfile extends BaseEditProfile
Action::make('create')
->label(trans('filament-actions::create.single.modal.actions.create.label'))
->disabled(fn (Get $get) => empty($get('description')))
->successRedirectUrl(self::getUrl(['tab' => '-api-keys-tab'], panel: 'app'))
->successRedirectUrl(self::getUrl(['tab' => 'api-keys::data::tab'], panel: 'app'))
->action(function (Get $get, Action $action, User $user) {
$token = $user->createToken(
$get('description'),
@ -315,7 +317,7 @@ class EditProfile extends BaseEditProfile
Action::make('create')
->label(trans('filament-actions::create.single.modal.actions.create.label'))
->disabled(fn (Get $get) => empty($get('name')) || empty($get('public_key')))
->successRedirectUrl(self::getUrl(['tab' => '-ssh-keys-tab'], panel: 'app'))
->successRedirectUrl(self::getUrl(['tab' => 'ssh-keys::data::tab'], panel: 'app'))
->action(function (Get $get, Action $action, User $user, KeyCreationService $service) {
try {
$sshKey = $service->handle($user, $get('name'), $get('public_key'));
@ -422,11 +424,11 @@ class EditProfile extends BaseEditProfile
ToggleButtons::make('top_navigation')
->label(trans('profile.navigation'))
->inline()
->required()
->options([
true => trans('profile.top'),
false => trans('profile.side'),
]),
1 => trans('profile.top'),
0 => trans('profile.side'),
])
->stateCast(new BooleanStateCast(false, true)),
]),
Section::make(trans('profile.console'))
->collapsible()
@ -501,8 +503,7 @@ class EditProfile extends BaseEditProfile
TextInput::make('console_graph_period')
->label(trans('profile.graph_period'))
->suffix(trans('profile.seconds'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('profile.graph_period_helper'))
->hintIcon('tabler-question-mark', trans('profile.graph_period_helper'))
->columnSpan(2)
->numeric()
->default(30)
@ -562,11 +563,11 @@ class EditProfile extends BaseEditProfile
protected function mutateFormDataBeforeFill(array $data): array
{
$data['console_font'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleFont);
$data['console_font_size'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleFontSize);
$data['console_rows'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleRows);
$data['console_graph_period'] = $this->getUser()->getCustomization(CustomizationKey::ConsoleGraphPeriod);
$data['console_font_size'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleFontSize);
$data['console_rows'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleRows);
$data['console_graph_period'] = (int) $this->getUser()->getCustomization(CustomizationKey::ConsoleGraphPeriod);
$data['dashboard_layout'] = $this->getUser()->getCustomization(CustomizationKey::DashboardLayout);
$data['top_navigation'] = $this->getUser()->getCustomization(CustomizationKey::TopNavigation);
$data['top_navigation'] = (bool) $this->getUser()->getCustomization(CustomizationKey::TopNavigation);
return $data;
}

View File

@ -35,7 +35,8 @@ class Login extends BaseLogin
];
if ($captchaComponent = $this->getCaptchaComponent()) {
$components[] = $captchaComponent;
$components[] = $captchaComponent
->hidden(fn () => filled($this->userUndertakingMultiFactorAuthentication));
}
return $schema
@ -78,7 +79,7 @@ class Login extends BaseLogin
$actions[] = Action::make("oauth_$id")
->label($schema->getName())
->icon($schema->getIcon())
->color(Color::generateV3Palette($schema->getHexColor()))
->color(Color::hex($schema->getHexColor()))
->url(route('auth.oauth.redirect', ['driver' => $id], false));
}

View File

@ -50,7 +50,7 @@ class Settings extends ServerFormPage
])
->schema([
TextInput::make('name')
->label(trans('server/setting.server_info.server_name'))
->label(trans('server/setting.server_info.name'))
->disabled(fn (Server $server) => !auth()->user()->can(Permission::ACTION_SETTINGS_RENAME, $server))
->required()
->columnSpan([
@ -109,42 +109,42 @@ class Settings extends ServerFormPage
])
->schema([
TextInput::make('cpu')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.cpu'))
->prefixIcon('tabler-cpu')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : format_number($server->cpu) . '%'),
TextInput::make('memory')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.memory'))
->prefixIcon('tabler-device-desktop-analytics')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->memory * 2 ** 20)),
TextInput::make('disk')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.disk'))
->prefixIcon('tabler-device-sd-card')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/setting.server_info.limits.unlimited') : convert_bytes_to_readable($server->disk * 2 ** 20)),
TextInput::make('backup_limit')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.backups'))
->prefixIcon('tabler-file-zip')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/backup.empty') : $server->backups->count() . ' ' .trans('server/setting.server_info.limits.of', ['max' => $state])),
TextInput::make('database_limit')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.databases'))
->prefixIcon('tabler-database')
->columnSpan(1)
->disabled()
->formatStateUsing(fn ($state, Server $server) => !$state ? trans('server/database.empty') : $server->databases->count() . ' ' . trans('server/setting.server_info.limits.of', ['max' => $state])),
TextInput::make('allocation_limit')
->label('')
->hiddenLabel()
->prefix(trans('server/setting.server_info.limits.allocations'))
->prefixIcon('tabler-network')
->columnSpan(1)

View File

@ -86,7 +86,7 @@ class BackupResource extends Resource
TextInput::make('name')
->label(trans('server/backup.actions.create.name'))
->columnSpanFull(),
TextArea::make('ignored')
Textarea::make('ignored')
->label(trans('server/backup.actions.create.ignored'))
->columnSpanFull(),
Toggle::make('is_locked')

View File

@ -178,8 +178,7 @@ class DatabaseResource extends Resource
->label(trans('server/database.name'))
->columnSpan(1)
->prefix('s'. $server->id . '_')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('server/database.name_hint')),
->hintIcon('tabler-question-mark', trans('server/database.name_hint')),
TextInput::make('remote')
->label(trans('server/database.connections_from'))
->columnSpan(1)

View File

@ -25,6 +25,7 @@ use Filament\Panel;
use Filament\Resources\Pages\Page;
use Filament\Resources\Pages\PageRegistration;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Schema;
use Filament\Support\Enums\Alignment;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
@ -155,6 +156,7 @@ class EditFiles extends Page
}),
CodeEditor::make('editor')
->hiddenLabel()
->language(fn (Get $get) => $get('lang'))
->default(function () {
try {
return $this->getDaemonFileRepository()->getContent($this->path, config('panel.files.max_edit_size'));

View File

@ -86,10 +86,11 @@ class ListFiles extends ListRecords
$files = File::get($server, $this->path);
return $table
->paginated()
->paginated([25, 50, 100, 150, 200])
->paginationMode(PaginationMode::Simple)
->defaultPaginationPageOption(50)
->deferLoading()
->searchable()
->defaultPaginationPageOption(25)
->query(fn () => $files->orderByDesc('is_directory'))
->defaultSort('name')
->columns([
@ -333,7 +334,7 @@ class ListFiles extends ListRecords
])->iconSize(IconSize::Large),
DeleteAction::make()
->authorize(fn () => auth()->user()->can(Permission::ACTION_FILE_DELETE, $server))
->label('')
->hiddenLabel()
->icon('tabler-trash')->iconSize(IconSize::Large)
->requiresConfirmation()
->modalHeading(fn (File $file) => trans('filament-actions::delete.single.modal.heading', ['label' => $file->name . ' ' . ($file->is_directory ? 'folder' : 'file')]))
@ -433,7 +434,7 @@ class ListFiles extends ListRecords
$this->getDaemonFileRepository()->putContent($path, $data['editor'] ?? '');
Activity::event('server:file.write')
->property('file', join_paths($path, $data['name']))
->property('file', $path)
->log();
} catch (FileExistsException) {
AlertBanner::make('file_already_exists')

View File

@ -2,6 +2,7 @@
namespace App\Filament\Server\Resources\Schedules\Pages;
use App\Enums\ScheduleStatus;
use App\Facades\Activity;
use App\Filament\Server\Resources\Schedules\ScheduleResource;
use App\Models\Permission;
@ -27,11 +28,11 @@ class ViewSchedule extends ViewRecord
protected function getDefaultHeaderActions(): array
{
return [
Action::make('runNow')
Action::make('run_now')
->authorize(fn () => auth()->user()->can(Permission::ACTION_SCHEDULE_UPDATE, Filament::getTenant()))
->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->is_processing ? trans('server/schedule.processing') : trans('server/schedule.run_now')))
->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing ? 'warning' : 'primary')
->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->is_processing)
->label(fn (Schedule $schedule) => $schedule->tasks->count() === 0 ? trans('server/schedule.no_tasks') : ($schedule->status === ScheduleStatus::Processing ? ScheduleStatus::Processing->getLabel() : trans('server/schedule.run_now')))
->color(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing ? 'warning' : 'primary')
->disabled(fn (Schedule $schedule) => $schedule->tasks->count() === 0 || $schedule->status === ScheduleStatus::Processing)
->action(function (ProcessScheduleService $service, Schedule $schedule) {
$service->handle($schedule, true);

View File

@ -2,6 +2,7 @@
namespace App\Filament\Server\Resources\Schedules;
use App\Enums\ScheduleStatus;
use App\Filament\Components\Actions\ImportScheduleAction;
use App\Filament\Server\Resources\Schedules\Pages\ListSchedules;
use App\Filament\Server\Resources\Schedules\Pages\CreateSchedule;
@ -102,28 +103,21 @@ class ScheduleResource extends Resource
->required(),
Toggle::make('only_when_online')
->label(trans('server/schedule.only_online'))
->hintIconTooltip(trans('server/schedule.only_online_hint'))
->hintIcon('tabler-question-mark')
->hintIcon('tabler-question-mark', trans('server/schedule.only_online_hint'))
->inline(false)
->required()
->default(1),
Toggle::make('is_active')
->label(trans('server/schedule.enabled'))
->hintIconTooltip(trans('server/schedule.enabled_hint'))
->hintIcon('tabler-question-mark')
->hintIcon('tabler-question-mark', trans('server/schedule.enabled_hint'))
->inline(false)
->hiddenOn('view')
->required()
->default(1),
ToggleButtons::make('Status')
->formatStateUsing(fn (Schedule $schedule) => !$schedule->is_active ? 'inactive' : ($schedule->is_processing ? 'processing' : 'active'))
->options(fn (Schedule $schedule) => !$schedule->is_active ? ['inactive' => trans('server/schedule.inactive')] : ($schedule->is_processing ? ['processing' => trans('server/schedule.processing')] : ['active' => trans('server/schedule.active')]))
->colors([
'new' => 'primary',
'inactive' => 'danger',
'processing' => 'warning',
'active' => 'success',
])
ToggleButtons::make('status')
->enum(ScheduleStatus::class)
->formatStateUsing(fn (?Schedule $schedule) => $schedule?->status->value ?? 'new')
->options(fn (?Schedule $schedule) => [$schedule?->status->value ?? 'new' => $schedule?->status->getLabel() ?? 'New'])
->visibleOn('view'),
Section::make('Cron')
->label(trans('server/schedule.cron'))
@ -162,7 +156,7 @@ class ScheduleResource extends Resource
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
->schema([
TextInput::make('x')
->label('')
->hiddenLabel()
->numeric()
->minValue(1)
->maxValue(60)
@ -184,7 +178,7 @@ class ScheduleResource extends Resource
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
->schema([
TextInput::make('x')
->label('')
->hiddenLabel()
->numeric()
->minValue(1)
->maxValue(24)
@ -206,7 +200,7 @@ class ScheduleResource extends Resource
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
->schema([
TextInput::make('x')
->label('')
->hiddenLabel()
->numeric()
->minValue(1)
->maxValue(24)
@ -228,7 +222,7 @@ class ScheduleResource extends Resource
&& $get('cron_day_of_week') == '*' ? 'success' : 'primary')
->schema([
TextInput::make('x')
->label('')
->hiddenLabel()
->numeric()
->minValue(1)
->maxValue(24)
@ -250,7 +244,7 @@ class ScheduleResource extends Resource
&& $get('cron_day_of_week') != '*' ? 'success' : 'primary')
->schema([
Select::make('x')
->label('')
->hiddenLabel()
->prefix(trans('server/schedule.time.every'))
->options([
'1' => trans('server/schedule.time.monday'),
@ -344,7 +338,9 @@ class ScheduleResource extends Resource
->state(fn (Schedule $schedule) => $schedule->cron_minute . ' ' . $schedule->cron_hour . ' ' . $schedule->cron_day_of_month . ' ' . $schedule->cron_month . ' ' . $schedule->cron_day_of_week),
TextColumn::make('status')
->label(trans('server/schedule.status'))
->state(fn (Schedule $schedule) => !$schedule->is_active ? trans('server/schedule.inactive') : ($schedule->is_processing ? trans('server/schedule.processing') : trans('server/schedule.active'))),
->state(fn (Schedule $schedule) => $schedule->status->getLabel())
->color(fn (Schedule $schedule) => $schedule->status->getColor())
->badge(),
IconColumn::make('only_when_online')
->label(trans('server/schedule.online_only'))
->boolean()
@ -359,7 +355,7 @@ class ScheduleResource extends Resource
->placeholder(trans('server/schedule.never'))
->since()
->sortable()
->state(fn (Schedule $schedule) => $schedule->is_active ? $schedule->next_run_at : null),
->state(fn (Schedule $schedule) => $schedule->status === ScheduleStatus::Active ? $schedule->next_run_at : null),
])
->recordActions([
ViewAction::make(),

View File

@ -109,7 +109,7 @@ class UserResource extends Resource
->icon($data['icon'])
->schema([
CheckboxList::make($data['name'])
->label('')
->hiddenLabel()
->bulkToggleable()
->columns(2)
->options($options)

View File

@ -58,7 +58,7 @@ class OAuthController extends Controller
if ($request->user()) {
$this->linkUser($request->user(), $driver, $oauthUser);
return redirect(EditProfile::getUrl(['tab' => '-oauth-tab'], panel: 'app'));
return redirect(EditProfile::getUrl(['tab' => 'oauth::data::tab'], panel: 'app'));
}
$user = User::whereJsonContains('oauth->'. $driver->getId(), $oauthUser->getId())->first();

View File

@ -29,8 +29,7 @@ class CacheStep
->schema([
ToggleButtons::make('env_cache.CACHE_STORE')
->label(trans('installer.cache.driver'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.cache.driver_help'))
->hintIcon('tabler-question-mark', trans('installer.cache.driver_help'))
->required()
->inline()
->options(self::CACHE_DRIVERS)
@ -52,29 +51,25 @@ class CacheStep
TextInput::make('env_cache.REDIS_HOST')
->label(trans('installer.cache.fields.host'))
->placeholder('127.0.0.1')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.cache.fields.host_help'))
->hintIcon('tabler-question-mark', trans('installer.cache.fields.host_help'))
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.host') : null)
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
TextInput::make('env_cache.REDIS_PORT')
->label(trans('installer.cache.fields.port'))
->placeholder('6379')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.cache.fields.port_help'))
->hintIcon('tabler-question-mark', trans('installer.cache.fields.port_help'))
->required(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis')
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.port') : null)
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
TextInput::make('env_cache.REDIS_USERNAME')
->label(trans('installer.cache.fields.username'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.cache.fields.username_help'))
->hintIcon('tabler-question-mark', trans('installer.cache.fields.username_help'))
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.username') : null)
->visible(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis'),
TextInput::make('env_cache.REDIS_PASSWORD')
->label(trans('installer.cache.fields.password'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.cache.fields.password_help'))
->hintIcon('tabler-question-mark', trans('installer.cache.fields.password_help'))
->password()
->revealable()
->default(fn (Get $get) => $get('env_cache.CACHE_STORE') === 'redis' ? config('database.redis.default.password') : null)

View File

@ -30,8 +30,7 @@ class DatabaseStep
->schema([
ToggleButtons::make('env_database.DB_CONNECTION')
->label(trans('installer.database.driver'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.database.driver_help'))
->hintIcon('tabler-question-mark', trans('installer.database.driver_help'))
->required()
->inline()
->options(self::DATABASE_DRIVERS)
@ -63,22 +62,19 @@ class DatabaseStep
TextInput::make('env_database.DB_DATABASE')
->label(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path') : trans('installer.database.fields.name'))
->placeholder(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? 'database.sqlite' : 'panel')
->hintIcon('tabler-question-mark')
->hintIconTooltip(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help'))
->hintIcon('tabler-question-mark', fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite' ? trans('installer.database.fields.path_help') : trans('installer.database.fields.name_help'))
->required()
->default('database.sqlite'),
TextInput::make('env_database.DB_HOST')
->label(trans('installer.database.fields.host'))
->placeholder('127.0.0.1')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.database.fields.host_help'))
->hintIcon('tabler-question-mark', trans('installer.database.fields.host_help'))
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
TextInput::make('env_database.DB_PORT')
->label(trans('installer.database.fields.port'))
->placeholder('3306')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.database.fields.port_help'))
->hintIcon('tabler-question-mark', trans('installer.database.fields.port_help'))
->numeric()
->minValue(1)
->maxValue(65535)
@ -87,14 +83,12 @@ class DatabaseStep
TextInput::make('env_database.DB_USERNAME')
->label(trans('installer.database.fields.username'))
->placeholder('pelican')
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.database.fields.username_help'))
->hintIcon('tabler-question-mark', trans('installer.database.fields.username_help'))
->required(fn (Get $get) => $get('env_database.DB_CONNECTION') !== 'sqlite')
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),
TextInput::make('env_database.DB_PASSWORD')
->label(trans('installer.database.fields.password'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.database.fields.password_help'))
->hintIcon('tabler-question-mark', trans('installer.database.fields.password_help'))
->password()
->revealable()
->hidden(fn (Get $get) => $get('env_database.DB_CONNECTION') === 'sqlite'),

View File

@ -17,14 +17,12 @@ class EnvironmentStep
->schema([
TextInput::make('env_general.APP_NAME')
->label(trans('installer.environment.fields.app_name'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.environment.fields.app_name_help'))
->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_name_help'))
->required()
->default(config('app.name')),
TextInput::make('env_general.APP_URL')
->label(trans('installer.environment.fields.app_url'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.environment.fields.app_url_help'))
->hintIcon('tabler-question-mark', trans('installer.environment.fields.app_url_help'))
->required()
->default(url('')),
Fieldset::make('admin_user')

View File

@ -30,8 +30,7 @@ class QueueStep
->schema([
ToggleButtons::make('env_queue.QUEUE_CONNECTION')
->label(trans('installer.queue.driver'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.queue.driver_help'))
->hintIcon('tabler-question-mark', trans('installer.queue.driver_help'))
->required()
->inline()
->options(self::QUEUE_DRIVERS)

View File

@ -23,8 +23,7 @@ class SessionStep
->schema([
ToggleButtons::make('env_session.SESSION_DRIVER')
->label(trans('installer.session.driver'))
->hintIcon('tabler-question-mark')
->hintIconTooltip(trans('installer.session.driver_help'))
->hintIcon('tabler-question-mark', trans('installer.session.driver_help'))
->required()
->inline()
->options(self::SESSION_DRIVERS)

View File

@ -92,7 +92,7 @@ class ActivityLog extends Model implements HasIcon, HasLabel
public function actor(): MorphTo
{
return $this->morphTo()->withTrashed();
return $this->morphTo()->withTrashed()->withoutGlobalScopes();
}
/**

View File

@ -6,8 +6,10 @@ use Carbon\Carbon;
use Illuminate\Support\Collection;
use Exception;
use App\Contracts\Validatable;
use App\Enums\ScheduleStatus;
use App\Helpers\Utilities;
use App\Traits\HasValidation;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
@ -27,6 +29,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
* @property bool $only_when_online
* @property Carbon|null $last_run_at
* @property Carbon|null $next_run_at
* @property ScheduleStatus $status
* @property Carbon $created_at
* @property Carbon $updated_at
* @property Server $server
@ -107,6 +110,13 @@ class Schedule extends Model implements Validatable
];
}
protected function status(): Attribute
{
return Attribute::make(
get: fn () => !$this->is_active ? ScheduleStatus::Inactive : ($this->is_processing ? ScheduleStatus::Processing : ScheduleStatus::Active),
);
}
/**
* Returns the schedule's execution crontab entry as a string.
*

View File

@ -111,7 +111,7 @@ class AppServiceProvider extends ServiceProvider
'primary' => Color::Blue,
'success' => Color::Green,
'warning' => Color::Amber,
'blurple' => Color::generateV3Palette('#5865F2'),
'blurple' => Color::hex('#5865F2'),
]);
FilamentView::registerRenderHook(

View File

@ -16,7 +16,7 @@ class AdminPanelProvider extends PanelProvider
->path('admin')
->homeUrl('/')
->breadcrumbs(false)
->sidebarCollapsibleOnDesktop()
->sidebarCollapsibleOnDesktop(fn () => !$panel->hasTopNavigation())
->userMenuItems([
Action::make('exit_admin')
->label(fn () => trans('profile.exit_admin'))

View File

@ -12,7 +12,6 @@
"aws/aws-sdk-php": "^3.351",
"calebporzio/sushi": "^2.5",
"dedoc/scramble": "^0.12.10",
"doctrine/dbal": "~3.6.0",
"filament/filament": "~4.0",
"guzzlehttp/guzzle": "^7.9",
"laravel/framework": "^12.23",

522
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "09abbfbce5021c591de46868e3abfc3f",
"content-hash": "179b8bb70681716cab28fac53ba87943",
"packages": [
{
"name": "amphp/amp",
@ -936,16 +936,16 @@
},
{
"name": "aws/aws-sdk-php",
"version": "3.356.12",
"version": "3.356.17",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
"reference": "0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3"
"reference": "d0357fbe2535bb7d832e594a4ff2ff8da29d229c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3",
"reference": "0068088fed44e2bed3a2e82f2c7a0bb9e356b3c3",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d0357fbe2535bb7d832e594a4ff2ff8da29d229c",
"reference": "d0357fbe2535bb7d832e594a4ff2ff8da29d229c",
"shasum": ""
},
"require": {
@ -958,7 +958,7 @@
"guzzlehttp/psr7": "^2.4.5",
"mtdowling/jmespath.php": "^2.8.0",
"php": ">=8.1",
"psr/http-message": "^2.0"
"psr/http-message": "^1.0 || ^2.0"
},
"require-dev": {
"andrewsville/php-token-reflection": "^1.4",
@ -1027,9 +1027,9 @@
"support": {
"forum": "https://github.com/aws/aws-sdk-php/discussions",
"issues": "https://github.com/aws/aws-sdk-php/issues",
"source": "https://github.com/aws/aws-sdk-php/tree/3.356.12"
"source": "https://github.com/aws/aws-sdk-php/tree/3.356.17"
},
"time": "2025-09-05T18:10:41+00:00"
"time": "2025-09-12T18:07:37+00:00"
},
{
"name": "blade-ui-kit/blade-heroicons",
@ -1297,26 +1297,26 @@
},
{
"name": "carbonphp/carbon-doctrine-types",
"version": "1.0.0",
"version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
"reference": "3c430083d0b41ceed84ecccf9dac613241d7305d"
"reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/3c430083d0b41ceed84ecccf9dac613241d7305d",
"reference": "3c430083d0b41ceed84ecccf9dac613241d7305d",
"url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
"reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
"shasum": ""
},
"require": {
"php": "^7.1.8 || ^8.0"
"php": "^8.1"
},
"conflict": {
"doctrine/dbal": ">=3.7.0"
"doctrine/dbal": "<4.0.0 || >=5.0.0"
},
"require-dev": {
"doctrine/dbal": ">=2.0.0",
"doctrine/dbal": "^4.0.0",
"nesbot/carbon": "^2.71.0 || ^3.0.0",
"phpunit/phpunit": "^10.3"
},
@ -1346,7 +1346,7 @@
],
"support": {
"issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
"source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/1.0.0"
"source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
},
"funding": [
{
@ -1362,7 +1362,7 @@
"type": "tidelift"
}
],
"time": "2023-10-01T12:35:29+00:00"
"time": "2024-02-09T16:56:22+00:00"
},
{
"name": "chillerlan/php-qrcode",
@ -1674,16 +1674,16 @@
},
{
"name": "dedoc/scramble",
"version": "v0.12.31",
"version": "v0.12.34",
"source": {
"type": "git",
"url": "https://github.com/dedoc/scramble.git",
"reference": "ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071"
"reference": "fdedbaac3271b466182d4029651aa90eac53cee5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071",
"reference": "ff8fd4295ccf9d9e4dcea98a193e13f9acd1f071",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/fdedbaac3271b466182d4029651aa90eac53cee5",
"reference": "fdedbaac3271b466182d4029651aa90eac53cee5",
"shasum": ""
},
"require": {
@ -1742,7 +1742,7 @@
],
"support": {
"issues": "https://github.com/dedoc/scramble/issues",
"source": "https://github.com/dedoc/scramble/tree/v0.12.31"
"source": "https://github.com/dedoc/scramble/tree/v0.12.34"
},
"funding": [
{
@ -1750,7 +1750,7 @@
"type": "github"
}
],
"time": "2025-08-24T11:19:04+00:00"
"time": "2025-09-09T14:36:44+00:00"
},
{
"name": "dflydev/dot-access-data",
@ -1827,212 +1827,6 @@
},
"time": "2024-07-08T12:26:09+00:00"
},
{
"name": "doctrine/cache",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/coding-standard": "^9",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/cache": "^1.0 || ^2.0 || ^3.0",
"symfony/cache": "^4.4 || ^5.4 || ^6",
"symfony/var-exporter": "^4.4 || ^5.4 || ^6"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"xcache"
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
"source": "https://github.com/doctrine/cache/tree/2.2.0"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
"type": "tidelift"
}
],
"time": "2022-05-20T20:07:39+00:00"
},
{
"name": "doctrine/dbal",
"version": "3.6.7",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "8e0e268052b4a8974cb00215bb2892787021614f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/8e0e268052b4a8974cb00215bb2892787021614f",
"reference": "8e0e268052b4a8974cb00215bb2892787021614f",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3|^1",
"doctrine/event-manager": "^1|^2",
"php": "^7.4 || ^8.0",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
"phpstan/phpstan": "1.10.34",
"phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.12",
"psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.7.2",
"symfony/cache": "^5.4|^6.0",
"symfony/console": "^4.4|^5.4|^6.0",
"vimeo/psalm": "4.30.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlite",
"sqlserver",
"sqlsrv"
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.6.7"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
"type": "tidelift"
}
],
"time": "2023-09-19T20:15:41+00:00"
},
{
"name": "doctrine/deprecations",
"version": "1.1.5",
@ -2081,97 +1875,6 @@
},
"time": "2025-04-07T20:06:18+00:00"
},
{
"name": "doctrine/event-manager",
"version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
"reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
"doctrine/coding-standard": "^12",
"phpstan/phpstan": "^1.8.8",
"phpunit/phpunit": "^10.5",
"vimeo/psalm": "^5.24"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
"source": "https://github.com/doctrine/event-manager/tree/2.0.1"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
"type": "tidelift"
}
],
"time": "2024-05-22T20:47:39+00:00"
},
{
"name": "doctrine/inflector",
"version": "2.1.0",
@ -2473,16 +2176,16 @@
},
{
"name": "filament/actions",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/actions.git",
"reference": "aad259842f1888602130cc78d989aa2250149c6b"
"reference": "fd48fa35095a2b5bb0d5264bd132c36a2adc6b09"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/actions/zipball/aad259842f1888602130cc78d989aa2250149c6b",
"reference": "aad259842f1888602130cc78d989aa2250149c6b",
"url": "https://api.github.com/repos/filamentphp/actions/zipball/fd48fa35095a2b5bb0d5264bd132c36a2adc6b09",
"reference": "fd48fa35095a2b5bb0d5264bd132c36a2adc6b09",
"shasum": ""
},
"require": {
@ -2518,20 +2221,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:06+00:00"
"time": "2025-09-15T11:16:33+00:00"
},
{
"name": "filament/filament",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/panels.git",
"reference": "0c697fbeb399d2655ad7dc55f8827e72ba25e438"
"reference": "18bb60f075a76147e7397b34011160e36fa1e948"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/panels/zipball/0c697fbeb399d2655ad7dc55f8827e72ba25e438",
"reference": "0c697fbeb399d2655ad7dc55f8827e72ba25e438",
"url": "https://api.github.com/repos/filamentphp/panels/zipball/18bb60f075a76147e7397b34011160e36fa1e948",
"reference": "18bb60f075a76147e7397b34011160e36fa1e948",
"shasum": ""
},
"require": {
@ -2575,20 +2278,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:10+00:00"
"time": "2025-09-15T11:16:32+00:00"
},
{
"name": "filament/forms",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/forms.git",
"reference": "d6be629b717861d14c7f603f416dde9d25a4f4d0"
"reference": "6ac60ebf4321944bbfba91b23c138201986a71b8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/forms/zipball/d6be629b717861d14c7f603f416dde9d25a4f4d0",
"reference": "d6be629b717861d14c7f603f416dde9d25a4f4d0",
"url": "https://api.github.com/repos/filamentphp/forms/zipball/6ac60ebf4321944bbfba91b23c138201986a71b8",
"reference": "6ac60ebf4321944bbfba91b23c138201986a71b8",
"shasum": ""
},
"require": {
@ -2625,20 +2328,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:05+00:00"
"time": "2025-09-15T12:50:58+00:00"
},
{
"name": "filament/infolists",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/infolists.git",
"reference": "050bd1423579be7fcc76bdcd06448c61ab787d23"
"reference": "881bc4899d87604ffb49ff3611685f520658d469"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/infolists/zipball/050bd1423579be7fcc76bdcd06448c61ab787d23",
"reference": "050bd1423579be7fcc76bdcd06448c61ab787d23",
"url": "https://api.github.com/repos/filamentphp/infolists/zipball/881bc4899d87604ffb49ff3611685f520658d469",
"reference": "881bc4899d87604ffb49ff3611685f520658d469",
"shasum": ""
},
"require": {
@ -2670,20 +2373,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:04+00:00"
"time": "2025-09-11T14:01:29+00:00"
},
{
"name": "filament/notifications",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/notifications.git",
"reference": "8dac65801cb62eb291a06617f56c81d4e9740ad3"
"reference": "c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/notifications/zipball/8dac65801cb62eb291a06617f56c81d4e9740ad3",
"reference": "8dac65801cb62eb291a06617f56c81d4e9740ad3",
"url": "https://api.github.com/repos/filamentphp/notifications/zipball/c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb",
"reference": "c4792d807c37a2e7640ad7ad9b189fc3e09b3dcb",
"shasum": ""
},
"require": {
@ -2717,20 +2420,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:09+00:00"
"time": "2025-09-09T20:21:33+00:00"
},
{
"name": "filament/schemas",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/schemas.git",
"reference": "20b97f2850dc90a605e1b754ddad7fcdacd00dbc"
"reference": "a54e9f3386eaba867dfb1274685392ccc86fb620"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/20b97f2850dc90a605e1b754ddad7fcdacd00dbc",
"reference": "20b97f2850dc90a605e1b754ddad7fcdacd00dbc",
"url": "https://api.github.com/repos/filamentphp/schemas/zipball/a54e9f3386eaba867dfb1274685392ccc86fb620",
"reference": "a54e9f3386eaba867dfb1274685392ccc86fb620",
"shasum": ""
},
"require": {
@ -2762,20 +2465,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:03+00:00"
"time": "2025-09-15T11:19:20+00:00"
},
{
"name": "filament/support",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/support.git",
"reference": "65c9039bdc005326325c8702d9ff92e65f2fe88d"
"reference": "93a25877d8ee4663132fd3df297f78352e212049"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/support/zipball/65c9039bdc005326325c8702d9ff92e65f2fe88d",
"reference": "65c9039bdc005326325c8702d9ff92e65f2fe88d",
"url": "https://api.github.com/repos/filamentphp/support/zipball/93a25877d8ee4663132fd3df297f78352e212049",
"reference": "93a25877d8ee4663132fd3df297f78352e212049",
"shasum": ""
},
"require": {
@ -2820,20 +2523,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:25+00:00"
"time": "2025-09-15T11:16:50+00:00"
},
{
"name": "filament/tables",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/tables.git",
"reference": "a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a"
"reference": "dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/tables/zipball/a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a",
"reference": "a8582dfdea9e198a1b0bbd3ba4e1881f62e3bd1a",
"url": "https://api.github.com/repos/filamentphp/tables/zipball/dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4",
"reference": "dfd85c5bad70f0819a44f14ee2d1a6a3da442cc4",
"shasum": ""
},
"require": {
@ -2865,20 +2568,20 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-07T19:30:25+00:00"
"time": "2025-09-15T11:19:39+00:00"
},
{
"name": "filament/widgets",
"version": "v4.0.8",
"version": "v4.0.15",
"source": {
"type": "git",
"url": "https://github.com/filamentphp/widgets.git",
"reference": "f761a52df367f8bde47d9d2518c3c0b646155345"
"reference": "35e245262210a944a1a1707fb0ec9857362f527e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/filamentphp/widgets/zipball/f761a52df367f8bde47d9d2518c3c0b646155345",
"reference": "f761a52df367f8bde47d9d2518c3c0b646155345",
"url": "https://api.github.com/repos/filamentphp/widgets/zipball/35e245262210a944a1a1707fb0ec9857362f527e",
"reference": "35e245262210a944a1a1707fb0ec9857362f527e",
"shasum": ""
},
"require": {
@ -2909,7 +2612,7 @@
"issues": "https://github.com/filamentphp/filament/issues",
"source": "https://github.com/filamentphp/filament"
},
"time": "2025-09-04T14:12:52+00:00"
"time": "2025-09-12T09:56:30+00:00"
},
{
"name": "firebase/php-jwt",
@ -4564,16 +4267,16 @@
},
{
"name": "league/csv",
"version": "9.24.1",
"version": "9.25.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/csv.git",
"reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8"
"reference": "f856f532866369fb1debe4e7c5a1db185f40ef86"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/e0221a3f16aa2a823047d59fab5809d552e29bc8",
"reference": "e0221a3f16aa2a823047d59fab5809d552e29bc8",
"url": "https://api.github.com/repos/thephpleague/csv/zipball/f856f532866369fb1debe4e7c5a1db185f40ef86",
"reference": "f856f532866369fb1debe4e7c5a1db185f40ef86",
"shasum": ""
},
"require": {
@ -4589,7 +4292,7 @@
"phpstan/phpstan-deprecation-rules": "^1.2.1",
"phpstan/phpstan-phpunit": "^1.4.2",
"phpstan/phpstan-strict-rules": "^1.6.2",
"phpunit/phpunit": "^10.5.16 || ^11.5.22",
"phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.3.6",
"symfony/var-dumper": "^6.4.8 || ^7.3.0"
},
"suggest": {
@ -4651,7 +4354,7 @@
"type": "github"
}
],
"time": "2025-06-25T14:53:51+00:00"
"time": "2025-09-11T08:29:08+00:00"
},
{
"name": "league/flysystem",
@ -7061,55 +6764,6 @@
],
"time": "2025-04-30T15:16:02+00:00"
},
{
"name": "psr/cache",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"support": {
"source": "https://github.com/php-fig/cache/tree/3.0.0"
},
"time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
@ -13326,16 +12980,16 @@
},
{
"name": "larastan/larastan",
"version": "v3.6.1",
"version": "v3.7.1",
"source": {
"type": "git",
"url": "https://github.com/larastan/larastan.git",
"reference": "3c223047e374befd1b64959784685d6ecccf66aa"
"reference": "2e653fd19585a825e283b42f38378b21ae481cc7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/larastan/larastan/zipball/3c223047e374befd1b64959784685d6ecccf66aa",
"reference": "3c223047e374befd1b64959784685d6ecccf66aa",
"url": "https://api.github.com/repos/larastan/larastan/zipball/2e653fd19585a825e283b42f38378b21ae481cc7",
"reference": "2e653fd19585a825e283b42f38378b21ae481cc7",
"shasum": ""
},
"require": {
@ -13349,7 +13003,7 @@
"illuminate/pipeline": "^11.44.2 || ^12.4.1",
"illuminate/support": "^11.44.2 || ^12.4.1",
"php": "^8.2",
"phpstan/phpstan": "^2.1.11"
"phpstan/phpstan": "^2.1.23"
},
"require-dev": {
"doctrine/coding-standard": "^13",
@ -13403,7 +13057,7 @@
],
"support": {
"issues": "https://github.com/larastan/larastan/issues",
"source": "https://github.com/larastan/larastan/tree/v3.6.1"
"source": "https://github.com/larastan/larastan/tree/v3.7.1"
},
"funding": [
{
@ -13411,7 +13065,7 @@
"type": "github"
}
],
"time": "2025-08-25T07:24:56+00:00"
"time": "2025-09-10T19:42:11+00:00"
},
{
"name": "laravel/pail",
@ -14381,16 +14035,16 @@
},
{
"name": "phpstan/phpstan",
"version": "2.1.22",
"version": "2.1.25",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
"reference": "4087d28bd252895874e174d65e26b2c202ed893a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
"reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/4087d28bd252895874e174d65e26b2c202ed893a",
"reference": "4087d28bd252895874e174d65e26b2c202ed893a",
"shasum": ""
},
"require": {
@ -14435,7 +14089,7 @@
"type": "github"
}
],
"time": "2025-08-04T19:17:37+00:00"
"time": "2025-09-12T14:26:42+00:00"
},
{
"name": "phpunit/php-code-coverage",
@ -16400,7 +16054,7 @@
],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"stability-flags": {},
"prefer-stable": true,
"prefer-lowest": false,
"platform": {
@ -16411,7 +16065,7 @@
"ext-pdo": "*",
"ext-zip": "*"
},
"platform-dev": [],
"platform-dev": {},
"platform-overrides": {
"php": "8.2"
},

View File

@ -1,6 +1,5 @@
<?php
use App\Models\User;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@ -18,16 +17,6 @@ return new class extends Migration
$table->boolean('mfa_email_enabled')->default(false);
});
User::chunk(100, function ($users) {
foreach ($users as $user) {
$user->update([
'mfa_app_secret' => $user->use_totp ? $user->totp_secret : null,
'mfa_app_recovery_codes' => null,
'mfa_email_enabled' => false,
]);
}
});
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('use_totp');
$table->dropColumn('totp_secret');

View File

@ -5,7 +5,6 @@ return [
'model_label' => 'Database Host',
'model_label_plural' => 'Database Hosts',
'table' => [
'select_placeholder' => 'Select Database Host',
'database' => 'Database',
'name' => 'Name',
'host' => 'Host',

View File

@ -11,9 +11,11 @@ return [
'name' => 'Name',
'cron' => 'Cron',
'status' => 'Status',
'schedule_status' => [
'inactive' => 'Inactive',
'processing' => 'Processing',
'active' => 'Active',
],
'no_tasks' => 'No Tasks',
'run_now' => 'Run Now',
'online_only' => 'Only When Online',

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long