dded cutoff = utcnow() - timedelta(minutes=15)

This commit is contained in:
null 2026-05-25 12:27:02 -05:00
parent c71b96421f
commit ea62e387a4
3 changed files with 16 additions and 3 deletions

View File

@ -5,7 +5,7 @@ from __future__ import annotations
import asyncio
import json
from collections import deque
from datetime import UTC, datetime
from datetime import UTC, datetime, timedelta
from typing import TYPE_CHECKING, Any
from uuid import UUID
@ -257,12 +257,14 @@ async def get_activity_ticker(
) -> list[ActivityTickerItem]:
"""Return recent activity items shaped for the navbar ticker."""
board_ids = await list_accessible_board_ids(session, member=ctx.member, write=False)
cutoff = utcnow() - timedelta(minutes=15)
statement = (
select(ActivityEvent, Agent)
.outerjoin(Agent, col(ActivityEvent.agent_id) == col(Agent.id))
.outerjoin(Task, col(ActivityEvent.task_id) == col(Task.id))
.where(func.length(func.trim(col(ActivityEvent.message))) > 0)
.where(col(ActivityEvent.created_at) >= cutoff)
.order_by(desc(col(ActivityEvent.created_at)))
.limit(limit)
)

View File

@ -215,6 +215,11 @@ textarea::placeholder {
100% { transform: translateX(-50%); }
}
@keyframes live-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.2; }
}
@keyframes progress-shimmer {
0% {
transform: translateX(-100%);
@ -272,6 +277,9 @@ textarea::placeholder {
.animate-ticker:hover {
animation-play-state: paused;
}
.animate-live-pulse {
animation: live-pulse 1.4s ease-in-out infinite;
}
.shadow-lush {
box-shadow: var(--shadow-panel);
}

View File

@ -62,9 +62,12 @@ export function AgentActivityTicker() {
return (
<div className="border-t border-[color:var(--border)] bg-[color:var(--surface-muted)] overflow-hidden h-8 flex items-center">
<span className="shrink-0 px-3 text-[11px] font-semibold uppercase tracking-widest text-[color:var(--text-quiet)] select-none border-r border-[color:var(--border)] h-full flex items-center">
<span className="shrink-0 px-3 select-none border-r border-[color:var(--border)] h-full flex items-center">
<span className="inline-flex items-center gap-1.5 bg-red-600 text-white text-[10px] font-black tracking-[0.2em] uppercase px-2 py-0.5 rounded-sm shadow-sm shadow-red-900/40">
<span className="animate-live-pulse w-1.5 h-1.5 rounded-full bg-white" />
Live
</span>
</span>
<div className="flex-1 overflow-hidden h-full flex items-center">
<div className="flex whitespace-nowrap animate-ticker">
{display.map((item, idx) => (