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>
- 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>
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>
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>
- 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>
- 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>
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>
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>
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>
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>
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>
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>
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>
Install barryvdh/laravel-dompdf, create professional invoice Blade template
with EZSCALE branding, add download endpoints for customer billing and admin
invoice pages.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Sends mail notification with login credentials when VPS, dedicated, or web
hosting services are provisioned. Wired into VirtFusion, SynergyCP, and
Enhance provisioning services.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Adds edit/update endpoints for customer management with admin notes
field, form request validation, status change audit logging, and
8 new tests (171 total, 846 assertions).
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Replaces the horizontal VAppBar nav links with a proper vertical sidebar
matching the Vuexy design system: 260px fixed sidebar with collapsible
mini mode, section titles, active link highlighting, and mobile overlay.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Generates 300 customers with profiles, 500 subscriptions, 400 services,
800 invoices, 600 transactions, 150 orders, 200 tickets with ~700
replies, 50 coupons, and 100 audit log entries. Data spread across 12
months with realistic plan linkage and varied statuses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Email integration: IMAP polling via webklex/php-imap (M365/Zoho/MIAB
compatible), TicketEmailProcessor with 3-strategy ticket matching
(In-Reply-To, References, subject line [EZSCALE-{id}]), signature and
quote stripping, scheduled command every 2min.
Outbound: 4 notification classes (TicketCreated, CustomerReply,
StaffReply, StatusChanged) with email threading headers via
withSymfonyMessage(). Staff replies set Reply-To: support@ezscale.cloud.
Frontend: ticket reference chips on all pages, "Via Email" badges on
email-originated replies. 12 new tests (163 total, 816 assertions).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Screenshot auth: dev-only middleware that authenticates headless Chrome
via ?_screenshot_token= query param. Auto-selects admin/customer user
by subdomain. Only active when APP_ENV=local or explicitly enabled.
SupportPal cleanup: dropped supportpal_ticket_id column, removed env
vars and Phase 7 task tracking. 7 new tests (151 total, 782 assertions).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces planned SupportPal integration with a built-in ticket system.
Customer side: create tickets, reply, close. Admin side: manage all
tickets with search/filters, staff replies, status updates. Includes
30 Pest tests (144 total, 775 assertions).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Plan upgrade/downgrade flow: UpgradeController with price difference
calculations, Upgrade.vue with feature comparison and confirmation dialog
- Admin order management: Order model/migration/factory, OrderController
with process/complete/cancel/notes, Index and Show pages with filters
- Admin impersonation: start/stop endpoints, session-based tracking,
impersonation banner in AccountLayout, audit logging
- Contact form: ContactRequest validation, ContactController with email,
marketing route for form submission
- FlashMessages now supports info alerts
- Inertia shared data includes impersonation state
- 114 tests passing (623 assertions)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 5 (Admin Panel):
- Audit log viewer: searchable with action/date filters, expandable
rows showing JSON changes, color-coded action chips, user avatars
- System settings: tabbed page (General, API Credentials, Billing,
Notifications) with masked sensitive values, per-group save
- Settings model with get/set/getGroup/setGroup helpers
- Settings migration for key-value store with groups
- 52 tests passing, build clean
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 5 (Admin Panel):
- Admin coupon management: full CRUD with create/edit/deactivate,
auto-generate codes, plan restrictions multi-select, usage tracking,
redemption history on edit page
- Add active flag migration for coupons table
Phase 4 (Customer Dashboard):
- Customer services list page with plan info and status
- Customer service detail page with network info, plan details,
control panel links (VirtFusion/SynergyCP/Enhance), important dates
- Service status/type resolver utilities
Documentation:
- Update TASKS.md with all completed Phase 3/4/5/8 items
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 5 (Admin Panel):
- Customer management: searchable/filterable list, detail view with
tabs (overview/services/billing), suspend/unsuspend actions with
audit logging
- Plan management: full CRUD with create/edit/archive, dynamic
feature key-value editor, service type filters, subscriber counts
- Service management: list with type/status filters, detail view
with provisioning logs, suspend/unsuspend/terminate with
confirmation dialogs
- Invoice management: list with status filters, detail view with
line items and payment transactions, void invoice action
- Admin nav: added Customers, Plans, Services, Invoices links
- 52 tests passing, build clean
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 3 (Provisioning):
- Create ProvisioningServiceInterface abstraction
- Implement VirtFusionService for VPS provisioning via REST API
- Implement SynergyCPService for dedicated server provisioning
- Implement EnhanceService for web hosting provisioning
- Create ProvisioningFactory for service type routing
- Add API config for VirtFusion, SynergyCP, Enhance
Phase 4 (Customer Dashboard):
- Enhance DashboardController with real data (services, subscriptions,
invoices, pending amounts, next renewal)
- Rebuild Dashboard.vue with stats cards, active subscriptions list,
recent invoices table, and quick action buttons
Phase 8 (Marketing):
- Add Terms of Service page with 15 sections
- Add Privacy Policy page (GDPR/CCPA aware)
- Add Acceptable Use Policy page
- Add Service Level Agreement page (99.99% uptime, credit calc)
- 52 tests passing, build clean
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mark all completed items for Phase 1 (foundation) and Phase 2
(billing & subscriptions). Add remaining Phase 2 items that still
need work (PDF invoices, multi-currency, tax, admin coupon CRUD,
email notifications).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update all 26 Vue files (3 layouts, 4 components, 19 pages) and the
Blade root template to use a dark color scheme: gray-950 backgrounds,
gray-900 cards, gray-800 borders, light text, and adjusted status
badges/flash messages for dark backgrounds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add complete billing system with Stripe and PayPal gateway support,
checkout flow with coupon validation, subscription management
(cancel/resume/swap), payment method management, invoice and
transaction history, webhook handlers, dunning/suspension system
with scheduled processing, and 29 new tests (53 total passing).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add redirectGuestsTo in bootstrap/app.php so unauthenticated users
always redirect to the full account login URL instead of a relative
/login that would 404 on the admin subdomain or loop
- Create HandleInertiaRequests middleware to share auth.user, flash
messages, and domain config to all Vue pages (was entirely missing)
- Add Profile nav link in AppLayout, "Customer View" link in AdminLayout
- Point logout to account subdomain where Fortify routes live
- Link AuthLayout logo back to marketing site
- Fix Marketing/Home links to use full account subdomain URLs
- Update RoleBasedAccessTest to match new redirect URL
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>