Skip to content

v3.0: Livewire 4 migration and optional passkeys#205

Closed
produktive wants to merge 23 commits into
thedevdojo:mainfrom
produktive:livewire-4-passkeys
Closed

v3.0: Livewire 4 migration and optional passkeys#205
produktive wants to merge 23 commits into
thedevdojo:mainfrom
produktive:livewire-4-passkeys

Conversation

@produktive

@produktive produktive commented Jul 13, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Migrates all authentication pages from Volt/Folio to Livewire 4 single-file components registered via Livewire::addLocation().
  • Drops livewire/volt and laravel/folio as package dependencies.
  • Adds optional passkey sign-in via laravel/passkeys, including /auth/setup/passkeys and an enable_passkeys setting.
  • Fixes the auth setup preview modal stacking so it renders above the settings panel.
  • Adds UPGRADE.md with a v2.x → v3.0 migration guide, including Livewire 4 event handler syntax.
  • Fixes CI test autoloading for Tests\DuskTestCase and adds CreatesApplication for the Laravel app test harness.

Breaking changes

  • Requires Livewire 4 (^4.0)
  • Requires PHP 8.2+
  • Supports Laravel 12 and 13
  • Auth pages are now Livewire 4 SFCs instead of Volt/Folio pages
  • Published auth assets must be republished after upgrading (php artisan vendor:publish --tag=auth:assets --force)
  • Customized setup pages must replace $el.checked / $el.value with $event.target.checked / $event.target.value in wire:change and wire:blur handlers

Livewire 4 notes for consuming apps

Package setup pages already use the correct syntax. If you override auth setup pages, update event handlers:

wire:change="update('key', $event.target.checked)"
wire:blur="update('key', $event.target.value)"

Alpine $el references inside x-data blocks are unchanged.

Test plan

  • vendor/bin/pint --test
  • vendor/bin/phpstan analyse
  • CI authentication tests pass on PHP 8.2–8.5
  • Dusk tests pass
  • Fresh install: composer require devdojo/auth:@dev, publish assets/config/migrations, migrate
  • Auth routes work: login, register, password reset, two-factor challenge
  • /auth/setup loads, toggles show active state, preview modal opens in front of settings
  • Passkeys can be enabled at /auth/setup/passkeys and sign-in button appears on login when enabled
  • Custom page overrides still work via Livewire::addLocation() in consuming apps

produktive and others added 6 commits July 13, 2026 11:40
Drop Volt and Folio in favor of Livewire 4 single-file page components,
require Livewire 4 and Laravel 12+, and add configurable passkey sign-in
with a dedicated /auth/setup/passkeys screen.

Co-authored-by: Cursor <[email protected]>
Fix setup preview stacking, add an upgrade guide, and clean up static analysis and code style so the Livewire 4 and passkeys branch is ready for review.

Co-authored-by: Cursor <[email protected]>
Register the Tests namespace for DuskTestCase, add CreatesApplication for the CI Laravel app harness, and expand the upgrade guide with $event.target migration notes.

Co-authored-by: Cursor <[email protected]>
Walk up from the package tests directory to find the consuming app's bootstrap/app.php in CI instead of assuming it lives beside the tests folder.

Co-authored-by: Cursor <[email protected]>
@produktive produktive closed this Jul 13, 2026
@produktive produktive reopened this Jul 18, 2026
@produktive
produktive marked this pull request as draft July 18, 2026 17:03
@produktive
produktive marked this pull request as ready for review July 18, 2026 18:24
@produktive produktive closed this Jul 23, 2026
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