keyagency/kai-personalize
A Laravel package for adding personalization to your application, helping you tailor content and experiences to individual users. Built around familiar Laravel conventions so you can deliver dynamic, user-specific results with minimal setup and configuration.
php artisan migrate. Start by reading config/kai.php (or the package's published config) and the service provider to see what is registered, scheduled, and exposed.php artisan kai:cleanup --days=30 --force and php artisan kai:cleanup-fingerprints --apply manually once, inspect the output, then move them into the scheduler.kai:cleanup-fingerprints --applykai:refresh-cache --allkai:cleanup --days=30 (invoked with --force)routes/console.php or the console kernel:
$schedule->command('kai:cleanup --days=30 --force')->daily();
$schedule->command('kai:cleanup-fingerprints --apply')->weekly();
Reserve the Settings → Tools tab for one-off runs or environments where shell access is unavailable.--force in non-interactive contexts. The new UI does this for kai:cleanup; any Artisan::call(), queued job, or scheduler entry you write must do the same or the command will wait for a confirmation that cannot arrive.kai:refresh-cache --all is a good post-deploy hook or manual step after data migrations; avoid putting it on a high-frequency schedule.$exit = Artisan::call('kai:cleanup', ['--days' => 30, '--force' => true]);
$output = Artisan::output();
Log both so scheduled runs are debuggable.--apply vs dry run. kai:cleanup-fingerprints is invoked with --apply in the UI; without it the command likely reports what it would delete. Do not assume a bare run has cleaned anything.--force is mandatory outside a terminal. The Tools tab handles this for kai:cleanup, but scheduler entries and Artisan::call() do not. A missing --force in a queued job is a classic silent hang.--all is dangerous on kai:cleanup. The UI deliberately fixes the argument to --days=30; if you add your own tooling, never expose a free-form argument or command string. The release's slug-plus-server-side-definition design is the pattern to copy.max_execution_time or proxy timeouts. For large datasets, run via the scheduler or CLI; the browser runner is best for modest, interactive cleanups.-v in staging, check the application log for the captured output, then test the Tools tab with a low-privilege account. If the tab is missing, check package discovery, the settings panel registration, and the permission gate before assuming a bug.How can I help you explore Laravel packages today?