nimuli/app
boban 308778b99d fix(bio): prevent duplicate slugs within same workspace
- Migration: add UNIQUE(workspace_id, slug) to bio_pages
  Old (subdomain_host, slug) unique allowed MySQL NULL bypass —
  two free-plan bios with NULL subdomain_host + same slug were not caught
- Edit::save(): validate slug uniqueness before update, dispatch toast on conflict
- Edit::save(): validate slug format (alphanumeric + dash/underscore, max 64)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 23:09:17 +02:00
..
Console/Commands fix(bio): plan-aware URL + plan-seeder + ulid→slug fix 2026-05-17 22:44:54 +02:00
Domains fix(bio): plan-aware URL + plan-seeder + ulid→slug fix 2026-05-17 22:44:54 +02:00
Http fix(bio): plan-aware URL + plan-seeder + ulid→slug fix 2026-05-17 22:44:54 +02:00
Listeners feat: QR wizard, UTM Builder, A/B variants, AI features, analytics URL filters 2026-05-16 15:14:19 +02:00
Livewire fix(bio): prevent duplicate slugs within same workspace 2026-05-17 23:09:17 +02:00
Models fix(quality): PHPStan level 6 compliance, Pint formatting 2026-05-16 08:28:10 +02:00
Providers feat(sidebar+profile+buttons): sidebar active state, 3-tab profile, consistent button variants 2026-05-16 15:14:04 +02:00
View/Components feat: initial Nimuli scaffold with Laravel 12, Livewire 3, Octane, Reverb, Docker 2026-05-15 23:51:57 +02:00
helpers.php fix: bio public /b/{slug} route + QR types + code cleanup 2026-05-16 16:41:05 +02:00