- Wrap formatRelativeTime call in useMemo with thread.updatedAt dependency
- Prevents creating new Date() on every render for each thread item
- Improves thread list rendering performance
Fixes: #1100
Fixes#1094 - Track inner timer IDs and clear all in cleanup to prevent setState on unmounted component.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Updated maximum file size limit to 500 MB per file.
- Removed restrictions on the number of files per upload and total upload size.
- Enhanced handling of user-mentioning documents in the knowledge base search middleware.
- Improved document reading and processing logic to accommodate new features and optimizations.
Components were calling useSearchParams() at the top level but only
reading the value inside useEffect or callbacks, never in JSX. This
subscribed the entire component tree to every URL query change.
Fix: read from window.location.search directly inside the effect so
no React subscription is created.
Changes:
- new-chat/page.tsx: read commentId inside effect + popstate listener
for SPA back/forward support; removes subscription from 1500+ line tree
- dashboard/page.tsx: read window.location.search at redirect time;
removes searchParams from dep array
- public-chat-footer.tsx: one-shot mount read for action=clone param
- TokenHandler.tsx: one-shot mount read for token + refresh_token params
Implements Vercel React Best Practices Rule: rerender-defer-reads (5.2)
Apply content-visibility: auto to off-screen list and sidebar items
to skip browser layout and painting until they scroll into view.
Changes:
- globals.css: add .list-item-lazy (48px) and .sidebar-item-lazy (40px) utilities
- DocumentsTableShell: apply list-item-lazy to desktop <tr> rows and mobile card divs
- AllPrivateChatsSidebar: apply sidebar-item-lazy to thread items
- AllSharedChatsSidebar: apply sidebar-item-lazy to thread items
- InboxSidebar: apply content-visibility inline (80px intrinsic height) to inbox items
Implements Vercel React Best Practices Rule: rendering-content-visibility (6.2)
- 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.