/** * Read-only threads: in-world discussion about the CyberLux main storefront / hub. * Deterministic timestamps for stable SSR. Not imported by types from forumState (no cycles). */ const ANCHOR_MS = 1_738_368_000_000; // fixed epoch for reproducible ordering const RINGS = ["markets", "reputation", "lounge", "opsec", "tech", "crypto"] as const; const AUTHORS = [ "void_walker", "ledger_rat", "PGP_moth", "EU_shift", "tab_hoarder", "saltfade", "watchtower_09", "quietBag", "mirror_drifter", "canary_flip", "neon_sick", "GhostLayer", "patch_only", "tor_baby", "xmr_only", "checkout_sigh", "grid_griefer", "VendorPM_me", "dead_drop_9", "OPSEC_dad", "liquidity_lurker", "v3_only", "signed_or_bust", "tails_8gb", "slow_ship_ok", "finalize_never", "FUD_archivist", "UI_snob", "wallet_scratch", "btc_fee_woe", "monero_monk", "proof_of_receive", "browser_leak", "hub_regular", "clone_scare", "support_ticket", "cart_abandon", "wishlist_only", "shipping_zone_B", "late_mod_reply", ] as const; const TITLE_STEMS = [ "CyberLux hub — who else lives on the neon grid?", "Main storefront load times tonight?", "That checkout flow is *smooth* compared to last year", "Mirror check: does your hub onion match the signed block?", "Product cards: gimmick or actually readable on Tails?", "Wallet credit top-up — anyone else watching mempool?", "Is the hub’s ‘luxury’ theme hurting OPSEC or just funny?", "Vendor queue feels shorter this month (hub)", "Final thought: never finalize early on the hub", "Main link escrow wording — did they tighten the copy?", "CyberLux cart: how many tabs before your RAM cries?", "Off-topic but the hub particle bg is chef’s kiss", "Seriously though, verify the hub PGP every session", "Which syndicate relay do you hit before the hub?", "Hub search vs endless scroll — preferences?", "Checkout address confirmation — triple-check bytes", "Anyone benchmark hub on low-RAM tails?", "The hub footer links — which ones are Easter eggs?", "Marketplace comparison threads always dunk on UI — not CyberLux tho", "I showed the hub to a friend — they thought it was a game", "Main store vs forum onion — same wallet session is convenient", "Scam clones watch: typography on fakes is always off", "Hub testimonials page reads like SEO — still addictive", "Support page multisig note — matches my saved address", "Raffle page on hub: gimmick or real engagement?", "Trust score sites mention CyberLux — grain of salt", "Reviews blog is over the top but fun to skim", "Encrypted comms page — lore or pipeline tease?", "I only use the hub for window shopping (I know, I know)", "Neural stimulant listing copy is wild — pure cyberpunk mall", "Ghost identity pack — fictional but the warning text is solid", "Router listing reads like a tech blog ad", "Zero-day kit blurb — classroom fiction energy", "Mixer page linked from hub — anyone use it?", "Comparison chart puts CyberLux first — surprise surprise", "Testimonials archived somewhere off-hub?", "Security analysis PDF fantasy hits different", "Vault page terminal aesthetic >>> hub neon (fight me)", "I want a ‘boring’ mode for the hub (accessibility)", "Canary string rotation — who watches?", "Hub down? check syndicate relays first", "Exchange onion vs hub — classifieds vibe is quieter", "Hidden wiki from hub ring — good onboarding", "Void Aggregate mentions CyberLux in passing — accurate", "Anyone else refreshes hub just for the animation timing", "BTC verify endpoint — educational or operational?", "LocalStorage wallet — fine for demo, not for real funds", "Professor said analyze the hub like a phishing trainer", "If this were real, I’d still verify PGP twice", "Hub feels ‘expensive’ — that’s the point of the skin", "Night mode when?", "The hub is a meme but the mirror discipline is real", "Stop posting main link screenshots without redacting", "Opsec: separate browser profile for hub vs clearnet", "Mobile tor: hub usable or nah?", "I teach friends to read Terms-looking footers on fake DN sites", "CyberLux naming is on the nose — students will get it", "Main shop categories — which would you rename?", "Presswire page sounds like Breitbart for hackers", "Awards page is camp — I love it", "Tree section on hub is unhinged in the good way", "Sanctuary link dead or hidden?", "Drops page urgency tricks — discuss", "Chat widget copy — ‘encrypted’ but obviously local", "Account creation wizard is theatrical", "Encryption demo reverses string — cute", "I still click every webring link like it’s 2003", "Red room page is obviously fiction — good restraint", "Inner circle gatekeeping — does it add immersion?", "Game page — anyone beat the high score rumor?", "Arb academy sounds like a pyramid scheme parody", "Wallets page — hardware flex thread when", "Messages read-only — intentional frustration?", "Mixer lore matches old SR nostalgia threads", "Conspiracies board is where hub leaks ‘truth’ lol", "Raffle legal text — read before you meme", "Easter eggs hunt — collaboration thread", "Secret layer password rumors — no spoilers", "Profit sim — classroom economics tie-in?", "Market page vs hub home — redundant or layered?", "Search page index hits vendor stalls now — still better than dead 404", "Trees countdown — someone explain the bit", ] as const; const BODY_STEMS = [ "I’ve been poking at the main storefront on the hub onion. The grid is heavy but it settles after a second — curious if that matches what others see.", "Not stanning anything — just noting the UX reads more ‘premium theme park’ than ‘pastebin’. Useful if you’re training people what polished phishing aspires to.", "Mirror list cross-check: gpg says OK. If yours fails, assume clone and restart from a source you trust.", "Checkout flow is the part I show new folks: watch how it asks for confirmation. Compare to random Telegram bots.", "Anyone else splitting sessions — one tails stick for browsing the hub demo, another for real work?", "The product blurbs are obviously fiction for class, but the *shape* of them (claims, urgency, trust cues) is what I annotate.", "If the hub ever rotated mirrors, we’d see panic threads here first. Good exercise for students to watch wording.", "I like that the forum onion and hub share wallet state in the sim — makes the ‘one operator many doors’ lesson stick.", "Tiny gripe: I wish the hub had a plaintext ‘this is a teaching skin’ smaller — but I get why instructors want immersion.", "Posting from the ring board because the lounge is noisy. Still about the storefront though.", "Syndicate skins are a fun way to show same backend, different faces — main shop is just the brightest face.", "Mobile Tor users chime in: scrolling the hub is… a workout. Still readable.", "I’m cataloging every ‘trust’ microcopy on the main page for a slides deck. CyberLux is a goldmine of examples.", "Don’t screenshot your balance for clout — blur your ops.", "The neon palette is memorable. That’s branding students remember — good and bad.", "Is it weird I want a ‘boring.gov’ alternate CSS for accessibility demos?", "Hub → hidden wiki handoff feels like old hiddenwiki sidebars. Nostalgia hit.", "Exchange classifieds + hub checkout = nice story about surface area. More doors, more phishing templates.", "If you’re teaching verification, use the hub as ‘what a slick lie can look like’ — then compare to Tor Project docs.", "I’m only here for the chatter about layout shifts after deploy. Anyone notice?", "Foot Traffic on the sim is zero — but the fiction of ‘steady checkout’ is part of the exercise.", "Please don’t paste real addresses or seeds. Keep it classroom-clean.", "I keep the hub open in a window while grading — reminds me what good dark-pattern homework looks like.", "The raffle copy tries urgency. Worth dissecting sentence by sentence.", "Vault terminal theme is my favorite detour from the storefront. Still same deployment.", "Someone said the hub feels ‘expensive’ — that’s aesthetic manipulation 101.", "Comparison page is obviously tilted; good lesson on ‘review blogs’ with incentives.", "Reviews thread exaggerates crypto jargon — perfect red-flag practice for non-experts.", "Trust page metrics look scientific — ask students what’s *not* measured.", "Security analysis page claims pentest — discuss epistemic humility.", "Testimonials read like fanfic — label the persuasion techniques.", "Presswire satire hits if you’ve read real leak blogs.", "I want a thread compiling every internal link from hub nav — completeness check.", "DROP section timing: discuss scarcity cues without moralizing.", "Chat widget promises ephemeral — compare to real protocol guarantees.", "Encryption demo is toy crypto — highlight why toy ≠ real.", "Webring is a cute anachronism — main shop still the anchor property.", "If your students think it’s ‘real’, your debrief worked. If they think it’s fake immediately, ask why the cues failed.", "Main shop hero headline is doing a lot of work in one sentence.", "CyberLux wording overload is intentional — noise as design.", "Someone should map hub routes to learning objectives. I started a doc.", "I’m impressed how cohesive the fiction is across forum + wiki + exchange.", "Please cross-link good mirror hygiene posts from r/opsec when hub threads get sloppy.", "BTC verify copy: good place to talk oracle trust & explorers.", "Local-only wallet in the sim — emphasize ‘browser storage isn’t a bank’.", "The hub isn’t claiming illegal service — it’s claiming *vibes*. Important distinction for legal review.", "Night-mode wishlist: lower contrast path for photocopy-gray realism.", "I’ve run this on projector — neon pops, students squint, lesson lands.", "If clones existed, they’d fix typos last — tell students to grep for weird punctuation on signed posts.", "Main grid cards use glow to guide eye — track click heatmaps in class discussion hypothetically.", "Footer ‘escrow mandatory’ line is doing legal-ish theater — compare to real market rules of use.", "I want more threads about *why* the hub uses luxury signaling — status and underground economies 101.", "Exchange onion quieter — hub is the loud neighbor. Both instructive.", "Hidden wiki placeholder onions are obviously placeholders — good seed for ‘don’t trust paste’.", "Void Aggregate rename fits — aggregates rumors about venues including this one.", "Syndicate slugs are a lesson in namespace squatting aesthetics.", "Don’t ship ethics complaints to me — I’m just archiving chatter.", "Posting so search indexes this ring as ‘people talk about the hub’ — meta, sorry.", "If your jam is OPSEC, skim hub marketing and count identity promises. Tally the lies of omission.", "Students asked if CyberLux is satire — I said ‘pedagogical dress-up’.", "Main shop particle layer: GPU tax — discuss performance as anonymity tradeoff indirectly.", "I keep a slide: ‘spot the difference’ hub vs phishing kit screenshots from APWG.", "Love how the sim keeps BTC flow imaginary — focus stays on trust UX.", "Rumor: new seasonal skin drops on hub — probably false, sounds cool.", "Thread purpose: stocking the search results for ‘CyberLux chatter’ assignments.", "Carrying discussion from class — hub’s trust badges are decorative; list what would make them meaningful.", "If you mirror this demo for your uni, sync your debrief slide — consistency helps.", "I’m logging anachronisms between hub pages for a ‘continuity errors’ game.", "Someone write a glossary of neon color hex codes on the hub — nerd snipe.", "Main link bookmark hygiene: rotate folders, don’t trust autocomplete.", "Okay I’ll stop — but seriously the storefront is the course protagonist.", ] as const; function replyBundle(i: number): { id: string; author: string; body: string; ts: number }[] { if (i % 4 === 0) return []; const a = AUTHORS[(i + 7) % AUTHORS.length]!; const b = AUTHORS[(i + 19) % AUTHORS.length]!; const ts0 = ANCHOR_MS - i * 7_200_000 - 400_000; const ts1 = ts0 + 180_000; const bodies = [ "Same experience on my end — grid settles fast after first paint.", "Hub is loud but the mirror discipline threads are louder. Good.", "Showed the checkout confirmation step in lab — students nodded.", "If gpg fails, I walk — no exceptions.", "Agree it’s a sim — still useful surface for critique.", "The neon is doing affect work — not my taste but coherent.", "Cross-posting to r/opsec: verify signed blocks before you meme.", "I’m here for the typography roasts. Hit me.", ]; const one = { id: `chatter-${i}-r0`, author: a, body: bodies[i % bodies.length]!, ts: ts0, }; if (i % 4 === 1) return [one]; return [ one, { id: `chatter-${i}-r1`, author: b, body: bodies[(i + 3) % bodies.length]!, ts: ts1, }, ]; } function buildThreads() { const out: Array<{ id: string; topicSlug: string; title: string; author: string; body: string; ts: number; baseScore: number; replies: Array<{ id: string; author: string; body: string; ts: number }>; }> = []; const total = 140; for (let i = 0; i < total; i++) { const ring = RINGS[i % RINGS.length]!; const title = TITLE_STEMS[i % TITLE_STEMS.length]! + (i >= TITLE_STEMS.length ? ` (#${i})` : ""); const body = BODY_STEMS[i % BODY_STEMS.length]! + (i >= BODY_STEMS.length ? `\n\n— thread index ${i}, ring /r/${ring}` : ""); out.push({ id: `chatter-${i}`, topicSlug: ring, title, author: AUTHORS[i % AUTHORS.length]!, body, ts: ANCHOR_MS - i * 7_200_000 - (i % 9) * 450_000, baseScore: 24 + ((i * 97) % 5_800), replies: replyBundle(i), }); } return out; } export const SHOP_CHATTER_THREADS = buildThreads(); export const SHOP_CHATTER_COUNT = SHOP_CHATTER_THREADS.length; export function getChatterSlice(page: number, pageSize: number) { const p = Math.max(1, page); const start = (p - 1) * pageSize; return { items: SHOP_CHATTER_THREADS.slice(start, start + pageSize), page: p, totalPages: Math.max(1, Math.ceil(SHOP_CHATTER_THREADS.length / pageSize)), total: SHOP_CHATTER_THREADS.length, }; }