Merge pull request #204 from AutoMaker-Org/try-to-fix-gpu-issue-mac

refactor: optimize button animations and interval checks for performance
This commit is contained in:
Web Dev Cody
2025-12-21 19:51:33 -05:00
committed by GitHub
4 changed files with 23 additions and 19 deletions

View File

@@ -72,15 +72,15 @@ function Button({
<button
className={cn(
buttonVariants({ variant, size }),
"p-[1px]", // Force 1px padding for the gradient border
"group p-[1px]", // Force 1px padding for the gradient border, group for hover animation
className
)}
data-slot="button"
disabled={isDisabled}
{...props}
>
{/* Animated rotating gradient border - smoother animation */}
<span className="absolute inset-[-1000%] animate-[spin_3s_linear_infinite] animated-outline-gradient opacity-75 transition-opacity duration-300 group-hover:opacity-100" />
{/* Animated rotating gradient border - only animates on hover for GPU efficiency */}
<span className="absolute inset-[-1000%] animated-outline-gradient opacity-75 transition-opacity duration-300 group-hover:animate-[spin_3s_linear_infinite] group-hover:opacity-100" />
{/* Inner content container */}
<span

View File

@@ -728,7 +728,7 @@ export function BoardView() {
// Check immediately, then every 3 seconds
checkAndStartFeatures();
const interval = setInterval(checkAndStartFeatures, 1000);
const interval = setInterval(checkAndStartFeatures, 3000);
return () => {
// Mark as inactive to prevent any pending async operations from continuing

View File

@@ -102,12 +102,13 @@ export function WorktreePanel({
const toggleCollapsed = () => setIsCollapsed((prev) => !prev);
// Periodic interval check (1 second) to detect branch changes on disk
// Periodic interval check (5 seconds) to detect branch changes on disk
// Reduced from 1s to 5s to minimize GPU/CPU usage from frequent re-renders
const intervalRef = useRef<NodeJS.Timeout | null>(null);
useEffect(() => {
intervalRef.current = setInterval(() => {
fetchWorktrees({ silent: true });
}, 1000);
}, 5000);
return () => {
if (intervalRef.current) {

View File

@@ -644,15 +644,13 @@
}
/* Animated border for in-progress cards */
@keyframes border-rotate {
0% {
background-position: 0% 50%;
/* Using a subtle pulse animation instead of continuous gradient rotation for GPU efficiency */
@keyframes border-pulse {
0%, 100% {
opacity: 0.7;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
opacity: 1;
}
}
@@ -661,15 +659,20 @@
border-radius: 0.75rem;
padding: 2px;
background: linear-gradient(
90deg,
135deg,
var(--running-indicator),
color-mix(in oklch, var(--running-indicator), transparent 50%),
var(--running-indicator),
color-mix(in oklch, var(--running-indicator), transparent 50%),
color-mix(in oklch, var(--running-indicator), transparent 30%),
var(--running-indicator)
);
background-size: 200% 100%;
animation: border-rotate 3s ease infinite;
animation: border-pulse 2s ease-in-out infinite;
}
/* Pause animation when user prefers reduced motion */
@media (prefers-reduced-motion: reduce) {
.animated-border-wrapper {
animation: none;
opacity: 1;
}
}
.animated-border-wrapper > * {