feat: user profile customization with banner, accent color, bio, and full profile modal

Add banner image, accent color, and bio fields to user profiles with
full-stack support: schema migration, API validation (hex color format,
190-char bio limit), sanitizeUser propagation, and new GET /users/:id/mutuals
endpoint. Rewrite AccountPanel with live preview card, avatar/banner upload
via ImageCropModal, 16-preset accent color picker, and bio editor. Enhance
UserProfilePopout with banner display, accent-colored names, bio rendering,
and mutual counts. Add new UserProfileModal with About/Mutual Friends/Mutual
Spaces tabs and friend action buttons.
This commit is contained in:
Jannis Braun
2026-03-10 17:08:29 +01:00
parent 88bfc17580
commit 003eff2268
16 changed files with 1066 additions and 72 deletions
+8
View File
@@ -85,6 +85,14 @@ export function runMigrations(db: Database.Database): void {
columns: [
{ name: 'banner', type: 'TEXT' }
]
},
{
name: 'users',
columns: [
{ name: 'banner', type: 'TEXT' },
{ name: 'accent_color', type: 'TEXT' },
{ name: 'bio', type: 'TEXT' },
]
}
];
+3
View File
@@ -12,6 +12,9 @@ export const users = sqliteTable('users', {
homeInstance: text('home_instance'),
homeUserId: text('home_user_id'),
replicatedInstances: text('replicated_instances').default('[]'),
banner: text('banner'),
accentColor: text('accent_color'),
bio: text('bio'),
createdAt: integer('created_at').notNull(),
});