Skip to content

Commit 0a7c8ba

Browse files
committed
feat(ui): redesign sessions page with overview tiles, kind avatars, and context meters
The Control UI sessions roster now leads with operator telemetry: overview tiles (sessions / live / unread / tokens), per-kind row avatars with a live-run dot, compact token values with context-usage meters (ok/warn/danger at 65%/85%), initial-load skeleton rows, and icon-led empty states. Stale token snapshots render as ~approximations with a neutral meter and never drive warning tones, matching the chat composer convention; the overview token sum counts only known snapshots (~ when partial, n/a when none). Label chips ellipsize instead of overflowing sticky columns; <=500px drops the avatar to preserve the key column budget. Closes #102517
1 parent 51bb5f6 commit 0a7c8ba

68 files changed

Lines changed: 963 additions & 216 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/web/control-ui.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ A **Search** field at the top of the sidebar opens the command palette (⌘K). T
138138
- Channels: built-in plus bundled/external plugin channels status, QR login, and per-channel config (`channels.status`, `web.login.*`, `config.patch`).
139139
- Channel probe refreshes keep the previous snapshot visible while slow provider checks finish, and label partial snapshots when a probe or audit exceeds its UI budget.
140140
- Instances: presence list and refresh (`system-presence`).
141-
- Sessions: list configured-agent sessions by default, pin frequent sessions, rename them, archive or restore inactive sessions, fall back from stale unconfigured agent session keys, and apply per-session model/thinking/fast/verbose/trace/reasoning overrides (`sessions.list`, `sessions.patch`). Pinned sessions sort above recent unpinned sessions; archived sessions live in the Sessions page's archived view and keep their transcripts. Rows show an unread dot for sessions with activity since their last read, with mark-unread/mark-read actions (`sessions.patch { unread }`), and a Fork action that branches the transcript into a new session (`sessions.create { parentSessionKey, fork: true }`).
141+
- Sessions: list configured-agent sessions by default, pin frequent sessions, rename them, archive or restore inactive sessions, fall back from stale unconfigured agent session keys, and apply per-session model/thinking/fast/verbose/trace/reasoning overrides (`sessions.list`, `sessions.patch`). Pinned sessions sort above recent unpinned sessions; archived sessions live in the Sessions page's archived view and keep their transcripts. Rows show an unread dot for sessions with activity since their last read, with mark-unread/mark-read actions (`sessions.patch { unread }`), and a Fork action that branches the transcript into a new session (`sessions.create { parentSessionKey, fork: true }`). Overview tiles above the table summarize the loaded roster (session count, live runs, unread sessions, total tokens), each row carries a kind glyph with a live-run dot, and the Tokens column shows a context-window usage meter when the session reports token and context sizes.
142142
- Session grouping: a Group by control organizes the sessions table into sections by custom groups, channel, kind, agent, or date. Custom groups persist per session via `sessions.patch` (`category`), so sessions started from message channels (Discord, Telegram, WhatsApp, ...) can be categorized too; assign groups by dragging rows onto a section, or with the per-row group selector, and create groups with the New group action.
143143
- Dreams: dreaming status, enable/disable toggle, and Dream Diary reader (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`).
144144

ui/src/components/icons.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ export const icons = {
136136
<path d="M9 13v2" />
137137
</svg>
138138
`,
139+
users: html`
140+
<svg viewBox="0 0 24 24">
141+
<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" />
142+
<circle cx="9" cy="7" r="4" />
143+
<path d="M22 21v-2a4 4 0 0 0-3-3.87" />
144+
<path d="M16 3.13a4 4 0 0 1 0 7.75" />
145+
</svg>
146+
`,
139147

140148
// UI icons
141149
menu: html`

ui/src/i18n/.i18n/ar.meta.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/src/i18n/.i18n/ar.tm.jsonl

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/src/i18n/.i18n/de.meta.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/src/i18n/.i18n/de.tm.jsonl

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/src/i18n/.i18n/es.meta.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)