Both citation.tsx and citation-list.tsx defined identical TYPE_ICONS
maps. Extract into a shared type-icons.ts to eliminate duplication
and reduce bundle size from duplicate Lucide icon imports.
Fixes#1190
Replace useMemo calls that wrap trivial boolean checks with plain
const expressions. The memo overhead exceeds the cost of these
simple permission checks and mode comparisons.
Fixes#1052
- 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.
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
- 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.
- 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.