Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/web/src/components/settings/ProviderInstanceCard.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -760,7 +760,7 @@ export function ProviderInstanceCard({
<ArrowUpCircleIcon
aria-hidden
className={cn(
"size-3.5 [animation:bounce_2.4s_ease-in-out_infinite] motion-reduce:animate-none",
"provider-update-marker size-3.5 motion-reduce:animate-none",
versionAdvisory.emphasis === "strong" ? "text-warning" : "text-update-foreground",
)}
/>
Expand Down
20 changes: 20 additions & 0 deletions apps/web/src/index.css
Original file line numberDiff line numberDiff line change
Expand Up@@ -506,6 +506,26 @@ html[data-dot-matrix-motion="efficient"] .dot-matrix-dot[data-animated="chase"]
}
}

/* The provider update marker draws the eye once when the row appears, then
stops. It used an infinite bounce, which repaints for as long as Settings is
open — the class AGENTS.md rules out — and bounce easing reads dated next to
the rest of the app's motion. Ease-out-quint settles the way a real object
would. */
@keyframes provider-update-marker-settle {
0% {
transform: translateY(-2px);
opacity: 0.55;
}
100% {
transform: translateY(0);
opacity: 1;
}
}

.provider-update-marker {
animation: provider-update-marker-settle 320ms cubic-bezier(0.22, 1, 0.36, 1) 1;
}

@keyframes live-activity-focus {
0% {
transform: translateX(0);
Expand Down
Loading