feat: Public User Profiles (OP#803, v0.3.1) #14

Merged
Mike Bros merged 3 commits from feature/803-public-user-profiles into release/v0.3.1 2026-02-17 07:10:00 +00:00
Contributor

Summary

  • OP#818: Added profile_public column to users table with migration, updated all user query locations, added profile visibility toggle to settings page with POST handler
  • OP#817: Created public profile page at /user/{username} with avatar initials, display name, join date, and owned dashboards list with item counts. Added created_at column to users, ListOwnedDashboards service method, and 404 handling for private/non-existent profiles
  • OP#819: Unit tests covering profile template rendering (dashboards, empty state, owner edit link, avatar initial, username fallback), helper functions, and profile settings visibility toggle

Verification

  • Navigate to /user/{username} for a public-profile user — profile renders with avatar, name, join date, dashboards
  • Navigate to /user/{username} for a private-profile user (as non-owner) — returns 404
  • Profile owner sees "Edit Profile" link pointing to /user/settings/profile
  • Toggle profile visibility in settings at /user/settings/profile and verify persistence
  • Non-existent username returns 404
## Summary - OP#818: Added `profile_public` column to users table with migration, updated all user query locations, added profile visibility toggle to settings page with POST handler - OP#817: Created public profile page at `/user/{username}` with avatar initials, display name, join date, and owned dashboards list with item counts. Added `created_at` column to users, `ListOwnedDashboards` service method, and 404 handling for private/non-existent profiles - OP#819: Unit tests covering profile template rendering (dashboards, empty state, owner edit link, avatar initial, username fallback), helper functions, and profile settings visibility toggle ## Verification - [x] Navigate to `/user/{username}` for a public-profile user — profile renders with avatar, name, join date, dashboards - [x] Navigate to `/user/{username}` for a private-profile user (as non-owner) — returns 404 - [x] Profile owner sees "Edit Profile" link pointing to `/user/settings/profile` - [x] Toggle profile visibility in settings at `/user/settings/profile` and verify persistence - [x] Non-existent username returns 404 ## Links - Epic: [OP#803](https://project.bros.ninja/work_packages/803) - CI: [Actions](https://git.bros.ninja/mike/gashy/actions)
Adds profile_public column to users table with migration, updates all
user query locations (8 total) to include the new field, adds a toggle
to the profile settings page, and registers a POST handler for saving.

Closes OP#818

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds created_at column to users table, ListOwnedDashboards service method,
profile template with avatar, join date, and dashboard list. Profile is
404 for non-existent or private users unless the viewer is the owner.

Closes OP#817

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
test(profile): add unit tests for public user profiles
All checks were successful
CI / lint (pull_request) Successful in 1m14s
CI / security (pull_request) Successful in 1m52s
CI / build (pull_request) Successful in 1m54s
CI / test (pull_request) Successful in 2m7s
6f4d9d10a9
Tests profile template rendering (dashboards, empty state, owner edit link,
avatar initial, username fallback), helper functions (userInitial, itemCountLabel,
joinDate), and profile settings toggle (visibility checkbox, profile URL).

Closes OP#819

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mike Bros approved these changes 2026-02-17 07:09:54 +00:00
Mike Bros merged commit 562ba07c3d into release/v0.3.1 2026-02-17 07:10:00 +00:00
Mike Bros deleted branch feature/803-public-user-profiles 2026-02-17 07:10:01 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
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
mike/gashy!14
No description provided.