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:
1 parent
7540da04a8
commit
b3eec34158
57 files changed
+2832
-1354
No files matched your search
+14
-13
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Training — Nexus One AI</title>
|
||||
<link rel="stylesheet" href="style.css?v=4">
|
||||
<link rel="stylesheet" href="style.css?v=12">
|
||||
<style>
|
||||
/* ── Shared layout ────────────────────────────────────────── */
|
||||
.tr-card { background:var(--navy2); border:1px solid var(--bdr); border-radius:14px; padding:28px; margin-bottom:28px; }
|
||||
@@ -113,6 +113,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 & Ratings</a>
|
||||
<span class="nav-drop-cat">MANAGE /</span>
|
||||
<a href="users.html">Users</a>
|
||||
@@ -152,7 +153,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>
|
||||
@@ -167,12 +168,12 @@
|
||||
|
||||
<!-- ── 1. Dataset Manager ── -->
|
||||
<div class="tr-card">
|
||||
<div class="tr-card-title">📂 Dataset Manager</div>
|
||||
<div class="tr-card-title"><span class="icon-svg icon-sm" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span> Dataset Manager</div>
|
||||
<div class="tr-card-sub">Upload JSONL or CSV files. JSONL rows must have a <code>text</code> field, or <code>prompt</code>/<code>completion</code> pair, or <code>instruction</code>/<code>output</code> pair.</div>
|
||||
|
||||
<div class="upload-zone" id="upload-zone" onclick="document.getElementById('file-input').click()">
|
||||
<input type="file" id="file-input" accept=".jsonl,.json,.csv" onchange="uploadDataset(this.files[0])">
|
||||
<div class="uz-icon">📤</div>
|
||||
<div class="uz-icon"><span class="icon-svg icon-xl" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><path d="M17 8l-5-5-5 5"/><path d="M12 3v12"/></svg></span></div>
|
||||
<div class="uz-label">Click to upload or drag & drop</div>
|
||||
<div class="uz-hint">.jsonl · .json · .csv — max 500 MB</div>
|
||||
</div>
|
||||
@@ -180,7 +181,7 @@
|
||||
|
||||
<div style="margin-top:20px;">
|
||||
<div class="tr-toolbar">
|
||||
<button class="tr-btn ghost" onclick="loadDatasets()">↺ Refresh</button>
|
||||
<button class="tr-btn ghost" onclick="loadDatasets()">Refresh</button>
|
||||
</div>
|
||||
<div class="tr-table-wrap">
|
||||
<table class="tr-table">
|
||||
@@ -197,7 +198,7 @@
|
||||
|
||||
<!-- ── 2. Launch Fine-Tune ── -->
|
||||
<div class="tr-card">
|
||||
<div class="tr-card-title">🚀 Launch Fine-Tune Job</div>
|
||||
<div class="tr-card-title">Launch Fine-Tune Job</div>
|
||||
<div class="tr-card-sub">Uses QLoRA (4-bit quantization + LoRA adapters). Requires a GPU with ≥ 8 GB VRAM.</div>
|
||||
|
||||
<div class="launch-form">
|
||||
@@ -258,18 +259,18 @@
|
||||
</div>
|
||||
|
||||
<div class="full">
|
||||
<button class="tr-btn primary" onclick="launchJob()" id="launch-btn">▶ Launch Training</button>
|
||||
<button class="tr-btn primary" onclick="launchJob()" id="launch-btn">Launch Training</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- ── 3. Job Monitor ── -->
|
||||
<div class="tr-card">
|
||||
<div class="tr-card-title">📊 Training Jobs</div>
|
||||
<div class="tr-card-title">Training Jobs</div>
|
||||
<div class="tr-card-sub">Click a job row to expand logs and the live loss curve. Running jobs auto-refresh every 10 seconds.</div>
|
||||
|
||||
<div class="tr-toolbar">
|
||||
<button class="tr-btn ghost" onclick="loadJobs()">↺ Refresh</button>
|
||||
<button class="tr-btn ghost" onclick="loadJobs()">Refresh</button>
|
||||
</div>
|
||||
|
||||
<div class="tr-table-wrap">
|
||||
@@ -417,7 +418,7 @@ async function uploadDataset(file) {
|
||||
const res = await fetch(`${_API}/training/datasets`, {method:'POST', credentials:'include', body:fd});
|
||||
const d = await res.json();
|
||||
if (!res.ok) throw new Error(d.detail || 'Upload failed');
|
||||
toast(`✓ Uploaded ${file.name} — ${d.row_count.toLocaleString()} rows`);
|
||||
toast(`Uploaded ${file.name} - ${d.row_count.toLocaleString()} rows`);
|
||||
loadDatasets();
|
||||
} catch(e) {
|
||||
toast(e.message, true);
|
||||
@@ -491,14 +492,14 @@ async function launchJob() {
|
||||
});
|
||||
const d = await res.json();
|
||||
if (!res.ok) throw new Error(d.detail || 'Launch failed');
|
||||
toast(`✓ Job "${name}" launched (ID: ${d.job_id})`);
|
||||
toast(`Job "${name}" launched (ID: ${d.job_id})`);
|
||||
loadJobs();
|
||||
startAutoRefresh();
|
||||
} catch(e) {
|
||||
toast(e.message, true);
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
btn.textContent = '▶ Launch Training';
|
||||
btn.textContent = 'Launch Training';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -725,6 +726,6 @@ loadModels();
|
||||
loadJobs();
|
||||
</script>
|
||||
<script src="auth.js"></script>
|
||||
<script src="branding.js"></script>
|
||||
<script src="branding.js?v=3"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user