- Replace width animation with translateX for GPU acceleration
- Set fixed width on panel and animate x position instead
- Prevents layout recalculation on every animation frame
- Runs on compositor thread without triggering reflow
- Store viewport element in ref instead of repeated querySelector calls
- Move getBoundingClientRect calls from render to useLayoutEffect
- Use ResizeObserver to update picker positions reactively
- Eliminates 120+ querySelector calls during message submit polling
- Prevents forced layout during React render phase
- Remove forceMount prop from DropdownMenuContent
- Allows Radix to mount content only when dropdown is open
- Reduces unnecessary DOM nodes when dropdown is closed
- Improves performance by using default Radix behavior
- Add autoComplete="username" and "current-password" to login form
- Add autoComplete="email" and "new-password" to register form inputs
- Add autoComplete="name" to profile display name input
- Add autoComplete="off" to connector search input
- Enables browser password managers and autofill functionality
- Remove 'use client' from connector-document-mapping.ts (only exports constants and pure functions)
- Remove 'use client' from sidebar-separator.tsx (purely presentational component)
- Remove 'use client' and Framer Motion from logs/loading.tsx, replace with Tailwind animations
- Reduces client bundle size by moving server-compatible code to server components
- Replace window.location.href with router.push() + router.refresh() in UserDropdown logout
- Replace window.location.href with router.push() in CreateSearchSpaceDialog
- Replace window.location.reload() with router.refresh() in login page retry action
- Prevents full page reloads and preserves React state during in-app navigation
- Add optional priority prop to Logo component (defaults to false)
- Set priority=true on login and register pages to preload logo
- Logo on other pages remains lazy-loaded by default
- Improves LCP on critical auth pages by eliminating lazy-load delay
- Pass is_public from request body in create_prompt route
- Only bump version on content field changes (name, prompt, mode),
not on is_public toggle
- Add prompts query and mutation atoms (atomWithQuery/atomWithMutation)
with TanStack Query caching, replacing manual useEffect fetches
- Update PromptPicker, PromptsContent, and CommunityPromptsContent
to consume shared atoms instead of local state
Remove hardcoded DEFAULT_ACTIONS and icon map from prompt-picker,
fetch all prompts from the backend. Simplify Zod types to match the
single-table schema (drop source/system_prompt_slug/is_modified,
add version). Update PromptsContent empty state copy.