Skip to content

Livewire 4: remove Folio and register theme pages explicitly#386

Open
produktive wants to merge 24 commits into
thedevdojo:mainfrom
produktive:refactor/livewire-4-remove-folio
Open

Livewire 4: remove Folio and register theme pages explicitly#386
produktive wants to merge 24 commits into
thedevdojo:mainfrom
produktive:refactor/livewire-4-remove-folio

Conversation

@produktive

@produktive produktive commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Upgrade Wave to Laravel 13, Livewire 4, and Filament 5
  • Remove Laravel Folio and register theme pages via explicit Route::livewire() in wave/routes/web.php
  • Add ThemesServiceProvider (no Folio) and Livewire::addLocation() for anchor theme pages
  • Migrate anchor theme pages from Folio bracket syntax to Livewire single-file components
  • Register Livewire media manager component
  • Add passkey / email verification migrations and auth config for the new auth package

Bundled fixes (included in this PR)

  • Subscribed middleware: redirect guests to login before checking subscription status
  • Public profile page: fix Livewire 4 layout so /profile/{username} renders for guests and authenticated users
  • Browser installer: restore and modernize for Laravel 13 / Herd; fix blade syntax and success screen copy
  • Account deletion settings: dark mode styling for warning and info boxes
  • Dark mode: cookie-based theme sync for server-rendered dark class support

Breaking changes

Major dependency upgrades

Package Current main This PR
Laravel ^12 ^13
Livewire ^3.6 ^4
Filament ^4 ^5
laravel/folio ^1.1 Removed

Theme / routing

  • Folio bracket page paths removed (e.g. pages/blog/[.Wave.Category-slug]/...)
  • Theme pages must live as Livewire SFCs under resources/themes/anchor/pages/
  • Apps must call Livewire::addLocation() in AppServiceProvider
  • FolioServiceProvider and VoltServiceProvider removed

Auth

  • Requires devdojo/auth with Livewire 4 + passkeys (thedevdojo/auth#207)
  • Temporarily resolves auth from produktive/auth (dev-main)
  • Sets "minimum-stability": "dev" until auth releases

Database

  • New migrations: passkeys table, email verification codes

Other

  • Large media manager UI rewrite
  • Rebuilt frontend/Filament/Livewire assets

Public URLs and route names are unchanged.

Upgrade guide

  1. composer update
  2. php artisan migrate
  3. Rename/migrate Folio theme pages to Livewire SFC structure
  4. Add Livewire::addLocation() + ThemesServiceProvider
  5. Publish/update config/passkeys.php and auth config
  6. Rebuild assets (npm run build)
  7. Run test suite

Related

Test plan

  • Fresh install + migrate + seed
  • Home, pricing, blog, changelog, profile routes
  • Settings pages (profile, security, subscription, api)
  • Billing checkout + Stripe webhooks
  • Admin media manager
  • Auth login/register/passkeys via devdojo/auth
  • Full Pest suite

produktive and others added 20 commits July 22, 2026 21:50
Remove Folio dependency and consume devdojo/auth from produktive fork until upstream auth passkeys merge.

Co-authored-by: Cursor <cursoragent@cursor.com>
Register theme pages via Wave routes, remove Folio bootstrapping, and add Livewire media manager component.

Co-authored-by: Cursor <cursoragent@cursor.com>
…app.

Adds ThemesServiceProvider without Folio and loads theme pages via Livewire::addLocation.

Co-authored-by: Cursor <cursoragent@cursor.com>
… components.

Converts blog, changelog, profile, settings, and related pages to Livewire 4 single-file components.

Co-authored-by: Cursor <cursoragent@cursor.com>
…t assets.

Includes passkey migrations, auth settings publish target, Filament v5 assets, and test updates for the new routing model.

Co-authored-by: Cursor <cursoragent@cursor.com>
Convert the anonymous Folio class to a named Livewire component and apply Pint formatting fixes across related files.

Co-authored-by: Cursor <cursoragent@cursor.com>
Persist theme preference in a cookie for server-rendered dark class support, extract theme sync into a shared partial, and update composer.lock plus published Filament assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
Restore public/composer with Herd-friendly PHP/Composer detection for Mac
and Windows launchers. Update install.blade.php to sync APP_URL from the
current request, generate app keys when missing, and align completion flow
with the modern Laravel 13 stack (Tailwind CDN, shared logo partial, safer
storage:link and composer cleanup).

Co-authored-by: Cursor <cursoragent@cursor.com>
Herd exposes php-fpm as PHP_BINARY in web requests. Resolve the CLI binary via Herd bin path, which php, and derived paths instead of running composer through php-fpm.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use dirname(PHP_BINARY)/php instead of Herd-specific CLI detection, matching the original thedevdojo/wave installer approach.

Co-authored-by: Cursor <cursoragent@cursor.com>
Blade @php blocks cannot declare imports; use fully qualified facades like upstream Wave.

Co-authored-by: Cursor <cursoragent@cursor.com>
Align warning, form, and info card colors with other settings pages so the deletion flow reads correctly in dark mode.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use plain alert divs instead of x-card for colored blocks, soften nested warning backgrounds, and align form field styling with activity/export pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use red-900/20 with a solid red-800 border so the nested alert reads clearly against the zinc card, matching the privacy settings info box pattern.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add dark:bg-red-950/30 so the alert background darkens with the rest of the settings UI instead of keeping bg-red-50 in both themes.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use dark:bg-zinc-900 instead of dark:bg-red-950/30 because the red utility was not present in the built CSS, so dark mode kept showing bg-red-50.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use dark:bg-red-950/30 for the semi-transparent red tint and rebuild assets so the utility is included in compiled CSS.

Co-authored-by: Cursor <cursoragent@cursor.com>
The emoji and original copy were dropped during the Laravel 13 installer modernization in 3bdb9cb.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use theme layout views instead of broken dynamic-component names so /profile/{username} renders for guests and authenticated users.

Co-authored-by: Cursor <cursoragent@cursor.com>
@produktive

Copy link
Copy Markdown
Contributor Author

To test:
git clone -b refactor/livewire-4-remove-folio https://github.com/produktive/wave.git
Visit http://wave.test in browser (if using Laravel Herd).

@produktive
produktive marked this pull request as ready for review July 24, 2026 17:05
produktive and others added 4 commits July 24, 2026 13:23
Add dark-mode styling across media manager views and remove the duplicate
Filament page wrapper that caused errors when Manager is embedded in admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
The media manager dark: utilities are scanned from wave Blade views into the
admin theme bundle; fresh installs need the compiled public/build output.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace inline primary color with theme-aware text classes so the link
matches the modal title on dark backgrounds.

Co-authored-by: Cursor <cursoragent@cursor.com>
Single-page theme components no longer use index folders, route names match
flat Livewire identifiers, theme-sync respects light-only marketing layouts,
and ChangelogTest cleans up only the records it creates.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant