- Removed unused `copyRelayUrl` and `copyWatchtowerUrl` methods in `Profile` Livewire component.
- Updated storage details in `association.profile` and `association.benefits` views with size and file limits.
- Enhanced `BenefitsTest` to validate new storage capacity information.
- Upgraded multiple packages, including `brick/math`, `guzzlehttp/guzzle`, `laravel/framework`, `spatie/image`, and more.
- Ensured compatibility with project requirements by verifying dependency interrelations.
The previous commit only updated auth-button + the WithNostrAuth trait,
but six Volt pages (profile, benefits, election/*, members/admin) carry
their own handleNostrLoggedIn(string $pubkey) handlers. The dispatched
payload is now an array, so Livewire's container could not resolve the
string parameter and threw BindingResolutionException on every login.
- All six per-page handlers now accept the signed event and route it
through NostrAuth::loginWithSignedEvent() like the trait does.
- NostrAuth: add currentOrIssueChallenge() so the sidebar + navbar
auth-button mounts share one live session challenge instead of
overwriting each other.
- verifySignedEvent: pass a normalized stdClass to swentel's verify()
directly, skipping an unnecessary json_encode + json_decode round-trip.
- auth-button: gate the global Escape/Tab capture so it only intercepts
keys while the overlay is actually visible.
- Update three test files that still called handleNostrLoggedIn with a
raw pubkey to authenticate via NostrAuth::login() instead.