Releases: EloquentWorks/Persona
Release list
v1.1.0 — Safer Profiles, Richer Identity, and Better Visibility
Laravel Persona v1.1.0 🎉
Laravel Persona v1.1.0 adds safer profile tooling, richer profile metadata, username history, profile badges, detailed view tracking, validation helpers, and expanded documentation.
This release builds on the stable v1.0.0 foundation while keeping the existing package structure and public API intact.
✨ New Features
- Detailed profile view records
- Profile view pruning command
- Username history tracking
- Reserved username protection
- Safe profile URL validation
- Profile badges
- Badge awarding and revocation helpers
- Active badge checks
- Profile completeness scoring
- Profile completion checklist
- Last viewed timestamp support
- Featured links support
- SEO title support
- SEO description support
- Social sharing metadata helper
- Optional enhanced Persona model
- Persona manager service
- Persona facade
- Visibility middleware
- Username-changed event
- Badge-awarded event
- Comment-created event
- Additional PHPUnit coverage
- Expanded PHPStan-friendly typing
- Updated release guidance
- Expanded documentation
📊 Profile Views
Persona now supports detailed profile view records.
In addition to the existing profile view counter, applications can store more context about profile visits, including:
- Profile ID
- Viewer ID
- Session ID
- Hashed IP address
- Hashed user agent
- Referrer
- Source
- Metadata
- Viewed timestamp
Example:
$profile->recordDetailedView(
request: request(),
viewer: auth()->user(),
metadata: [
'source' => 'profile-page',
],
);Old profile view records can be pruned with:
php artisan persona:prune-views --days=365 --dry-run
php artisan persona:prune-views --days=365 --force🪪 Username History
Persona can now preserve username history when users change their public slug.
This helps applications support redirects from old usernames to the current profile URL.
$profile->changeUsernameWithHistory(
username: 'signal-nick',
changedBy: auth()->user(),
reason: 'User requested username change.',
);🚫 Reserved Usernames
Persona now includes reserved username protection for names that should not be used as public profile slugs.
Examples include:
- admin
- administrator
- api
- app
- billing
- dashboard
- login
- register
- settings
- staff
- support
- system
Validation example:
use EloquentWorks\Persona\Rules\ReservedPersonaUsername;
'slug' => [
'required',
'string',
new ReservedPersonaUsername(),
],🔗 Safe Profile URLs
Persona now includes a validation rule for safer public profile URLs.
This helps block unsafe URL schemes while allowing normal http and https links.
use EloquentWorks\Persona\Rules\SafeProfileUrl;
'website_url' => [
'nullable',
'url',
new SafeProfileUrl(),
],🏅 Profile Badges
Persona now supports profile badges.
Applications can use badges for verified users, staff, founders, contributors, creators, and other profile awards.
$profile->awardBadge('verified');
$profile->hasActiveBadge('verified');
$profile->revokeBadge('verified');✅ Profile Completeness
Persona now includes helpers for calculating profile completeness.
$score = $profile->refreshCompleteness();
$checklist = $profile->completionChecklist();This can be used to encourage users to finish setting up their profile.
🧾 SEO and Sharing
Persona now includes helpers for SEO and social sharing metadata.
$profile->safeSeoTitle();
$profile->safeSeoDescription();
$profile->socialShareMeta();This makes it easier to build clean public profile pages with Open Graph and social preview support.
💬 Profile Comments
Documentation has been expanded to include how to retrieve comments, not just create them.
Examples now cover:
- Retrieving all comments
- Retrieving approved comments
- Retrieving top-level comments
- Loading replies
- Paginating comments
- Counting comments
- Rendering comments in Blade
Example:
$comments = $profile->comments()
->approved()
->topLevel()
->with([
'replies' => fn ($query) => $query
->approved()
->oldest(),
])
->latest()
->paginate(15);🗃️ Database Changes
Laravel Persona v1.1.0 adds new additive migrations.
Existing v1.0.0 migrations are not renamed or modified.
New migrations include:
2026_07_11_000002_create_persona_views_table.php
2026_07_11_000003_create_persona_username_histories_table.php
2026_07_11_000004_create_persona_badges_table.php
2026_07_11_000005_add_persona_v1_1_profile_columns.php
New profile columns include:
- featured_links
- seo_title
- seo_description
- profile_completeness_score
- profile_completed_at
- last_viewed_at
📚 Documentation
Documentation has been expanded in the docs/ directory and includes:
- Installation
- Configuration
- Usage
- Routes
- Profile Comments
- Retrieving Comments
- Customization
- Testing
- Profile Views
- Username History
- Reserved Usernames
- Safe URLs
- Profile Badges
- Profile Completeness
- SEO and Sharing
- Security
- Upgrade Guide
✅ Supported Versions
- PHP 8.2+
- Laravel 12
- Laravel 13
🚀 Installation
Install Laravel Persona:
composer require eloquent-works/personaThen install the package:
php artisan persona:installRun migrations:
php artisan migrate⬆️ Upgrading from v1.0.0
Update the package:
composer require eloquent-works/persona:^1.1Publish the new migrations:
php artisan vendor:publish --tag=persona-migrationsRun migrations:
php artisan migrateClear cached configuration:
php artisan optimize:clear🧰 Quality Checks
Before deploying, run:
composer validate --strict
composer format
composer analyse
composer testOr run the complete quality suite:
composer quality❤️ Thank You
Thank you for using Laravel Persona.
Feedback, feature requests, bug reports, documentation improvements, and pull requests are always welcome.
v1.0.0 — Initial Stable Release
Laravel Persona v1.0.0 🎉
The first stable release of Laravel Persona.
Laravel Persona provides elegant public profile functionality for Laravel applications with configurable usernames, profile pages, comments, profile views, avatars, banners, social links, and more.
✨ Features
- Public profile pages
- Configurable profile fields
- Slug-based usernames
- Username change tokens
- Profile visibility controls
- Avatar and banner support
- Profile view tracking
- Social and custom links
- Metadata support
- Profile comments
- Two-level comment replies
- Comment approval
- Comment pinning
- Soft-deleted comments
- Configurable routes
- Artisan installation command
- PHPUnit test suite
- PHPStan static analysis
- Laravel Pint code formatting
📚 Documentation
Documentation is available in the docs/ directory and includes:
- Installation
- Configuration
- Usage
- Routes
- Profile Comments
- Customization
- Testing
✅ Supported Versions
- PHP 8.2+
- Laravel 12
- Laravel 13
🚀 Installation
composer require eloquent-works/personaThen install the package:
php artisan persona:installRun migrations:
php artisan migrate❤️ Thank You
Thank you for trying Laravel Persona. Feedback, feature requests, and pull requests are always welcome.