fix: avatar decoration centering, animation flickering, scheduled message persistence
- UserHero: move AvatarDecoration inside AvatarPresence so the decoration inline-flex container sizes to the avatar only, not the presence badge - SidebarNav: add will-change: background-position, background-size on document.body for animated backgrounds, promoting them to a compositor layer so overlaid text/UI doesn't repaint on every animation frame - scheduledMessages: back the atom with atomWithStorage so the scheduled message tray survives page refreshes via localStorage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,7 @@ export function SidebarNav() {
|
||||
style.removeProperty('background-size');
|
||||
style.removeProperty('background-position');
|
||||
style.removeProperty('animation');
|
||||
style.removeProperty('will-change');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -58,6 +59,13 @@ export function SidebarNav() {
|
||||
style.backgroundSize = (bgStyle.backgroundSize as string | undefined) ?? '';
|
||||
style.backgroundPosition = (bgStyle.backgroundPosition as string | undefined) ?? '';
|
||||
style.animation = (bgStyle.animation as string | undefined) ?? '';
|
||||
// Promote animated backgrounds to their own compositor layer so the browser
|
||||
// doesn't repaint the overlaid text/UI content on every animation frame.
|
||||
if (bgStyle.animation) {
|
||||
style.willChange = 'background-position, background-size';
|
||||
} else {
|
||||
style.removeProperty('will-change');
|
||||
}
|
||||
|
||||
return () => {
|
||||
style.removeProperty('background-image');
|
||||
@@ -65,6 +73,7 @@ export function SidebarNav() {
|
||||
style.removeProperty('background-size');
|
||||
style.removeProperty('background-position');
|
||||
style.removeProperty('animation');
|
||||
style.removeProperty('will-change');
|
||||
};
|
||||
}, [glassmorphismSidebar, chatBackground, lotusTerminal, isDark, pauseAnimations]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user