Skip to content

v3.6.0

Latest

Choose a tag to compare

@NodeByteLTD NodeByteLTD released this 05 Jul 05:46

Added

  • Dedicated Server Hosting — new /dedicated product category backed by live Paymenter billing data

    • packages/core/types/servers/dedicated.tsDedicatedPlanSpec interface; cores is optional (physical cores, not vCPU), storageDescription holds the raw drive label (e.g. "2 × 1 TB NVMe SSD (RAID 1)") for multi-drive configurations
    • packages/core/products/billing-service.tsgetDedicatedPlans(categorySlug) function following the same billing-service pattern as VPS and game plans
    • packages/ui/components/Layouts/Dedicated/dedicated-hub.tsx — listing page with AMD/Intel hardware filter, price sort, "Bare Metal" and hardware badges, IPMI/dedicated feature callouts, and a custom/enterprise CTA
    • app/dedicated/page.tsx — server component fetching from the dedicated-servers billing category
    • Navigation — Dedicated Servers section added to both desktop and mobile Services dropdowns, below VPS Servers
    • Footer — Dedicated Servers link added to the Services column
    • packages/core/constants/services.ts — Dedicated Servers entry added to SERVICE_CATEGORIES for the homepage service cards (amber palette, Cpu icon)
    • translations/templates/en.jsonservices.dedicated.* and footer.services.dedicatedServers translation keys added
  • Knowledge Base Subcategory Support — the KB now supports arbitrary nesting (e.g. games → minecraft → troubleshooting) driven entirely by the filesystem

    • app/kb/[...path]/page.tsx — unified catch-all route replacing the old fixed [category] and [category]/[article] routes; calls resolvePath() to decide whether to render a category page or an article page
    • packages/kb/lib/kb.ts — full rewrite: getCategories(parentPath?) recurses into subdirectories, getCategoryAtPath() traverses the tree, getSidebarTree() / buildSidebarItem() build the full nested sidebar, getAllPaths() returns every valid path array for generateStaticParams
    • packages/kb/components/kb-sidebar.tsx — recursive SidebarNode component with depth-aware indentation; auto-expands the branch matching the current pathname
    • packages/kb/components/kb-category-card.tsxhref now uses the full category path; badge shows recursive totalCount
    • packages/kb/components/kb-article-card.tsxhref uses categoryPath (full relative path)
    • packages/kb/components/kb-article.tsx — prev/next links use full categoryPath
    • packages/kb/components/kb-search.tsx — search result links use full categoryPath
    • KB content restructured under packages/kb/content/games/minecraft/ and packages/kb/content/games/hytale/ subdirectories
  • Billing-Native Currency Prices — the website now uses exact prices from the Paymenter billing panel per currency instead of converting from a GBP exchange rate

    • packages/core/lib/bytepay.tsgetPricesMap(product) returns Record<string, number> mapping every currency code to its monthly price from the product's recurring plan
    • packages/ui/components/ui/price.tsxPrice component accepts an optional prices prop; uses format(prices[currency]) (exact billing price) when available, falls back to convertAndFormat(amountGBP) (exchange rate)
    • packages/core/types/servers/game.ts, vps.ts, dedicated.tsprices?: Record<string, number> field added to all plan spec interfaces
    • billing-service.ts — all three plan fetchers (getGamePlans, getVpsPlans, getDedicatedPlans) populate prices from getPricesMap()
    • VPS Hub, all game pages — prices prop threaded through to <Price> components

What's Changed

  • chore: sync development → nightly (2026-06-07) by @github-actions[bot] in #103
  • chore: sync nightly → production (2026-06-07) by @github-actions[bot] in #104
  • feat(fix): safari issues, optimization, react issues, visual bugs by @ranveersoni98 in #105
  • feat(fix): safari issues, optimization, react issues, visual bugs by @NodeByteLTD in #106
  • chore: sync development → nightly (2026-06-10) by @github-actions[bot] in #107
  • chore: sync development → nightly (2026-06-13) by @github-actions[bot] in #108
  • chore: sync nightly → production (2026-06-13) by @github-actions[bot] in #109
  • Sync? by @CodeMeAPixel in #110
  • Development by @CodeMeAPixel in #111
  • Update eligibility.md by @CodeMeAPixel in #112
  • Update eligibility.md by @CodeMeAPixel in #113
  • Development by @CodeMeAPixel in #114
  • chore: sync development → nightly (2026-06-17) by @github-actions[bot] in #115
  • Development by @NodeByteLTD in #116
  • chore: sync development → nightly (2026-06-20) by @github-actions[bot] in #117
  • chore: sync development → nightly (2026-06-27) by @github-actions[bot] in #119
  • chore: sync nightly → production (2026-06-21) by @github-actions[bot] in #118
  • Development by @NodeByteLTD in #120

Full Changelog: v3.5.4...v3.6.0