Changelog
Public release notes for M3X HUB
v2.0.0-hub.14 — M3X HUB 2.0 — Modul 8: Discord Server Management
Sprint 13 · 2026-08-02Features
- Guild-primär modell: befintlig DiscordGuild utökad (ownerDiscordId, lastActivityAt, lastHeartbeatAt) — ingen parallell statusmaskin
- Admin Discord Servers: `/admin/control-center/servers` + detaljsida med produkter, loggar, Enable/Disable/Maintenance/Suspend/Blacklist (installation-scoped)
- API: `GET/PATCH /api/admin/discord-servers*` — aggregerar ControlCenterInstallation + BotInstallation + DiscordGuild
- Agent heartbeat/register: additiva guild-fält (iconUrl, memberCount, ownerDiscordId) synkar DiscordGuild
- `GET /api/control-center/config` returnerar per-installation status + commandsEnabled
- Agent SDK Health: DISABLED/SUSPENDED/BLACKLISTED + areCommandsEnabled(); Fortnite Tracker command-guard stoppar slash commands när Disabled
- Bot Platform / My Servers stats: Total/Online/Offline/Disabled/Maintenance/Blacklisted/Premium/Free
- Additiv migration 0014
v2.0.0-hub.13 — M3X HUB 2.0 — Modul 7: Billing Platform
Sprint 12 · 2026-08-02Features
- Billing-modul `backend/src/modules/billing/` — provider interface, Stripe-adapter, PayPal-scaffold, subscription/refund/customer views
- Stripe Checkout: coinsUsed appliceras på order.total innan session; subscription mode för premium_monthly/yearly
- Webhooks: checkout.session.completed, payment_intent.succeeded/failed, charge.refunded, customer.subscription.*, invoice.paid — dual idempotens (stripe_webhook_events + processed_webhook_events)
- Automatisk kedja: betalning → Order PAID → License → ProductDownload → coins settle → notifications/audit (via befintlig order-delivery)
- Admin refund anropar Stripe Refund API + SUSPENDERAR licenser (ej hard-revoke); coins återställs ej automatiskt
- Kundvyer: /dashboard/purchases, /subscriptions, /payments, /invoices + Sidebar (svenska labels)
- Admin: /admin/orders/failed för misslyckade betalningar; manuell aktivering via befintlig mark-paid
- Additiv migration 0013: BillingSubscription, ProcessedWebhookEvent, Order billing-fält, Refund.providerRefundId
- PayPal: env-placeholders + stub provider + POST /api/webhooks/paypal (tydliga not-implemented-fel)
- Dokumentation: docs/BILLING.md
v2.0.0-rc.1 — M3X HUB 2.0 — Release Candidate 1 (RC1)
Sprint 11 · 2026-08-02Fixes
- Fortnite Tracker bot API kräver nu FORTNITE_TRACKER_BOT_SECRET (Bearer, timing-safe) — koordinerat med discord-bot hub-client
- CSRF hoppar över Bearer machine clients + Control Center/Agent/Fortnite bot-prefix (fixar produktionsblockering av maskin-API)
- Stripe utan nycklar returnerar BadRequest (400) istället för generiskt 500 via requireStripeClient
- Additiva FK-index: role_permissions.permissionId, order_logs.actorId (migration 0011)
- Striktare rate limit på machine-auth-ytor
v2.0.0-hub.12 — M3X HUB 2.0 — Modul 6: Bot Platform Foundation
Sprint 10 · 2026-08-02Features
- Ny modul `backend/src/modules/bot-platform/` — produkt-/ägarskapslager ovanpå Control Center (ingen parallell heartbeat)
- Modulär bot-katalog: Fortnite Tracker, Warzone Tracker, Activity Bot, Mod Guard (productSlug = Control Center `module`)
- Additiv Prisma-migration `0010`: tunn `BotInstallation` (user/product/license ↔ ControlCenterInstallation)
- User API: `GET /api/me/bots`, `GET /api/me/servers` + sidor `/dashboard/my-bots`, `/dashboard/my-servers`
- Admin: `/admin/bot-platform` — produktkort, statistik, Disable/Enable/Maintenance/Suspend/Blacklist via Control Center
- Lazy-länk från befintliga `ProductInstallation` (t.ex. Fortnite) till matchande Control Center-installation
v2.0.0-hub.11 — M3X HUB 2.0 — Modul 5: M3X Agent SDK Foundation
Sprint 9 · 2026-08-02Features
- Nytt workspace-paket `@m3x-stats/agent` (`packages/m3x-agent`) — gemensam HTTP-klient med exponential backoff, Control Center Bearer-auth (`m3x_cc_`), valfri HMAC-signering (klientfoundation), heartbeat, license/coins-klienter, config/events/update/health
- Additiv Prisma-migration `0009`: `ControlCenterEvent` för Agent SDK event-ingest (`POST /api/control-center/events`)
- Tunna Control Center-tillägg: `GET /api/control-center/config` (stub), `GET /api/control-center/update-check` (foundation), plus `POST /api/agent/licenses/validate` som anropar befintlig `license.service.validateByKey`
- Framtida SDK-hooks som 501-style stubs: Auto Update, Remote Restart, Remote Config, Plugin Loader, Broadcast, Remote Commands
- Dokumentation: `docs/AGENT_SDK.md` + `packages/m3x-agent/README.md` med Discord-bot-exempel (live discord-bot orörd)
v2.0.0-hub.10 — M3X HUB 2.0 — Modul 4: M3X Control Center Foundation
Sprint 8 · 2026-08-02Features
- Ny modul `backend/src/modules/control-center/` — generisk client/installation-registry (Discord Bot, FiveM Resource, Desktop App, Launcher, Future Client), ej Discord-only
- Additiv Prisma-migration `0008`: `ControlCenterClient` + `ControlCenterInstallation` med status (Online/Offline/Maintenance/Disabled/Suspended/Blacklisted) och heartbeat-metrics
- Autentiserad client-API: `POST /api/control-center/register`, `POST /api/control-center/heartbeat`, `GET /api/control-center/installations` via `m3x_cc_`-credentials (samma SHA-256-mönster som api-keys)
- Lazy Offline när `lastHeartbeatAt` är äldre än 5 minuter; admin-låsta statusar överskrivs inte av heartbeat
- Admin UI `/admin/control-center` + `/api/admin/control-center/*` (overview, clients CRUD/rotate-key, installations list/update)
- Framtida extension points returnerar 501: remote-config, remote-restart, module-toggle, auto-update, broadcast, roll-sync
v2.0.0-hub.9 — M3X HUB 2.0 — Modul 4: Stripe Integration
Sprint 7 · 2026-08-02Features
- Utredde och verifierade befintlig Stripe-stack (`checkout.service`, webhook `POST /api/webhooks/stripe`, `order-delivery`, Commerce Foundation) — kompletterade luckor utan att bygga om flödet
- Checkout Session metadata utökad med `productIds`/`productSlugs`; success/cancel-URL:er mot `/checkout/success` och `/checkout/cancel` oförändrade
- Webhook: `charge.refunded` → `orderService.markRefunded`; `payment_intent.succeeded` delegerar nu till samma `onOrderPaid`/delivery som `checkout.session.completed`; event-idempotens via ny tabell `stripe_webhook_events`
- Post-payment coins: debiterar `coinsUsed` (`checkout_discount`) och krediterar `Product.coinsBonus` (`purchase_bonus`) idempotent via `coinsService.settleCheckoutCoins`
- Admin: `POST /api/admin/orders/:id/mark-paid`, live `/admin/payments` (sök/filter + webhook-logg), dashboard ProductsCard visar senaste betalning
v2.0.0-hub.8 — M3X HUB 2.0 — Modul 3: Commerce Foundation
Sprint 6 · 2026-08-02Features
- Utredde och verifierade den redan omfattande, befintliga order/checkout/Stripe-infrastrukturen (`Order`/`OrderItem`/`Payment`/`Refund`-modellerna, `checkout.controller.ts`, `orders.controller.ts`, `admin-orders.controller.ts`, `stripe-webhook.controller.ts`, hela `/admin/orders`-UI:t, `/dashboard/purchases`) innan någon kod ändrades — ordersystemet fanns redan och byggdes INTE om från noll, trots att uppdraget antog motsatsen
- Ny provider-agnostisk motor `modules/orders/order.service.ts` — utvinnen ur `modules/stripe/checkout.service.ts`, som tidigare byggde order-draften och skrev `Order`/`OrderItem`-rader direkt blandat med sin Stripe-specifika sessionslogik. `createOrder`/`markPaid`/`markFailed`/`markExpired`/`buildOrderDraft` flyttades ut oförändrade (samma beteende, samma resultat) så att en framtida betalningsleverantör (PayPal) kan återanvända dem utan Stripe-beroende — `checkout.service.ts` innehåller nu bara det som faktiskt är Stripe-specifikt (session/webhook/payment-intent)
- Nya endpoints `POST /api/orders` (skapa en fristående `DRAFT`-order, ingen betalningsleverantör inblandad — den enda vägen att skapa en order fanns tidigare bara via Stripes `create-session`, vilket blockerade allt utan konfigurerad Stripe-nyckel) och `PATCH /api/orders/:id` (ägaren applicerar/tar bort en M3X Coins-rabatt innan betalning) — inga dubbletter: `GET /api/orders/:id/payment-status` (ägare/admin), `GET /api/me/orders` (lista) och hela `/api/admin/orders/*` fanns redan och lämnades orörda
- Ny orderstatus `DRAFT` i `OrderStatus`-enumet (additiv migration `0006_commerce_foundation.sql`) — de sex kravda statusarna (Draft/Pending/Paid/Cancelled/Refunded/Failed) mappas nu tydligt: `DRAFT`/`PENDING`/`CANCELLED` på `Order.status`, `PAID`/`REFUNDED`/`FAILED` redan täckta av befintliga `Order.status`+`Order.paymentStatus`. Admin-filtret "unpaid" och `ORDER_STATUSES`-listan i `/admin/orders/[id]` uppdaterade för att inkludera `DRAFT`
- Nya fält `Order.coinsUsed`/`Order.coinsDiscountAmount` (additiv migration, defaultar till 0) — kopplar ihop Sprint 3.1:s Coins-modul med ordermotorn: `applyCoinsDiscount()` validerar saldo (utan att debitera det ännu — det är en betalnings-completion-angelägenhet för Modul 4/5), räknar om `total` och loggar en `OrderLog`. Visas nu på `/dashboard/purchases` (`MeOrdersPanel`) och `/admin/orders/[id]`
- Dashboard (`GET /api/dashboard`, `ProductsCard`, `/dashboard/purchases`) och admin-orderhantering (lista/filtrera/sök/statusändra/refund/cancel) verifierade fungera korrekt med de nya fälten/statusen — inga ändringar behövdes utöver typtilläggen ovan, eftersom Sprint 2B/Modul 2 redan byggde denna infrastruktur komplett
v2.0.0-hub.7 — M3X HUB 2.0 — Modul 2: Licenssystem
Sprint 5 · 2026-08-01Features
- Aktivering/deaktivering av licenser (`license.service.ts` — `activate()`/`deactivate()`) — den enda verkligt saknade delen: `LicenseActivation`, `currentActivations` och `lastActivated` fanns redan i schemat men ingenting skrev till dem tidigare. Aktivering är idempotent per `deviceId` (samma enhet som "checkar in" igen förbrukar inte en ny aktiveringsplats) och respekterar `activationLimit` (409 CONFLICT vid överskriden gräns); deaktivering tar bort en specifik aktivering (skiljer sig från befintlig "reset activations" som nollställer alla på en gång)
- Nya endpoints `POST /api/licenses/:id/activate` och `POST /api/licenses/:id/deactivate` under den redan existerande, autentiserade `/api/licenses`-routern (ägaren eller admin) — inga dubbletter: `/api/admin/licenses/*` (skapa/förläng/suspendera/återaktivera/återkalla/reset-activations) fanns redan komplett sedan tidigare och lämnas orörd
- `GET /api/me/licenses` (`me.service.ts`) synkar nu utgångna licenser lazy (samma mönster som `syncPremiumExpiry` i `user.service.ts` och den befintliga `syncExpiredStatus` i `license.service.ts`) — en `ACTIVE`-licens vars `expiresAt` har passerat flippas till `EXPIRED` vid läsning istället för att bara reflekteras när admin-vyn eller `/api/licenses` råkar synka den
- `GET /api/me/downloads` (`download.service.ts`) filtrerar nu bort produkter vars licens är Suspended/Revoked/Expired — tidigare visades posten i listan trots att ett faktiskt nedladdningsförsök redan gav 403 via `assertEntitlementValid`; nu är "visas" och "tillåts" konsekventa. Nytt fält `licenseStatus` på `MeDownload` för transparens
- `ProductsCard` (dashboard) visar nu antal aktiva licenser och senaste aktivering (produkt + datum), återanvänder befintlig `GET /api/me/licenses` (nu utökad med `lastActivated`/`currentActivations`/`activationLimit`) — ingen ny aggregat-endpoint behövdes. `DashboardCard`-wrapper och gridposition oförändrade
Fixes
- Licensstatusar (Active/Expired/Suspended/Revoked + Inactive) verifierade konsekventa överallt status kontrolleras: `LicenseStatus`-enumet i Prisma-schemat täckte redan alla fyra kravda värden — ingen migration behövdes
- Regressionsbugg hittad under E2E-verifiering och fixad på tre ställen (`license.service.ts`, `admin-licenses/service.ts`, `me.service.ts`): den lazy expiry-synken skrev tidigare över VILKEN status som helst till `EXPIRED` bara för att `expiresAt` passerat — inklusive en admins explicita `SUSPENDED`/`REVOKED`. Exempel: återkalla en licens vars utgångsdatum redan passerat visade felaktigt `EXPIRED` istället för `REVOKED` vid nästa läsning. Lazy-synken flippar nu enbart `ACTIVE → EXPIRED`
v2.0.0-hub.6 — M3X HUB 2.0 — Modul 1: Marketplace Foundation
Sprint 4 · 2026-08-01Features
- Befintlig marketplace-katalog (marketplaceService, bots-marketplace/marketplace-modulerna) utökad — inte omskriven: Fortnite & Warzone-bots får nu egna toppkategorier (Fortnite/Warzone) istället för generiska "Discord Bot"
- Ny "Bundle"-kategori + exempelprodukt (M3X Ultimate Bundle) — katalogen täcker nu samtliga 7 kravda kategorier (Discord Bots, FiveM Scripts, Fortnite, Warzone, Premium, Tools, Bundles) plus befintlig "Kommande"
- GET /api/products stödjer nu valfria ?q=&category=&sort=-query-parametrar via nya delade filter/sort-funktioner i shared/src/marketplace/index.ts (ingen dubblerad logik mellan frontend/backend)
- Ny "Owned"-status — GET /api/products & GET /api/products/:slug markerar owned: true när en inloggad användare äger produkten (riktig licens/order-koppling via ny meService.getOwnedProductSlugs(), återanvänder samma query som /api/me/products); aldrig fejkad, alltid false för anonyma requests
- Ny visningsfält coinsPrice (pris × 10, delad computeCoinsPrice()-hjälpare) på produktkort/produktsida — rent informativt, ingen coins-betalningslogik byggd
- Ny "Kommande funktioner"-sektion (upcomingFeatures) på produktsidan — riktiga roadmap-poster för kommande bots/bundle, ärlig tom-state annars
- Canonical produktsida-konflikt löst: /products/[slug] (fullständig SEO/JSON-LD, gallery, features, FAQ, version history, relaterade produkter) behålls som enda canonical route; äldre /marketplace/[id] omdirigerar nu permanent dit istället för att rendera en egen enklare vy
- ProductsCard (dashboard) visar nu även total katalogstorlek och senaste köpdatum bredvid befintlig ägda-produkter-lista — DashboardCard-wrapper och gridposition oförändrade
- Install/Köp/Detaljer-knappar på marketplace-kort och produktsidan är ownership-medvetna — ägda produkter visar "Installera" (länkar till befintligt /dashboard/products) istället för "Köp"
v2.0.0-hub.5 — M3X HUB 2.0 Sprint 3.1 — M3X Coins Foundation
Sprint 3.1 · 2026-08-01Features
- Ny /api/v1/coins-namespace vid sidan av befintliga /api/me/coins/* (som fortsätter fungera oförändrat)
- GET /api/v1/coins — exakt saldo-summary (balance, todayChange, totalEarned, totalSpent, latestTransaction) beräknad helt via Prisma-aggregat, ersätter Sprint 2B:s klientsida approximation över senaste 50 transaktionerna
- GET /api/v1/coins/history — paginerad transaktionshistorik för inloggad användare
- GET /api/v1/coins/statistics — global myntstatistik för admin (coins i cirkulation, totalt utdelat/spenderat, användare med saldo)
- POST /api/v1/coins/admin/add & /admin/remove — admin krediterar/debiterar en användares saldo, återanvänder befintlig credit()/debit()-logik i coins.service.ts (inget dubblerat)
- GET /api/v1/coins/admin/:userId/summary & /admin/:userId/history — admin-vy av en specifik användares saldo/historik
- coins.service.ts utökad med getBalanceSummary(), getGlobalStatistics(), adminCredit() & adminDebit() — alla admin-mutationer auditloggas via befintlig audit.service.ts
- Ny admin-sida /admin/coins — sök användare, se saldo/historik, lägg till/ta bort coins, se plattformsstatistik; registrerad i AdminSidebar
- CoinsCard och /dashboard/coins uppgraderade till GET /api/v1/coins + /coins/history — samma UI/UX, mer exakta siffror
- Additiv migration 0005_coins_admin_fields.sql — coin_transactions.source & .description (nullable) för admin-mutationer, inga befintliga rader påverkas
v2.0.0-hub.4.5 — M3X HUB 2.0 Sprint 3.0 — Auth Hardening & Decimal Migration
Sprint 3 · 2026-08-01Features
- authenticate-middleware slår nu upp sessionen i databasen (sessionService.findActiveSession) på varje request istället för att bara lita på JWT-signaturen — logout, admin "force logout" och bans invaliderar nu faktiskt ett redan utfärdat token
- Premium-utgång synkas nu vid inloggning/sessionskontroll — en utgången premiumanvändare degraderas automatiskt till USER, medan personalroller (ADMIN/SUPER_ADMIN) aldrig påverkas av premium-utgång
- rateLimiter-middleware applicerar en striktare gräns (max 30/fönster) på riktiga auth-känsliga path-prefix (/auth, /login, /api/auth, /api/v1/auth, /api/checkout, /api/v1/checkout)
- CSRF-skydd kopplat genom authFetch/api-fetch.ts på frontend för alla tillståndsändrande requests
- Additiv migration 0004_money_decimal_types.sql — payments.amount samt orders.subtotal/tax/discount/total breddade från flyttal till NUMERIC(10,2) för att eliminera avrundningsdrift i aggregat/återbetalningar
- Ny lib/decimal.ts-hjälpare används konsekvent där dessa fält läses/skrivs
Fixes
- JWT-only auth kontrollerade aldrig sessions-tabellen — en utloggad/bannad användares token förblev giltigt fram till JWT-utgång
v2.0.0-hub.4 — M3X HUB 2.0 Sprint 2.5 — Production Stabilization
Sprint 2.5 · 2026-07-31Features
- Ingen ny funktionalitet — ren stabiliserings-/revisions-sprint efter Sprint 1/2A/2B
- Fullständig backend-revision — alla routes, controllers & services i backend/src verifierade som korrekt kopplade
- Fullständig dashboard-revision — bekräftat att alla 9 kort är fria från placeholder-data och konsekvent använder DashboardCard + useDashboardCardData
- 8 döda pre-Sprint-1-dashboardkomponenter borttagna efter grep-verifiering i hela monorepot (frontend, backend, shared, discord-bot)
- Prisma-schema & migrationer granskade end-to-end — 0002-migrationen bekräftat identisk med schema.prisma, två saknade FK-index tillagda via ny migration 0003
- npm audit kört — 1 av 5 sårbarheter åtgärdad utan brytande ändringar (brace-expansion), 4 kvarstår och kräver brytande major-uppgraderingar (dokumenterat, ej åtgärdat)
Fixes
- Saknad asyncHandler i v1/discord.routes.ts kunde orsaka tysta hängningar vid onhanterade promise-rejections
- POST /api/v1/announcements saknade adminskydd — vem som helst kunde skapa hub-breda meddelanden — nu kräver requireAdmin
- admin-products.controller.ts uploadFile använde rå res.json istället för delad sendError-helper
- admin-notifications-flödet saknade audit-logg och tystade utskicksfel — lägger nu till audit.service-loggning + felloggning per mottagare
- 3 bekräftat döda backend-exports borttagna (bots-marketplace.controller.ts, auth.controller.ts#getCurrentUser/#updateUserSettings, premium-platform.controller.ts#getPremiumOverview)
- Hårdkodade hex-färger i 6 Sprint 1/2A/2B-filer bytta till befintliga design-tokens (bg-background) istället för #06060b/#0a0a0f
v2.0.0-hub.3 — M3X HUB 2.0 Sprint 2B — Dashboard Live Data
Sprint 2 · 2026-07-31Features
- Alla 9 dashboard-kort bytte från placeholder-data till riktiga API-anrop
- Ny delad hook useDashboardCardData — enhetlig fetch/loading/error-hantering för alla kort
- Welcome/Profile/Premium återanvänder befintlig useAuth()-kontext (GET /api/auth/me) — noll extra nätverksanrop
- Coins-kortet använder GET /api/me/coins/balance + /transactions (Sprint 2A) med härledd dagsförändring, intjänat & spenderat
- Products/Downloads-korten använder befintliga GET /api/me/products & /api/me/downloads
- News-kortet använder publika GET /api/news (Sprint 2A) — 5 senaste publicerade inläggen
- RecentActivity-kortet återanvänder befintliga GET /api/me/activity
- Ny liten API-klient frontend/lib/news/api.ts + utökad frontend/lib/me/api.ts (profile, coinsBalance, coinsTransactions) — inga nya backend-endpoints
- Skeleton-loading och "Kunde inte hämta data."-fallback på samtliga kort — dashboarden kraschar aldrig
- /dashboard/coins lättkopplad till samma riktiga coins-endpoints
v2.0.0-hub.2 — M3X HUB 2.0 Sprint 2A — Backend Foundation (Coins, Profile, News)
Sprint 2 · 2026-07-31Features
- M3X Coins-ekonomi — CoinTransaction-ledger med atomiska credit/debit-operationer och saldoskydd
- Coins läsvägar — GET /api/me/coins/balance och GET /api/me/coins/transactions
- Utökad profil — bio & socialLinks-fält på User, GET/PATCH /api/me/profile
- Nyhetsflöde-foundation — NewsPost-modell, GET /api/news och GET /api/news/:slug (publikt)
- Handskriven SQL-migration 0002_hub_coins_profile_news.sql, validerad med prisma validate
v2.0.0-hub.1 — M3X HUB 2.0 Sprint 1 — Dashboard Foundation
Sprint 1 · 2026-07-31Features
- Modulär DashboardCard som bas för alla hubbkort
- DashboardGrid äger layout — DashboardPageClient är tunn shell
- Nio dashboardkort med placeholder-data (Welcome, Profile, Premium, Coins, Products, Downloads, News, QuickActions, RecentActivity)
- Utbyggbar sidebar med svensk primärnav + permission-gated Admin/Developer
- Topbar med Discord-avatar, namn, premium-badge, coins, notiser & settings
- Placeholder-sidor /dashboard/profile och /dashboard/coins
Fixes
- Dashboard hem är inte längre tillfällig homepage — permanent HUB-foundation
v2.0.0 — Version 1.0 Quality Pass — Public Beta
Sprint 18 · 2026-07-26Features
- Global quality review — code, design, performance, a11y, security & SEO
- Quality pass API — GET /api/v1/quality/report with scored audit
- Extended health — Discord, marketplace, workers & cron jobs
- Input sanitization middleware for JSON bodies
- Developer status — commit, build ID, frontend version & health
- Version 1.0 panel — version, build, commit, environment, API & database
- QualityPassPanel & VersionOnePanel in Developer Center
- Documentation — README, INSTALL, CONTRIBUTING, CHANGELOG & ROADMAP
- Design spacing scale & Button focus-visible improvements
- System status panel extended with 8 service checks
Fixes
- README outdated with wrong backend port and placeholder pages
- Button component missing keyboard focus styles
- Health endpoint missing extended service status fields
v1.9.0 — Launch Preparation — Public Beta
Sprint 17 · 2026-07-26Features
- SEO — dynamic meta tags, Open Graph, Twitter Cards, canonical URLs
- robots.txt, sitemap.xml & manifest.webmanifest
- PWA — install prompt, offline page, icons & splash theme
- Error pages — /404, /500, maintenance & offline
- Skeleton loading, lazy loading & route-level loading state
- Legal — Privacy, Terms, Cookies, Contact & Support
- Help Center at /help — FAQ, guides, Discord, marketplace & premium
- Public /changelog & /roadmap pages
- Enhanced /status — Frontend, Backend, Database, Discord, API, Marketplace, Workers
- Footer — Status, Roadmap, Changelog, API, Developer, Discord, GitHub, Support
- WCAG prep — skip link, focus states, ARIA labels
- Security verified — Helmet, CORS, JWT, rate limiting, input validation, CSRF prep
- Beta readiness API — GET /api/v1/launch/readiness
- Developer Center Beta Readiness panel
v1.8.0 — Notification Center
Sprint 16 · 2026-07-26Features
- Full Notification Center at /notifications — all, unread, read, important filters
- 10 category filters — system, premium, marketplace, games, discord, activity, developer
- 5 notification types — success, info, warning, error, announcement
- 10 event placeholders — premium, bot, game, achievement, level up, order, license, discord, API key
- Channel settings — Discord, Email, In-App, Push (placeholder)
- Message Center at /messages — support, system & news
- Announcements API — banner, popup, notification (admin)
- API: /notifications, /messages, /announcements
- Developer Center Notification Center panel
v1.7.0 — Public API & Developer Portal
Sprint 15 · 2026-07-26Features
- Developer Portal at /developers — API home, docs, Swagger, SDK & examples
- OpenAPI 3.1 spec with Swagger UI at /developers/swagger
- API key management at /dashboard/api — create, delete, regenerate
- Rate limits — Free, Premium, Enterprise tiers
- SDK placeholders — JS, TS, Python, PHP, C#, Go
- Webhooks prepared — player, bot, license, premium, achievement events
- Public status page at /status
- Interactive API Explorer with placeholder responses
- API: /api/v1/developers/* & /api/v1/status
- Developer Center Public API panel
v1.6.0 — Analytics & Business Intelligence
Sprint 14 · 2026-07-26Features
- Analytics Center at /analytics — overview, traffic, dashboards & export
- Traffic charts — line, bar & area with day/week/month/year periods
- Game analytics — Fortnite, Warzone, FiveM, Discord
- Bot analytics — installs, usage, crashes & updates
- Premium & marketplace — conversion, revenue & top products
- System analytics — API, server, workers & logs
- 6 pre-built dashboards: Executive, Developer, Marketplace, Games, Bots, Premium
- Export CSV & JSON (PDF placeholder)
- API: /api/v1/analytics/* — modular BI endpoints
- Developer Center Analytics Platform panel
v1.5.0 — M3X Activity Platform
Sprint 13 · 2026-07-26Features
- Activity Platform at /activity — dashboard, profile, leaderboards & server stats
- XP, level, messages, voice/camera/screen share tracking
- Leaderboards — daily, weekly, monthly, all-time with 6 sort modes
- Achievement system — 10 milestones prepared
- Activity timeline — level-ups, achievements & rank changes
- Server stats — members, voice channels, messages & voice hours
- API: /activity/profile, /leaderboards, /server, /achievements
- Bot integration prepared — internal sync endpoint
- WebSocket & activity notifications prepared
- Developer Center Activity Platform panel
v1.4.0 — Enterprise Admin Control Center
Sprint 12 · 2026-07-26Features
- Full Admin Control Center at /admin with sidebar navigation
- Dashboard — users, premium, licenses, bots, games, revenue & system health
- User management — search, filter, sort, pagination & actions
- Role management — Guest, User, Premium, Moderator, Developer, Admin, Owner
- Permission matrix with role-based access control
- Game, bot, marketplace, license, payment & server management
- System logs, settings & developer health metrics
- API: /api/v1/admin/* — 15 endpoints behind requireAdmin
- Developer Center Admin Control Panel
v1.3.0 — Premium Platform & Licensing
Sprint 11 · 2026-07-26Features
- Full /premium page — Hero, plans, benefits, FAQ, testimonials
- 5 plans: Free, Premium Monthly/Yearly, Lifetime, Enterprise
- License Center at /dashboard/licenses
- My Purchases at /dashboard/purchases
- Checkout with order summary, coupons, tax & payment method selection
- User badges: Premium, Founder, Developer, Moderator, Verified, Lifetime
- API: /premium/plans, /licenses, /orders, /subscriptions
- Developer Center Premium Platform panel
v1.2.0 — Discord Bots Marketplace
Sprint 10 · 2026-07-26Features
- Full Discord Bots Marketplace at /bots
- Search, filter & sort — name, category, features
- Bot cards with status, downloads, rating, tier badges
- Product pages — commands, permissions, FAQ, changelog
- My Bots dashboard at /dashboard/bots
- API at /api/v1/bots — list, detail, categories, popular, latest
- Developer Center Bots Marketplace panel
- Featured bots: fortnite, warzone, activity
v1.1.1 — Stabilisering — Dev Startup & Health
Sprint 9.1 · 2026-07-26Features
- Single-command dev environment: npm install && npm run dev
- Enhanced /api/v1/health — Frontend, Backend, Database, API, Version
- Startup readiness banner with service checkmarks
- System Status panel on /developer/preview
- Registered routes & installed modules inventory
- Backend port standardized to :5000
v1.1.0 — Warzone Module
Sprint 9 · 2026-07-26Features
- Complete Warzone module via Game SDK — mirrors Fortnite architecture
- Player search: Activision ID, Battle.net, Xbox, PlayStation with autocomplete
- Full profile: avatar, platform, region, linked account, last updated
- 11 stat cards: Wins, Kills, Deaths, K/D, Matches, Gulag Wins, Damage, SPM, Accuracy, Headshots, Time Played
- Match history: placement, K/D, damage, gulag result, mode, duration, date
- Leaderboards: Daily/Weekly/Monthly/Lifetime — sort Wins, Kills, K/D, Damage, SPM
- Cache + rate limiting (30 req/min)
- Error states: offline, not found, timeout, rate limit
- Developer Center — Warzone module health panel
v1.0.0 — Discord Integration Platform
Sprint 8 · 2026-07-26Features
- Discord OAuth2 login, link & unlink accounts
- Full Discord profile — avatar, banner, username, global name, user ID
- Connected servers where user and M3X bot coexist
- Bot Center at /dashboard/bots — status, version, latency, uptime
- Multi-platform linking scaffold (Epic, Steam, Riot, Xbox, PlayStation)
- Discord notifications & activity panels (real-time ready)
- Discord settings — visibility, notifications, language, servers
- 11 secured API endpoints with JWT + rate limiting
- Developer Center — Discord module status panel
- 4 new Prisma models: DiscordSettings, LinkedAccount, DiscordGuild, DiscordGuildMember
v0.9.0 — Fortnite Module
Sprint 7 · 2026-07-26Features
- First complete game module — Fortnite via Game SDK
- Global player search (Epic Display Name & Epic ID)
- Full profile page with avatar, platform, region, linked date
- Stats panels: Lifetime, Season, Daily, Weekly, Monthly
- 11 stat cards: Wins, Kills, Matches, K/D, Win Rate, Top 10/25, Avg Placement, Damage, Time Played, Level
- Match history with placement, kills, mode, duration, date
- Leaderboards: Daily/Weekly/Monthly/Lifetime — sort Wins, Kills, K/D, Win Rate
- Premium glassmorphism UI with skeleton loading & error states
- In-memory cache layer + rate limiting (30 req/min)
- Developer Center — Fortnite module health panel
Fixes
- Build errors in fortnite routes and error state types
v0.8.0 — Game Platform
Sprint 6 · 2026-07-26Features
- IGameSDK — unified interface for all game modules
- GameManager auto-loads 9 installed modules
- Modules: Fortnite, Warzone, FiveM, Discord (+ 5 coming soon)
- Stat cards, player profile, leaderboards, match history, achievements
- /games/[slug] dynamic pages with tabbed UI
- Global search across all enabled games via API
v0.6.0 — Core System — Providers, Layout & Modules
Sprint 4 · 2026-07-26Features
- 11 modular global providers (Theme, Language, Currency, User, Settings, Notifications, Permissions, Games, Premium, Search)
- Unified Settings system with date/number formats & notification preferences
- Notification Center with category filters (real-time ready)
- Global search engine with extensible index
- AppShell layout — Sidebar, Topbar, Content, Footer (desktop/tablet/mobile)
- Game module registry — enable/disable games without code changes
- Permission roles: Guest, User, Premium, Moderator, Developer, Admin, Owner
- Future-ready Sidebar navigation with permission filtering
Fixes
- Settings hydration from authenticated user profile
v0.5.0 — Developer Center
Sprint 4 · 2026-07-26Features
- Full Developer Center dashboard at /developer
- Changelog with expandable sprint entries
- Roadmap with quarter grouping
- Sprint status tracking
- Live logs panel (WebSocket-ready)
- Build status history
- Version history timeline
- Project Progress panel with codebase metrics
v0.4.0 — User System & Discord OAuth
Sprint 3 · 2026-07-26Features
- Discord OAuth2 flow (prepared)
- User model with full profile fields
- Role system (User, Premium, Moderator, Admin, Super Admin)
- Dashboard with welcome, linked games, activity
- Settings page (language, currency, theme, timezone, country)
- Premium subscription view
- Auth navbar with avatar dropdown
- JWT session cookies
Fixes
- Fixed OAuth redirect URI to backend callback
- Improved user upsert for Discord accounts
v0.3.0 — Landing Page Redesign
Sprint 2 · 2026-07-26Features
- Full landing page redesign
- Community, Live Status, Updates, Activity Feed sections
- Blue/purple/pink accent system
- Official M3X HUB logo support
- Modern footer with link columns
Fixes
- Tailwind neon color tokens
- Logo auto-detection
v0.2.0 — SaaS Foundation
Sprint 1 · 2026-07-26Features
- Next.js 15 frontend with 7 pages
- i18n, currency, and theme systems
- Express API skeleton
- Prisma schema with 14 models
- Docker & Nginx setup
- Discord bot skeleton
v0.1.0 — Initial Scaffold
Sprint 0 · 2026-07-26Features
- Monorepo structure
- TypeScript everywhere
- ESLint & Prettier