openclaw/packages
Peter Steinberger a0a93bdde7
fix(activity): summary card ignores the selected time filter (#161060)
* fix(activity): summary card ignores the selected time filter

The Activity pulse card was pinned to the local civil day and the Gateway
capped the pulse at one day of hourly buckets, so Last 24 hours, 7 days,
30 days, and All time all showed today's numbers while the list below
narrowed correctly.

sessions.list replaces activityPulseSince/activityPulseUntil (added in
#159611, not in a tagged release) with activityPulseBoundaries: 2 to 64
strictly ascending boundaries computed in the caller's local time zone.
Pulse sessions, people, and running counts now cover the whole filtered
result; started counts sessions created within activeMinutes and is
omitted for All time. The UI requests 25 hourly, 8 or 31 daily, or 12
monthly buckets, refreshes when the current bucket ends, and aligns axis
labels with their bars. Hour starts subtract local minutes so a repeated
DST hour cannot shift the window.

Production lines stay neutral through nearby behavior-preserving cleanup.

* fix(activity): mock Activity pulse follows the selected time filter

The dev mock answered every Activity time filter with one fixed hourly pulse and fixed totals, which the window-aware renderer drew as days or months. Each bounded window now has its own case keyed on activeMinutes, with rows filtered by activity time and a pulse bucketed by the same boundaries the UI sends.

* fix(sessions): reject unordered pulse boundaries before subscribing to events

sessions.subscribe registered the connection for session events before the list handler rejected non-ascending activityPulseBoundaries, so a rejected subscribe stayed subscribed. The ascending rule now lives in the shared sessions.list params validator as a precheck, which both RPCs run before registration or store reads, and it compares only numeric boundaries so malformed elements reach the schema's type error.

* fix(sessions): type-check pulse boundary precheck without assertions

The merged head failed tsgo (unchecked index) and the assertion-safety ratchet (uncommented cast), which also broke the declaration-building lanes. The precheck now reads params through asNullableRecord, narrows boundaries with a number type predicate, and treats the first boundary's missing predecessor explicitly.

* docs(activity): describe the pulse card for each time window

The Control UI Activity guide still promised a fixed Today card with hourly bars. It now describes the hourly, daily, and monthly pulse for the selected window, the window-scoped counts, and the All time count scope.
2026-09-29 19:16:40 -07:00
..
acp-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
agent-core improve(agents): avoid polling delays in async stream tests (#161434) 2026-09-29 17:53:50 -07:00
ai feat(openai): support GPT-6.1 Sol (#161400) 2026-09-29 18:37:41 -07:00
gateway-client refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
gateway-protocol fix(activity): summary card ignores the selected time filter (#161060) 2026-09-29 19:16:40 -07:00
llm-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
markdown-core refactor(markdown): prune weak tests and guard list metadata (#161386) 2026-09-29 23:05:10 +00:00
media-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
media-generation-core refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
media-understanding-common refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
memory-host-sdk refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
mermaid-renderer fix: restore bundled Mermaid parser license notices (#157461) 2026-09-25 14:21:38 -07:00
model-catalog-core refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
net-policy refactor(packages): deslop shared packages second pass (#159279) 2026-09-28 14:37:02 -07:00
normalization-core refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
plugin-package-contract refactor(packages): deslop shared packages second pass (#159279) 2026-09-28 14:37:02 -07:00
plugin-sdk refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
retry fix(gateway): handle connection bursts behind shared IPs (#160814) 2026-09-29 00:48:30 +00:00
sdk refactor(packages): deslop shared packages second pass (#159279) 2026-09-28 14:37:02 -07:00
session-url-contract refactor(packages): deslop shared packages fifth pass (#161210) 2026-09-29 14:30:03 -07:00
terminal-core refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
tool-call-repair refactor(packages): deslop shared packages fourth pass (#161002) 2026-09-28 23:40:07 -07:00
workboard-contract refactor(packages): deslop shared packages third pass (#159933) 2026-09-27 20:53:42 -07:00
tsconfig.json perf(lint): bound the package fallback type graph (#160281) 2026-09-29 00:27:31 +07:00