feat(ui): consolidate activity filters into toolbar with people popover (#125917)

* test(ui): seed mock activity sessions across owners

* feat(ui): consolidate activity filters into toolbar

Also restores the shared .input styling contract for standalone form controls.

* test(ui): update activity feed e2e for toolbar people popover
This commit is contained in:
Peter Steinberger
2026-08-18 11:41:06 -07:00
committed by GitHub
parent 97a4d324f5
commit ab2bd4faa8
10 changed files with 563 additions and 109 deletions
+40
View File
@@ -294,6 +294,44 @@ function buildSearchSessionListCases(
return searchTerms.flatMap((search) => buildSessionListCases(sessions, { search }));
}
function buildActivitySessionRows(baseTime: number) {
const owners = {
molty: { type: "agent", id: "profile-molty", label: "Molty" },
riley: { type: "human", id: "presence-riley", label: "Riley" },
colin: { type: "human", id: "presence-colin", label: "Colin" },
patricia: {
type: "human",
id: "presence-patricia",
label: "patricia.erichsen@example.com",
},
unresolved: { type: "human", id: "147591189530201337" },
} as const;
const hour = 60 * 60 * 1000;
const day = 24 * hour;
const fixtures = [
["release-check", "Release readiness check", owners.riley, 5 * 60_000],
["api-notes", "Gateway API notes", owners.molty, 20 * 60_000],
["design-review", "Activity feed design review", owners.colin, hour],
["archive-audit", "Archive retention audit", owners.unresolved, 3 * hour],
["support-handoff", "Support handoff", owners.patricia, 6 * hour],
["mobile-smoke", "Mobile layout smoke test", owners.riley, 18 * hour],
["provider-matrix", "Provider matrix cleanup", owners.molty, 30 * hour],
["docs-pass", "Operator docs pass", owners.colin, 2 * day],
["queue-review", "Queue behavior review", owners.patricia, 2.5 * day],
["identity-trace", "Identity trace", owners.unresolved, 3 * day],
["channel-followup", "Channel delivery follow-up", owners.riley, 4 * day],
["tooling-refresh", "Tooling refresh", owners.molty, 5 * day],
["fixture-polish", "Mock fixture polish", owners.colin, 6 * day],
["weekly-summary", "Weekly activity summary", owners.patricia, 6.5 * day],
] as const;
return fixtures.map(([key, label, owner, age]) =>
sessionRow(`agent:activity:${key}`, label, baseTime - age, {
createdActor: owner,
owner: { actor: owner },
}),
);
}
function usageCostTotals(totalTokens: number, totalCost = 0) {
return {
input: Math.round(totalTokens * 0.2),
@@ -1418,7 +1456,9 @@ async function createChatPickerScenario(
]
: [];
const workboardMocks = buildWorkboardMocks(baseTime);
const activitySessions = buildActivitySessionRows(Date.now());
const sessions = [
...activitySessions,
...(fixture === "workboard"
? [
sessionRow(workboardMocks.sessionKey, "Product operations dashboard", baseTime, {