Commit Graph

127 Commits

Author SHA256 Message Date
bc5ccf1731 fix(vps): harmonize estimator palette with rest of marketing site
Replaced --v-theme-surface-bright (auto-generated lighter tone that
clashed with the page's dark navy palette) with --v-theme-surface
across all 10 estimator components. Removed gradient backgrounds in
favor of the existing .glass-card / .section-alt-bg patterns from
resources/styles/_marketing.scss. Bumped contrast on the cycle toggle
discount badges and the EstimatorFooter card so the Copy share link
button reads clearly.

Components touched: EstimatorSection, BillingCycleToggle, WorkloadPicker,
MiniQuizDialog, RecommendedPlanCard, AddOnsPanel, IPv4Stepper,
ManagedSupportSelector, BackupTierSelector, EstimatorFooter.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 16:18:03 -04:00
cfa2e4c8d3 feat(vps): add interactive estimator + refresh Included card
Implements the design captured in
docs/superpowers/specs/2026-04-26-vps-hosting-estimator-design.md.

Estimator (after the hero on /vps-hosting):
- Workload picker (9 chips) recommends a plan; "Not sure" opens a
  mini-quiz with a 12-app catalog and a traffic+priority follow-up.
- Recommended-plan card with "or pick another" alternates dropdown.
- Add-ons panel: IPv4 stepper (1-8, $8/extra), Windows BYOL toggle,
  4-tier Managed Support radio (Self/Basic/Pro/Pilot @ $0/29/79/99),
  5-tier Off-site Backup radio (None/Lite/Standard/Extended/Vault @
  $0/5/12/25/59).
- Pilot tier gated to VPS-8+ via plan.features.tier; auto-fallback to
  Pro on plan downgrade with snackbar warning.
- Billing cycle toggle (Monthly / Quarterly / Annual) reuses
  per-cycle prices already on plan_prices and plan_config_values.
- Sticky footer with live total, "Order this configuration"
  (deep-links to /checkout/{plan} with all params), and "Copy share
  link" (history.replaceState debounced 300ms).
- Plans-table rows get an "Estimate →" link that pre-fills the
  estimator with that plan and scrolls up.

Backend:
- PlanSeeder: each VPS plan gets features.tier (1-32) for gating.
- ConfigOptionSeeder: scope existing Server Management group to
  dedicated only; add VPS Managed Support and Off-site Backup
  groups with full per-cycle prices.
- routes/marketing.php /vps-hosting: pass addOns + workloadMap +
  appExamples Inertia props.
- CheckoutController::show: build prefilledSelections from
  ?ipv4&windows&managed&backup query params; Vue page hydrates
  configSelections from this prop.

Included With All Plans: rewritten to 13 accurate items with
per-line wording (10 Gbps fair-use uplink, ZFS snapshots free,
KVM virtualization, rDNS/PTR control, OOB console/VNC, 99.9%
SLA, etc.) plus a "Coming soon" badge for DDoS protection.

Tests: 10 Pest feature tests in tests/Feature/Marketing/
VpsHostingEstimatorTest.php cover the page props, both new
seeded groups, plan-tier metadata, Server Management dedicated
scope, configGroups attachment, and checkout query-param
pre-fill round-trip. All 10 pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 16:05:01 -04:00
d5f97d1240 docs(spec): VPS hosting estimator + included list refresh design
Design captured from brainstorming: workload-driven estimator with
plan + add-on configurator (managed support + off-site backup tiers),
URL state, share link, checkout pre-fill, and rewritten Included list.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 15:44:12 -04:00
Claude Dev
de8ec69ea0 feat: add advanced features — KB, tickets v2, multi-currency, cart, quotes, affiliates, credits, staff RBAC, fraud detection, service panels
Major additions:
- Knowledge base with categories, articles, revisions, and voting
- Enhanced ticket system: departments, SLA policies, canned responses, tags, custom fields, satisfaction ratings, internal notes
- Multi-currency support with exchange rate sync
- Shopping cart and quote system with PDF generation
- Affiliate program with referrals, commissions, and payouts
- Account credits, credit notes, and debit notes
- Staff management with granular role-based permissions
- Fraud detection and order risk assessment
- ServerHunter SEO integration
- Service lifecycle events (suspend/unsuspend/terminate)
- Service management panels for VPS, Dedicated, Hosting, and Game servers
- Plan lifecycle fields and per-customer overrides
- 30+ migrations, 17 factories, 8 feature test suites

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 07:35:10 -04:00
Claude Dev
2bf8a5b6bf docs: update README with current project status, optimize CLAUDE.md
README: reflect completed phases (1-5, 8-9), accurate tech stack
(Vuetify 3 not Tailwind, Passport not Sanctum, standalone tickets
not SupportPal), current codebase counts (59 migrations, 29 models,
85 pages, ~497 tests), and separate implemented vs planned features.

CLAUDE.md: reduce from 281 to 184 lines — trim derivable directory
listings, remove stale counts, cut redundant examples, update all
metrics to current state.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 11:55:01 -04:00
Claude Dev
1d4a9f33f6 chore: clean up repo root — remove obsolete files, organize infra into docs/
Remove 21MB Vuexy theme directory (replaced by custom EZSCALE design system),
old session logs, patch notes, screenshots, and discovery artifacts. Move
infrastructure files (Horizon config, install script, VirtFusion API spec,
discover script) into docs/ subdirectories. Update CLAUDE.md reference docs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 11:49:07 -04:00
Claude Dev
b4ef90465c feat: complete pre-launch audit — frontend polish, churn prevention, login history, financial reports, configurable checkout
Includes all work from phases 6-9+ and frontend polish rounds 1 & 2:

- Login history with device trust, new device notifications, session management
- Churn prevention: cancellation surveys, winback campaigns with email sequences
- Financial reports: revenue, P&L, tax, aging, refund, subscription reports with PDF/CSV/JSON export
- Configurable checkout: plan config groups/options, build-your-own VPS
- Frontend polish: fix broken legal links, add SEO meta tags, favicon, font display=swap,
  Head titles on all 14 marketing pages, mobile responsive fixes, AuthLayout legal footer,
  remove false 24/7 claims, hide empty stats, correct uptime SLA to 99.9%,
  GameServers notify buttons linked to /contact, 301 redirects for /terms and /privacy
- WHMCS migration scripts
- Update legal page effective dates to March 16, 2026

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 11:39:25 -04:00
Claude Dev
5be235d35e feat: add billing cycle toggle to pricing page
Eager-load plan prices in the pricing route and add a billing cycle
toggle (monthly/quarterly/semi-annual/annual) with discount badges and
per-month equivalent display for longer cycles. CTA links now pass
the selected cycle as a query param.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:38:17 -04:00
Claude Dev
e0e38e47c6 feat: update checkout and API resources for cycle-aware pricing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:38:01 -04:00
Claude Dev
d1df4dd8b2 test: add multi-cycle checkout tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:37:22 -04:00
Claude Dev
e0c83e36dc feat: add PlanPrice interface and update Plan/Subscription types
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:36:44 -04:00
Claude Dev
8fa389f51d feat: add MigrateVpsPlans command for customer migration
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:34:28 -04:00
Claude Dev
81995079e6 feat: seed new VPS plans with multi-cycle pricing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:33:27 -04:00
Claude Dev
82a069304f feat: update billing services for cycle-specific pricing and fix naming
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:32:57 -04:00
Claude Dev
c034be820e feat: add plan_prices table, PlanPrice model, and Plan relationship
- Create plan_prices migration with unique(plan_id, billing_cycle)
- PlanPrice model with factory
- Plan::prices() relationship and priceForCycle() helper
- Tests for model relationships, uniqueness, cascade delete

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 23:31:12 -04:00
Claude Dev
b2fd5abc7e Update documentation after full frontend redesign and bug fix session
Updates CLAUDE.md (design system, tech stack, directory structure, conventions),
TASKS.md (redesign and bug fix items checked off), and creates session log for
the 2026-03-14 redesign session covering layout rebuild, SCSS replacement,
component migration, and 12 bug fixes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 19:20:41 -04:00
Claude Dev
0e7c363a04 Fix code review follow-up issues
- EnsureUserNotSuspended: bypass for impersonation stop, also check banned
- FlashProps: add info and new_password keys
- AccountLayout: impersonation stop link uses account domain (not admin)
- withCount alias: billingInvoices as invoices_count for frontend compat
- VPS Show: add secure password dialog with copy button for reset-password

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 19:02:05 -04:00
Claude Dev
9a410dc3c8 Fix impersonation routing, invoice numbers, dashboard caching, indexes, and Stripe property name
- Add impersonation stop route on account subdomain so impersonated users can exit (#11)
- Replace non-concurrency-safe invoice number generation (count+1, rand) with date+random string
- Wrap admin dashboard stats queries in Cache::remember with 5-minute TTL
- Add database indexes on invoices.status, orders.status, audit_logs.action, audit_logs.created_at
- Fix last_four to last4 matching Stripe's actual card property name

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 18:53:37 -04:00
Claude Dev
f194b60d5c Fix 5 critical issues: provisioning storage, webhook auth, password exposure, middleware, model conflict
- Store VirtFusion provisioning info in credentials column instead of non-existent provisioning_info key
- Add PayPal webhook header verification to reject unsigned requests
- Stop exposing VPS root password in flash message, use separate new_password key
- Apply ensure_not_suspended middleware to account routes
- Rename User::invoices() to billingInvoices() to avoid overriding Cashier's invoices() method

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 18:47:31 -04:00
Claude Dev
34a8ccd8c4 Fix missing platform column in admin placeOrder
Maps vps->virtfusion, dedicated->synergycp, hosting->enhance, game->pterodactyl
consistent with ProvisioningFactory routing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:47:33 -04:00
Claude Dev
ee5e1909e2 Fix missing service_type when admin places order for customer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:44:45 -04:00
Claude Dev
b83c2bcc8d Fix missing order_number when admin places order for customer
The orders table requires order_number (non-nullable, unique) but the
placeOrder method didn't set it, causing a QueryException.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:44:00 -04:00
Claude Dev
634b8916ae Set default VChip size to small for more compact badges/pills
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:39:21 -04:00
Claude Dev
56bd303254 Fix light mode contrast issues on marketing pages
Force white text inside .hero-dark-grid since its background is always
dark, and replace bg-surface-variant with the theme-aware section-alt-bg
class on the About page Values and Stats sections.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:31:42 -04:00
Claude Dev
9a12deeed3 Fix theme switcher persistence and hardcoded dark colors in SCSS
- ThemeSwitcher: save user's theme choice to localStorage and restore on mount
- Vuetify plugin: check localStorage before falling back to subdomain default
- _layouts.scss: make navbar and footer theme-aware using CSS custom properties
  (sidebar intentionally stays always-dark per design spec)
- _marketing.scss: make glass-card and hero-gradient-text theme-aware

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:24:51 -04:00
Claude Dev
65dcdebd5c Fix code review issues: flash toast dedup, sidebar CSS, pricing card colors
- Fix duplicate flash-to-toast watchers by tracking last shown flash JSON
- Replace inline sidebar margin styles with CSS class-driven approach
- Fix navbar left position to respond to sidebar collapse via CSS nesting
- Replace hardcoded white colors in PricingCard with theme-aware classes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:21:22 -04:00
Claude Dev
40c1ecc6fe Remove old Vuexy wrapper components (AppTextField, AppSelect, AppTextarea, FlashMessages, NotificationBell)
All pages now use native Vuetify components directly. Flash messages are handled
by the ToastStack component via Pinia store. Notifications use NotificationPanel.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:10:23 -04:00
Claude Dev
dd1a5d7ffc Replace AppTextField/AppSelect/AppTextarea with native Vuetify equivalents across 22 pages
Vuetify defaults already configure VTextField/VSelect/VTextarea with the correct
settings (outlined variant, comfortable density, primary color, auto hideDetails),
making the wrapper components unnecessary.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:09:15 -04:00
Claude Dev
66bb180f8f Migrate marketing pages to new design system heroes and components (#5)
- Replace gradient hero sections with HeroSection + animated SVG components
  (NetworkHero, VpsHero, DedicatedHero, WebHostingHero, GameServerHero)
- Add ScrollReveal wrappers for scroll animations on Home.vue sections
- Replace AppTextField/AppSelect/AppTextarea with VTextField/VSelect/VTextarea in Contact.vue
- Merge BattlefieldAcp content into GameServers.vue as a featured section
- Delete redundant Products.vue and BattlefieldAcp.vue pages
- Add 301 redirects in routes for /products -> / and /battlefield-acp -> /game-servers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 17:06:51 -04:00
Claude Dev
b9c3382564 Replace AppTextField with VTextField in auth pages (#4)
Remove AppTextField wrapper imports from all 6 auth pages (Login, Register,
ForgotPassword, ResetPassword, ConfirmPassword, TwoFactorChallenge) and use
VTextField directly, relying on Vuetify defaults for variant/density/color.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 17:01:17 -04:00
Claude Dev
f861510625 Add marketing UI components: hero sections, glass card, scroll reveal, pricing card
Create 9 reusable marketing components:
- HeroSection: wrapper with dark grid background and two-column layout
- NetworkHero: animated SVG network visualization with floating nodes
- VpsHero, DedicatedHero, WebHostingHero, GameServerHero: themed variants
- GlassCard: glass morphism card for feature sections
- ScrollReveal: intersection observer wrapper for scroll animations
- PricingCard: glass morphism pricing card with features and CTA

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:59:23 -04:00
Claude Dev
d01ea28a8b Phase 1: Rebuild layout infrastructure with new shared components
Delete old Vuexy VerticalNav layout system (5 components + 4 SCSS files)
and replace with new modular components: AppSidebar, AppTopNavbar,
CommandPalette, NotificationPanel, ToastStack, SkeletonLoader,
EmptyState, Breadcrumbs. Rebuild all 4 layouts (Admin, Account,
Marketing, Auth) using new components. Add Pinia toast store for
flash message integration. Update navigation with cleaner groupings.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:55:54 -04:00
Claude Dev
34e7fb62f3 Phase 0: Replace Vuexy design system with custom EZSCALE foundation
- Install echarts, vue-echarts, @vueuse/core; remove @mdi/font
- Switch fonts from Inter/Public Sans to Plus Jakarta Sans/JetBrains Mono
- Delete all 38 @core SCSS files, replace with 6 new design token files
  (_variables, _mixins, _animations, _typography, _component-overrides, _layouts)
- Rewrite _marketing.scss with glass morphism and dark grid hero styles
- Update Vuetify theme from purple (#7367F0) to navy blue (#1d4ed8)
- Add pill-shaped buttons, tonal chips, rounded cards to Vuetify defaults
- Make default theme subdomain-aware (light for marketing, dark for app)
- Remove @core-scss and @configured-variables Vite aliases
- Fix AuthLayout and AppStepper to remove deleted @core SCSS imports

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:47:00 -04:00
Claude Dev
9a2a2c251d Re-crop ML analytics screenshot to show top section
Show stats cards, server health overview with slot recommendations,
and health trends chart instead of the lower tables.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 12:19:21 -05:00
Claude Dev
e3efa0f11b Add screenshot showcases to ACP marketing page
Replace 6-card feature grid with alternating image/text showcase sections
for ML Analytics, Admin Dashboard, Ban Appeal, and Server Browser features.
Cropped screenshots from the live admin panel paired with bullet-point
descriptions for each feature.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 12:10:51 -05:00
Claude Dev
6237003b46 Remove demo link from ACP marketing page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:52:11 -05:00
Claude Dev
466b0eadc8 Enhance ACP marketing page with real plugin details and admin features
- List all 24 ported ProCon plugins by name with descriptions
- Update ML Analytics feature with actual dashboard details (flagged cheaters,
  toxicity leaderboard, player clustering, ban predictions, session anomalies)
- Add Admin Dashboard feature card (population charts, kick analytics,
  event logger, online admins, player reports)
- Add Live Demo button linking to tbg.app.ezscale.cloud/p
- Expand "More Features" grid to 12 items with descriptions
- Update ProCon section: accurate C#/.NET description, layer server context
- Update supported games with per-game plugin counts

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:48:48 -05:00
Claude Dev
169b06e349 Dynamic product pages + Battlefield ACP marketing page
- Web Hosting & Game Servers now pull plans from database (same pattern as VPS/Dedicated)
- Add 6 game server plans to PlanSeeder (Minecraft, Rust, ARK, Valheim, CS2, Palworld)
- Create Battlefield ACP marketing page with ProCon replacement hero, 6 feature cards,
  ML analytics, ban appeals, PunkBuster screenshots, Discord integration sections
- Add Battlefield ACP to Products dropdown navigation
- Marketing pages use SectionHeader component, fade-in animations, Vuexy design patterns

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:32:35 -05:00
Claude Dev
45d25d61ba Idempotent provisioning, service soft-delete, Plans page redesign, doc updates
Part A: Fix duplicate Service creation on provisioning retry
- All 4 provisioning services use Service::firstOrCreate() keyed on
  subscription_id+service_type to prevent duplicates on queue retries
- HandleSubscriptionCreated sends notification before provisioning,
  no longer re-throws on failure
- RetryProvisioningCommand simplified to reuse existing Service records

Part B: Plans/Pricing page complete redesign
- Service type tabs (VPS, Dedicated, Web Hosting, MySQL)
- Billing cycle segmented toggle (monthly/quarterly/semi-annual/annual)
- Feature icons per service type, Popular/Best Value badges
- Stock indicators, effective monthly price calculations

Part C: Admin service soft-delete/archive
- Service model uses SoftDeletes trait
- Admin can archive and restore services
- Show archived toggle on services list
- Migration adds deleted_at column

Docs: Updated TASKS.md, CLAUDE.md, PROJECT_DEVELOPMENT.md, MEMORY.md
- Phase 3 marked complete, test counts updated (252 passing)
- SupportPal references replaced with standalone ticket system
- Frontend design skill background rule added
- Closed GitHub issues #3, #6, #7, #8, #9

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 06:30:57 -05:00
Claude Dev
bf4f5f97c0 Update TASKS.md: check off provisioning retry, renewals, customer audit log
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:37:37 -05:00
Claude Dev
71927d59f9 Add audit log tab to admin customer detail page
Paginated audit log with action color coding, expandable detail rows
showing before/after JSON changes, and relative time formatting.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:37:20 -05:00
Claude Dev
dd558d5dcc Add upcoming renewals page with days-until-renewal indicators
Shows subscriptions nearing renewal with color-coded urgency chips,
auto-renew status, and quick manage links.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:37:15 -05:00
Claude Dev
edf428215f Add provisioning failure retry logic with scheduled command
Retries failed provisioning every 30 minutes with max 3 attempts,
dispatches ProvisioningFailed event when max attempts reached.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:37:09 -05:00
Claude Dev
7ea5c59f6b Update TASKS.md: check off Pterodactyl provisioning and service detail pages
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:30:31 -05:00
Claude Dev
c82ee91b9a Enhance service detail page with type-specific sections and provisioning info
Add service-type-specific detail cards (VPS, Dedicated, Game, Web Hosting),
provisioning info accessor that filters sensitive credentials, and improved
sidebar with service overview and quick actions.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:30:12 -05:00
Claude Dev
f87de9e2a4 Add Pterodactyl game server provisioning service
Implements ProvisioningServiceInterface for game servers via Pterodactyl
panel API. Supports create, suspend, unsuspend, terminate, status, and
credential retrieval. Auto-creates panel user accounts.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:30:06 -05:00
Claude Dev
c57318e2a5 Update TASKS.md: check off dashboard tickets, payment methods, analytics
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:24:58 -05:00
Claude Dev
55489d599e Enhance admin analytics with ARR, revenue trends, churn, and overdue invoices
Add Annual Recurring Revenue stat, 12-month revenue trend with progress bars,
customer growth chart, 6-month churn rate tracker with status indicators, and
overdue invoices table with days-overdue coloring.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:24:32 -05:00
Claude Dev
371ed4e6a6 Add payment methods management page
List Stripe payment methods with set-default and remove actions. Includes
delete confirmation dialog, breadcrumb navigation, and sidebar nav entry.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:24:15 -05:00
Claude Dev
cbc706d934 Add recent support tickets section to customer dashboard
Shows the 5 most recent tickets with status/priority chips and relative
timestamps. Includes empty state with Create Ticket button.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-09 20:24:09 -05:00