- Integrated a dropdown menu for alternative download options based on user OS and architecture.
- Updated the OS detection logic to provide accurate architecture information.
- Improved the download button to dynamically link to the latest release assets from GitHub.
- Added new components for better user experience in the download process.
- Adjusted the demo plans to reflect a new offer of 500 pages included to start and a maximum of 3,000 bonus pages.
- Updated descriptions and dialog titles throughout the application to align with the new offer, ensuring consistency in messaging.
- Enhanced README files in multiple languages to include the new "Watch Local Folder" feature for the desktop app, detailing its functionality and benefits.
- Updated the hero section to showcase the "Watch Local Folder" feature with a new tutorial video.
- Improved overall clarity and consistency across documentation regarding desktop app capabilities.
Replace static imports of all 5 locale JSON files with dynamic imports.
Only English is bundled by default, other locales (es, hi, pt, zh) load
on demand when the user switches languages.
Also removes unused 'set' import from zod (line 5) that was dragging
Zod surface into this module unnecessarily.
Changes:
- Removed static imports for es, hi, pt, zh locale files
- Removed unused zod import
- Added loadMessages() function for dynamic locale loading
- Updated setLocale() to load messages asynchronously
- Added useEffect to load non-English locale on mount if stored
Benefits:
- Only active locale's JSON in initial bundle (English default)
- 80% reduction in locale data in initial bundle
- Other locale files load on demand (~50-100KB each)
- Removed unnecessary zod dependency from module
- Locale switching still works seamlessly
- Faster initial page load
Fixes#1143
Remove unused 'is' import from drizzle-orm in markdown-viewer.tsx (line 5).
This import was never used in the file and unnecessarily dragged ORM code
into the UI component's bundle chunk.
Benefits:
- Removes drizzle-orm from markdown-viewer bundle chunk
- Reduces bundle size for components using MarkdownViewer
- Cleaner imports with no unused dependencies
- Markdown viewer functionality unchanged
Fixes#1144
Convert GenerateVideoPresentationToolUI from static import to dynamic import
with ssr: false in public-thread.tsx. This prevents Remotion and @babel/standalone
from being bundled in the public chat page.
The main app's assistant-message.tsx already correctly lazy-loads this component,
but the public thread was still using a static import, unnecessarily increasing
the bundle size for public shared chats.
Benefits:
- Removes Remotion and @babel/standalone from public chat bundle
- Reduces initial bundle size for public shared chats
- Video presentations still render correctly when present
- Faster page load for users viewing public chats
Fixes#1145
Convert MobileEditorPanel, MobileHitlEditPanel, and MobileReportPanel from
static imports to dynamic imports with ssr: false. These panels pull in heavy
dependencies (PlateEditor, MarkdownViewer) that are only needed when users
interact with them on mobile.
Benefits:
- Reduces initial bundle size for chat page
- Mobile panels load only when opened by user
- Faster initial page load and Time to Interactive
- Heavy editor dependencies are code-split into separate chunks
Fixes#1146
- Changed the button element to a div with role="button" to enhance keyboard accessibility.
- Updated event handling for click and keydown events to ensure consistent behavior across devices.
- Maintained existing styling and functionality while improving semantic structure.
- Replaced outdated GIF links with new ones for various features in all language-specific README files.
- Added new sections for desktop app functionalities, including General Assist, Quick Assist, and Extreme Assist.
- Enhanced visual content to improve user engagement and clarity of features.
- Replace transition-all with transition-[width] in Sidebar.tsx for width animations
- Replace transition-all with specific properties in animated-tabs.tsx for hover/active indicators
- Replace transition-all with transition-[background-color,border-color,box-shadow] in navbar.tsx
- Replace transition-all with transition-[width] in audio.tsx volume bar
- Replace transition-all with transition-[background-color,border-color,color] in thread.tsx
- Replace transition-all with transition-[box-shadow] in all tool-ui status cards (28+ files)
This reduces unnecessary browser layout/paint work by only animating the specific
properties that change, avoiding expensive recalculations for properties like
width, height, margin, and padding that don't need animation.
Fixes#1147
- 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
- Introduced a new section in the README files for the Desktop App, highlighting its features: General Assist, Quick Assist, and Extreme Assist.
- Updated all language-specific README files to include details about the desktop app's capabilities and download instructions.
- 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
- Updated TAB_ITEMS to include new features: General Assist, Quick Assist, Extreme Assist, and Video & Presentations.
- Removed outdated features: Connect & Sync and Upload Documents.
- Introduced a DownloadButton component that detects user OS for tailored download options.
- Removed the old DownloadApp component for a cleaner implementation.
- Add local state for message filter input with 300ms debounce
- Use useDebouncedValue hook to delay table filter updates
- Prevents full filtering pipeline from running on every keystroke
- Improves responsiveness for large log datasets
- 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