diff --git a/dashboard/public/jarvis.html b/dashboard/public/jarvis.html
index 444d067..07f0261 100644
--- a/dashboard/public/jarvis.html
+++ b/dashboard/public/jarvis.html
@@ -157,7 +157,7 @@ html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--s
.lower{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;align-items:flex-start}
.lower .g-panel{min-width:0;box-sizing:border-box}
.lower .lp-ticker{flex:1.2 1 240px;max-width:380px}
-.lower .lp-delta{flex:1 1 200px;max-width:300px}
+.right-delta .delta-list{max-height:200px}
.lower .lp-macro{flex:2.5 1 360px}
.lower .lp-ideas{flex:1.5 1 300px}
.lower-wide{width:100%}
@@ -287,7 +287,7 @@ body.low-perf .ticker-wrap::-webkit-scrollbar-thumb{background:rgba(100,240,200,
.map-hint{font-size:8px;right:8px}
.map-legend{left:8px;right:8px;bottom:8px;gap:4px}
.leg-item{font-size:8px}
- .lower .lp-ticker,.lower .lp-osint,.lower .lp-delta,.lower .lp-macro,.lower .lp-ideas{flex:1 1 100%;max-width:none}
+ .lower .lp-ticker,.lower .lp-osint,.lower .lp-macro,.lower .lp-ideas{flex:1 1 100%;max-width:none}
.metrics-row{grid-template-columns:repeat(2,1fr)}
.src-grid{grid-template-columns:repeat(2,1fr)}
.glossary-panel{top:auto;right:0;left:0;bottom:0;width:100%;max-height:min(72vh,720px);border-left:none;border-right:none;border-bottom:none}
@@ -1437,29 +1437,6 @@ function renderLower(){
Set LLM_PROVIDER + credentials in .env to enable AI-powered trade ideas
`;
- // DELTA PANEL — what changed since last sweep
- const delta = D.delta || {};
- const ds = delta.summary || {};
- const hasDelta = ds.totalChanges > 0;
- const dirEmoji = {'risk-off':'▲','risk-on':'▼','mixed':'◆'}[ds.direction]||'◆';
- const dirClass = {'risk-off':'up','risk-on':'down','mixed':''}[ds.direction]||'';
- const escalated = (delta.signals?.escalated || []).slice(0,6);
- const deescalated = (delta.signals?.deescalated || []).slice(0,4);
- const newSigs = (delta.signals?.new || []).slice(0,4);
- const deltaRows = [];
- for(const s of newSigs){
- deltaRows.push(`NEW${s.reason||s.label||s.key}
`);
- }
- for(const s of escalated){
- const sev = s.severity==='critical'?'style="color:var(--warn);font-weight:600"':s.severity==='high'?'style="color:#ffab40"':'';
- const val = s.pctChange!==undefined?`${s.pctChange>0?'+':''}${s.pctChange}%`:`${s.change>0?'+':''}${s.change}`;
- deltaRows.push(`▲${s.label}${s.from}→${s.to} (${val})
`);
- }
- for(const s of deescalated){
- const val = s.pctChange!==undefined?`${s.pctChange}%`:`${s.change}`;
- deltaRows.push(`▼${s.label||s.key}${s.from}→${s.to} (${val})
`);
- }
- const deltaHtml = hasDelta ? deltaRows.join('') : 'No changes since last sweep
';
const tickerPanel = `
${t('panels.newsTicker','Live News Ticker')}
${feed.length} ${t('badges.items','ITEMS')}
@@ -1495,17 +1472,7 @@ function renderLower(){
${ideasHtml}
FOR INFORMATIONAL PURPOSES ONLY. This is not financial advice, a recommendation to buy or sell any security, or a solicitation of any kind. All signal-based observations are derived from publicly available OSINT data and should not be relied upon for investment decisions. Consult a licensed financial advisor before making any investment. Past performance does not guarantee future results.
`;
- const deltaPanel = `
-
${t('panels.sweepDelta','Sweep Delta')}
${dirEmoji} ${ds.direction?t('delta.'+ds.direction,ds.direction.toUpperCase()):t('delta.baseline','BASELINE')}
- ${hasDelta?`
- ${t('delta.changes','Changes')}: ${ds.totalChanges}
- ${t('delta.critical','Critical')}: ${ds.criticalChanges||0}
- ${ds.signalBreakdown?`${t('delta.new','New')}: ${ds.signalBreakdown.new} ↑${ds.signalBreakdown.escalated} ↓${ds.signalBreakdown.deescalated}`:''}
-
`:''}
-
${deltaHtml}
-
`;
-
- document.getElementById('lowerGrid').innerHTML=`${tickerPanel}${osintPanel}${macroPanel}${ideasPanel}${deltaPanel}`;
+ document.getElementById('lowerGrid').innerHTML=`${tickerPanel}${osintPanel}${macroPanel}${ideasPanel}`;
}
// === RIGHT RAIL ===
@@ -1524,6 +1491,30 @@ function renderRight(){
{l:'WHO Alerts',v:D.who.length,p:40}
];
+ // DELTA PANEL — what changed since last sweep
+ const delta = D.delta || {};
+ const ds = delta.summary || {};
+ const hasDelta = ds.totalChanges > 0;
+ const dirEmoji = {'risk-off':'▲','risk-on':'▼','mixed':'◆'}[ds.direction]||'◆';
+ const dirClass = {'risk-off':'up','risk-on':'down','mixed':''}[ds.direction]||'';
+ const escalated = (delta.signals?.escalated || []).slice(0,6);
+ const deescalated = (delta.signals?.deescalated || []).slice(0,4);
+ const newSigs = (delta.signals?.new || []).slice(0,4);
+ const deltaRows = [];
+ for(const s of newSigs){
+ deltaRows.push(`NEW${s.reason||s.label||s.key}
`);
+ }
+ for(const s of escalated){
+ const sev = s.severity==='critical'?'style="color:var(--warn);font-weight:600"':s.severity==='high'?'style="color:#ffab40"':'';
+ const val = s.pctChange!==undefined?`${s.pctChange>0?'+':''}${s.pctChange}%`:`${s.change>0?'+':''}${s.change}`;
+ deltaRows.push(`▲${s.label}${s.from}→${s.to} (${val})
`);
+ }
+ for(const s of deescalated){
+ const val = s.pctChange!==undefined?`${s.pctChange}%`:`${s.change}`;
+ deltaRows.push(`▼${s.label||s.key}${s.from}→${s.to} (${val})
`);
+ }
+ const deltaHtml = hasDelta ? deltaRows.join('') : `${t('delta.noChanges','No changes since last sweep')}
`;
+
document.getElementById('rightRail').innerHTML=`
${t('panels.crossSourceSignals','Cross-Source Signals')}
${t('badges.worldview','WORLDVIEW')}
@@ -1533,6 +1524,15 @@ function renderRight(){
${t('panels.signalCore','Signal Core')}
${t('badges.hotMetrics','HOT METRICS')}
${signalMetrics.map(s=>`
`).join('')}
+
+
+
${t('panels.sweepDelta','Sweep Delta')}
${dirEmoji} ${ds.direction?t('delta.'+ds.direction,ds.direction.toUpperCase()):t('delta.baseline','BASELINE')}
+ ${hasDelta?`
+ ${t('delta.changes','Changes')}: ${ds.totalChanges}
+ ${t('delta.critical','Critical')}: ${ds.criticalChanges||0}
+ ${ds.signalBreakdown?`${t('delta.new','New')}: ${ds.signalBreakdown.new} ↑${ds.signalBreakdown.escalated} ↓${ds.signalBreakdown.deescalated}`:''}
+
`:''}
+
${deltaHtml}
`;
}