joelseneque/filament-help-requests
Filament plugin for submitting and managing help requests in your Laravel admin panel. Users can create support requests while admins review, track, and respond through dedicated Filament resources.
composer require joelseneque/filament-help-requests
php artisan vendor:publish --tag="help-requests-migrations"
php artisan vendor:publish --tag="help-requests-config" # optional, recommended
php artisan migrate
npm run build
app/Providers/Filament/AdminPanelProvider.php) alongside the other ->plugin(...) calls.config/help-requests.php) — it controls the storage disk and storage.max_files (default 5), and is the single place to tune upload behaviour.screenshots and replyScreenshots are Livewire array properties bound to wire:model with multiple. Treat them as array<int, TemporaryUploadedFile> in validation (screenshots.*), not a single file.storage.max_files screenshots. Reuse these actions in your own resource tables/actions rather than reimplementing upload handling.Livewire::test(HelpWidget::class)->set('screenshots', [UploadedFile::fake()->image('a.png')]) and assert the stored paths array. Update any test that set the old singular properties.screenshot and replyScreenshot are now screenshots and replyScreenshots and are arrays. Any subclassed widget, custom action, or test referencing the old names will fail — grep your codebase for both strings before deploying.add_screenshot_paths_to_help_requests_tables adds the paths column. Requests created pre-upgrade keep their single screenshot; don't assume the new column is populated for historical rows — normalise old single-path records when reading.storage.max_files will not exist in your copy. Add it explicitly, otherwise you'll silently fall back to the default of 5 and wonder why the key "isn't working".npm run build or php artisan optimize:clear produces stale JS and cached config/views — the most common "the new feature doesn't appear" report.storage.max_files on the server too (max: on the array, plus per-file image/mimes/max: size rules). Client-side limits are bypassable.livewire.temporary_file_upload limits and PHP upload_max_filesize / post_max_size — multi-image submissions hit these faster than the package's own max_files cap.How can I help you explore Laravel packages today?