Skip to content

feat(web/settings): profile, tags, export, account deletion - #27

Merged
gracefullight merged 2 commits into
mainfrom
symphony/FIR-29
Mar 21, 2026
Merged

feat(web/settings): profile, tags, export, account deletion#27
gracefullight merged 2 commits into
mainfrom
symphony/FIR-29

Conversation

@gracefullight

Copy link
Copy Markdown
Member

Summary

  • Profile page (/settings/profile): View avatar/email, edit display name via PATCH /auth/me
  • Tags page (/settings/tags): Full CRUD with inline editing and color picker Popover (16 preset colors)
  • Export page (/settings/export): CSV download of contacts with experiences via streaming endpoint
  • Account page (/settings/account): Account deletion with AlertDialog confirmation (type "DELETE" to confirm)

Backend

  • New tag table (migration 0004) with (user_id, name) unique constraint
  • Tags CRUD endpoints: GET/POST /tags, PATCH/DELETE /tags/{id}
  • Profile update: PATCH /auth/me
  • Account deletion: DELETE /auth/me (cascades to contacts, tags)
  • CSV export: GET /export/contacts (StreamingResponse)

Frontend

  • Settings layout with tab navigation across 4 sub-pages
  • 10 shadcn/ui components installed (button, input, label, badge, card, separator, avatar, alert-dialog, popover, tabs)
  • Biome override for shadcn ui/ directory (label a11y rule)

Test plan

  • Verify /settings redirects to /settings/profile
  • Verify profile page loads user data and name can be updated
  • Verify tags can be created, edited (name + color), and deleted
  • Verify color picker popover opens and selects colors
  • Verify CSV export downloads a valid contacts file
  • Verify account deletion requires typing "DELETE" before confirming
  • Verify tab navigation highlights active tab

🤖 Generated with Claude Code

gracefullight and others added 2 commits March 21, 2026 21:09
Add full settings implementation with 4 sub-pages:
- Profile: view/edit display name with avatar display
- Tags: CRUD with color picker popover (16 preset colors)
- Export: CSV download of contacts with experiences
- Account: deletion with confirmation AlertDialog (type DELETE)

Backend: tags CRUD, PATCH/DELETE /auth/me, GET /export/contacts
DB: migration 0004 creates tag table with (user_id, name) unique constraint

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
# Conflicts:
#	apps/api/src/main.py
#	apps/api/src/tags/models.py
#	apps/web/src/components/ui/avatar.tsx
#	apps/web/src/components/ui/card.tsx
@gracefullight
gracefullight merged commit f3589f2 into main Mar 21, 2026
2 checks passed
@gracefullight
gracefullight deleted the symphony/FIR-29 branch March 21, 2026 11:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant