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

+13 -12
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Settings — Nexus One AI</title>
<link rel="stylesheet" href="style.css?v=4">
<link rel="stylesheet" href="style.css?v=12">
<style>
.settings-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:24px; }
.settings-card { background:var(--navy2); border:1px solid var(--bdr); border-radius:14px; padding:28px; }
@@ -109,6 +109,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>
@@ -149,7 +150,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>
@@ -166,7 +167,7 @@
<!-- Branding card (full width) -->
<div class="settings-card" style="margin-bottom:20px">
<h2>⚙️ White-Label Branding</h2>
<h2>White-Label Branding</h2>
<p class="desc">Customise the portal identity for your PSU client. Changes take effect immediately across all active sessions.</p>
<!-- Logo -->
@@ -176,10 +177,10 @@
<img id="logo-preview-img" src="" alt="Logo">
</div>
<div class="logo-controls">
<label class="upload-btn" for="logo-file-input">📁 Upload Logo</label>
<label class="upload-btn" for="logo-file-input">Upload Logo</label>
<input type="file" id="logo-file-input" accept="image/png,image/jpeg,image/svg+xml,image/webp">
<div class="logo-hint">PNG, JPG, SVG, WebP · Max 2 MB<br>Recommended: 200 × 60 px</div>
<button class="remove-logo-btn" onclick="removeLogo()">✕ Remove logo</button>
<button class="remove-logo-btn" onclick="removeLogo()">Remove logo</button>
</div>
</div>
@@ -209,7 +210,7 @@
<!-- Shown instead when tier is locked by Cezen -->
<div id="tier-locked-display" style="display:none;margin-top:8px;">
<div style="display:flex;align-items:center;gap:8px;background:#F0FDFA;border:1.5px solid #99F6E4;border-radius:8px;padding:10px 14px;">
<span style="font-size:18px">🔒</span>
<span style="font-size:18px">Lock</span>
<div>
<div id="tier-locked-value" style="font-weight:700;font-size:14px;color:var(--ink)"></div>
<div style="font-size:12px;color:#0F766E;margin-top:2px">Set by Cezen — contact Cezen to change your tier</div>
@@ -230,15 +231,15 @@
</div>
<div class="form-actions">
<button class="btn btn-primary" onclick="saveBranding()">💾 Save Branding</button>
<button class="btn btn-ghost" onclick="previewBranding()">👁️ Preview</button>
<button class="btn btn-danger" onclick="resetBranding()">↩ Reset to Defaults</button>
<button class="btn btn-primary" onclick="saveBranding()">Save Branding</button>
<button class="btn btn-ghost" onclick="previewBranding()">Preview</button>
<button class="btn btn-danger" onclick="resetBranding()">Reset to Defaults</button>
</div>
</div>
<!-- Active sessions -->
<div class="sessions-card">
<h2>👥 Active Sessions</h2>
<h2>Active Sessions</h2>
<p class="desc">Users who have logged in within the last 8 hours. Refreshed every 30 s.</p>
<div class="sessions-list" id="sessions-list">
<span style="color:var(--lt);font-size:13px">Loading…</span>
@@ -247,7 +248,7 @@
<!-- System info -->
<div class="sysinfo-card">
<h2>🖥️ System Information</h2>
<h2>System Information</h2>
<div class="sysinfo-grid" id="sysinfo-grid">
<span style="color:var(--lt);font-size:13px">Loading…</span>
</div>
@@ -460,6 +461,6 @@ setInterval(loadSessions, 30000);
</script>
<script src="auth.js"></script>
<script src="branding.js"></script>
<script src="branding.js?v=3"></script>
</body>
</html>