Sync cezen-portal/ from live working copy (V1.0 GA polish + search-icon ordering fix)

Brings the ISO-packaged portal copy current with the live cezen-portal/
working directory, which had drifted across the entire V1.0 GA polish
initiative (Phases 1-10) plus this session's topnav icon-order bugfix.

- 52 existing files updated, 2 new pages added (about.html, health.html)
- cgit/cezen-portal/ is now byte-identical to cezen-portal/
- Backend files (rag_ingest.py, cezen_license.py) already in sync;
  main.py intentionally left as-is (cgit is ahead there with
  workstation-category commercial-fit logic not yet backported to the
  live working copy)

Next: rebuild the ISO (bash autoinstall/build-iso.sh) to bake this in.
This commit is contained in:
Jino Jose committed 2026-07-09 11:11:38 +05:30
1 parent 7540da04a8
commit b3eec34158
57 files changed
+2832 -1354

No files matched your search

+12 -11
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Model Benchmark — Nexus One AI</title>
<link rel="stylesheet" href="style.css?v=4">
<link rel="stylesheet" href="style.css?v=12">
<style>
.bm-card { background:var(--navy2); border:1px solid var(--bdr); border-radius:14px; padding:28px; margin-bottom:24px; }
.bm-card-title { font-size:16px; font-weight:700; color:var(--ink); margin-bottom:4px; }
@@ -101,6 +101,7 @@
<a href="dashboard.html">Dashboard</a>
<a href="analytics.html">Usage Analytics</a>
<a href="audit.html">Governance & Audit</a>
<a href="health.html">Health Center</a>
<a href="feedback.html">Feedback &amp; Ratings</a>
<span class="nav-drop-cat">MANAGE /</span>
<a href="users.html">Users</a>
@@ -140,7 +141,7 @@
</div>
</div>
</nav>
<a href="notifications.html" style="position:relative">🔔</a>
<a href="notifications.html" class="nav-icon-btn" style="position:relative" aria-label="Notifications"><span class="icon-svg icon-sm" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M15 17h5l-1.4-1.4A2 2 0 0 1 18 14.2V11a6 6 0 1 0-12 0v3.2a2 2 0 0 1-.6 1.4L4 17h5"/><path d="M10 17a2 2 0 0 0 4 0"/></svg></span></a>
<span class="badge" data-brand="tier">Basic Tier</span>
<div id="nav-org-logo" class="nav-org-logo"></div>
</header>
@@ -155,7 +156,7 @@
<!-- Tier gate -->
<div class="tier-gate" id="tier-gate" style="display:none">
<h3>📊 Pro Tier & Above</h3>
<h3>Pro Tier & Above</h3>
<p>Model benchmarking requires the hardware throughput of Mid or Advanced tier to produce meaningful latency comparisons.</p>
</div>
@@ -163,7 +164,7 @@
<!-- Model selection -->
<div class="bm-card">
<div class="bm-card-title">🤖 Select Models</div>
<div class="bm-card-title">Select Models</div>
<div class="bm-card-sub">Choose up to 5 models to compare. Models must be loaded in Ollama.</div>
<div class="bm-model-row" id="selected-models"></div>
<div class="bm-add-row">
@@ -176,12 +177,12 @@
<!-- Prompt configuration -->
<div class="bm-card">
<div class="bm-card-title">💬 Test Prompts</div>
<div class="bm-card-title">Test Prompts</div>
<div class="bm-card-sub">Add prompts to run against each model. Up to 10 prompts.</div>
<div class="bm-prompt-list" id="prompt-list"></div>
<div style="display:flex;gap:8px;align-items:center;flex-wrap:wrap">
<button class="bm-btn ghost" onclick="addPrompt('')">+ Add prompt</button>
<button class="bm-btn ghost" onclick="loadPresets()">📋 Load presets</button>
<button class="bm-btn ghost" onclick="loadPresets()">Load presets</button>
<label style="font-size:12px;color:var(--lt);margin-left:8px">Max tokens:
<input type="number" id="max-tokens" value="256" min="64" max="2048"
style="width:70px;padding:4px 8px;border:1px solid var(--bdr);border-radius:6px;font-size:12px;margin-left:4px">
@@ -191,7 +192,7 @@
<!-- Run button -->
<div style="display:flex;gap:10px;align-items:center;margin-bottom:28px">
<button class="bm-btn primary" id="run-btn" onclick="runBenchmark()" style="padding:11px 28px;font-size:14px">▶ Run Benchmark</button>
<button class="bm-btn primary" id="run-btn" onclick="runBenchmark()" style="padding:11px 28px;font-size:14px">Run Benchmark</button>
<span style="font-size:12px;color:var(--lt)" id="run-hint"></span>
</div>
@@ -277,7 +278,7 @@ function addPrompt(text) {
div.className = 'bm-prompt-item';
div.innerHTML = `
<textarea placeholder="Enter a test prompt…">${escHtml(text)}</textarea>
<button onclick="this.parentElement.remove(); updateHint()">🗑</button>
<button onclick="this.parentElement.remove(); updateHint()">Remove</button>
`;
list.appendChild(div);
updateHint();
@@ -334,7 +335,7 @@ async function runBenchmark() {
function renderResults(data) {
const el = document.getElementById('bm-results');
if (!data.results?.length) { el.innerHTML = '<div style="color:var(--lt)">No results</div>'; return; }
if (!data.results?.length) { el.innerHTML = '<div class="cezen-list-empty">No results yet &mdash; select at least one model above and <a onclick="runBenchmark()">run the benchmark</a>.</div>'; return; }
// Find max tokens/sec across all for speed bar scaling
const allTps = data.results.flatMap(r => data.models.map(m => r.responses[m]?.tokens_per_sec || 0));
@@ -364,7 +365,7 @@ function renderResults(data) {
<div class="bm-metric"><strong>${r.completion_tokens || '—'}</strong>Output tokens</div>
</div>
${r.error
? `<div class="bm-error">⚠ ${escHtml(r.error)}</div>`
? `<div class="bm-error">Warning: ${escHtml(r.error)}</div>`
: `<div class="bm-response-text">${escHtml(r.text || '(empty response)')}</div>`
}
</div>`;
@@ -398,6 +399,6 @@ document.addEventListener('cezenAuthReady', function() {
setTimeout(checkTier, 200);
});
</script>
<script src="branding.js"></script>
<script src="branding.js?v=3"></script>
</body>
</html>