feat(native-el-ui): full el-html vessel rewrite — no raw HTML strings #15

Merged
will.anderson merged 21 commits from feat/native-el-ui into dev 2026-05-09 17:32:00 +00:00
Showing only changes of commit 5f35ddde39 - Show all commits
+45 -3
View File
@@ -76,17 +76,59 @@ fn main() -> Void {
saveSession(session);
}
var msgCount = session.count || 0;
var _headerResetInterval = null;
function _nextMidnightUTC() {
var now = new Date();
var midnight = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1));
return Math.floor(midnight.getTime() / 1000);
}
function _startHeaderResetTimer() {
var el = document.getElementById('neuron-demo-countdown');
if (!el) return;
if (_headerResetInterval) return; // already ticking
var resetAt = _nextMidnightUTC();
function _tick() {
var secsLeft = Math.max(0, resetAt - Math.floor(Date.now() / 1000));
var hh = Math.floor(secsLeft / 3600);
var mm = Math.floor((secsLeft % 3600) / 60);
var ss = secsLeft % 60;
var pad = function(n) { return n < 10 ? '0' + n : '' + n; };
var ts = hh + ':' + pad(mm) + ':' + pad(ss);
var el2 = document.getElementById('neuron-demo-countdown');
if (!el2) { clearInterval(_headerResetInterval); _headerResetInterval = null; return; }
el2.textContent = 'resets in ' + ts;
el2.style.color = 'rgba(255,255,255,0.65)';
el2.style.fontWeight = '600';
if (secsLeft <= 0) {
clearInterval(_headerResetInterval);
_headerResetInterval = null;
el2.textContent = '10 questions left';
el2.style.color = '#ffffff';
el2.style.fontWeight = '700';
}
}
_tick();
_headerResetInterval = setInterval(_tick, 1000);
}
function updateCountdown() {
var el = document.getElementById('neuron-demo-countdown');
if (!el) return;
var remaining = MAX - msgCount;
el.textContent = remaining + ' question' + (remaining === 1 ? '' : 's') + ' left';
el.style.color = '#ffffff';
el.style.fontWeight = '700';
if (remaining <= 0) {
_startHeaderResetTimer();
} else {
if (_headerResetInterval) { clearInterval(_headerResetInterval); _headerResetInterval = null; }
el.textContent = remaining + ' question' + (remaining === 1 ? '' : 's') + ' left';
el.style.color = '#ffffff';
el.style.fontWeight = '700';
}
}
window.neuronDemoReset = function() {
if (_headerResetInterval) { clearInterval(_headerResetInterval); _headerResetInterval = null; }
clearSession();
session = { messages: [], count: 0, context: '' };
msgCount = 0;