- Updated CSS for the code highlighter to improve layout and add custom scrollbar styles.
- Refined the Shiki component with a subtle glow effect and improved header layout.
- Adjusted the LoginButton icon size and color for better visibility.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced `requiresLogin` property for menu items and actions across multiple components to enforce user authentication.
- Added `useRequireLogin` hook to manage login checks and modal presentation.
- Updated context menus, action buttons, and settings to utilize the new login guard functionality.
- Enhanced user experience by prompting login where necessary, ensuring actions are only accessible to authenticated users.
Signed-off-by: Innei <tukon479@gmail.com>
Updated the global shortcuts registration to ensure proper detection of editable elements by checking if the target is an instance of HTMLElement. This change enhances the accuracy of shortcut handling in editable contexts.
style(toast): remove unused toast styles
Deleted redundant CSS styles related to sonner toast notifications to streamline the stylesheet and improve maintainability.
style(toast): enhance toast styles with z-index and pointer events
Added z-index and pointer-events styles to the toast component for better layering and interaction handling.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a comprehensive glassmorphic design system to enhance visual hierarchy in UI elements such as modals, toasts, and floating panels.
- Added detailed design principles, color usage guidelines, and component structure examples to AGENTS.md.
- Updated AISmartSidebar component to utilize layered glass effects and smooth animations.
- Enhanced CSS styles for glassmorphic elements, ensuring performance optimizations and accessibility considerations.
These changes aim to elevate the user experience through refined aesthetics and improved interaction dynamics.
Signed-off-by: Innei <tukon479@gmail.com>
- Modified the isEmpty method in both ChatInput and LexicalRichEditor components to check if the editor's content is empty by verifying if the trimmed text content is an empty string.
- Added an accessories prop to LexicalRichEditor for improved flexibility in rendering additional UI elements.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated Shortcut components to include icon rendering and a command prefix for better user experience.
- Modified shortcut trigger patterns to use '/' instead of '#' for consistency across the application.
- Added new icon selection feature in ShortcutModalContent for improved customization.
- Updated localization files to include new icon-related strings.
Signed-off-by: Innei <tukon479@gmail.com>
Added AutoLinkPlugin and TabIndentationPlugin to the LexicalRichEditor for improved user experience. Introduced ExitCodeBoundaryPlugin to manage caret behavior when exiting code contexts and TripleBacktickTogglePlugin for toggling code blocks. Updated node imports and types to support these new features, enhancing the editor's capabilities.
Signed-off-by: Innei <tukon479@gmail.com>
Updated the ChatInput and LexicalRichEditor components to streamline the logic for determining if the editor is empty. The isEmpty state now directly utilizes the $getRoot().isEmpty() method, enhancing code clarity and maintainability. Removed unnecessary text content checks in favor of a more efficient approach.
Signed-off-by: Innei <tukon479@gmail.com>
Updated the ChatInput and EditableMessage components to set a fixed height for the LexicalRichEditor, improving the layout consistency. Additionally, refactored the AITaskModal to manage prompt state outside of react-hook-form, allowing for better control over the prompt length and submission handling.
Signed-off-by: Innei <tukon479@gmail.com>
- Replaced `[text-autospace:auto]` with `autospace-normal` class in ListItem, EntryTitle, and ArticleLayout components to standardize text spacing.
- Added a new utility class `autospace-normal` in tailwind.css to ensure consistent text rendering across the application.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the import path for the AIShortcutButton component to the new location.
- Introduced a more flexible gradient handling function that adapts based on the dark/light mode.
- Removed the old AIShortcutButton component file as it is no longer needed.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the prompt input field with additional padding for better usability.
- Added size prop to the Switch component, allowing for small and medium sizes.
- Adjusted styles for the Switch component to accommodate the new size options, ensuring consistent appearance across different sizes.
Signed-off-by: Innei <tukon479@gmail.com>
* feat: add image-only view setting and related UI updates
- Introduced a new setting for image-only view mode.
- Updated components to conditionally render based on the new setting.
- Added translations for the new feature in multiple languages.
* fix: changelog
- Renamed CSS class from `h-entry-header` to `h-top-header` for clarity and consistency.
- Introduced `h-top-header-with-border-b` for enhanced layout in `EntryListHeader`.
- Updated `RelativeTime` component to accept a `postfix` prop, allowing for more flexible date formatting.
- Adjusted instances of `RelativeTime` to utilize the new `postfix` prop for improved display.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced EntryPreviewCard and FeedPreviewCard components for enhanced hover previews.
- Implemented prefetching of entry details and feed information on hover.
- Updated AnimatedMarkdown to utilize the new hover preview components for better user interaction.
Signed-off-by: Innei <tukon479@gmail.com>
- Integrated `AnimatePresence` and `m` from `motion/react` into the `AIChainOfThought` component to improve the display of reasoning titles with smooth transitions.
- Updated the `ToolInvocationComponent` to accept a `variant` prop, allowing for tighter spacing when necessary.
- Refined the `ShinyText` component's styles for better visual effects and consistency across components.
These changes aim to enhance the user experience by providing smoother animations and improved layout flexibility in the AI chat interface.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the `ShinyText` component to support children and customizable shimmer width, improving flexibility in usage.
- Refactored styles for the `ShinyText` component to enhance the shine animation effect.
- Integrated the `ShinyText` component into the `AIChainOfThought` and `WelcomeScreen` components, ensuring consistent visual styling across the AI chat interface.
These changes aim to improve the visual appeal and maintainability of the components within the AI chat module.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new `CustomRangePicker` component within the `ContextMenuContent` to allow users to select custom date ranges.
- Enhanced the `DateTimePicker` to support range selection mode, enabling users to pick start and end dates.
- Integrated relative date options into the context menu, improving the flexibility of date mentions in the AI chat interface.
- Updated localization to ensure new date range options are translatable.
These changes aim to enhance user experience by providing more options for date selection in the AI chat context menu.
Signed-off-by: Innei <tukon479@gmail.com>
- Integrated `ShinyText` into `AIChainOfThought` for improved visual feedback during reasoning.
- Updated `AIMessageParts` to conditionally render reasoning parts only if text is present, enhancing logic clarity.
- Introduced `useDeferredValue` for low-priority rendering of display parts, optimizing performance.
These changes aim to improve the user experience by providing clearer visual cues and more efficient rendering in the AI chat interface.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new `AIInnerReasoningPart` component to encapsulate the rendering logic for individual reasoning parts, enhancing modularity.
- Updated `AIChainOfThought` to utilize the new component and manage collapse state more effectively using a ref.
- Simplified the extraction of headings from reasoning text, improving readability and maintainability of the code.
These changes aim to enhance the user experience by providing clearer feedback during AI reasoning processes and improving the overall structure of the components.
Signed-off-by: Innei <tukon479@gmail.com>
- Upgraded various dependencies in package.json files, including @electron-forge, @sentry/react, and @better-auth.
- Updated devDependencies and fixed version mismatches in internal components and utilities.
- Enhanced settings sync queue to spread object properties for better payload handling.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated various components to improve layout consistency and responsiveness, including AIDisplayAnalyticsPart, AIReasoningPart, and ToolInvocationComponent.
- Introduced max-width constraints to ensure proper rendering across different screen sizes.
- Enhanced the TokenUsagePill component by integrating TooltipPortal for better tooltip management and improved styling for token usage display.
- Implemented useLayoutEffect in ChatInterface to manage bottom panel height dynamically, improving user experience during chat interactions.
These changes aim to streamline the user interface and enhance the overall functionality of the AI chat components.
Signed-off-by: Innei <tukon479@gmail.com>
- Added keyboard shortcut support for toggling AI chat in AISmartSidebar.
- Improved styling and transition effects in CollapsibleError for better user experience.
- Updated EntryReadHistory to conditionally render based on user visibility.
- Refactored SourceContentView to simplify rendering logic and improve performance.
- Enhanced Kbd component to support abbreviations for better accessibility.
These changes aim to improve the functionality and usability of the AI chat features and related components.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced new components for managing subscription entries, including EntrySubscriptionItem and EntrySubscriptionList, to improve the display and interaction within the subscription column.
- Added hooks for handling entry visibility and data fetching, optimizing performance and user experience.
- Implemented a toolbar for toggling the visibility of the entry list, enhancing user control over the interface.
- Refactored sidebar atoms to support new subscription-related states and actions.
These changes aim to provide a more robust and user-friendly experience in managing subscriptions within the application.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new higher-order component, withAppErrorBoundary, to wrap components with error boundary functionality.
- Created EntryNotFoundErrorFallback component to display a user-friendly message when an entry is not found.
- Updated error handling in EntryContent to utilize the new EntryNotFound error type.
- Added EntryContentFallback component to manage entry prefetching and loading states, enhancing user experience during data retrieval.
These changes improve error management and user feedback for entry-related issues.
Signed-off-by: Innei <tukon479@gmail.com>
* init
Signed-off-by: Innei <tukon479@gmail.com>
* feat(ai): add showSplineButton setting and update UI components
- Introduced a new setting `showSplineButton` to control the visibility of the AI assistant indicator.
- Updated the `createDefaultSettings` function to include the new setting with a default value of true.
- Modified the `AISplineButton` component to conditionally render based on the `showSplineButton` setting.
- Adjusted the modal content width in the `useDialog` hook for better layout.
- Enhanced the settings tab to define the new `showSplineButton` item with appropriate labels and descriptions.
- Updated localization files to include translations for the new setting.
These changes improve user control over the AI assistant's visibility and enhance the overall UI experience.
Signed-off-by: Innei <tukon479@gmail.com>
* feat(ai): implement AISmartSidebar with CSS animations
- Added AISmartSidebar component to replace motion/react animations with CSS animations for improved performance and visual effects.
- Introduced corresponding AISmartSidebar.css file to define animations and styles for the sidebar elements.
- Updated AISplineButton to conditionally render AISmartSidebar based on visibility settings.
- Refactored AIEntryLayout to use the new AIIndicator component, enhancing the integration of the sidebar.
These changes enhance the user experience by providing smoother animations and better control over the AI assistant's visibility.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ui): update icon usage and improve layout spacing
- Replaced icons in the EntryMoreActions and MoreActions components for consistency.
- Adjusted padding and margin in various components, including AIEntryHeader and SubscriptionColumn, to enhance layout and visual appeal.
- Added a new label 'View' to the ai-block-constants for better clarity.
These changes improve the overall user interface and maintain consistency across components.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ui): enhance ChatHeader and EntryListHeader layouts
- Updated the ChatHeaderLayout to conditionally render styles based on the floating state, improving visual consistency.
- Adjusted the EntryListHeader component to set a fixed height, ensuring uniformity in layout across different views.
These changes improve the overall user interface and maintain a consistent layout experience.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ui): update ChatHeader and ChatMoreDropdown components
- Replaced GlassButton with ActionButton in ChatHeader for improved consistency and styling.
- Simplified the rendering of TaskReportDropdown and ChatMoreDropdown components.
- Adjusted layout styles in WelcomeScreen for better alignment.
- Enhanced ChatInterface to improve input positioning when no messages are present.
These changes enhance the user interface and maintain a consistent look across components.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ai): adjust AI chat layout width for improved styling
- Updated the AI chat component to set a custom layout width of 65rem, enhancing the overall appearance and usability of the chat interface.
This change aims to provide a more consistent and visually appealing layout for the AI chat experience.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ui): adjust spacing in EntryListHeader component
- Increased the gap between items in the EntryListHeader from 1 to 2 for improved layout and visual consistency.
This change enhances the overall user interface by providing better spacing in the header layout.
Signed-off-by: Innei <tukon479@gmail.com>
---------
Signed-off-by: Innei <tukon479@gmail.com>
* feat(feed): a masonry view for all feed (wip)
* fix: adjust color and icons
* feat: all masonry
* feat: item details
* fix: styles
* fix: styles
* fix: default tab to be -1
* fix: selectable view
* fix: safe area
* fix: remove safe area
* fix: styles
* fix: styles
* fix: navigation
* fix: aspect-ratio
* fix: hooks
* fix: styles
* chore: comment
* fix: splash issue
* fix: style
* fix: style
* fix: style
* fix: style
* fix: close entry
* fix: styles
* fix: folder in all
* fix: styles
* fix: styles
* fix: styles
* refactor(desktop): enhance entry data handling in AllItem component
- Updated the AllItem component to destructure additional properties (content, description) from the entry state for improved data accessibility.
- Modified the rendering logic to display title, content, or description in the UI, enhancing user experience by providing more context.
This refactor aims to streamline data management and improve the presentation of entry information.
* refactor(desktop): improve entry display order in AllItem component
- Adjusted the rendering logic in the AllItem component to prioritize displaying the entry title before the description and content. This change enhances the clarity and relevance of the information presented to users.
This update aims to further refine the user experience by ensuring the most important entry information is highlighted first.
* feat: enhance AllItem component with keyword highlighting
- Added support for highlighting keywords in the title using a new `title_keyword` property in the ExtraModel.
- Introduced random card and highlight styles for visual differentiation.
- Updated the rendering logic to display highlighted keywords within the title.
This improves the user experience by making important keywords more prominent in the item display.
* refactor(AllItem): update media rendering logic to include Audios
- Modified the rendering conditions in the AllItem component to include Audios in the media display alongside Articles, Notifications, and Social Media.
- Removed the previously defined separate rendering block for Audios to streamline the component structure.
This update enhances the media display functionality by integrating Audios into the existing media rendering logic.
* fix: height calc
* feat(AllMasonry): add refetch and scroll handling functionality
- Introduced a `refetch` prop to the `AllMasonry` component for improved data fetching capabilities.
- Implemented a `handleScrollTo` function to facilitate scrolling to specific items within the masonry layout.
- Updated the component structure to accommodate these new features, enhancing user interaction and experience.
This update enhances the functionality of the AllMasonry component by allowing for better data management and item navigation.
* feat(AllItem): enhance title rendering and entry read tracking
- Updated the title rendering logic to improve keyword highlighting with case-insensitive matching.
- Integrated the `unreadSyncService` to mark entries as read when hovered, enhancing user interaction.
- Refactored highlight styles to support new underline and background options for better visual distinction.
This update improves the user experience by providing clearer title visibility and tracking read status effectively.
* refactor(AllItem): streamline hover behavior and enhance title keyword matching
- Refactored hover handling to utilize a timer for showing previews, improving performance and user experience.
- Updated title keyword matching logic to ensure proper escaping of special characters, enhancing accuracy in highlighting.
- Cleaned up unused underline-wavy styles for better code maintainability.
This update optimizes the interaction flow and improves the visual representation of keywords in titles.
* feat(timeline): filter views based on AI feature flag
- Introduced a check for the AI feature to conditionally filter out the 'All' view from the timeline list.
- Updated the logic to create view IDs based on the filtered views, enhancing the timeline's adaptability to feature availability.
This update improves the timeline's functionality by ensuring that the view options align with the current feature set.
* refactor(AllItem): simplify highlight styles and improve text decoration handling
- Removed unnecessary text-decoration-skip-ink styles from highlight class names for cleaner code.
- Added inline style to ensure consistent text decoration behavior in highlighted keywords.
This update enhances code maintainability and ensures proper rendering of highlighted text.
* fix(EntryColumnGrid): add refetch prop and update comments in AllItem
- Added the `refetch` prop to the `EntryColumnGrid` component for improved data handling.
- Updated comment in `AllItem` from "Social Media" to "Common views" for better clarity.
- Enhanced the no content display in `AllItem` for improved user experience.
This update improves functionality and clarity in the entry column components.
* refactor(AllItem): clean up media handling and improve preview logic
- Removed unused `firstMedia` variable and adjusted media cover logic for clarity.
- Updated aspect ratio handling to ensure default values are set correctly.
- Enhanced the no media available display for better user experience.
- Refactored preview display logic to improve readability and maintainability.
This update streamlines the media handling in the AllItem component and enhances the user interface.
* fix: index key
* refactor(AllItem): optimize title keyword highlighting logic
- Simplified the keyword highlighting logic in the AllItem component by extracting the regex pattern into a separate variable.
- Improved readability and maintainability of the code by reducing redundancy in the title rendering function.
This update enhances the performance and clarity of the title rendering process.
* fix: button width
* fix: first screen navigation
* fix: video hovering autoplay
* feat(timeline-tabs): implement customizable timeline tabs settings
- Added a new `TimelineTabsSettingsModal` component for managing visible and hidden timeline tabs.
- Introduced drag-and-drop functionality for reordering tabs and customizing their visibility.
- Updated `SubscriptionTabButton` to accept a shortcut prop for improved keyboard navigation.
- Enhanced global shortcuts handling to allow bypassing input restrictions for specific actions.
These changes provide users with greater flexibility in managing their timeline tabs, improving the overall user experience.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: clean up error handling in AllMasonry component and update UnreadSyncService to use new API method
- Removed console log from error handling in the AllMasonry component to streamline the code.
- Updated the UnreadSyncService to utilize the new `markAllAsRead` API method, improving the readability and structure of the request handling.
These changes enhance code clarity and maintainability across the affected components.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: optimize rendering performance in AllMasonry component
- Introduced `startTransition` for setting width in the ResizeObserver to improve rendering performance during layout updates.
- Updated the `LoadingSkeleton` component's class names for better styling consistency.
- Simplified key generation in the `SkeletonGrid` component by using `null` instead of `crypto.randomUUID()`.
These changes enhance the efficiency and maintainability of the AllMasonry component and its related elements.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: simplify icon rendering in TimelineTabsSettingsModal
- Removed conditional rendering for the icon in the TabItem component, directly displaying the icon for improved clarity and performance.
- This change streamlines the code and enhances the maintainability of the TimelineTabsSettingsModal component.
Signed-off-by: Innei <tukon479@gmail.com>
---------
Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: Innei <tukon479@gmail.com>
- Removed the `tooltipDefaultOpen` prop from the `ActionButton` component to simplify the API.
- Refactored the tooltip structure for improved readability and maintainability, ensuring consistent rendering of tooltip content.
These changes enhance the clarity and efficiency of the `ActionButton` component's tooltip functionality.
Signed-off-by: Innei <tukon479@gmail.com>
- Replaced the Accordion component with the new Collapse components in ToolInvocationComponent and DiscoverImport for improved UI consistency and functionality.
- Updated related styles and structure to accommodate the new Collapse implementation.
- Removed the deprecated Accordion component files to streamline the codebase.
These changes aim to enhance the user experience by providing a more modern and flexible collapsing interface.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced a new frontend for tracking AI token usage with real-time analytics and user-friendly visualizations.
- Added components for usage analysis, including detailed usage modals, progress rings, and various charts to display usage patterns and efficiency.
- Integrated localization support for new UI elements and analytics features.
- Removed the deprecated token usage settings page to streamline the user interface.
These changes aim to empower users with actionable insights into their AI usage, enhancing overall user experience and engagement.
Signed-off-by: Innei <tukon479@gmail.com>
* feat(ai-task): implement AI task management components and queries
Add AITaskModal for creating and editing AI tasks, ScheduleConfig for scheduling options, and AITaskList for displaying tasks. Introduce query hooks for task management and define types for scheduling.
* feat: add TaskSchedulingSection for managing AI tasks
* chore: implement task creation limit and error handling in AIChatContextBar
* fix: lint
* refactor: simplify default form data handling and improve readability
* feat(ai-task): add AITaskModalHeader component for improved task title management
* refactor: streamline task scheduling UI
* refactor(ai-chat): update modal title and close capability for task scheduling
* feat(input): add TimeSelect component for custom time picking
* feat: integrate TimeSelect component for improved time selection
* feat: add DateTimePicker component for enhanced date and time selection
Signed-off-by: Innei <tukon479@gmail.com>
* feat(ai-task): implement TaskItem component for displaying individual AI tasks with status and actions
Signed-off-by: Innei <tukon479@gmail.com>
* feat: update client-sdk version and implement reusable ItemActions component for AI task and MCP service management
- Updated '@follow-app/client-sdk' to version 0.3.46 in pnpm-lock.yaml and pnpm-workspace.yaml.
- Introduced a new ItemActions component for handling action buttons and toggle switches in AI task and MCP service items.
- Refactored TaskItem, MCPServiceItem, and ShortcutItem components to utilize the new ItemActions component for improved code reuse and maintainability.
- Enhanced TokenUsageSection to display reset date in a more user-friendly format.
- Updated MCPService interface to include an 'enabled' property for better state management.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(ai-settings): remove unused export for MCPServicesSection
Signed-off-by: Innei <tukon479@gmail.com>
* fix: update task status logic to reflect correct scheduling states
* chore: update button styling for schedule action in AIChatContextBar
* feat: enhance task modal with internationalization support
Added translation keys for task-related actions and messages in English, Japanese, and Chinese. Updated the AITaskModal component to utilize these translations for improved user experience.
---------
Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: Innei <tukon479@gmail.com>
- Replaced instances of 'softSpring' with 'smooth' for improved animation consistency across components, including VideoPlayer, BoostModalContent, and SourceContentView.
- Updated transition settings in modal and panel components to utilize 'snappy' for a more responsive feel.
- Removed deprecated spring presets from the constants file to streamline the animation configuration.
These changes enhance the overall user experience by providing smoother and more cohesive animations throughout the application.
Signed-off-by: Innei <tukon479@gmail.com>