mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
feat(ui): show activity cards for online people (#130664)
* feat(ui): show activity cards for online people Record live person timing independently of heartbeat freshness and expose keyboard- and touch-accessible cards with visible session links. Preserve continuous online intervals across overlapping tabs without adding persistent activity history. Closes #130649 * build(protocol): refresh generated presence timing fields * fix(gateway): scope presence snapshots to read-access operators Apply one recipient projection to hello, system-presence, and events. Keep person timing and time-zone details behind read access, and filter watched references with the canonical session-list policy without leaking hidden counts. Preserve idle-person metadata for readers and prevent non-reader activity-driven frames. * fix(plugins): preserve Gateway capability load context Carry the owning registry's metadata generation, workspace, install records, and built-artifact preference through capability discovery. Preserve standalone source loading and existing speech eligibility while avoiding synchronous source transforms on cold Talk catalog requests. Fixes #130777 * test: align integrated presence and capability coverage Keep the recipient matrix in its timing-aware owner, close the suite-owned Gateway for shutdown proof, and spy on the canonical install-record reader. Remove the retired private carrier's assertion allowance. * fix(gateway): broadcast presence when clients connect Publish completed connection rows through the canonical scoped broadcaster so established readers see first connections and reconnects without waiting for profile edits or activity. Preserve shared online intervals and reset them only after the final socket closes. * fix(ci): align presence fixtures and sidebar type ownership Reuse the canonical sidebar host type to remove the type-only lazy-runtime cycle. Assert omitted scopes through hello auth and denied presence reads, and supply presence version callbacks in the shared WebSocket context fixture. Retain startup admission and drain assertions without changing deadlines. * fix(ui): retain latest scroll commands until their destination Do not treat the virtualizer's idle debounce or a decreasing offset as reader takeover. Settle at the actual DOM end within one pixel, retaining the separate eight-pixel UI-follow policy and explicit input cancellation. Cover retargeted idle delivery and near-end precision with the real dependency, synchronize pointer baseline capture, and type the existing composer snapshot as its textarea contract. Fixes #130892
This commit is contained in:
committed by
GitHub
parent
5090935817
commit
3aaf13ca84
@@ -1698,7 +1698,8 @@ async function createChatPickerScenario(
|
||||
]
|
||||
: [];
|
||||
const workboardMocks = buildWorkboardMocks(baseTime);
|
||||
const activitySessions = buildActivitySessionRows(Date.now());
|
||||
const activityTime = Date.now();
|
||||
const activitySessions = buildActivitySessionRows(activityTime);
|
||||
const sessions = [
|
||||
...activitySessions,
|
||||
...(fixture === "workboard"
|
||||
@@ -2059,8 +2060,38 @@ async function createChatPickerScenario(
|
||||
name: selfProfile.displayName ?? undefined,
|
||||
email: selfProfile.emails[0],
|
||||
},
|
||||
{ id: "presence-colin", name: "Colin", email: "colin@example.com" },
|
||||
{ id: "presence-patricia", email: "patricia.erichsen@example.com" },
|
||||
{
|
||||
id: "presence-colin",
|
||||
name: "Colin",
|
||||
email: "colin@example.com",
|
||||
onlineSince: activityTime - 47 * 60_000,
|
||||
lastActivityAt: activityTime - 2 * 60_000,
|
||||
deviceFamily: "Mac",
|
||||
platform: "macOS",
|
||||
timeZone: "America/Los_Angeles",
|
||||
watchedSessions: ["agent:activity:design-review", "agent:main:main"],
|
||||
},
|
||||
{
|
||||
id: "presence-colin",
|
||||
name: "Colin",
|
||||
email: "colin@example.com",
|
||||
onlineSince: activityTime - 47 * 60_000,
|
||||
lastActivityAt: activityTime - 2 * 60_000,
|
||||
deviceFamily: "Mac",
|
||||
platform: "macOS",
|
||||
timeZone: "America/Los_Angeles",
|
||||
watchedSessions: ["agent:activity:design-review"],
|
||||
},
|
||||
{
|
||||
id: "presence-patricia",
|
||||
email: "patricia.erichsen@example.com",
|
||||
onlineSince: activityTime - 12 * 60_000,
|
||||
lastActivityAt: activityTime - 30_000,
|
||||
deviceFamily: "iPhone",
|
||||
platform: "iOS",
|
||||
timeZone: "Europe/Stockholm",
|
||||
watchedSessions: ["agent:activity:support-handoff"],
|
||||
},
|
||||
],
|
||||
methodResponses: {
|
||||
...buildBackgroundTasksMock(baseTime),
|
||||
|
||||
Reference in New Issue
Block a user