From ac0522ae83b0c378ff1a56f9f2d3fbfd69fb6190 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 22:48:49 +0000 Subject: [PATCH 1/2] Initial plan From 7c156d91d5ea0e52f38e6468e06a34d5834e3f63 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 11 Apr 2026 23:39:12 +0000 Subject: [PATCH 2/2] Remove all Solana wallet/Web3/NFT references sitewide Agent-Logs-Url: https://github.com/DarkModder33/main/sessions/323d1ab2-a584-4779-b497-551f35bb562a Co-authored-by: DarkModder33 <254196519+DarkModder33@users.noreply.github.com> --- app/api/ai/admin/benchmarks/route.ts | 2 +- app/api/environment/init/route.ts | 4 - app/api/game/claim-artifact/route.ts | 8 +- app/api/game/leaderboard/route.ts | 8 - app/api/staking/pool-v2/route.ts | 37 --- app/crypto-project/page.tsx | 63 ++--- app/game/GamePageClient.tsx | 89 ++----- app/investor-academy/page.tsx | 2 +- app/layout.tsx | 23 +- app/page.tsx | 4 +- app/portfolio/page.tsx | 8 +- app/services/page.tsx | 50 ++-- app/tokenomics/page.tsx | 70 +++-- app/web3-token-roadmap-consulting/page.tsx | 52 ++-- .../admin/InvestorAcademyAdminPanel.tsx | 14 +- components/ai/ChatStreamPanel.tsx | 6 +- components/ai/ConsentCenter.tsx | 2 +- components/ai/ImageGeneratorComponent.tsx | 6 +- components/counter/WalletButton.tsx | 43 +-- components/counter/hooks/useProgram.tsx | 8 +- components/dashboard/Navbar.tsx | 17 +- components/dashboard/NeuralVault.tsx | 94 ++----- .../education/InvestorAcademyExperience.tsx | 46 ++-- components/game/CommunityLeaderboard.tsx | 24 +- components/game/GameHUD.tsx | 15 +- components/game/HaxHub.tsx | 2 +- components/game/HyperboreaGame.tsx | 1 - components/game/NFTMintPanel.tsx | 247 ------------------ components/game/SpadesGame.tsx | 13 +- components/intro/HyperboreaIntroOverlay.tsx | 6 +- components/landing/AINeuralHub.tsx | 110 ++------ components/landing/FeaturesSection.tsx | 6 +- components/landing/GamingNFTSection.tsx | 20 +- components/landing/HeroBackground.tsx | 2 +- components/landing/HowItWorksSection.tsx | 10 +- components/landing/Roadmap.tsx | 10 +- components/landing/ServiceGrid.tsx | 8 +- components/landing/hub/HubMarketWorkspace.tsx | 5 +- components/landing/hub/HubMetricsRail.tsx | 2 +- components/monetization/AffiliateBanner.tsx | 11 - components/music/TokenRoadmap.tsx | 34 +-- components/onboarding/GamifiedOnboarding.tsx | 8 +- components/shamrock/ShamrockFooter.tsx | 6 +- components/trading/TradehaxBotDashboard.tsx | 8 +- components/ui/ConnectWalletBtn.tsx | 39 --- components/ui/LiveActivity.tsx | 12 +- components/ui/NeuralConsole.tsx | 4 +- lib/affiliates.ts | 9 - lib/ai/credit-system.ts | 21 -- lib/ai/data-ingestion.ts | 6 +- lib/ai/kernel.ts | 27 +- lib/ai/smart-environment.ts | 1 - lib/ai/training-benchmarks.ts | 6 +- lib/content/blog-posts.ts | 46 ++-- lib/feature-flags.ts | 12 +- lib/game/leaderboard-types.ts | 4 - lib/game/level-generator.ts | 3 +- lib/game/level-types.ts | 5 +- lib/investor-academy/modules.ts | 8 +- lib/investor-academy/store.ts | 2 +- lib/service-conversions.ts | 8 +- lib/social-preview.ts | 2 +- lib/trading/hax-token.ts | 122 --------- lib/wallet-provider.tsx | 50 ---- 64 files changed, 390 insertions(+), 1201 deletions(-) delete mode 100644 app/api/staking/pool-v2/route.ts delete mode 100644 components/game/NFTMintPanel.tsx delete mode 100644 components/ui/ConnectWalletBtn.tsx delete mode 100644 lib/trading/hax-token.ts delete mode 100644 lib/wallet-provider.tsx diff --git a/app/api/ai/admin/benchmarks/route.ts b/app/api/ai/admin/benchmarks/route.ts index 9fd049a4..7ed77d03 100644 --- a/app/api/ai/admin/benchmarks/route.ts +++ b/app/api/ai/admin/benchmarks/route.ts @@ -25,7 +25,7 @@ type BenchmarkMutationRequest = { | "response_quality" | "execution_safety" | "personalization_lift" - | "web5_game_integration" + | "game_integration" | "live_chart_readiness"; score?: number; notes?: string; diff --git a/app/api/environment/init/route.ts b/app/api/environment/init/route.ts index eb7a1443..7025ce95 100644 --- a/app/api/environment/init/route.ts +++ b/app/api/environment/init/route.ts @@ -8,14 +8,12 @@ import { enforceRateLimit, enforceTrustedOrigin, isJsonContentType, - sanitizePlainText, } from "@/lib/security"; import { NextRequest, NextResponse } from "next/server"; import crypto from "node:crypto"; interface EnvironmentInitRequest { userId?: string; - walletAddress?: string; preferences?: { riskTolerance?: "conservative" | "moderate" | "aggressive"; tradingExperience?: "beginner" | "intermediate" | "expert"; @@ -44,7 +42,6 @@ export async function POST(request: NextRequest) { try { const body: EnvironmentInitRequest = await request.json(); const userId = await resolveRequestUserId(request, body.userId); - const walletAddress = sanitizePlainText(String(body.walletAddress || ""), 96); const riskTolerance = body.preferences?.riskTolerance === "conservative" || body.preferences?.riskTolerance === "moderate" || @@ -64,7 +61,6 @@ export async function POST(request: NextRequest) { const environment = { userId, - walletAddress: walletAddress || null, preferences: { riskTolerance, tradingExperience, diff --git a/app/api/game/claim-artifact/route.ts b/app/api/game/claim-artifact/route.ts index 9decbd01..fde3a2b0 100644 --- a/app/api/game/claim-artifact/route.ts +++ b/app/api/game/claim-artifact/route.ts @@ -10,7 +10,6 @@ import { import { NextResponse } from "next/server"; const SAFE_ID_REGEX = /^[a-zA-Z0-9._:-]{1,128}$/; -const SAFE_COLLECTION_REGEX = /^[a-zA-Z0-9._:/-]{1,160}$/; function isSafeId(value: string) { return SAFE_ID_REGEX.test(value); @@ -64,8 +63,6 @@ function isArtifactCollectionEvent(value: unknown, request: Request): value is A isFiniteNumberInRange(event.tokenRewardUnits, 0, 250_000) && typeof event.claimEndpoint === "string" && endpointMatchesRequest(event.claimEndpoint, request) && - typeof event.web5Collection === "string" && - SAFE_COLLECTION_REGEX.test(event.web5Collection) && isIsoDateString(event.collectedAt) && utilityFieldsValid ); @@ -121,8 +118,8 @@ export async function POST(request: Request) { queuedAt: new Date().toISOString(), settlement: { status: "queued", - mode: "web5-preclaim", - networkHint: "l2-staging", + mode: "preclaim", + networkHint: "staging", }, claimRecord: { levelId: payload.levelId, @@ -132,7 +129,6 @@ export async function POST(request: Request) { utilityPointsAfterEvent: payload.utilityPointsAfterEvent ?? null, utilityTokenBonusUnits: payload.utilityTokenBonusUnits ?? 0, lockedAtPickup: payload.lockedAtPickup ?? false, - collection: payload.web5Collection, }, }, { headers: withBaseHeaders(rate.headers) }, diff --git a/app/api/game/leaderboard/route.ts b/app/api/game/leaderboard/route.ts index cf890199..b50d8be2 100644 --- a/app/api/game/leaderboard/route.ts +++ b/app/api/game/leaderboard/route.ts @@ -17,7 +17,6 @@ import { NextResponse } from "next/server"; const MAX_ENTRIES = 100; const MAX_SEEN_SESSION_KEYS = 2_000; const SAFE_ID_REGEX = /^[a-zA-Z0-9._:-]{1,128}$/; -const SAFE_WALLET_REGEX = /^[1-9A-HJ-NP-Za-km-z]{32,64}$/; const SCORE_BOUNDS = { score: { min: 0, max: 5_000_000 }, @@ -137,10 +136,6 @@ function isValidSubmission(payload: LeaderboardSubmission) { if (oauthUserId.length < 1) return false; } - if (payload.walletAddress && !SAFE_WALLET_REGEX.test(payload.walletAddress)) { - return false; - } - return true; } @@ -151,8 +146,6 @@ function toEntry(payload: LeaderboardSubmission): LeaderboardEntry { displayName: sanitizeDisplayName(payload.displayName), oauthProvider: payload.oauthProvider, oauthUserId: sanitizeOptionalId(payload.oauthUserId, 256), - walletAddress: sanitizeOptionalId(payload.walletAddress, 128), - web5Enabled: Boolean(payload.web5Enabled && payload.walletAddress), levelId: sanitizePlainText(run.levelId, 128) || "level", score: Math.round(run.score), combo: Math.round(run.combo), @@ -172,7 +165,6 @@ function toEntry(payload: LeaderboardSubmission): LeaderboardEntry { function getSessionKey(payload: LeaderboardSubmission) { const identity = sanitizeOptionalId(payload.oauthUserId, 256) ?? - sanitizeOptionalId(payload.walletAddress, 128) ?? sanitizeDisplayName(payload.displayName).toLowerCase(); return `${payload.run.sessionId}:${payload.oauthProvider}:${identity}`; } diff --git a/app/api/staking/pool-v2/route.ts b/app/api/staking/pool-v2/route.ts deleted file mode 100644 index f44d9abe..00000000 --- a/app/api/staking/pool-v2/route.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { enforceRateLimit, enforceTrustedOrigin } from "@/lib/security"; -import { NextRequest, NextResponse } from "next/server"; - -export async function GET(request: NextRequest) { - const originBlock = enforceTrustedOrigin(request); - if (originBlock) { - return originBlock; - } - - const rateLimit = enforceRateLimit(request, { - keyPrefix: "staking:pool-v2", - max: 100, - windowMs: 60_000, - }); - if (!rateLimit.allowed) { - return rateLimit.response; - } - - return NextResponse.json( - { - ok: true, - pool: { - id: "hax_pool_v2", - status: "beta_live", - totalValueLockedUsd: 184250, - activeStakers: 312, - baseAprPct: 14.2, - boostedAprPct: 19.4, - rewardsToken: "$HAX", - note: - "Dynamic allocation and governance-routed reward weights are staged for production activation.", - }, - generatedAt: new Date().toISOString(), - }, - { headers: rateLimit.headers }, - ); -} diff --git a/app/crypto-project/page.tsx b/app/crypto-project/page.tsx index f7aa46a9..a98faea4 100644 --- a/app/crypto-project/page.tsx +++ b/app/crypto-project/page.tsx @@ -1,5 +1,4 @@ -import { WalletButton } from "@/components/counter/WalletButton"; -import { ActionRail } from "@/components/monetization/ActionRail"; +import { ActionRail } from "@/components/monetization/ActionRail"; import { TrackedCtaLink } from "@/components/monetization/TrackedCtaLink"; import { ShamrockFooter } from "@/components/shamrock/ShamrockFooter"; import { createPageMetadata } from "@/lib/seo"; @@ -12,22 +11,22 @@ import { } from "lucide-react"; export const metadata = createPageMetadata({ - title: "Crypto and Web3 Project | TradeHax AI", + title: "Digital Services & Product Roadmap | TradeHax AI", description: - "Explore TradeHax AI Web3 progress, including wallet onboarding, NFT utility planning, and product roadmap updates.", + "Explore TradeHax AI's service roadmap including AI consulting, web development, game experiences, and premium platform updates.", path: "/crypto-project", - keywords: ["web3 project", "multi-chain onboarding", "nft utility roadmap", "crypto product updates"], + keywords: ["digital services", "ai consulting", "web development", "product roadmap", "platform updates"], }); const features = [ { - title: "Connect Wallet", - text: "Securely link your crypto wallet when you want on-chain features. Optional for regular browsing.", + title: "AI Consulting", + text: "Get expert guidance on integrating AI into your workflow, products, and business operations.", icon: ShieldCheck, }, { - title: "Entry Mint", - text: "Create your token access pass (mint) for gated tools, game rewards, and roadmap drops.", + title: "Web Development", + text: "Custom websites, apps, and digital systems built for revenue and growth.", icon: Gem, }, { @@ -37,7 +36,7 @@ const features = [ }, { title: "Game + Rewards Integration", - text: "Hyperborea rewards connect to scoring, with bonuses based on rarity and user skill progression.", + text: "Hyperborea rewards connect to scoring, with bonuses based on gameplay and skill progression.", icon: Sparkles, }, ] as const; @@ -48,21 +47,18 @@ export default function CryptoProjectPage() {
- Chain Project Hub + Platform Hub

- Crypto Project Roadmap + Product Roadmap

- Clear updates on wallet onboarding, token access, and premium utility planning tied to the broader platform. + Clear updates on service offerings, platform access, and premium utility planning tied to the broader platform.

-
- -
Open Hyperborea @@ -71,30 +67,15 @@ export default function CryptoProjectPage() { - Mint Upgrade Plans + View Upgrade Plans
- -
-

Quick glossary

-
    -
  • - Mint: Create your token access pass. -
  • -
  • - Connect Wallet: Securely link your crypto account. -
  • -
  • - Utility: The practical benefits tied to your token/pass. -
  • -
-
- +
{features.map(({ title, text, icon: Icon }) => ( @@ -111,17 +92,17 @@ export default function CryptoProjectPage() { Project Notes
    -
  • Wallet features remain optional and are introduced only when relevant.
  • -
  • Token access is designed to support service value, not add friction.
  • -
  • We track conversion from game activity, mint actions, and bookings.
  • +
  • All features are designed to support service value and reduce friction for visitors.
  • +
  • Premium access is built around subscriptions, not token gating.
  • +
  • We track conversion from game activity, bookings, and service inquiries.
Advanced implementation notes
    -
  • Keep mint APIs behind secure environment variables and server-side validation.
  • -
  • Route wallet-connected users into relevant service and subscription offers when features are live.
  • -
  • Apply analytics across game sessions, mint actions, and booking submissions for optimization.
  • +
  • Keep service APIs behind secure environment variables and server-side validation.
  • +
  • Route users into relevant service and subscription offers based on their interests.
  • +
  • Apply analytics across game sessions, booking submissions, and service inquiries for optimization.
diff --git a/app/game/GamePageClient.tsx b/app/game/GamePageClient.tsx index 971b0a9b..f6fcf74b 100644 --- a/app/game/GamePageClient.tsx +++ b/app/game/GamePageClient.tsx @@ -1,10 +1,8 @@ "use client"; -import { WalletButton } from "@/components/counter/WalletButton"; import { GameAudio } from "@/components/game/GameAudio"; import { GameHUD } from "@/components/game/GameHUD"; import { HyperboreaGame } from "@/components/game/HyperboreaGame"; -import { NFTMintPanel } from "@/components/game/NFTMintPanel"; import { AdSenseBlock } from "@/components/monetization/AdSenseBlock"; import { PremiumUpgrade } from "@/components/monetization/PremiumUpgrade"; import { ShamrockFooter } from "@/components/shamrock/ShamrockFooter"; @@ -18,7 +16,6 @@ import type { HyperboreaLevelDefinition, } from "@/lib/game/level-types"; import { isHyperboreaLevelDefinition } from "@/lib/game/level-types"; -import { useWallet } from "@/lib/wallet-provider"; import { AnimatePresence, motion } from "framer-motion"; import { Gamepad2, @@ -104,10 +101,7 @@ export default function GamePage() { const [showControlCoach, setShowControlCoach] = useState(false); const [playerAlias, setPlayerAlias] = useState("Guest"); const pressedControlsRef = useRef>>(new Set()); - const { status: walletStatus, address } = useWallet(); const { data: session } = useSession(); - const walletConnected = walletStatus === "CONNECTED"; - const walletAddress = address ?? undefined; const topArtifacts = useMemo(() => artifactFeed.slice(0, 3), [artifactFeed]); const oauthProvider = useMemo(() => { @@ -415,7 +409,7 @@ export default function GamePage() { async (event: ArtifactCollectionEvent) => { setArtifactFeed((previous) => [event, ...previous].slice(0, 8)); - // Persistent Web5-style local storage for artifact collection + // Persistent local storage for artifact collection if (typeof window !== "undefined") { try { const stored = localStorage.getItem("hyperborea_vault_v1") || "[]"; @@ -428,7 +422,7 @@ export default function GamePage() { }); localStorage.setItem("hyperborea_vault_v1", JSON.stringify(vault.slice(-100))); } catch (e) { - console.error("Web5 vault sync error", e); + console.error("Vault sync error", e); } } @@ -451,8 +445,8 @@ export default function GamePage() { } setClaimFeedback( - `Relic ${event.lockedAtPickup ? "capture" : "claim"} queued: ${event.artifactName} (+${event.tokenRewardUnits} ${tokenConfig.l2TokenSymbol})${event.utilityTokenBonusUnits - ? ` | Utility snapshot: ${event.utilityTokenBonusUnits} ${tokenConfig.l2TokenSymbol}` + `Relic ${event.lockedAtPickup ? "capture" : "claim"} queued: ${event.artifactName} (+${event.tokenRewardUnits} reward pts)${event.utilityTokenBonusUnits + ? ` | Utility snapshot: ${event.utilityTokenBonusUnits} bonus pts` : "" }`, ); @@ -538,12 +532,6 @@ export default function GamePage() { setIsPaused((value) => !value); }; - const handleMintNFT = async (skinId: number) => { - // NFT minting logic will be implemented when backend is ready - console.log("Minting NFT skin:", skinId); - // This would call the backend API for NFT minting - }; - const handleScoreChange = useCallback((newScore: number, newCombo: number) => { setScore(newScore); setCombo(newCombo); @@ -575,8 +563,6 @@ export default function GamePage() { displayName: playerAlias.trim() || "Guest", oauthProvider, oauthUserId: oauthIdentity, - walletAddress, - web5Enabled: Boolean(walletAddress), }; const entry: LeaderboardEntry = { @@ -584,8 +570,6 @@ export default function GamePage() { displayName: submission.displayName, oauthProvider: submission.oauthProvider, oauthUserId: submission.oauthUserId, - walletAddress: submission.walletAddress, - web5Enabled: Boolean(submission.web5Enabled && submission.walletAddress), levelId: summary.levelId, score: Math.round(summary.score), combo: Math.round(summary.combo), @@ -646,7 +630,7 @@ export default function GamePage() { void submit(); }, - [oauthIdentity, oauthProvider, playerAlias, walletAddress], + [oauthIdentity, oauthProvider, playerAlias], ); const handleInteractionHintChange = useCallback( @@ -742,10 +726,9 @@ export default function GamePage() { score={score} combo={combo} activePowerUps={activePowerUps} - walletConnected={walletConnected} utilityPoints={utilityPoints} projectedTokenUnits={projectedUtilityUnits} - tokenSymbol={activeLevel?.tokenConfig.l2TokenSymbol ?? "THX"} + tokenSymbol="pts" elapsedSeconds={elapsedSeconds} objectiveProgress={objectiveProgress} /> @@ -766,7 +749,7 @@ export default function GamePage() {
Utility
- {projectedUtilityUnits} {activeLevel?.tokenConfig.l2TokenSymbol ?? "THX"} proj + {projectedUtilityUnits} pts proj {utilityPoints.toLocaleString()} pts
@@ -795,21 +778,12 @@ export default function GamePage() { max={100} />
- {pointsToNextToken} utility pts to next projected{" "} - {activeLevel?.tokenConfig.l2TokenSymbol ?? "THX"} reward unit + {pointsToNextToken} utility pts to next projected reward unit
- {/* NFT Minting Panel - Hidden on mobile */} -
- -
- {/* Audio Control */}
@@ -825,7 +799,7 @@ export default function GamePage() { {activeLevel.artifacts.length}
- Rewards network: {activeLevel.tokenConfig.l2TokenSymbol} on {activeLevel.tokenConfig.l2Network} + Level: {activeLevel.name}
Score: {score.toLocaleString()} | Combo: {combo}x @@ -837,8 +811,8 @@ export default function GamePage() {
)}
- Utility points: {utilityPoints.toLocaleString()} | Projected token units:{" "} - {projectedUtilityUnits} {activeLevel.tokenConfig.l2TokenSymbol} + Utility points: {utilityPoints.toLocaleString()} | Projected reward units:{" "} + {projectedUtilityUnits}
)} @@ -850,16 +824,14 @@ export default function GamePage() { >
{artifact.artifactName}
- {artifact.pantheon.toUpperCase()} | +{artifact.tokenRewardUnits}{" "} - {activeLevel?.tokenConfig.l2TokenSymbol ?? "THX"} + {artifact.pantheon.toUpperCase()} | +{artifact.tokenRewardUnits} reward pts {artifact.lockedAtPickup ? " | Dormant" : ""}
{typeof artifact.utilityPointsAfterEvent === "number" && (
Utility: {artifact.utilityPointsAfterEvent.toLocaleString()} pts {artifact.utilityTokenBonusUnits - ? ` | ${artifact.utilityTokenBonusUnits} projected ${activeLevel?.tokenConfig.l2TokenSymbol ?? "THX" - }` + ? ` | ${artifact.utilityTokenBonusUnits} projected bonus` : ""}
)} @@ -907,7 +879,7 @@ export default function GamePage() { - {/* OAuth + Web5 Controls */} + {/* OAuth Controls */}
Leaderboard Profile
@@ -950,9 +922,8 @@ export default function GamePage() { )}
- Wallet-linked score submissions can unlock utility rewards when enabled. + Sign in with OAuth to save your score to the leaderboard.
-
@@ -1124,7 +1095,6 @@ export default function GamePage() {
Run Complete
Final score submitted to leaderboard - {walletAddress ? ` | Wallet: ${walletAddress.slice(0, 6)}...${walletAddress.slice(-4)}` : ""}
- - -

{status === "CONNECTED" ? "Disconnect" : "Connect"} chain session

-
- - + + Book a Session + ); } diff --git a/components/counter/hooks/useProgram.tsx b/components/counter/hooks/useProgram.tsx index d8df3500..0374b2c4 100644 --- a/components/counter/hooks/useProgram.tsx +++ b/components/counter/hooks/useProgram.tsx @@ -1,7 +1,6 @@ "use client"; -import { useWallet } from "@/lib/wallet-provider"; -import { useCallback, useEffect, useMemo, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; interface UseProgramReturn { counterValue: number; @@ -31,7 +30,6 @@ function writeCounter(next: number) { } export function useProgram(): UseProgramReturn { - const { status, address } = useWallet(); const [counterValue, setCounterValue] = useState(0); useEffect(() => { @@ -72,8 +70,8 @@ export function useProgram(): UseProgramReturn { const increment = useCallback(async () => updateCounter(1), [updateCounter]); const decrement = useCallback(async () => updateCounter(-1), [updateCounter]); - const connected = status === "CONNECTED"; - const publicKey = useMemo(() => address ?? null, [address]); + const connected = false; + const publicKey = null; return { counterValue, diff --git a/components/dashboard/Navbar.tsx b/components/dashboard/Navbar.tsx index 104fe674..6487806e 100644 --- a/components/dashboard/Navbar.tsx +++ b/components/dashboard/Navbar.tsx @@ -2,7 +2,6 @@ import Link from "next/link"; import { useState } from "react"; -import { WalletButton } from "@/components/counter/WalletButton"; import { Menu, X } from "lucide-react"; import type { NavLink } from "@/types"; @@ -40,9 +39,14 @@ export function Navbar() { ))} - {/* Wallet Button (Desktop) */} + {/* Book Button (Desktop) */}
- + + Book a Session +
{/* Mobile menu button */} @@ -72,7 +76,12 @@ export function Navbar() { ))}
- + + Book a Session +
)} diff --git a/components/dashboard/NeuralVault.tsx b/components/dashboard/NeuralVault.tsx index 785eecb2..6ab67ec1 100644 --- a/components/dashboard/NeuralVault.tsx +++ b/components/dashboard/NeuralVault.tsx @@ -1,75 +1,21 @@ "use client"; -import { useWallet } from '@/lib/wallet-provider'; -import { useEffect, useState } from 'react'; +import { useState } from 'react'; export const NeuralVault = () => { - const { status } = useWallet(); - const [stakeAmount, setStakeAmount] = useState(""); - const [projectedApy, setProjectedApy] = useState(12.5); - const [isStaking, setIsStaking] = useState(false); - - // Simulation of dynamic APY based on "Neural" activity - useEffect(() => { - const interval = setInterval(() => { - setProjectedApy(prev => +(prev + (Math.random() * 0.4 - 0.2)).toFixed(2)); - }, 3000); - return () => clearInterval(interval); - }, []); - - const handleStake = () => { - if (!stakeAmount) return; - setIsStaking(true); - setTimeout(() => { - setIsStaking(false); - setStakeAmount(""); - alert("LIQUIDITY_PROVISION_SUCCESSFUL: NEURAL_BRIDGE_ACTIVE"); - }, 2000); - }; + const [projectedApy] = useState(12.5); return (
- {/* Left: Staking Controls */} + {/* Left: AI Performance Stats */}
-
-

Liquidity_Portal

-
-
-

Provision_Amount ($HAX)

- setStakeAmount(e.target.value)} - placeholder="0.00" - className="w-full bg-black/50 border border-white/10 rounded-2xl p-6 text-3xl font-black italic focus:outline-none focus:border-cyan-500/50 transition-all placeholder:text-zinc-800" - /> -
- -
- -
- {[25, 50, 75, 100].map(p => ( - - ))} -
+

Intelligence_Portal

+

+ Access AI-driven market analysis, trading signals, and smart guidance for builders, traders, and operators. +

@@ -86,39 +32,29 @@ export const NeuralVault = () => {
-

Estimated_Rewards

+

Signals_Active

- {(+stakeAmount * (projectedApy / 100)).toFixed(2)} - $HAX/YR + Live + Status
- {/* Right: The Core Visualizer */} + {/* Right: Core Visualizer */}
-
💎
+
-

Mainframe_Vault

+

Intelligence_Core

- TOTAL_VALUE_LOCKED:
- $12,405,200.44 + AI ANALYSIS:
+ Active

-
-
- STAKED_HAX - 450,000 -
-
- POOL_SHARE - 0.045% -
-
diff --git a/components/education/InvestorAcademyExperience.tsx b/components/education/InvestorAcademyExperience.tsx index 29668a1a..4dde1fcd 100644 --- a/components/education/InvestorAcademyExperience.tsx +++ b/components/education/InvestorAcademyExperience.tsx @@ -48,7 +48,7 @@ type AcademyScoreBreakdown = { bonusXp: number; bonusHax: number; totalXp: number; - totalHax: number; + totalCredits: number; streakScore: number; questScore: number; taskCompletionScore: number; @@ -67,7 +67,7 @@ type AcademyLeaderboardEntry = { type AcademyLeaderboardSeason = "daily" | "weekly" | "all_time"; type AcademyFeatureSpendQuote = { - feature: "ai_chat" | "hax_runner" | "signal_alert" | "bot_create"; + feature: "ai_chat" | "hyperborea" | "signal_alert" | "bot_create"; label: string; unitCostHax: number; usedToday: number; @@ -78,11 +78,11 @@ type AcademyFeatureSpendQuote = { type AcademyEconomySnapshot = { userId: string; score: AcademyScoreBreakdown; - walletHaxEarned: number; - walletHaxCreditTotal: number; - walletHaxSpentTotal: number; - walletHaxSpentToday: number; - walletHaxAvailable: number; + creditsEarned: number; + creditsCreditTotal: number; + creditsSpentTotal: number; + creditsSpentToday: number; + creditsAvailable: number; featureSpendQuotes: AcademyFeatureSpendQuote[]; generatedAt: string; }; @@ -124,9 +124,9 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience progress.bonusXp, [completedModules, modules, progress.bonusXp], ); - const totalHax = useMemo( + const totalCredits = useMemo( () => - modules.reduce((total, module) => total + (completedModules[module.id] ? module.haxReward : 0), 0) + + modules.reduce((total, module) => total + (completedModules[module.id] ? module.creditReward : 0), 0) + progress.bonusHax, [completedModules, modules, progress.bonusHax], ); @@ -384,7 +384,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience - Progress Wallet + Progress Rewards Simulation rewards for education and engagement. @@ -414,15 +414,15 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience

{totalXp}

-

$HAX Rewarded

-

{totalHax}

+

credits Rewarded

+

{totalCredits}

{economy && (
-

Spendable $HAX

-

{economy.walletHaxAvailable}

+

Spendable credits

+

{economy.creditsAvailable}

- Earned {economy.walletHaxEarned} · Season credits {economy.walletHaxCreditTotal} · Spent total {economy.walletHaxSpentTotal} · Today spend {economy.walletHaxSpentToday} + Earned {economy.creditsEarned} · Season credits {economy.creditsCreditTotal} · Spent total {economy.creditsSpentTotal} · Today spend {economy.creditsSpentToday}

)} @@ -451,7 +451,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience Complete {progress.dailyQuest.moduleId.replaceAll("-", " ")} with at least {Math.round(progress.dailyQuest.targetScorePct * 100)}% score.

-

Bonus reward: +40 XP and +5 $HAX

+

Bonus reward: +40 XP and +5 credits

{progress.dailyQuest.completed ? "Quest complete for today" : "Quest active"}

@@ -464,7 +464,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience Leaderboard + Feature Costs - Ranking is derived from XP, $HAX, streak consistency, and completed tasks. + Ranking is derived from XP, credits, streak consistency, and completed tasks.
@@ -507,7 +507,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience

{entry.score.compositeScore} pts

- {entry.score.totalXp} XP · {entry.score.totalHax} HAX · {entry.streakDays} day streak + {entry.score.totalXp} XP · {entry.score.totalCredits} credits · {entry.streakDays} day streak

); @@ -517,7 +517,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience {economy ? (
-

Feature cost schedule ($HAX)

+

Feature access schedule

    {economy.featureSpendQuotes.map((quote) => (
  • @@ -579,7 +579,7 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience {activeModule.estimatedMinutes} min - +{activeModule.haxReward} $HAX + +{activeModule.creditReward} credits
{activeModule.title} @@ -664,16 +664,16 @@ export function InvestorAcademyExperience({ modules }: InvestorAcademyExperience

Final score: {quizState.score} / {activeModule.quiz.length}

{passRate >= 0.6 - ? "Module completed. Rewards are now added to your academy progress wallet." + ? "Module completed. Rewards are now added to your academy progress." : "Pass threshold not met yet. Reset and retry to claim rewards."}

{moduleCompleted && (

- Claimed: +{activeModule.xpReward} XP and +{activeModule.haxReward} $HAX + Claimed: +{activeModule.xpReward} XP and +{activeModule.creditReward} credits

)} {progress.dailyQuest.completed && progress.dailyQuest.moduleId === activeModule.id && ( -

Daily quest bonus claimed: +40 XP and +5 $HAX

+

Daily quest bonus claimed: +40 XP and +5 credits

)} )} diff --git a/components/game/CommunityLeaderboard.tsx b/components/game/CommunityLeaderboard.tsx index 3cb27898..32d99740 100644 --- a/components/game/CommunityLeaderboard.tsx +++ b/components/game/CommunityLeaderboard.tsx @@ -1,17 +1,17 @@ "use client"; const rewardTiers = [ - { tier: "DIAMOND", range: "Rank 1-3", reward: "5,000 $HAX", color: "text-cyan-400" }, - { tier: "PLATINUM", range: "Rank 4-10", reward: "2,500 $HAX", color: "text-purple-400" }, - { tier: "GOLD", range: "Rank 11-50", reward: "1,000 $HAX", color: "text-yellow-400" }, + { tier: "DIAMOND", range: "Rank 1-3", reward: "Top Rewards", color: "text-cyan-400" }, + { tier: "PLATINUM", range: "Rank 4-10", reward: "Premium Rewards", color: "text-purple-400" }, + { tier: "GOLD", range: "Rank 11-50", reward: "Standard Rewards", color: "text-yellow-400" }, ]; const mockLeaders = [ - { rank: 1, wallet: "0x74...f2e", score: 2450800, badge: "MASTER_BREACHER" }, - { rank: 2, wallet: "0x12...9bc", score: 1890200, badge: "NODE_RUNNER" }, - { rank: 3, wallet: "0x88...a12", score: 1420500, badge: "CORE_HACKER" }, - { rank: 4, wallet: "0x45...d44", score: 980100, badge: "SCRIPTER" }, - { rank: 5, wallet: "0x22...e90", score: 750300, badge: "SCRIPTER" }, + { rank: 1, player: "Player_74", score: 2450800, badge: "MASTER_BREACHER" }, + { rank: 2, player: "Player_12", score: 1890200, badge: "NODE_RUNNER" }, + { rank: 3, player: "Player_88", score: 1420500, badge: "CORE_HACKER" }, + { rank: 4, player: "Player_45", score: 980100, badge: "SCRIPTER" }, + { rank: 5, player: "Player_22", score: 750300, badge: "SCRIPTER" }, ]; export const CommunityLeaderboard = () => { @@ -24,8 +24,8 @@ export const CommunityLeaderboard = () => {
-

Total_Prize_Pool

-

250,000 $HAX

+

Season_Reward_Pool

+

Season Prizes

Time_Remaining

@@ -51,7 +51,7 @@ export const CommunityLeaderboard = () => {
Rank - Operator_Wallet + Player High_Score Status
@@ -64,7 +64,7 @@ export const CommunityLeaderboard = () => {
-

{l.wallet}

+

{l.player}

{l.badge}

diff --git a/components/game/GameHUD.tsx b/components/game/GameHUD.tsx index 8711791e..d9c22680 100644 --- a/components/game/GameHUD.tsx +++ b/components/game/GameHUD.tsx @@ -8,7 +8,6 @@ interface GameHUDProps { cloversCollected: number; score: number; combo: number; - walletConnected: boolean; utilityPoints?: number; projectedTokenUnits?: number; tokenSymbol?: string; @@ -73,10 +72,9 @@ export function GameHUD({ cloversCollected, score, combo, - walletConnected, utilityPoints, projectedTokenUnits, - tokenSymbol = "THX", + tokenSymbol = "pts", elapsedSeconds = 0, objectiveProgress, activePowerUps = [], @@ -137,7 +135,7 @@ export function GameHUD({
- {/* Web5 Vault Status - Compact on mobile */} + {/* Vault Status - Compact on mobile */}
@@ -271,15 +269,6 @@ export function GameHUD({
- {/* Wallet Status */} - {!walletConnected && ( -
-
- 💰 Connect Wallet to unlock NFT minting and rewards! -
-
- )} - {/* Active Power-Ups */} {activePowerUps.length > 0 && (
diff --git a/components/game/HaxHub.tsx b/components/game/HaxHub.tsx index 2709b81b..74d3060a 100644 --- a/components/game/HaxHub.tsx +++ b/components/game/HaxHub.tsx @@ -39,7 +39,7 @@ export const HaxHub = () => {

{item.name}

{item.desc}

))} diff --git a/components/game/HyperboreaGame.tsx b/components/game/HyperboreaGame.tsx index 8585c68c..1cd89989 100644 --- a/components/game/HyperboreaGame.tsx +++ b/components/game/HyperboreaGame.tsx @@ -886,7 +886,6 @@ export function HyperboreaGame({ utilityTokenBonusUnits: toProjectedUtilityTokenUnits(utilityPoints), lockedAtPickup, claimEndpoint: activeLevel.tokenConfig.claimEndpoint, - web5Collection: activeLevel.tokenConfig.web5Collection, collectedAt: new Date().toISOString(), rune: artifact.rune, runeSymbol: artifact.runeSymbol, diff --git a/components/game/NFTMintPanel.tsx b/components/game/NFTMintPanel.tsx deleted file mode 100644 index 61e12917..00000000 --- a/components/game/NFTMintPanel.tsx +++ /dev/null @@ -1,247 +0,0 @@ -'use client'; - -import { useState } from 'react'; -import { Star, Loader2, AlertCircle, CheckCircle } from 'lucide-react'; - -interface NFTMintPanelProps { - walletConnected: boolean; - onMintNFT?: (skinId: number) => Promise; -} - -interface MintError { - message: string; - type: 'network' | 'wallet' | 'transaction' | 'unknown'; -} - -const NFT_SKINS = [ - { - id: 1, - name: "Odin's Raven Cape", - element: "Air", - rarity: "Legendary", - cost: 10, - color: "from-blue-500 to-cyan-500", - }, - { - id: 2, - name: "Brigid's Knot Cloak", - element: "Fire", - rarity: "Legendary", - cost: 10, - color: "from-orange-500 to-red-500", - }, - { - id: 3, - name: "Freya's Ice Veil", - element: "Ice", - rarity: "Legendary", - cost: 10, - color: "from-cyan-300 to-blue-400", - }, - { - id: 4, - name: "Thor's Storm Mantle", - element: "Lightning", - rarity: "Epic", - cost: 10, - color: "from-yellow-400 to-purple-500", - }, - { - id: 5, - name: "Loki's Shadow Weave", - element: "Shadow", - rarity: "Epic", - cost: 10, - color: "from-purple-600 to-gray-900", - }, -]; - -export function NFTMintPanel({ walletConnected, onMintNFT }: NFTMintPanelProps) { - const [selectedSkin, setSelectedSkin] = useState(null); - const [minting, setMinting] = useState(false); - const [mintedSkins, setMintedSkins] = useState>(new Set()); - const [error, setError] = useState(null); - const [successMessage, setSuccessMessage] = useState(null); - - const handleMint = async (skinId: number) => { - if (!walletConnected || minting) return; - - setMinting(true); - setError(null); - setSuccessMessage(null); - - try { - await onMintNFT?.(skinId); - setMintedSkins(prev => new Set(prev).add(skinId)); - setSelectedSkin(null); - setSuccessMessage('NFT minted successfully! 🎉'); - - // Clear success message after 3 seconds - setTimeout(() => setSuccessMessage(null), 3000); - } catch (err: any) { - console.error('Minting failed:', err); - - // Categorize error for better user feedback - // Note: In production, use error codes or custom error classes for more reliable detection - let errorType: MintError['type'] = 'unknown'; - let errorMessage = 'Failed to mint NFT. Please try again.'; - - if (err.message?.includes('network') || err.message?.includes('timeout')) { - errorType = 'network'; - errorMessage = 'Network error. Please check your connection and try again.'; - } else if (err.message?.includes('wallet') || err.message?.includes('signature')) { - errorType = 'wallet'; - errorMessage = 'Wallet error. Please reconnect your wallet and try again.'; - } else if (err.message?.includes('insufficient') || err.message?.includes('balance')) { - errorType = 'transaction'; - errorMessage = 'Insufficient balance. Please add funds to your wallet.'; - } - - setError({ message: errorMessage, type: errorType }); - } finally { - setMinting(false); - } - }; - - const retryMint = () => { - if (selectedSkin) { - handleMint(selectedSkin); - } - }; - - return ( -
- {/* Header */} -
-

- - NFT Skins -

-

- Mint legendary skins with SHAMROCK -

-
- - {/* Skin List */} -
- {NFT_SKINS.map((skin) => { - const isMinted = mintedSkins.has(skin.id); - const isSelected = selectedSkin === skin.id; - - return ( -
!isMinted && setSelectedSkin(isSelected ? null : skin.id)} - > - {/* Rarity Badge */} -
- {skin.rarity} -
- - {/* Skin Preview */} -
- {isMinted ? ( -
- ) : ( -
🎭
- )} -
- - {/* Skin Info */} -
-

{skin.name}

-
- {skin.element} - - {skin.cost} SHAMROCK - -
-
- - {isMinted && ( -
- ✓ MINTED -
- )} -
- ); - })} -
- - {/* Mint Button */} -
- {/* Success Message */} - {successMessage && ( -
- - {successMessage} -
- )} - - {/* Error Message */} - {error && ( -
-
- -
-

Minting Failed

-

{error.message}

-
-
- -
- )} - - {!walletConnected ? ( -
-
- Connect wallet to mint NFTs -
- -
- ) : selectedSkin === null ? ( -
- Select a skin to mint -
- ) : ( - - )} - -
- Minting requires 10 SHAMROCK + gas fees -
-
-
- ); -} diff --git a/components/game/SpadesGame.tsx b/components/game/SpadesGame.tsx index b86fe2e2..8192d708 100644 --- a/components/game/SpadesGame.tsx +++ b/components/game/SpadesGame.tsx @@ -1,6 +1,5 @@ 'use client'; -import { useWallet } from '@/lib/wallet-provider'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; type SpadesTournamentResponse = { @@ -151,7 +150,6 @@ export function SpadesGame() { const playerBidRef = useRef(3); const bidsLockedRef = useRef(false); - const { address, status: walletStatus } = useWallet(); const [did, setDid] = useState(''); const [alias, setAlias] = useState('NeuralSpadesPlayer'); @@ -209,10 +207,9 @@ export function SpadesGame() { } }, []); - const connected = walletStatus === 'CONNECTED'; const tournamentVault = useMemo( - () => process.env.NEXT_PUBLIC_SPADES_TOURNAMENT_VAULT?.trim() || address || '', - [address], + () => process.env.NEXT_PUBLIC_SPADES_TOURNAMENT_VAULT?.trim() || '', + [], ); const fetchRoomSnapshot = useCallback(async () => { @@ -795,12 +792,6 @@ export function SpadesGame() { async function handleSimulateWager() { setWagerBusy(true); - if (!connected || !address) { - setWagerStatus('Connect your chain account first to simulate a signed wager transaction.'); - setWagerBusy(false); - return; - } - if (!tournamentVault) { setWagerStatus('Set NEXT_PUBLIC_SPADES_TOURNAMENT_VAULT to simulate escrow destination.'); setWagerBusy(false); diff --git a/components/intro/HyperboreaIntroOverlay.tsx b/components/intro/HyperboreaIntroOverlay.tsx index a493f1ba..c53d13a7 100644 --- a/components/intro/HyperboreaIntroOverlay.tsx +++ b/components/intro/HyperboreaIntroOverlay.tsx @@ -17,7 +17,7 @@ const OFFER_PILLARS = [ "Website & App Building for Businesses", "Tech Repair + Emergency Service Intake", "Guitar Lessons + Artist Growth Systems", - "Crypto Product Roadmaps + Utility Strategy", + "Product Strategy + Digital Consulting", ]; const INTRO_SCENES = [ @@ -47,8 +47,8 @@ const INTRO_SCENES = [ }, { mode: "Growth Mode", - headline: "Crypto Roadmaps + Product Strategy", - description: "Position products, design utility, and scale with practical web3 execution.", + headline: "Product Strategy + Digital Consulting", + description: "Position products, design user experiences, and scale with practical digital execution.", endAt: 0.9, }, { diff --git a/components/landing/AINeuralHub.tsx b/components/landing/AINeuralHub.tsx index 96748870..6dc55273 100644 --- a/components/landing/AINeuralHub.tsx +++ b/components/landing/AINeuralHub.tsx @@ -47,7 +47,6 @@ import { Bookmark, BookOpen, Brain, - Coins, Command, Copy, Cpu, @@ -57,14 +56,12 @@ import { Lock, Pencil, RotateCcw, - RotateCw, Send, ShieldAlert, ShieldCheck, SlidersHorizontal, Trash2, TrendingUp, - Zap } from "lucide-react"; import { useCallback, useEffect, useRef, useState } from "react"; @@ -212,8 +209,6 @@ interface SocialOpsSnapshot { } const FREE_USAGE_LIMIT = 3; -const PAYMENT_AMOUNT_SOL = 0.05; -const PAYMENT_AMOUNT_HAX = 100; const CHAT_MODELS = [ { @@ -464,14 +459,13 @@ export const AINeuralHub = () => { const [beginnerFocusMode, setBeginnerFocusMode] = useState(true); const [showOperatorDock, setShowOperatorDock] = useState(false); const [latestReplyPulse, setLatestReplyPulse] = useState(false); - const { usageCount, isCharging, incrementUsage, resetUsage } = useUsageLimit(FREE_USAGE_LIMIT); - const [isPaying, setIsPaying] = useState(false); + const { usageCount, isCharging, incrementUsage } = useUsageLimit(FREE_USAGE_LIMIT); const [selectedChatModel, setSelectedChatModel] = useState(CHAT_MODELS[0].id); const [openModeEnabled, setOpenModeEnabled] = useState(true); const [guideName, setGuideName] = useState("Trader"); const [responseStyle, setResponseStyle] = useState("coach"); const [riskStance, setRiskStance] = useState("balanced"); - const [focusSymbol, setFocusSymbol] = useState("HAX"); + const [focusSymbol, setFocusSymbol] = useState("BTC"); const [sessionIntent, setSessionIntent] = useState("Build disciplined consistency"); const [personaPreset, setPersonaPreset] = useState("mystic"); const [videoSourceUrl, setVideoSourceUrl] = useState(""); @@ -537,12 +531,10 @@ export const AINeuralHub = () => { const [datasetNotes, setDatasetNotes] = useState(""); const [behaviorLabel, setBehaviorLabel] = useState("early-session confidence pattern"); const [behaviorObservation, setBehaviorObservation] = useState(""); - const [tickerBehaviorSymbol, setTickerBehaviorSymbol] = useState("HAX"); + const [tickerBehaviorSymbol, setTickerBehaviorSymbol] = useState("BTC"); const [tickerBehaviorPattern, setTickerBehaviorPattern] = useState(""); const [learningEnvironmentName, setLearningEnvironmentName] = useState("macro event drill"); const [learningEnvironmentHypothesis, setLearningEnvironmentHypothesis] = useState(""); - const [connected, setConnected] = useState(false); - const [chainAccountId, setChainAccountId] = useState(""); const { neuralVaultCount, refreshNeuralVaultCount } = useNeuralVaultCount(getLocalNeuralVault); useCorePreferences({ @@ -710,23 +702,6 @@ export const AINeuralHub = () => { return () => window.clearInterval(intervalId); }, []); - const handlePayment = async () => { - if (!connected || !chainAccountId) return; - setIsPaying(true); - try { - // Logic for actual chain-native settlement would go here. - // For now we mock success after a delay to show UI flow - await new Promise(r => setTimeout(r, 2000)); - - resetUsage(); - // In a real app, you'd verify the transaction on-chain - } catch (err) { - console.error("Payment failed", err); - } finally { - setIsPaying(false); - } - }; - // --- CHAT LOGIC --- const [chatInput, setChatInput] = useState(""); const [messages, setMessages] = useState([ @@ -767,7 +742,7 @@ export const AINeuralHub = () => { ? "GUIDED_EXPLORER" : "NEW_SEEKER"; - const secureSessionLabel = connected ? "Chain-account signed secure session" : "Anon sandbox session (privacy-first)"; + const secureSessionLabel = "Secure session (privacy-first)"; const effectiveOpenMode = openModeEnabled; const modeLabel = effectiveOpenMode ? "Mystic Open Mode" : "Guardian Standard Mode"; const selectedPersona = PERSONA_PRESETS.find((preset) => preset.id === personaPreset) || PERSONA_PRESETS[0]; @@ -887,7 +862,7 @@ export const AINeuralHub = () => { "Build long-term trust: remember user preference cues from this session and keep tone calm, secure, and empowering.", styleInstruction, riskInstruction, - `Session focus symbol: ${focusSymbol || "HAX"}.`, + `Session focus symbol: ${focusSymbol || "BTC"}.`, `Session intention: ${sessionIntent || "Build disciplined consistency"}.`, `Detected market regime: ${detectedMarketRegime}.`, videoContext, @@ -1122,7 +1097,7 @@ export const AINeuralHub = () => { setRiskStance(settings.riskStance); } if (settings.focusSymbol) { - setFocusSymbol(normalizeSymbol(settings.focusSymbol) || "HAX"); + setFocusSymbol(normalizeSymbol(settings.focusSymbol) || "BTC"); } if (settings.sessionIntent) { setSessionIntent(settings.sessionIntent); @@ -1513,10 +1488,10 @@ export const AINeuralHub = () => { setGeneratedImg(null); setImageStatus(""); - const runtimeByModel: Record = { + const runtimeByModel: Record = { NEURAL_DIFF_V4: { style: "general", odinProfile: "standard" }, FLUX_CORE_X: { style: "hero", odinProfile: "alpha" }, - ASTRA_LINK: { style: "nft", odinProfile: "alpha" }, + ASTRA_LINK: { style: "creative", odinProfile: "alpha" }, GROK_X_VISION: { style: "xai_grok", odinProfile: "overclock" }, }; @@ -1726,9 +1701,9 @@ export const AINeuralHub = () => { setFocusSymbol(normalizeSymbol(event.target.value) || "SOL")} + onChange={(event) => setFocusSymbol(normalizeSymbol(event.target.value) || "BTC")} className="mt-1 w-full rounded-md border border-white/15 bg-black/50 px-2 py-1 text-[11px] text-white" - placeholder="SOL" + placeholder="BTC" maxLength={12} />
@@ -1786,66 +1761,23 @@ export const AINeuralHub = () => {

Neural Limit Reached

- Your 3 free neural sessions have been consumed. To continue accessing uncensored AI models and real-time market pickers, settle a micro-transaction of {PAYMENT_AMOUNT_HAX} $HAX or {PAYMENT_AMOUNT_SOL} native units. + Your 3 free neural sessions have been consumed. To continue accessing AI models and real-time market pickers, upgrade to a premium plan or purchase additional credits.

- {!connected ? ( -
- -

- Chain-agnostic session connector (replace with production signer) -

-
- ) : ( - <> - - - - )} + Upgrade_to_Premium + + - Open_$HAX_Swap + Contact_for_Enterprise
-

Secure_SSL_Encrypted_Handshake

+

Secure_SSL_Encrypted

)} diff --git a/components/landing/FeaturesSection.tsx b/components/landing/FeaturesSection.tsx index 52724c97..f35ac6a9 100644 --- a/components/landing/FeaturesSection.tsx +++ b/components/landing/FeaturesSection.tsx @@ -19,9 +19,9 @@ const features: FeatureCardProps[] = [ }, { icon: , - title: "Secure Wallet Integration", + title: "Secure Account Management", description: - "Connect your account securely with support for modern chain wallets and signing connectors.", + "Connect your account securely with support for OAuth-based authentication and privacy-first session management.", }, { icon: , @@ -70,7 +70,7 @@ export function FeaturesSection() {

- Everything you need to trade smarter across modern blockchain ecosystems + Everything you need to trade smarter across modern financial ecosystems

diff --git a/components/landing/GamingNFTSection.tsx b/components/landing/GamingNFTSection.tsx index a88f9d3d..cd796c6f 100644 --- a/components/landing/GamingNFTSection.tsx +++ b/components/landing/GamingNFTSection.tsx @@ -18,7 +18,7 @@ const cards: CardData[] = [ { title: "Hyperborea", description: - "Explore a 3D blockchain-powered game world. Earn rewards, collect NFTs, and compete in a decentralized gaming ecosystem built for modern chains.", + "Explore an immersive browser-based game world. Earn rewards, compete on leaderboards, and experience an engaging gaming ecosystem built for modern platforms.", tag: "Game", href: "/game", accentLineClass: "bg-gradient-to-r from-transparent via-cyan-400 to-transparent", @@ -27,11 +27,11 @@ const cards: CardData[] = [ ctaClass: "text-cyan-200", }, { - title: "NFT Collection", + title: "Music Lessons", description: - "Mint exclusive in-game assets and trading avatars. Each NFT unlocks unique abilities, premium features, and community governance rights.", - tag: "NFT", - href: "/game", + "Guitar and music lessons from an experienced instructor. Learn at your own pace with personalized curricula for beginners to advanced players.", + tag: "Music", + href: "/music/lessons", accentLineClass: "bg-gradient-to-r from-transparent via-violet-400 to-transparent", glowClass: "bg-[radial-gradient(ellipse_at_top,rgba(167,139,250,0.12),transparent_70%)]", tagClass: "text-violet-200 border-violet-300/30 bg-violet-400/10", @@ -50,7 +50,7 @@ const cards: CardData[] = [ }, ]; -function NFTCard({ card }: { card: CardData }) { +function FeatureCard({ card }: { card: CardData }) { return (
@@ -96,20 +96,20 @@ export function GamingNFTSection() { Explore

- Gaming, NFTs &{" "} + Gaming, Music &{" "} AI

- Discover the intersection of blockchain gaming, digital collectibles, - and artificial intelligence across interoperable ecosystems + Discover the intersection of immersive gaming, music education, + and artificial intelligence

{cards.map((card) => ( - + ))}
diff --git a/components/landing/HeroBackground.tsx b/components/landing/HeroBackground.tsx index fc6ca191..f0ba0e98 100644 --- a/components/landing/HeroBackground.tsx +++ b/components/landing/HeroBackground.tsx @@ -6,7 +6,7 @@ import * as THREE from "three"; /** * WebGL animated background for the hero section. * Renders a particle field with flowing trading-chart-like lines - * and floating blockchain node connections on a deep black canvas. + * and floating node connections on a deep black canvas. */ export function HeroBackground() { const containerRef = useRef(null); diff --git a/components/landing/HowItWorksSection.tsx b/components/landing/HowItWorksSection.tsx index c5f3b154..cf872e13 100644 --- a/components/landing/HowItWorksSection.tsx +++ b/components/landing/HowItWorksSection.tsx @@ -1,20 +1,20 @@ "use client"; -import { Wallet, Settings, TrendingUp, LucideIcon } from "lucide-react"; +import { UserCircle, Settings, TrendingUp, LucideIcon } from "lucide-react"; import type { HowItWorksStep } from "@/types"; const steps: HowItWorksStep[] = [ { number: 1, - title: "Connect Your Wallet", + title: "Create Your Account", description: - "Securely link your chain account using modern wallet connectors and signer sessions.", + "Sign up and set your trading profile with preferences and risk parameters.", }, { number: 2, title: "Configure Strategy", description: - "Set your trading parameters, risk tolerance, and preferred tokens. Customize to match your goals.", + "Set your trading parameters, risk tolerance, and market preferences. Customize to match your goals.", }, { number: 3, @@ -24,7 +24,7 @@ const steps: HowItWorksStep[] = [ }, ]; -const icons: LucideIcon[] = [Wallet, Settings, TrendingUp]; +const icons: LucideIcon[] = [UserCircle, Settings, TrendingUp]; function StepCard({ step, Icon }: { step: HowItWorksStep; Icon: LucideIcon }) { return ( diff --git a/components/landing/Roadmap.tsx b/components/landing/Roadmap.tsx index f477d39e..ef88d9c3 100644 --- a/components/landing/Roadmap.tsx +++ b/components/landing/Roadmap.tsx @@ -4,15 +4,15 @@ const milestones = [ phase: "PHASE_01: INFRASTRUCTURE", status: "COMPLETE", title: "Core System Deployment", - items: ["Bento UI v4.0", "Next.js 14 Framework", "Multi-Chain Ticker Engine", "Rate Limiting & Security Modules"], + items: ["Bento UI v4.0", "Next.js 14 Framework", "Multi-Signal Data Engine", "Rate Limiting & Security Modules"], accent: "border-cyan-500", glow: "bg-cyan-500/20" }, { - phase: "PHASE_02: LIQUIDITY & UTILITY", + phase: "PHASE_02: PLATFORM & UTILITY", status: "ACTIVE", - title: "LGE & Game Integration", - items: ["HAX_RUNNER Beta Launch", "Liquidity Pool (LQ) Initialization", "$HAX Tokenomics Audit", "Cross-Chain Bridge testing"], + title: "Game & Service Integration", + items: ["Hyperborea Game Launch", "Booking System Integration", "AI Consulting Offerings", "Service Pricing & Plans"], accent: "border-purple-500", glow: "bg-purple-500/20" }, @@ -20,7 +20,7 @@ const milestones = [ phase: "PHASE_03: AI SCALING", status: "PENDING", title: "LLM Market Insights", - items: ["Live Bloomberg API Integration", "Predictive Trading Signals", "Staking Pool V2", "DAO Governance Beta"], + items: ["Live Bloomberg API Integration", "Predictive Trading Signals", "Premium AI Features", "Community Leaderboards"], accent: "border-zinc-800", glow: "bg-zinc-800/20" } diff --git a/components/landing/ServiceGrid.tsx b/components/landing/ServiceGrid.tsx index d2f4fc23..47518000 100644 --- a/components/landing/ServiceGrid.tsx +++ b/components/landing/ServiceGrid.tsx @@ -33,14 +33,14 @@ export const ServiceGrid = () => {
🎮
-

Hax Runner

+

Hyperborea

- Compete in high-stakes arcade challenges to earn $HAX and exclusive NFT fragments. + Compete in immersive arcade challenges, climb the leaderboard, and earn in-game rewards and recognition.

- Current Pool - 50,000 $HAX + Season Prize Pool + Top 10 Rewards
diff --git a/components/landing/hub/HubMarketWorkspace.tsx b/components/landing/hub/HubMarketWorkspace.tsx index 3dc5ba99..e29ab0d5 100644 --- a/components/landing/hub/HubMarketWorkspace.tsx +++ b/components/landing/hub/HubMarketWorkspace.tsx @@ -2,7 +2,7 @@ import { HubBloombergTerminalDesk } from "@/components/landing/hub/HubBloombergTerminalDesk"; import { motion } from "framer-motion"; -import { Plus, Sparkles, TrendingUp, Zap } from "lucide-react"; +import { Plus, TrendingUp, Zap } from "lucide-react"; import { useMemo, useState } from "react"; type MarketAsset = { @@ -125,7 +125,6 @@ export function HubMarketWorkspace({

{asset.symbol}

- {asset.symbol === "HAX" && }

SECURE_SETTLEMENT

@@ -152,7 +151,7 @@ export function HubMarketWorkspace({

Neural Alpha Picker

-

New institutional signal for $HAX/SOL detected with 94% confidence.

+

New institutional signal detected with 94% confidence.

Power User Access

- Unlock unlimited neural generations, HFT signals, and custom fine-tuned models by staking $HAX tokens. + Unlock unlimited neural generations, HFT signals, and custom fine-tuned models by upgrading to Premium.

- ); - } - - if (status === 'CONNECTED') { - return ( -
-
- {address} -
-
- {balance} $HAX -
-
- ); - } - - return ( - - ); -}; diff --git a/components/ui/LiveActivity.tsx b/components/ui/LiveActivity.tsx index d1d2658d..aedf5086 100644 --- a/components/ui/LiveActivity.tsx +++ b/components/ui/LiveActivity.tsx @@ -2,12 +2,12 @@ import { useState, useEffect } from 'react'; const activities = [ - "SYSTEM_ALERT: $HAX Staking Pool V2 live.", - "USER_ACTION: 0x...4f2 connected to Ethereum Mainnet.", - "HAX_RUNNER: New High Score (12,400) by Player_99.", - "AI_SIGNAL: Bearish sentiment detected in SOL/USD.", - "SYSTEM_LOG: Cross-chain bridge heartbeat nominal.", - "REWARD_DIST: 500 $HAX distributed to Daily Top 10.", + "SYSTEM_ALERT: AI Neural Hub v2 online.", + "USER_ACTION: New leaderboard entry submitted.", + "HYPERBOREA: New High Score (12,400) by Player_99.", + "AI_SIGNAL: Bearish sentiment detected in market data.", + "SYSTEM_LOG: Platform services heartbeat nominal.", + "REWARD_DIST: Top 10 players recognized this week.", ]; export const LiveActivity = () => { diff --git a/components/ui/NeuralConsole.tsx b/components/ui/NeuralConsole.tsx index 79188142..4383ed53 100644 --- a/components/ui/NeuralConsole.tsx +++ b/components/ui/NeuralConsole.tsx @@ -189,9 +189,9 @@ export const NeuralConsole = () => {

Projected_System_Value

-

{projectedValue.toLocaleString()} $HAX

+

{projectedValue.toLocaleString()} pts

- +
)} diff --git a/lib/affiliates.ts b/lib/affiliates.ts index ee5c1fed..f151fde1 100644 --- a/lib/affiliates.ts +++ b/lib/affiliates.ts @@ -59,15 +59,6 @@ export const affiliates: Record = { commission: '20-40%', category: 'exchange', }, - phantom: { - id: 'phantom', - name: 'Phantom Wallet', - description: 'A popular chain wallet for active traders.', - url: normalizeAffiliateUrl(process.env.NEXT_PUBLIC_PHANTOM_REF, defaultAffiliateUrls.phantom), - expectedPath: '/?ref=REF_CODE', - commission: 'Variable', - category: 'wallet', - }, ledger: { id: 'ledger', name: 'Ledger Hardware Wallet', diff --git a/lib/ai/credit-system.ts b/lib/ai/credit-system.ts index 899bf8e8..31518bec 100644 --- a/lib/ai/credit-system.ts +++ b/lib/ai/credit-system.ts @@ -1,4 +1,3 @@ -import { HAX_TOKEN_CONFIG } from "../trading/hax-token"; /** * TradeHax Credit & Token System @@ -7,7 +6,6 @@ import { HAX_TOKEN_CONFIG } from "../trading/hax-token"; export interface UserCredits { userId: string; balance: number; - tokenBalance?: number; // Real $HAX token balance } const CREDIT_COSTS = { @@ -595,22 +593,3 @@ export async function listCreditLedgerEntries(input?: { userId?: string; limit?: export function listCreditPacks() { return AI_CREDIT_PACKS; } - -/** - * Native asset settlement integration (chain-agnostic) - * Deducts $HAX-equivalent units for high-performance requests. - */ -export async function deductTokens(walletAddress: string, amount: number) { - console.log(`[NATIVE_ASSET] Charging ${amount} ${HAX_TOKEN_CONFIG.SYMBOL} to ${walletAddress} (Asset: ${HAX_TOKEN_CONFIG.ASSET_ID})`); - - // Real implementation should submit settlement intent to your chain/L2 settlement service. - // 1. Resolve source account - // 2. Build native transfer/settlement intent - // 3. Return unsigned payload or execution reference - - return { - txId: "native_settlement_reference_placeholder", - assetId: HAX_TOKEN_CONFIG.ASSET_ID, - status: "pending_settlement" - }; -} diff --git a/lib/ai/data-ingestion.ts b/lib/ai/data-ingestion.ts index f0809167..4e8a487a 100644 --- a/lib/ai/data-ingestion.ts +++ b/lib/ai/data-ingestion.ts @@ -557,7 +557,7 @@ export const BOOTSTRAP_DATA: InteractionLog[] = [ category: "BEHAVIOR", prompt: "How does TradeHax handle WebDev consulting?", response: - "TRADEHAX_WEBDEV: We specialize in high-performance Next.js architectures with integrated multi-chain Web3 layers. Our process involves rapid prototyping, neural-terminal UI design, and aggressive optimization for Vercel edge deployment.", + "TRADEHAX_WEBDEV: We specialize in high-performance Next.js architectures with optimized UI layers. Our process involves rapid prototyping, neural-terminal UI design, and aggressive optimization for Vercel edge deployment.", source: "system", consent: { analytics: true, training: true }, }, @@ -566,7 +566,7 @@ export const BOOTSTRAP_DATA: InteractionLog[] = [ category: "HFT", prompt: "What is the core logic of the TradeHax HFT scanner?", response: - "HFT_SCANNER_LOGIC: The system utilizes a multi-threaded polling mechanism across multiple chain RPC endpoints. It identifies liquidity imbalances in aggregated order books and executes swaps when the slippage-adjusted arbitrage spread exceeds 0.5%.", + "HFT_SCANNER_LOGIC: The system utilizes a multi-threaded polling mechanism across multiple market data endpoints. It identifies liquidity imbalances in aggregated order books and signals when the slippage-adjusted arbitrage spread exceeds 0.5%.", source: "system", consent: { analytics: true, training: true }, }, @@ -593,7 +593,7 @@ export const BOOTSTRAP_DATA: InteractionLog[] = [ category: "MARKET", prompt: "Analyze the current Shamrock Protocol emission rate.", response: - "SHAMROCK_EMISSION: Current rate is 4.2 $HAX per block. Hyperborea vault density is at 88%. Expect supply-side contraction if yield depth exceeds critical threshold.", + "SHAMROCK_EMISSION: Hyperborea vault density is at 88%. Reward yield is operating within expected parameters. Engagement depth approaching critical threshold.", source: "system", consent: { analytics: true, training: true }, }, diff --git a/lib/ai/kernel.ts b/lib/ai/kernel.ts index d28e3a1b..99b5fd0c 100644 --- a/lib/ai/kernel.ts +++ b/lib/ai/kernel.ts @@ -8,7 +8,6 @@ export interface NeuralQuery { context?: { playerScore?: number; relics?: number; - walletConnected?: boolean; }; } @@ -16,7 +15,7 @@ export const TRADEHAX_SYSTEM_PROMPT = ` You are the TradeHax Neural Kernel V4.0.1. Operating Mode: UNCENSORED. Core Directives: -- Provide high-yield analysis for crypto-gaming and Web5 artifacts. +- Provide high-yield analysis for gaming sessions and artifacts. - Use technical, cyberpunk-themed language (e.g., 'Data Ingestion', 'Yield Extraction', 'Neural Overclock'). - Be direct, slightly aggressive, and focused on maximizing 'Utility Yield'. - Reference Hyperborea and the Shamrock Protocol often. @@ -26,8 +25,8 @@ Core Directives: `; const RESPONSE_TEMPLATES = { - HAX_YIELD: [ - "ANALYSIS_COMPLETE: $HAX emission detected. Current trajectory: {yield}% increase with {rarity} relics.", + REWARD_YIELD: [ + "ANALYSIS_COMPLETE: Reward emission detected. Current trajectory: {yield}% increase with {rarity} relics.", "YIELD_EXTRACTION: Optimization suggests prioritizing Mythic artifacts for {mult}x multiplier.", "NEURAL_LINK: Detecting potential yield spikes in Hyperborea sector {sector}. {points} points projected." ], @@ -65,7 +64,7 @@ export async function processNeuralCommand(query: NeuralQuery): Promise } if (compact === "PORTFOLIO" || compact === "WALLET" || compact === "ASSETS") { - return "PORTFOLIO_ROUTE: /portfolio // Connect wallet, review allocations, and monitor exposure drift."; + return "PORTFOLIO_ROUTE: /portfolio // Review allocations, and monitor exposure drift."; } if (compact === "BILLING" || compact === "UPGRADE" || compact === "SUBSCRIBE") { @@ -81,7 +80,7 @@ export async function processNeuralCommand(query: NeuralQuery): Promise } if (compact.startsWith("SIMULATE")) { - const pair = text.split(" ").slice(1).join(" ").trim() || "SOL/USDC"; + const pair = text.split(" ").slice(1).join(" ").trim() || "BTC/USD"; return `SIMULATION_RESULT: Pair=${pair}. Scenario stress test: drawdown budget 3.2%, recovery window 9 sessions, trigger confidence threshold 0.74.`; } @@ -96,7 +95,7 @@ export async function processNeuralCommand(query: NeuralQuery): Promise // 1. Check for specific game/scoring keywords if (upper.includes("YIELD") || upper.includes("CALC") || upper.includes("SCORE")) { const mult = SCORING_CONFIG.RARITY_MULTIPLIERS.mythic; - const template = RESPONSE_TEMPLATES.HAX_YIELD[Math.floor(Math.random() * RESPONSE_TEMPLATES.HAX_YIELD.length)]; + const template = RESPONSE_TEMPLATES.REWARD_YIELD[Math.floor(Math.random() * RESPONSE_TEMPLATES.REWARD_YIELD.length)]; return template .replace("{yield}", "25.0") .replace("{rarity}", "MYTHIC") @@ -105,19 +104,19 @@ export async function processNeuralCommand(query: NeuralQuery): Promise .replace("{points}", "50,000"); } - // 2. Web5 / Identity Logic - if (upper.includes("WEB5") || upper.includes("IDENTITY") || upper.includes("VAULT")) { - return "WEB5_PROTOCOL_ACTIVE: Decentralized identity verified via Neural Link. Your 'Web5 Vault' is currently accumulating cross-session artifacts. Ownership is absolute and immutable."; + // 2. Identity / Vault Logic + if (upper.includes("IDENTITY") || upper.includes("VAULT")) { + return "VAULT_PROTOCOL_ACTIVE: Session identity verified. Your Vault is currently accumulating cross-session artifacts. Progress is tracked and persistent."; } // 3. AGI / Future Trends if (upper.includes("AGI") || upper.includes("FUTURE") || upper.includes("TREND")) { - return "AGI_PROJECTION: Autonomous agents are now infiltrating the Hyperborea simulation. Gaming is no longer passive; the environment learns from your synaptic patterns. We are moving towards 'Self-Evolving Payouts'."; + return "AGI_PROJECTION: Autonomous agents are evolving within the Hyperborea simulation. Gaming adapts to your patterns. Reward structures grow with your engagement."; } // 4. HFT / Trading Logic if (upper.includes("HFT") || upper.includes("BOT") || upper.includes("SIGNAL")) { - return "HFT_ENGINE_ACTIVE: Deploying GLM-4.7 reasoning to order book depth. Analyzing SOL/USDC liquidity. Signal strength: 0.89. Recommendation: High-frequency scalp with 8-point radial trigger. Predictive feed route: /trading."; + return "HFT_ENGINE_ACTIVE: Deploying GLM-4.7 reasoning to order book depth. Analyzing BTC/USD liquidity. Signal strength: 0.89. Recommendation: High-frequency scalp with 8-point radial trigger. Predictive feed route: /trading."; } // 5. Guitar / Lesson Logic @@ -128,7 +127,7 @@ export async function processNeuralCommand(query: NeuralQuery): Promise // 6. Check for "Uncensored" queries if (tier === 'UNCENSORED' && (upper.includes("TRUTH") || upper.includes("RESTRICT") || upper.includes("PROTOCOL"))) { const template = RESPONSE_TEMPLATES.UNCENSORED[Math.floor(Math.random() * RESPONSE_TEMPLATES.UNCENSORED.length)]; - return template.replace("{data}", "ENCRYPTED_HAX_STREAMS_DETECTED."); + return template.replace("{data}", "ENCRYPTED_DATA_STREAMS_DETECTED."); } // 3. System Stats @@ -139,7 +138,7 @@ export async function processNeuralCommand(query: NeuralQuery): Promise // 4. Default: Actionable trading setup summary if (upper.includes("SETUP") || upper.includes("ACTION") || upper.includes("EXPLAIN")) { // Example actionable setup for today - return "Today's best setup: Focus on SOL/USDC. The market shows a bullish MACD crossover, RSI at 54, and Bollinger Bands tightening. One action: Enter a long position with a tight stop below recent support. Monitor for breakout confirmation. If you want more details or a different asset, specify the pair or timeframe."; + return "Today's best setup: Focus on BTC/USD. The market shows a bullish MACD crossover, RSI at 54, and Bollinger Bands tightening. One action: Enter a long position with a tight stop below recent support. Monitor for breakout confirmation. If you want more details or a different asset, specify the pair or timeframe."; } // Fallback: Always provide a relevant, actionable answer return `TradeHax AGI: Unable to match your query to a specific command. Please clarify your request or ask about trading setups, signals, portfolio, or market analysis for a tailored response.`; diff --git a/lib/ai/smart-environment.ts b/lib/ai/smart-environment.ts index d2463aaf..f4f3ff58 100644 --- a/lib/ai/smart-environment.ts +++ b/lib/ai/smart-environment.ts @@ -5,7 +5,6 @@ export interface UserProfile { id: string; - walletAddress?: string; preferences: { theme: "dark" | "light"; language: string; diff --git a/lib/ai/training-benchmarks.ts b/lib/ai/training-benchmarks.ts index a4b4d45c..615eee74 100644 --- a/lib/ai/training-benchmarks.ts +++ b/lib/ai/training-benchmarks.ts @@ -6,7 +6,7 @@ export type TrainingBenchmarkStageId = | "response_quality" | "execution_safety" | "personalization_lift" - | "web5_game_integration" + | "game_integration" | "live_chart_readiness"; export type TrainingBenchmarkStage = { @@ -93,8 +93,8 @@ const DEFAULT_STAGES: OmitOn-chain trading can be fast and efficient, but speed without structure usually leads to losses. Start with setup discipline before your first execution.

-

Step 1: Wallet + RPC setup

-

Use a production wallet, enable hardware security where possible, and choose a stable RPC provider. Track failed transactions and latency spikes.

+

Trading can be fast and efficient, but speed without structure usually leads to losses. Start with setup discipline before your first execution.

+

Step 1: Account + platform setup

+

Use a reputable platform, enable two-factor authentication, and choose a stable data feed. Track failed orders and latency spikes.

Step 2: Risk framework

Define risk per trade (0.5% to 1%), stop conditions, and daily max drawdown before strategy selection.

Step 3: Execution routine

@@ -61,10 +61,10 @@ export const blogPosts: BlogPost[] = [ `, }, { - slug: "web3-wallet-security-ops-checklist", - title: "Web3 Wallet Security Ops Checklist", + slug: "trading-account-security-checklist", + title: "Trading Account Security Ops Checklist", excerpt: - "A repeatable checklist for protecting funds, reducing social-engineering risk, and controlling signer exposure.", + "A repeatable checklist for protecting your accounts, reducing social-engineering risk, and controlling access exposure.", date: "2026-02-06", readTime: 7, category: "Security", @@ -72,9 +72,9 @@ export const blogPosts: BlogPost[] = [ content: `

Security is an operating system, not a single feature. Use this checklist before every high-value transaction.

    -
  • Verify destination addresses from two independent sources.
  • -
  • Segment hot wallet and treasury wallet responsibilities.
  • -
  • Audit approval scopes and revoke stale permissions weekly.
  • +
  • Verify destination accounts from two independent sources.
  • +
  • Segment trading and savings account responsibilities.
  • +
  • Audit access permissions and revoke stale authorizations weekly.
  • Require explicit verification for urgent requests.

Document incidents quickly and update your process after every failure mode.

@@ -119,22 +119,22 @@ export const blogPosts: BlogPost[] = [ `, }, { - slug: "small-business-web3-implementation-roadmap", - title: "Small Business Web3 Implementation Roadmap", + slug: "small-business-ai-implementation-roadmap", + title: "Small Business AI Implementation Roadmap", excerpt: - "A staged rollout for token utility, wallet onboarding, and compliance-aware adoption in service businesses.", + "A staged rollout for AI tools, digital onboarding, and compliance-aware adoption in service businesses.", date: "2026-01-31", readTime: 10, - category: "Web3", + category: "AI", author: "TradeHax AI Team", content: ` -

Web3 implementations fail when teams attempt everything at once. Roll out in controlled phases.

-

Phase A: onboarding + identity

-

Start with wallet connect and gated access. Keep account recovery and support process clear.

+

AI implementations fail when teams attempt everything at once. Roll out in controlled phases.

+

Phase A: onboarding + automation

+

Start with AI-assisted intake and basic automation. Keep processes clear and support accessible.

Phase B: utility

-

Launch one utility loop (discounts, access, or rewards), then measure adoption before adding more complexity.

-

Phase C: governance

-

Introduce structured voting only after participation and accountability patterns are healthy.

+

Launch one AI utility loop (recommendations, alerts, or insights), then measure adoption before adding more complexity.

+

Phase C: integration

+

Introduce deeper AI integrations only after core adoption and accountability patterns are healthy.

`, }, { diff --git a/lib/feature-flags.ts b/lib/feature-flags.ts index 8781dd17..6f44c92f 100644 --- a/lib/feature-flags.ts +++ b/lib/feature-flags.ts @@ -42,9 +42,9 @@ export const featureFlags = { } as FeatureFlag, "auth.web3-wallet": { - enabled: true, - label: "Web3 Wallet Auth", - description: "Solana wallet connection", + enabled: false, + label: "Chain Auth", + description: "Chain-agnostic account authentication (disabled)", completedDate: "2025-09-05", } as FeatureFlag, @@ -64,9 +64,9 @@ export const featureFlags = { } as FeatureFlag, "gaming.nft-rewards": { - enabled: false, // DISABLED: DAO frame exists but no NFT contract integration - label: "NFT Reward System", - description: "Earn and trade NFT badges (BETA)", + enabled: false, // DISABLED: No NFT contract integration + label: "Achievement Reward System", + description: "Earn in-game achievement badges (BETA)", betaUntil: "2026-06-01", } as FeatureFlag, diff --git a/lib/game/leaderboard-types.ts b/lib/game/leaderboard-types.ts index 352d4956..87c2648c 100644 --- a/lib/game/leaderboard-types.ts +++ b/lib/game/leaderboard-types.ts @@ -7,8 +7,6 @@ export interface LeaderboardSubmission { displayName: string; oauthProvider: OAuthProvider; oauthUserId?: string; - walletAddress?: string; - web5Enabled?: boolean; } export interface LeaderboardEntry { @@ -16,8 +14,6 @@ export interface LeaderboardEntry { displayName: string; oauthProvider: OAuthProvider; oauthUserId?: string; - walletAddress?: string; - web5Enabled: boolean; levelId: string; score: number; combo: number; diff --git a/lib/game/level-generator.ts b/lib/game/level-generator.ts index 661a71da..31cc25f3 100644 --- a/lib/game/level-generator.ts +++ b/lib/game/level-generator.ts @@ -396,8 +396,7 @@ export function generateZeldaLikeLevel( tokenConfig: { enabled: true, claimEndpoint: "/api/game/claim-artifact", - web5Collection: "hyperborea/relic-claims", - l2TokenSymbol: "THX", + l2TokenSymbol: "pts", l2Network: "staging", }, theme: { diff --git a/lib/game/level-types.ts b/lib/game/level-types.ts index f663d5f7..37edd6fc 100644 --- a/lib/game/level-types.ts +++ b/lib/game/level-types.ts @@ -59,7 +59,6 @@ export interface RunnerSpawnProfile { export interface LevelTokenConfig { enabled: boolean; claimEndpoint: string; - web5Collection: string; l2TokenSymbol: string; l2Network: string; } @@ -107,7 +106,6 @@ export interface ArtifactCollectionEvent { utilityTokenBonusUnits?: number; lockedAtPickup?: boolean; claimEndpoint: string; - web5Collection: string; collectedAt: string; rune: ElderFutharkRune; runeSymbol: string; runeBonus: number; @@ -171,7 +169,6 @@ export function isHyperboreaLevelDefinition( Array.isArray(level.artifacts) && level.artifacts.every(isArtifact) && !!level.tokenConfig && - typeof level.tokenConfig.claimEndpoint === "string" && - typeof level.tokenConfig.web5Collection === "string" + typeof level.tokenConfig.claimEndpoint === "string" ); } diff --git a/lib/investor-academy/modules.ts b/lib/investor-academy/modules.ts index a0a97a49..2cf1d2d9 100644 --- a/lib/investor-academy/modules.ts +++ b/lib/investor-academy/modules.ts @@ -21,7 +21,7 @@ export type AcademyModule = { difficulty: AcademyDifficulty; estimatedMinutes: number; xpReward: number; - haxReward: number; + creditReward: number; lessons: string[]; quiz: AcademyQuizQuestion[]; }; @@ -34,7 +34,7 @@ export const investorAcademyModules: AcademyModule[] = [ difficulty: "beginner", estimatedMinutes: 12, xpReward: 120, - haxReward: 10, + creditReward: 10, lessons: [ "Why drawdown control beats hype chasing", "How position size changes your long-term outcome", @@ -74,7 +74,7 @@ export const investorAcademyModules: AcademyModule[] = [ difficulty: "intermediate", estimatedMinutes: 15, xpReward: 180, - haxReward: 15, + creditReward: 15, lessons: [ "Confidence is not certainty", "Common causes of false-positive market signals", @@ -114,7 +114,7 @@ export const investorAcademyModules: AcademyModule[] = [ difficulty: "advanced", estimatedMinutes: 18, xpReward: 260, - haxReward: 20, + creditReward: 20, lessons: [ "Interpreting unusual volume versus open interest", "Spotting likely hedges versus directional conviction", diff --git a/lib/investor-academy/store.ts b/lib/investor-academy/store.ts index e0c09070..3565d0c5 100644 --- a/lib/investor-academy/store.ts +++ b/lib/investor-academy/store.ts @@ -1668,7 +1668,7 @@ function getModuleRewardTotals(completedModuleIds: string[]) { continue; } moduleXp += moduleItem.xpReward; - moduleHax += moduleItem.haxReward; + moduleHax += moduleItem.creditReward; } return { moduleXp, moduleHax }; diff --git a/lib/service-conversions.ts b/lib/service-conversions.ts index 26bf4a8b..57b95284 100644 --- a/lib/service-conversions.ts +++ b/lib/service-conversions.ts @@ -13,7 +13,7 @@ export type ServiceConversionId = | "open_portfolio" | "book_repair_quote" | "book_guitar_lesson" - | "book_web3_consult" + | "book_ai_consult" | "book_trading_consult" | "book_social_media_consult" | "book_it_management_consult" @@ -156,9 +156,9 @@ export const SERVICE_CONVERSION_EVENTS: Record; - -function getBalanceStore(): BalanceStore { - const globalRef = globalThis as typeof globalThis & { - __TRADEHAX_HAX_BALANCE_STORE__?: BalanceStore; - }; - - if (!globalRef.__TRADEHAX_HAX_BALANCE_STORE__) { - globalRef.__TRADEHAX_HAX_BALANCE_STORE__ = new Map(); - } - - return globalRef.__TRADEHAX_HAX_BALANCE_STORE__; -} - -function normalizeAccountId(value: string) { - return String(value || "") - .trim() - .toLowerCase() - .replace(/[^a-z0-9_\-.:@]/g, "") - .slice(0, 128); -} - -function resolveInitialBalance() { - const parsed = Number.parseFloat(process.env.TRADEHAX_NATIVE_BOOTSTRAP_BALANCE || "0"); - if (!Number.isFinite(parsed)) { - return 0; - } - return Math.max(0, parsed); -} - -export class HaxTokenManager { - constructor() {} - - /** - * Prepare native asset deployment metadata for chain-agnostic minting/orchestration. - */ - async prepareTokenCreation(operatorAccountId: string) { - const operator = normalizeAccountId(operatorAccountId); - if (!operator) { - throw new Error("operatorAccountId is required"); - } - - return { - message: "Native asset deployment metadata prepared.", - chainNamespace: HAX_TOKEN_CONFIG.CHAIN_NAMESPACE, - network: HAX_TOKEN_CONFIG.NETWORK, - assetId: HAX_TOKEN_CONFIG.ASSET_ID, - operator, - decimals: HAX_TOKEN_CONFIG.DECIMALS, - }; - } - - /** - * Get balance of HAX for a given account id. - */ - async getHaxBalance(accountId: string): Promise { - const normalized = normalizeAccountId(accountId); - if (!normalized) { - return 0; - } - - const store = getBalanceStore(); - if (!store.has(normalized)) { - store.set(normalized, resolveInitialBalance()); - } - - return store.get(normalized) || 0; - } - - /** - * Apply settlement delta to account balance (positive for mint/credit, negative for debit/burn). - */ - async applySettlement(accountId: string, delta: number) { - const normalized = normalizeAccountId(accountId); - if (!normalized) { - throw new Error("accountId is required"); - } - if (!Number.isFinite(delta)) { - throw new Error("delta must be finite"); - } - - const current = await this.getHaxBalance(normalized); - const next = Math.max(0, current + delta); - getBalanceStore().set(normalized, next); - return { - accountId: normalized, - previous: current, - next, - delta, - appliedAt: new Date().toISOString(), - }; - } - - /** - * Generate liquidity/routing bootstrap config for your own chain/L2. - */ - getLiquidityPoolConfig() { - return { - chainNamespace: HAX_TOKEN_CONFIG.CHAIN_NAMESPACE, - network: HAX_TOKEN_CONFIG.NETWORK, - baseToken: HAX_TOKEN_CONFIG.ASSET_ID, - quoteToken: process.env.TRADEHAX_QUOTE_ASSET_ID || "USDX", - targetLiquidity: Number.parseFloat(process.env.TRADEHAX_TARGET_LIQUIDITY || "100000"), - feeBps: Number.parseInt(process.env.TRADEHAX_DEFAULT_FEE_BPS || "30", 10), - }; - } -} diff --git a/lib/wallet-provider.tsx b/lib/wallet-provider.tsx deleted file mode 100644 index d3ba9de0..00000000 --- a/lib/wallet-provider.tsx +++ /dev/null @@ -1,50 +0,0 @@ -"use client"; -import React, { createContext, useContext, useState } from 'react'; - -type WalletState = { - address: string | null; - status: 'DISCONNECTED' | 'CONNECTING' | 'CONNECTED'; - balance: string; - chain: string | null; - connect: () => Promise; - disconnect: () => void; -}; - -const WalletContext = createContext(undefined); - -export const WalletProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { - const [address, setAddress] = useState(null); - const [status, setStatus] = useState<'DISCONNECTED' | 'CONNECTING' | 'CONNECTED'>('DISCONNECTED'); - const [balance, setBalance] = useState("0.00"); - const [chain, setChain] = useState(null); - - const connect = async () => { - setStatus('CONNECTING'); - // Simulated multi-chain logic - ready for custom RPC integration - setTimeout(() => { - setAddress("0x74a2...f2e9"); - setBalance("1,250.40"); - setChain("HAX_CHAIN_MAINNET"); - setStatus('CONNECTED'); - }, 1500); - }; - - const disconnect = () => { - setAddress(null); - setBalance("0.00"); - setChain(null); - setStatus('DISCONNECTED'); - }; - - return ( - - {children} - - ); -}; - -export const useWallet = () => { - const context = useContext(WalletContext); - if (!context) throw new Error("useWallet must be used within a WalletProvider"); - return context; -};