Commit Graph

6 Commits

Author SHA1 Message Date
k 9e0f6554cb copy: tighten Trump / Archive / Case Studies / Glossary / Methodology
Trump:
- PageHint: "move price" → "move the market"
- Filter hints: "verdict is long/short BTC" → "scored as a long/short signal"

Archive:
- PageHint: "Historical fires from old scanner experiments" →
  "Signals from retired scanner experiments … Read-only"

Case Studies:
- heroSubtitle: "worth studying" → "— documented."
- intro: remove redundant "is here to" phrasing
- footer: "signal stack" → "each signal engine"; "return promises" → "return forecasts"

Glossary:
- heroSubtitle: "The precise meaning of every key entity and term on the platform"
  → "Every term on the platform, defined precisely."
- intro: remove internal LLM-indexing rationale; rewrite for users

Methodology:
- heroSubtitle: "from raw input to trading decision"
  → "From raw data to trade decision — how each engine actually works."

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 12:16:09 +08:00
k aa6ede051e feat(seo/geo): Dataset + Article + BreadcrumbList structured data, noindex archive
GEO (AI answer engines) — make the signal feeds and case studies machine-citeable:
- Dataset JSON-LD on /trump, /kol, /trades (creator=Endorphin, publisher→#org,
  isAccessibleForFree, temporalCoverage). These are the "data/history/track
  record" entities Perplexity/Gemini/ChatGPT cite.
- case-studies: ItemList of 5 Article nodes, each with headline/description/
  articleBody/about + citation→evidence URL + author=Endorphin. ISO dates
  derived where parseable, omitted for vague labels.
- public/llms-full.txt: single-doc full reference (methodology + glossary +
  case studies w/ sources inlined) for one-fetch AI ingestion; linked from llms.txt.

SEO:
- Breadcrumbs component (components/seo/Breadcrumbs.tsx) → BreadcrumbList JSON-LD
  on the 8 indexable content pages (trump/kol/macro/trades/analytics/
  methodology/glossary/case-studies).
- /archive split into server page + ArchivePageClient; server page sets
  robots noindex (legacy/test data — thin-content risk).
- openGraph added to /trades and /analytics (previously meta+canonical only).

Verified: tsc 0 errors, next build passes, runtime curl confirms all JSON-LD
types render and llms-full.txt serves 200. No trading/API/component-logic changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-30 03:08:59 +08:00
k 594d9817ba fix(analytics): never mix paper + live P&L; settings live-switch copy
Money-safety/accuracy bug: analytics computed total P&L, win rate, drawdown,
and every metric over ALL trades regardless of is_paper. A user who tried
paper mode then went live saw simulated and real P&L summed into one number
on the page whose entire purpose is 'did the bot make REAL money'.

Now: split trades by is_paper. Default to LIVE. A Live/Paper toggle appears
only when the wallet has both; otherwise auto-pick whichever exists. Paper
view shows a prominent 'SIMULATED — not real-money results' banner. All
metrics derive from the selected mode's trades only.

Also: BotConfigPanel handleUpgradeToLive copy now states Auto-Trade is forced
OFF on the paper→live switch (matches backend subscribe.py safety reset).

tsc + next build clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-30 01:03:15 +08:00
k 3cf7de7144 feat(seo/geo): WebSite+SearchAction, HowTo, DefinedTermSet, TechArticle, 20+ AI crawlers
SEO structured data (layout.tsx):
- WebSite schema with potentialAction/SearchAction → enables sitelinks
  search box in Google results
- SoftwareApplication: added alternateName array, applicationSubCategory,
  isAccessibleForFree, availability, screenshot, aggregateRating, expanded
  featureList with specifics
- Organization: added logo, contactPoint
- HowTo schema (6 steps, estimatedCost $0, tools list) for "how to set up
  Trump Alpha auto-trader" — gets HowTo rich result + cited by AI assistants
- DefinedTermSet in root layout (AHR999, Pi Cycle, Talks-vs-Trades, Funding
  Reversal) — LLMs use this for entity definitions
- FAQPage: added 6 search-intent questions ("how do I auto trade trump tweets",
  "bot that trades based on Trump posts", "how to know if KOL is dumping",
  "best time to buy Bitcoin in bear market", "what is AHR999", "funding rate")
- All uses of siteUrl + today refactored to _base/_today constants

Per-page structured data:
- methodology/page.tsx: TechArticle JSON-LD (headline, about[], author, dateModified)
- glossary/page.tsx: DefinedTermSet with all terms + URL anchors per term;
  buildGlossaryJsonLd() generates one DefinedTerm per entry; canonical fixed
  to /en/ (was /${locale}/)

Missing metadata added:
- contact: metadata with robots noindex (no SEO value in contact form)
- privacy: metadata + canonical /en/privacy
- terms: metadata + canonical /en/terms

robots.ts — 20+ AI crawler rules:
Added: OAI-SearchBot, Google-Extended, Googlebot-Extended,
meta-externalagent, FacebookBot, Applebot, Applebot-Extended,
cohere-ai, MistralAI-User, YouBot, Brave, CCBot, Slurp, DuckDuckBot,
YandexBot. Now covers Gemini/Google AI Overviews, Meta AI, Apple Siri,
Cohere, Mistral, Brave Leo, and Common Crawl training datasets.

tsc + next build clean.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 17:04:40 +08:00
k f34ae9eb00 feat(macro-vibes): rename BTC Signal → Macro Vibes; add MacroPanel UI
Module rename across page H1, navbar tab, URL (/en/btc → /en/macro),
all metadata/JSON-LD, sitemap, llms.txt, opengraph image, and SystemControl
copy. Old /btc route fully removed.

New components/btc/MacroPanel.tsx polls /api/macro/snapshot and lays out
the 8 indicators in four sections (Valuation / Bottom trigger reference /
Market structure / Sentiment & flows / Positioning) with tone-coloured
values, current-band threshold chips, and a single CoinGlass / source
chart link per card. Composite -100..+100 needle pulses on score change.

Also fixes the pinned bottom-reversal alert on the homepage, which still
linked to the now-404 /en/btc — now routes to /en/macro.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 01:05:18 +08:00
k d72323b1c6 Production polish: i18n shelved, PWA icons, SEO/GEO cleanup, UX fixes
Big-picture changes since 01be8e7:

New routes — /trump /btc /kol /trades /analytics /archive plus four
SEO landing pages (/methodology /glossary /case-studies /contact),
all served under /[locale]. Each has dedicated metadata + JSON-LD.

KOL page (new) — DigestWidget + OnchainWidget + TalkVsTradesWidget,
filter by handle/ticker, click-through to per-post detail with the
original AI-extracted ticker/conviction/quote.

BTC page (new) — tabbed: macro-bottom (AHR999 + 200WMA + Pi Cycle)
and funding-rate reversal, with live sparkline + threshold bands.

Telegram card on Settings — wallet-link code generation, status,
disconnect. Preferences moved into the bot itself (/trump /btc etc.)
so the card stays minimal.

SignalMonitor (new) — ETH/LINK Bollinger breakout monitor in its own
component, shares the singleton WsProvider so no second WS opens.

WS singleton refactor (lib/wsContext) — shared WsProvider + useWsSubscribe
hook. Cleanup now actively closes the socket on unmount; previously the
local `ws` couldn't be reached from cleanup and leaked one connection
per StrictMode remount.

OpenPositions polling no longer pops MetaMask in the background —
splits into load('first') for user-initiated and load('poll') that
uses getCachedViewEnvelope without signing.

i18n shelved — proxy.ts (Next 16 middleware rename) wires next-intl
but only Navbar + layout footer have translations. Rest of UI used
isZh ternary scattered across 28 files. All `const isZh = locale === 'zh'`
flipped to `const isZh = false` so every site renders English; Chinese
branches kept as dead code so revival is one regex away.
LanguageSwitch hidden but file kept. zh-CN hreflang removed from
metadata + sitemap to avoid duplicate-content penalties.

Wallet error handling — lib/walletError.ts: isUserRejection walks EIP-1193
code 4001 + .cause chain; previous string-match for "reject"/"denied"
broke for users running MetaMask in non-English UIs. 12 call sites
migrated across 5 components.

PWA icons — app/icon.tsx + app/apple-icon.tsx render the brand "α" via
Next's ImageResponse so no static PNG asset is required. manifest.ts
references /icon and /apple-icon dynamic routes.

OG image + sitemap + robots — dynamic 1200×630 OG card; robots blocks
both /en/settings and /zh/settings; sitemap only emits /en routes;
JSON-LD covers SoftwareApplication + Organization + 10-Q FAQPage.

Landing page polish — Launch Dashboard button stripped of magnetic
hover + shimmer + lift + glow expansion (multiple users found it busy);
hero scramble alphabet swapped to alphanumeric (was block characters);
"15 KOL feeds" copy updated to 19 in 5 places.

PostCards source icons — new entries for btc_bottom_reversal,
funding_reversal, kol_divergence so they no longer fall through to
the generic "first letter" fallback.

Archive page filter — excludes funding_reversal + kol_divergence
(previously only excluded truth + btc_bottom_reversal so new live
signals leaked into the legacy archive).

Cache + skeleton loading — lib/cache.ts SWR module with per-key TTL,
applied across the major pages so navigation feels instant.

SignConfirmSheet — 4 hardcoded Chinese strings translated to English
(English users were seeing zh-only "需要钱包签名" etc).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 00:53:27 +08:00