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
+12
-16
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Feedback & Ratings — Nexus One AI</title>
|
||||
<link rel="stylesheet" href="style.css?v=4">
|
||||
<link rel="stylesheet" href="style.css?v=12">
|
||||
<style>
|
||||
.fb-wrap { max-width: 1100px; margin: 0 auto; padding: 28px 28px 60px; }
|
||||
.fb-header { display: flex; align-items: center; gap: 14px; margin-bottom: 24px; }
|
||||
@@ -134,6 +134,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" class="active">Feedback & Ratings</a>
|
||||
<span class="nav-drop-cat">MANAGE /</span>
|
||||
<a href="users.html">Users</a>
|
||||
@@ -172,7 +173,7 @@
|
||||
<a href="chatrooms.html">Chat Rooms</a>
|
||||
</div>
|
||||
</div>
|
||||
<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>
|
||||
</nav>
|
||||
<span class="badge" data-brand="tier">Basic Tier</span>
|
||||
<div id="nav-org-logo" class="nav-org-logo"></div>
|
||||
@@ -180,8 +181,8 @@
|
||||
|
||||
<div class="fb-wrap">
|
||||
<div class="fb-header">
|
||||
<div class="fb-title">⭐ Feedback & Ratings</div>
|
||||
<button class="fb-export-btn" onclick="exportCSV()">📥 Export CSV</button>
|
||||
<div class="fb-title"><span class="icon-svg icon-sm" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 2l3.09 6.26L22 9.27l-5 4.87 1.18 6.88L12 17.77l-6.18 3.25L7 14.14 2 9.27l6.91-1.01L12 2z"/></svg></span> Feedback & Ratings</div>
|
||||
<button class="fb-export-btn" onclick="exportCSV()"><span class="icon-svg icon-xs" 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="M7 10l5 5 5-5"/><path d="M12 15V3"/></svg></span> Export CSV</button>
|
||||
</div>
|
||||
|
||||
<!-- Overview -->
|
||||
@@ -229,9 +230,9 @@
|
||||
<div class="fb-section-header">Recent Feedback</div>
|
||||
<div class="fb-feed-filters">
|
||||
<button class="fb-feed-filter active" onclick="setFeedFilter('all', this)">All</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('low', this)">⚠️ Low (1-2★)</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('high', this)">✅ High (4-5★)</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('comment', this)">💬 With comments</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('low', this)">Low (1-2 stars)</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('high', this)">High (4-5 stars)</button>
|
||||
<button class="fb-feed-filter" onclick="setFeedFilter('comment', this)">With comments</button>
|
||||
</div>
|
||||
<div class="fb-feed" id="fb-feed">
|
||||
<p style="color:var(--lt)">Loading…</p>
|
||||
@@ -357,7 +358,7 @@ function renderFeed() {
|
||||
feed.innerHTML = items.map(f => `
|
||||
<div class="fb-feedback-card ${f.rating <= 2 ? 'low' : ''}">
|
||||
<div class="fb-card-header">
|
||||
<span class="fb-card-user">👤 ${f.username}</span>
|
||||
<span class="fb-card-user">${f.username}</span>
|
||||
<span class="fb-stars">${stars(f.rating)}</span>
|
||||
<span class="fb-card-model">${f.model}</span>
|
||||
<span class="fb-card-page">${f.page || 'portal'}</span>
|
||||
@@ -366,8 +367,8 @@ function renderFeed() {
|
||||
${f.prompt_snippet ? `<div class="fb-card-snippet">Prompt: "${f.prompt_snippet}"</div>` : ''}
|
||||
${f.comment ? `<div class="fb-card-comment">"${f.comment}"</div>` : '<div class="fb-card-comment" style="color:var(--lt);font-style:italic">No comment left.</div>'}
|
||||
<div class="fb-card-footer">
|
||||
${f.rating <= 2 ? `<a href="evals.html" style="font-size:12px;color:var(--purple)">→ Add to Eval Suite</a>` : ''}
|
||||
<button class="fb-card-del" onclick="deleteFeedback(${f.id})">🗑 Delete</button>
|
||||
${f.rating <= 2 ? `<a href="evals.html" style="font-size:12px;color:var(--purple)">Add to Eval Suite</a>` : ''}
|
||||
<button class="fb-card-del" onclick="deleteFeedback(${f.id})">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
`).join('');
|
||||
@@ -389,16 +390,11 @@ function exportCSV() {
|
||||
a.download = 'cezen_feedback.csv'; a.click();
|
||||
}
|
||||
|
||||
function showToast(msg) {
|
||||
const t = document.getElementById('fb-toast');
|
||||
t.textContent = msg; t.classList.add('show');
|
||||
setTimeout(() => t.classList.remove('show'), 2200);
|
||||
}
|
||||
|
||||
loadSummary();
|
||||
</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