mirror of
https://github.com/smittix/intercept.git
synced 2026-06-11 07:23:30 -07:00
fix: resolve two-window hang and sweep UI/theming updates
Fix app becoming unresponsive when two browser windows are open: the root cause was HTTP/1.1 connection pool exhaustion (6-connection limit per origin). VoiceAlerts was opening 3 SSE streams per window by default, so two windows produced 8 connections and permanently starved all regular HTTP requests. - voice-alerts.js: default all streams to false (opt-in) to stay within the browser connection limit; existing user preferences in localStorage are preserved - routes/alerts.py: replace direct AlertManager.stream_events() with sse_stream_fanout so both windows receive every alert instead of competing for the same queue - routes/bluetooth_v2.py: same fanout fix via subscribe_fanout_queue, preserving named SSE events (device_update, scan_started, etc.) Also includes accumulated UI/theming changes: accent-cyan CSS variable sweep across mode CSS/JS files, standalone dashboard pages, template updates, satellite TLE data refresh, and tile provider default rename. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
|
||||
.device-card:hover {
|
||||
border-color: var(--accent-cyan, #00d4ff);
|
||||
box-shadow: 0 0 0 1px rgba(0, 212, 255, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(var(--accent-cyan-rgb), 0.2);
|
||||
}
|
||||
|
||||
.device-card:active {
|
||||
|
||||
@@ -162,8 +162,8 @@
|
||||
}
|
||||
|
||||
.heatmap-row.selected {
|
||||
background: rgba(0, 212, 255, 0.1);
|
||||
outline: 1px solid rgba(0, 212, 255, 0.3);
|
||||
background: rgba(var(--accent-cyan-rgb), 0.1);
|
||||
outline: 1px solid rgba(var(--accent-cyan-rgb), 0.3);
|
||||
}
|
||||
|
||||
.heatmap-header {
|
||||
|
||||
@@ -1645,7 +1645,7 @@
|
||||
|
||||
.signal-card.signal-card-clickable:hover {
|
||||
border-color: var(--accent-cyan, #00d4ff);
|
||||
box-shadow: 0 0 0 1px rgba(0, 212, 255, 0.2);
|
||||
box-shadow: 0 0 0 1px rgba(var(--accent-cyan-rgb), 0.2);
|
||||
}
|
||||
|
||||
.signal-card.signal-card-clickable:active {
|
||||
|
||||
@@ -406,6 +406,42 @@
|
||||
color: var(--text-primary, #e6edf5);
|
||||
}
|
||||
|
||||
/* ---- Enhanced tier overrides ---- */
|
||||
html[data-ui-tier="enhanced"] .run-state-strip {
|
||||
background: linear-gradient(180deg, rgba(4, 8, 8, 0.96), rgba(2, 4, 4, 0.97));
|
||||
border-color: rgba(46, 125, 138, 0.28);
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-chip {
|
||||
background: linear-gradient(180deg, rgba(4, 8, 8, 0.82), rgba(2, 4, 4, 0.84));
|
||||
border-color: rgba(46, 125, 138, 0.22);
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-chip.active {
|
||||
border-color: rgba(46, 125, 138, 0.60);
|
||||
box-shadow: inset 0 0 0 1px rgba(46, 125, 138, 0.16);
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-chip .dot {
|
||||
background: rgba(46, 125, 138, 0.40);
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-chip.running .dot {
|
||||
background: var(--accent-green, #38c180);
|
||||
box-shadow: 0 0 0 4px rgba(56, 193, 128, 0.16), 0 0 12px rgba(56, 193, 128, 0.35);
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-btn {
|
||||
background: linear-gradient(180deg, rgba(4, 8, 8, 0.9), rgba(2, 4, 4, 0.92));
|
||||
border-color: rgba(46, 125, 138, 0.40);
|
||||
}
|
||||
|
||||
html[data-ui-tier="enhanced"] .run-state-btn:hover {
|
||||
background: rgba(46, 125, 138, 0.12);
|
||||
border-color: rgba(46, 125, 138, 0.65);
|
||||
}
|
||||
|
||||
/* ---- Light theme overrides ---- */
|
||||
[data-theme="light"] .run-state-chip {
|
||||
background: linear-gradient(180deg, rgba(233, 238, 245, 0.9), rgba(225, 232, 242, 0.92));
|
||||
|
||||
Reference in New Issue
Block a user