buildmymcpserver/apps/web/app
Marco Sadjadi 1c58977596
All checks were successful
Deploy to Production / deploy (push) Successful in 52s
feat: user menu + profile page + in-app subscription management
User-facing identity:
- UserMenu component in dashboard header: avatar (deterministic colour from
  email hash), email + name, current plan badge, dropdown to Profile /
  Billing / Support / Your data / (Admin panel if isAdmin) / Sign out
- /settings/profile: editable display name; email + phone shown read-only
  (changing them requires support ticket — magic-link flow assumed)
- GET + PATCH /v1/account/profile

In-app subscription management (no more Stripe Portal redirect for the
common flows — cancellation, plan switch, invoice viewing all in-app):
- Billing status now combines DB state with a live Stripe lookup of the
  subscription details + last 5 invoices. Single roundtrip.
- POST /v1/billing/cancel       → schedules cancel_at_period_end
- POST /v1/billing/reactivate   → undo scheduled cancel
- POST /v1/billing/change-plan  → prorated swap between any tier+cycle
- /settings/billing rewritten: current plan card with renew/cancel date,
  big cancel button + reactivate flow, plan-switcher grid, invoice list with
  PDF + hosted-invoice links
- Stripe portal still linked at the bottom as the escape hatch for rare
  actions (payment-method update, address change). New-subscription Checkout
  still uses Stripe-hosted Checkout (industry standard for PCI).

Stripe SDK v22 / API 2024-09 fix: current_period_end moved to subscription
items; updated read paths accordingly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 17:46:36 +02:00
..
(dashboard) feat: user menu + profile page + in-app subscription management 2026-05-25 17:46:36 +02:00
(marketing) feat: Swiss-compliant launch — Impressum/AGB/Contact, support panel, DSG exports, cookie banner 2026-05-25 17:12:06 +02:00
admin fix(admin): make whole support-ticket row clickable 2026-05-25 17:36:31 +02:00
docs fix(web): mobile-responsive hero, marketing site, docs and dashboard 2026-05-21 23:25:26 +02:00
login feat(web): country-code picker, auth-aware header, dedupe new-server CTA 2026-05-21 23:41:19 +02:00
templates feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
apple-icon.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
globals.css fix(preview): stop spec generation timing out behind the edge proxy 2026-05-21 23:52:48 +02:00
icon.svg fix(web): favicon matches nav-bar logo (monochrome outline, prefers-color-scheme) 2026-05-19 22:44:58 +02:00
layout.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
manifest.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
opengraph-image.tsx feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
robots.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00
sitemap.ts feat(web): full SEO stack — metadata, JSON-LD, sitemap, robots, OG image 2026-05-21 19:16:40 +02:00