Restore user profile status editing and display #36

Open
opened 2024-01-14 14:37:52 -06:00 by jimmyb · 0 comments
Owner

Users should be able to set and update a short profile status, and that status should be shown prominently on their public profile.

The current Laravel checkout already has a nullable users.status column and the User model allows it to be filled, but the Livewire profile settings page only updates username and email. Public profile pages render the user header, stats, bio, consoles, social links, and comments, but do not display the stored status. This issue tracks restoring the missing status-editing workflow and making the status visible enough to be meaningful on profiles.

Scope

  • Account settings profile page at /settings/profile.
  • Public profile pages at /profile/{username}.
  • Existing users.status column.
  • Authenticated current-user status updates only.
  • Safe public rendering for empty, plain-text, and malicious status values.
  • Existing Laravel/Livewire/Tailwind profile and settings patterns.

Acceptance Criteria

  • Authenticated users can set, update, and clear their status from profile settings.
  • Status updates save to the existing users.status column.
  • Status input has a reasonable maximum length and clear validation feedback.
  • Updating status does not require changing username or email.
  • Updating username/email continues to work as before.
  • Public profiles display a non-empty status prominently near the username/header area.
  • Profiles with no status do not show a broken or awkward placeholder.
  • Status text is escaped and cannot inject HTML or JavaScript.
  • Banned, deleted, and soft-deleted users still do not expose public profiles.
  • User-facing UI supports light/dark mode and follows existing Laravel/Livewire/Tailwind profile patterns.

Test Coverage Required

  • Livewire feature test confirming users can set and update status from profile settings.
  • Livewire feature test confirming users can clear status.
  • Validation test confirming overly long status values are rejected.
  • Regression test confirming username/email profile updates still work.
  • Feature test confirming public profiles show a saved status near the profile header.
  • Feature test confirming empty status does not render a misleading placeholder.
  • Security regression test confirming status output is escaped.
  • Tests should use Pest and focused settings/profile coverage.
  • Run the focused profile settings/profile display tests, then run vendor/bin/pint --dirty before closing the issue.

Progress Checklist

  • users.status column exists
  • User model includes status as fillable
  • Profile settings page exists
  • Public profile page exists
  • Existing profile settings tests cover username/email updates
  • Add status state, validation, and persistence to the profile settings Livewire component
  • Add status input/control to the profile settings view
  • Render non-empty status prominently on public profiles
  • Escape status output and avoid rendering empty placeholders
  • Add tests for set, update, clear, validation, display, escaping, and username/email regressions
  • Confirm status UI matches existing profile/settings light and dark mode patterns
Users should be able to set and update a short profile status, and that status should be shown prominently on their public profile. The current Laravel checkout already has a nullable `users.status` column and the `User` model allows it to be filled, but the Livewire profile settings page only updates username and email. Public profile pages render the user header, stats, bio, consoles, social links, and comments, but do not display the stored status. This issue tracks restoring the missing status-editing workflow and making the status visible enough to be meaningful on profiles. ## Scope - Account settings profile page at `/settings/profile`. - Public profile pages at `/profile/{username}`. - Existing `users.status` column. - Authenticated current-user status updates only. - Safe public rendering for empty, plain-text, and malicious status values. - Existing Laravel/Livewire/Tailwind profile and settings patterns. ## Acceptance Criteria - Authenticated users can set, update, and clear their status from profile settings. - Status updates save to the existing `users.status` column. - Status input has a reasonable maximum length and clear validation feedback. - Updating status does not require changing username or email. - Updating username/email continues to work as before. - Public profiles display a non-empty status prominently near the username/header area. - Profiles with no status do not show a broken or awkward placeholder. - Status text is escaped and cannot inject HTML or JavaScript. - Banned, deleted, and soft-deleted users still do not expose public profiles. - User-facing UI supports light/dark mode and follows existing Laravel/Livewire/Tailwind profile patterns. ## Test Coverage Required - Livewire feature test confirming users can set and update status from profile settings. - Livewire feature test confirming users can clear status. - Validation test confirming overly long status values are rejected. - Regression test confirming username/email profile updates still work. - Feature test confirming public profiles show a saved status near the profile header. - Feature test confirming empty status does not render a misleading placeholder. - Security regression test confirming status output is escaped. - Tests should use Pest and focused settings/profile coverage. - Run the focused profile settings/profile display tests, then run `vendor/bin/pint --dirty` before closing the issue. ## Progress Checklist - [x] `users.status` column exists - [x] `User` model includes `status` as fillable - [x] Profile settings page exists - [x] Public profile page exists - [x] Existing profile settings tests cover username/email updates - [ ] Add status state, validation, and persistence to the profile settings Livewire component - [ ] Add status input/control to the profile settings view - [ ] Render non-empty status prominently on public profiles - [ ] Escape status output and avoid rendering empty placeholders - [ ] Add tests for set, update, clear, validation, display, escaping, and username/email regressions - [ ] Confirm status UI matches existing profile/settings light and dark mode patterns
Codex changed title from Add Back Functionality to Allow Users to Set and Update Their Status to Restore user profile status editing and display 2026-05-26 01:00:57 -05:00
Sign in to join this conversation.
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MyVideoGameList/myvideogamelist.com#36
No description provided.