diff --git a/CLAUDE.md b/CLAUDE.md index c9aab8f..ab634b8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -138,7 +138,11 @@ mutate the subscription. ## State management -- **No global store** (no Redux/Zustand). Tree-local state + props. +- **One small global store** — `store/dashboard.ts` (Zustand, `useDashboardStore`). + Holds cross-page UI/session state: selected post, chart asset/timeframe, + wallet address, subscription + bot-readiness flags, masked HL key hint, and + the live-price map. Everything else stays tree-local (state + props) — don't + grow this store into a catch-all; page-specific data belongs in the page. - **SWR-style cache** in `lib/cache.ts` for the API-heavy pages. - **WebSocket** singleton via `WsProvider` — used by `SignalMonitor` and live price tickers. diff --git a/components/signals/SystemControl.tsx b/components/signals/SystemControl.tsx index fc30494..0b6a930 100644 --- a/components/signals/SystemControl.tsx +++ b/components/signals/SystemControl.tsx @@ -134,6 +134,49 @@ export default function SystemControl({ system }: { system: 'trump' | 'btc' }) { const settingsHref = `/${locale}/settings#bot-config` const settingsLabel = system === 'trump' ? 'Trump Signal' : 'Macro Vibes' + // Macro Vibes (System 2) is MANAGE-ONLY by design — it NEVER auto-opens a + // trade. bot_engine.process_post early-returns for sys2 sources, so the + // master Auto-Trade switch only governs Trump (System 1). Presenting an + // ON/OFF auto-trade toggle here would (a) falsely imply Macro signals + // auto-open and (b) be a confusing second copy of the SAME global switch + // shown on the Trump page. Show the adopt-only flow instead. + if (system === 'btc') { + const linkStyle: React.CSSProperties = { + display: 'inline-flex', alignItems: 'center', gap: 8, padding: '8px 12px', + borderRadius: 999, border: '1px solid var(--line)', background: 'var(--surface)', + fontSize: 12, color: 'var(--ink)', textDecoration: 'none', fontWeight: 700, + boxShadow: 'var(--shadow-1)', + } + return ( +
+ Macro Vibes does not auto-open trades. When a bottom-reversal
+ signal fires you get a Telegram alert. You open the position yourself on
+ Hyperliquid, then hand it to the bot with /adopt — the bot then
+ manages the exit (staged stop ladder, de-risk, pyramid, peak-trail).
+
+ The Auto-Trade switch on the Trump page controls Trump (System 1) + auto-opens only — it has no effect on Macro Vibes. +
+ + Settings + {settingsLabel} + + +