diff --git a/cmd/web-ui/static/app.js b/cmd/web-ui/static/app.js
index d0886b4..6106a3e 100644
--- a/cmd/web-ui/static/app.js
+++ b/cmd/web-ui/static/app.js
@@ -299,15 +299,19 @@
sessionsState.cursor = data.next_cursor;
const tbody = document.getElementById('sessions-body');
- tbody.innerHTML = sessionsState.sessions.map(s => `
-
- | ${escapeHTML(s.session_id.substring(0, 12))}... |
- ${escapeHTML(s.framework || '-')} |
- ${escapeHTML(s.host || '-')} |
- ${s.run_count} |
- ${escapeHTML(relativeTime(s.started_at))} |
-
- `).join('') || '| No sessions found |
';
+ tbody.innerHTML = sessionsState.sessions.map(s => {
+ const fw = s.framework || 'unknown';
+ const fwClass = fw.replace(/[^a-z0-9-]/g, '-');
+ return `
+
+ | ${escapeHTML(s.session_id.substring(0, 12))}… |
+ ${escapeHTML(fw)} |
+ ${escapeHTML(s.host || '-')} |
+ ${s.run_count} |
+ ${escapeHTML(relativeTime(s.started_at))} |
+
+ `;
+ }).join('') || '| No sessions found |
';
tbody.querySelectorAll('tr.clickable').forEach(row => {
row.addEventListener('click', () => navigate('/sessions/' + row.dataset.session));
diff --git a/cmd/web-ui/static/style.css b/cmd/web-ui/static/style.css
index f1eaa61..51558b2 100644
--- a/cmd/web-ui/static/style.css
+++ b/cmd/web-ui/static/style.css
@@ -247,6 +247,10 @@ main > * {
margin-bottom: 1.5rem;
flex-wrap: wrap;
align-items: flex-end;
+ background: var(--surface);
+ border: 1px solid var(--border);
+ border-radius: var(--radius-lg);
+ padding: 1rem 1.25rem;
}
.filters label {
@@ -1242,3 +1246,21 @@ tr.clickable:hover td:first-child {
border-radius: 50%;
flex-shrink: 0;
}
+
+/* ── Framework dots ───────────────────────────────────────── */
+.fw-dot {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ margin-right: 0.4rem;
+ flex-shrink: 0;
+ vertical-align: middle;
+ position: relative;
+ top: -1px;
+}
+
+.fw-dot.openclaw { background: var(--accent); }
+.fw-dot.claude-code { background: var(--success); }
+.fw-dot.opencode { background: var(--purple); }
+.fw-dot.unknown { background: var(--text-dim); }