nimuli/app/Livewire/Pages
boban deb5f310a1 fix(bio): plan-aware URL + plan-seeder + ulid→slug fix
- Migration: add bio_pages_limit to plans, make limit cols nullable (agency=unlimited)
- PlanSeeder: 4 plans (free/pro/business/agency) with tier/features/bio_pages_limit
- workspaces:assign-default-plan command: assigns free plan to unassigned workspaces
- BioPage::publicUrl(): free=apex-path, pro+=subdomain, custom=custom-domain
  - Security: str_ends_with check uses '.'.$apex to prevent evilnimu.li bypass
- BioPage::shortPublicUrl(): URL without scheme for display
- PlanLimitsService: use bio_pages_limit column (was features['bio_pages']), null=unlimited
- BioPageController: fix $bio → $page variable (view expects $page)
- Bio index/edit views: use publicUrl()/shortPublicUrl(), not hardcoded ULID URLs
- Bio edit view: publicUrlBase/displayUrlBase from component (plan-aware prefix)
- Create-bio modal: plan-aware URL prefix display
- PlanFactory/WorkspaceFactory: free()/pro() states for tests
- Tests: PublicUrlTest (5 cases), Free404FixTest (3 cases)

Known pre-existing failure (not caused by this change):
- Tests\Feature\Auth\EmailVerificationTest::email can be verified

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-17 22:44:54 +02:00
..
Ai fix(ui): proper 3/4-arc spinner centered in button, honest AI prompt 2026-05-17 15:05:31 +02:00
Analytics fix(FIX-12): 10 bugs — AI workspace context, Alpine sidebar/theme, analytics clearFilters, link badge layout, slug suggest 2026-05-16 18:02:23 +02:00
Billing feat: vollständiges Nimuli-Frontend Phase 1 2026-05-16 10:52:52 +02:00
Bio fix(bio): plan-aware URL + plan-seeder + ulid→slug fix 2026-05-17 22:44:54 +02:00
Dashboard fix: bugs 1,4,5,7,8,9 — sidebar icon, theme button, copy-link, UTM computed, workspace context, theme sync 2026-05-16 17:30:44 +02:00
Domains feat: vollständiges Nimuli-Frontend Phase 1 2026-05-16 10:52:52 +02:00
Links fix: bugs 1,4,5,7,8,9 — sidebar icon, theme button, copy-link, UTM computed, workspace context, theme sync 2026-05-16 17:30:44 +02:00
Profile fix: bugs 1,4,5,7,8,9 — sidebar icon, theme button, copy-link, UTM computed, workspace context, theme sync 2026-05-16 17:30:44 +02:00
QrCodes fix(livewire): remove require_workspace() from action methods and render() 2026-05-17 15:21:15 +02:00
Settings fix(FIX-12): 10 bugs — AI workspace context, Alpine sidebar/theme, analytics clearFilters, link badge layout, slug suggest 2026-05-16 18:02:23 +02:00
Team fix(livewire): remove require_workspace() from action methods and render() 2026-05-17 15:21:15 +02:00