État neutre (dir=neutral ET mispricDir=neutral) : fond bg-slate-800/40
border-slate-700/30 était quasi-invisible sur bg-slate-900.
Fix : fond bg-slate-800/60 border-slate-600/40 + labels Fond./Marché
en text-slate-400 (au lieu de 500) + flèches "—" en text-slate-500.
Refacto en IIFE pour clarifier la logique de couleur.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
contentStyle.color n'affecte pas les textes internes de Recharts.
Ajout de labelStyle (date, gris) et itemStyle (valeur, blanc) sur les
deux Tooltip (Rate Curve + Implied Pts).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Quand sync est actif, cliquer un slide Signaux (OIS/COT/Sent) switchait le slide
en interne sur les autres cartes mais ces cartes restaient sur l'onglet Aperçu —
la synchro était invisible. Fix : propager aussi onCardTabChange("mispricing")
depuis goToSignauxSlide et onCardTabChange("overview") depuis goToMacroSlide.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tooltip: ajout color:#e2e8f0 sur les deux charts (texte invisible sur fond sombre)
- Rate Curve: légende visuelle inline (Actuel blanc / Sem. préc. bleu pointillé)
- Implied Pts: légende couleurs barres (vert Hausse / rose Baisse)
- investinglive.ts tryUrl: cache no-store au lieu de revalidate:21600
(les 404 cachées empêchaient de trouver l'article de la semaine précédente)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Supprime le bloc "BIAIS ACTUALITÉS PAR DEVISE" (cartes devise)
- Supprime le bouton Prioritaires standalone
- Intègre Live/Actualiser dans la barre de filtres
- Live passe à 1min (au lieu de 5min)
- Labels Direction/Catégorie en amber/or
- Filtre Prioritaire intégré dans la ligne direction
- Filtres sur 2 lignes compactes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When sync is active, clicking any tab/indicator on any card propagates
to all other cards (overview/mispricing/focus + ois/cot/sent + mon/infl/cro/empl).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- data/rate-probabilities.json: initial seed (6 CBs fresh from rateprobability.com)
- lib/rateprobability.ts: fallback to cache file when live fetch fails (Vercel block)
parseCBBody() reuses same parsing logic; cache valid 4h max
- .github/scripts/fetch-rate-data.mjs: fetch script (run manually or via Actions)
- HTTP status now logged for diagnostics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- preferredRegion: fra1/lhr1/cdg1 to bypass US cloud IP blocks on rateprobability.com
- Better sec-* headers to pass bot detection (same-origin cors mode)
- cache: no-store on fetch to avoid stale null caching
- Log CB count on each invocation for diagnostics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>