openclaw/docs/web
Peter Steinberger 8b66fc103d
feat(ui): durable session board face and dashboards index (#114262)
* feat(ui): durable session board face and dashboards index

Board face lived only in client-side boardSessionViews, capped at 50 entries,
so the preference never followed the user to another device, evicted as
sessions accumulated, and could not be seen as a set.

Persist it as SessionEntry.boardFace, which rides the existing entry_json blob
and so needs no SQLite schema change or version bump. Expose it on the session
list row and add it to the sessions.patch write-scope allowlist alongside label,
pinned, and archived: setting your own view preference is user-level chat
organization, not policy. Unknown patch fields still fail closed to
operator.admin.

Generic navigation now reads the stored face, so the sidebar and session list
open a thread on the face you left it on. boardSessionViews keeps only
activeTabId and reopenDockByTab, which are genuinely per-device.

Add /dashboards listing threads whose preferred face is dashboard. Filtering
runs server-side in filterSessionEntries before pagination, because the client
holds only a capped page and a client-side filter would silently omit
dashboards.

* test(protocol): assert the pre-rename face param is rejected

The gateway-protocol validator test still passed the pre-rename 'face' key,
which the closed schema rejects. Use boardFace, and pin the old name as a
negative case so it cannot silently return.

* chore(protocol): regenerate Swift bindings and docs map for boardFace

Adding boardFace to the sessions schema changes two committed generated
artifacts: the Swift gateway models (pnpm protocol:gen:swift) and the docs map
(pnpm docs:map:gen), which now lists the dashboards index section.
2026-07-27 00:35:34 -04:00
..
control-ui.md feat(ui): path-based session and dashboard URLs (#113883) 2026-07-26 12:46:04 -04:00
dashboard-architecture.md feat(dashboard): plugin-declared widget data bindings and action verbs (#112083) 2026-07-20 22:43:04 -07:00
dashboard.md docs(control-ui): clarify loopback gateway auth (#112746) 2026-07-22 18:45:56 -04:00
dashboards.md feat(ui): durable session board face and dashboards index (#114262) 2026-07-27 00:35:34 -04:00
index.md docs: rewrite published docs grounded in current source (#100142) 2026-07-05 00:32:47 -04:00
lobster.md refactor(ui): sidebar IA cleanup: Activity to Settings, Dreams into Agents Memory tab, single MCP mutation owner (#104604) 2026-07-11 14:24:39 -07:00
tui.md refactor(config): config-surface reduction tranche 1 — retire dead keys, dedupe channel schemas, add growth ratchet (#111142) 2026-07-19 00:52:37 -07:00
urls.md feat(ui): durable session board face and dashboards index (#114262) 2026-07-27 00:35:34 -04:00
webchat.md feat(gateway): chat.send expectedLeafEntryId precondition keeps stale panes off switched branches (#113073) 2026-07-23 12:33:31 -07:00