Files
dark-lord/lib/shopChatterThreads.ts
drjones 78a071ba02 Harden onion boot flow and deepen site surfaces
Add persistent onion key backup and restore, improve startup resilience, and flesh out the major site verticals with richer navigation, search coverage, and operator documentation.

Made-with: Cursor
2026-04-07 21:35:52 -07:00

293 lines
14 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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 hubs 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 chefs 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, Id still verify PGP twice",
"Hub feels expensive — thats 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 its 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 = [
"Ive 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 youre 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, wed 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.",
"Im cataloging every trust microcopy on the main page for a slides deck. CyberLux is a goldmine of examples.",
"Dont screenshot your balance for clout — blur your ops.",
"The neon palette is memorable. Thats 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 youre teaching verification, use the hub as what a slick lie can look like — then compare to Tor Project docs.",
"Im 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 dont 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 — thats 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 whats *not* measured.",
"Security analysis page claims pentest — discuss epistemic humility.",
"Testimonials read like fanfic — label the persuasion techniques.",
"Presswire satire hits if youve 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 its real, your debrief worked. If they think its 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.",
"Im 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 isnt a bank.",
"The hub isnt claiming illegal service — its claiming *vibes*. Important distinction for legal review.",
"Night-mode wishlist: lower contrast path for photocopy-gray realism.",
"Ive run this on projector — neon pops, students squint, lesson lands.",
"If clones existed, theyd 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 dont trust paste.",
"Void Aggregate rename fits — aggregates rumors about venues including this one.",
"Syndicate slugs are a lesson in namespace squatting aesthetics.",
"Dont ship ethics complaints to me — Im 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 — hubs trust badges are decorative; list what would make them meaningful.",
"If you mirror this demo for your uni, sync your debrief slide — consistency helps.",
"Im 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, dont trust autocomplete.",
"Okay Ill 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 its 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.",
"Im 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,
};
}