Commit Graph

943 Commits

Author SHA1 Message Date
DIYgod dbff42baca
fix(headers): set app origin for OPTIONS requests 2025-12-24 12:18:38 +08:00
DIYgod 0733caf0ed
fix: types 2025-12-24 10:35:56 +08:00
DIYgod 1f0902177c
fix(translation): refresh cache on mode changes 2025-12-22 13:51:47 +08:00
DIYgod 688cfceab9
feat: upgrade ai sdk 2025-12-18 12:07:27 +08:00
DIYgod cac65d46f8
fix: types 2025-12-15 13:16:04 +08:00
DIYgod 45568d010f
chore: remove list power pricing ui 2025-12-15 12:58:39 +08:00
Innei d7bc90ba0a
refactor: optimize SortByUnreadFeedList component and improve state handling
- Wrapped SortByUnreadFeedList in memo for performance optimization.
- Utilized useCallback for the sortedList computation to prevent unnecessary re-renders.
- Enhanced the handling of onboarding and regular categories by ensuring a copy of ids is used.
- Minor adjustments in SubscriptionList and hooks for consistency and clarity.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 22:51:05 +08:00
Innei 0e441f6075
feat: add attribution tracking for analytics
- Introduced attribution tracking by capturing UTM parameters from the URL.
- Implemented functions to save and retrieve attribution data from local storage.
- Enhanced analytics initialization to include attribution data as user properties.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-25 01:37:28 +08:00
Innei f178f486f8
feat: implement mobile layout for AIEnhancedTimeline
- Added MobileTimelineLayout component to handle mobile-specific rendering.
- Integrated useMobile hook for responsive behavior in AIEnhancedTimelineLayout.
- Updated layout logic to conditionally render components based on mobile view.
- Enhanced dropdown and context menu styles for better visual feedback.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-24 16:41:25 +08:00
Innei ad8575d737
feat: narrowed responsive layout handling, closed #4370
- Added a renderValue function to the LanguageSelector for improved display of selected language names.
- Updated layout component to support responsive behavior based on viewport width.
- Refactored setting sync to utilize useMobile hook for better mobile detection.
- Enhanced withResponsiveComponent to accept a breakpoint function for more flexible responsive layouts.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-24 16:02:17 +08:00
Innei 8afbb47caa
feat: enhance TagEntriesModal with feed selection options
- Added a segment control to allow users to toggle between viewing entries from the current feed or all feeds.
- Integrated translation support for the new segment labels in English, Japanese, Simplified Chinese, and Traditional Chinese.
- Updated the useEntryTagsQuery hook to enable fetching based on the selected feed scope.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-21 16:27:02 +08:00
Innei d6efe7994e
chore: update package versions in pnpm-lock and pnpm-workspace files
- Bump versions for '@follow-app/client-sdk' to 0.3.92 and '@folo-services/ai-tools' to 0.2.63 in both pnpm-lock.yaml and pnpm-workspace.yaml.
- Adjusted the handling of tags in the APIMorph class to improve data resolution in api.ts.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-20 19:16:13 +08:00
Innei 50641b60e5
Merge remote-tracking branch 'origin/dev' into dev
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-20 19:03:31 +08:00
Innei f83234e7d9
feat: ai tags ui
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-20 19:02:42 +08:00
Stephen Zhou 2d0fa19e14
feat: read secure image setting from server 2025-11-20 17:09:15 +08:00
Stephen Zhou 11aa71a682
fix: allow image proxy for basic and anonymous user 2025-11-20 15:32:45 +08:00
DIYgod 6913079254
feat: enhance AI timeline functionality and improve settings integration 2025-11-20 15:01:16 +08:00
DIYgod c17957f98e
fix: update AI timeline loading overlay styles for improved visibility and aesthetics 2025-11-19 22:36:15 +08:00
DIYgod 26c842751a
feat: add AI timeline sorting feature with customizable prompt settings 2025-11-19 22:36:15 +08:00
Stephen Zhou f207cc328d
feat: secure image proxy in plan 2025-11-19 21:54:29 +08:00
Innei 44a0a40572
fix: update innerGlow styles for dropdown-menu, context-menu, and tooltip components
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-19 16:03:48 +08:00
Stephen Zhou 6644f5a59d
feat: magic link support 2025-11-18 19:06:10 +08:00
Innei 92f3bf7ff4
refactor: enhance UI components with improved styling and layout
- Introduced gradient backgrounds and box shadows for dropdown menus and context menus for a more modern appearance.
- Updated modal styles to include backdrop blur and inner glow effects for better visual depth.
- Adjusted component layouts for consistency and improved user experience across modals and context menus.
- Refined keyboard component styles for better interaction feedback.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-18 17:16:54 +08:00
Stephen Zhou 3130eb0c2b
fix: support youtube short link in transform 2025-11-18 16:15:04 +08:00
Innei 7c06ca6d84
feat: implement BYOK (Bring Your Own Key) feature for AI providers (#4727)
* feat: implement BYOK (Bring Your Own Key) feature for AI providers

- Added BYOK section in AI settings to manage custom API keys.
- Introduced components for adding, editing, and deleting BYOK providers.
- Updated translations for BYOK-related UI elements.
- Modified existing components to support new BYOK functionality.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: enhance BYOK provider support and update UI elements

- Added support for the "OpenRouter" BYOK provider in relevant components.
- Updated translations for security-related UI elements to reflect new descriptions.
- Adjusted styling in settings components for improved visual consistency.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: refine BYOK provider management and enhance UI

- Introduced a new constants file for BYOK provider options.
- Updated the ByokProviderModalContent to filter available providers based on configured ones.
- Enhanced the ByokSection to manage provider addition and editing more effectively.
- Adjusted table styling in the PlanComparisonTable for improved readability.
- Added new translation keys for "AI Bring Your Own Key" in multiple languages.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-18 15:52:54 +08:00
DIYgod 0ee62fa042
feat: remove onboarding feed references and update settings 2025-11-18 14:14:33 +08:00
Innei c7d0165eb8
feat: refine onboarding (#4708)
* feat(ai-onboarding): implement AI onboarding modal and related components

- Added AI onboarding modal with step-by-step guidance for new users.
- Introduced components for feed selection, import steps, and chat interface.
- Integrated animations and user interactions for a smoother onboarding experience.
- Updated localization files to support new onboarding dialog texts.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): enhance onboarding experience with next step functionality

- Added 'hasNextStep' prop to AppTip and AppTipDialog components to manage step navigation.
- Updated button actions to reflect the new step logic, allowing users to proceed or finish the onboarding.
- Introduced new localization strings for onboarding descriptions and actions in multiple languages.
- Added a button in the settings about tab to trigger the AI onboarding experience.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor(app-tip): remove video placeholder and related constants for a cleaner onboarding experience

- Eliminated video placeholder text and associated constants from AppTipMediaPreview and constants.ts.
- Updated useAppTipController to remove media references, streamlining the onboarding steps.
- Revised localization strings to reflect the new onboarding narrative without video references.

Signed-off-by: Innei <tukon479@gmail.com>

* refactor(ai-onboarding): streamline onboarding flow and enhance UI components

- Removed the DiscoverImportStep and PreFinish components to simplify the onboarding process.
- Updated step management in the onboarding modal to focus on essential steps.
- Enhanced the AIChatPane and FeedsSelectionList components with improved layout and animations.
- Introduced new localization strings for empty feed selection scenarios.
- Updated modal transitions for a smoother user experience.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): enhance media preview component to support image and video types

- Added support for distinguishing between video and image media types in AppTipMediaPreview.
- Updated rendering logic to conditionally display video or image elements based on media type.
- Introduced a fallback icon for error handling based on media type.
- Enhanced state management for video playback and replay functionality.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(renderer): add support for Markdown rendering in ArticleLayout

- Introduced EntryContentMarkdownRenderer for handling Markdown content.
- Updated ArticleLayout to conditionally render HTML or Markdown based on entry type.
- Refactored EntryContentHTMLRenderer to use a shared props type for better type safety.
- Added types for entry content renderer props to improve code clarity.

This enhancement allows for more flexible content rendering in the application.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(entry-actions): integrate onboarding entry checks into action configurations

- Added `isOnboardingEntryUrl` utility to identify onboarding entries based on their URL.
- Updated `useEntryActions` to disable specific actions when the entry is an onboarding entry.
- Enhanced `MoreActions` and `HeaderActions` components to support the disabled state for actions based on onboarding status.
- Refactored `ArticleLayout` to utilize the new onboarding entry check for rendering logic.

This update improves user experience by preventing certain actions on onboarding entries.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): enhance onboarding experience with new user guide state management

- Introduced `useNewUserGuideState` for managing the state of the new user onboarding guide.
- Added `APP_TIP_DISMISS_EVENT` constant for handling dismissal events.
- Refactored `useAppTipController` to utilize the new state management, improving clarity and functionality.
- Updated `EntryColumnContent` to integrate new user guide navigation logic.

This update streamlines the onboarding process and enhances user experience by providing better state management for onboarding tips.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): enhance media rendering in AppTipDialog and introduce OpmlAbstractGraphic

- Updated AppTipDialog to conditionally render a custom React node for media previews.
- Added reactNode property to AppTipStepMedia type for improved media handling.
- Introduced OpmlAbstractGraphic component for enhanced visual representation in onboarding tips.
- Updated useAppTipController to utilize the new OpmlAbstractGraphic in onboarding media.

These changes improve the onboarding experience by providing more dynamic media content.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(OpmlAbstractGraphic): implement animated paths and dynamic rendering

- Added a new OpmlAbstractGraphic component to visually represent RSS readers with animated paths.
- Introduced deterministic pseudo-random path generation for smoother animations.
- Enhanced component responsiveness with layout effects and resize handling.
- Implemented hand-drawn style connector lines to improve visual appeal.

These changes enhance the onboarding experience by providing a more engaging and dynamic visual representation of RSS readers.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): add extra content support in AppTipDialog and enhance useAppTipController

- Updated AppTipDialog to render additional content through the new `extra` property in AppTipStep.
- Modified AppTipStep type to include an optional `extra` field for custom React nodes.
- Introduced AiSplineIndicatorToggle component in useAppTipController for toggling AI settings.

These changes improve the flexibility of the AppTipDialog and enhance the onboarding experience by allowing for dynamic content rendering.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): implement useAppTipController for enhanced onboarding experience

- Introduced useAppTipController to manage the onboarding flow and user guide interactions.
- Added state management for active steps, dismissal handling, and AI guide toggling.
- Integrated AiSplineIndicatorToggle for dynamic AI settings within the onboarding process.
- Enhanced event handling for debugging onboarding steps through custom events.

These changes improve the onboarding experience by providing a structured and interactive guide for new users.

Signed-off-by: Innei <tukon479@gmail.com>

* feat(app-tip): introduce AICopilotMedia component for enhanced AI interaction

- Added AICopilotMedia component to facilitate dynamic AI-driven conversations and recommendations.
- Integrated chat script for user-assistant interactions, showcasing AI capabilities in real-time.
- Updated useAppTipController to include AICopilotMedia in the onboarding flow, enhancing user engagement.

These changes improve the onboarding experience by providing interactive AI content that guides users through relevant information and resources.

Signed-off-by: Innei <tukon479@gmail.com>

* fix: update hoverMarkUnread setting to false for consistency

* feat: implement onboarding feed and entry detection

- Added utility functions to identify onboarding feeds and entries.
- Updated various components to display onboarding feeds distinctly.
- Enhanced sorting logic to prioritize onboarding feeds in lists.
- Added localization strings for onboarding feed messages.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: add OverviewMedia component for enhanced onboarding visuals

- Introduced a new OverviewMedia component to display animated connections between onboarding elements.
- Integrated OverviewMedia into the app tip controller to enrich the new user dialog experience.
- Implemented responsive path calculations and animations for a dynamic visual presentation.

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: DIYgod <i@diygod.me>
2025-11-18 01:16:40 +08:00
DIYgod 18eb4559f0
chore: update package versions for client-sdk and ai-tools 2025-11-17 20:47:18 +08:00
DIYgod eebc33bdd3
fix: update hoverMarkUnread setting to false in default settings 2025-11-15 21:11:44 +08:00
DIYgod 4e1c9bfdb4
feat: add moonshotai provider and user role priority constants 2025-11-15 12:10:03 +08:00
DIYgod e48d40a7e7
chore: update package versions for client-sdk and ai-tools 2025-11-15 12:09:47 +08:00
Innei 16c005aa57
style: enhance code highlighter and login button appearance
- 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>
2025-11-14 21:31:41 +08:00
DIYgod 94c3b91699
feat: replace hcaptcha with recaptcha-v3 2025-11-14 21:09:10 +08:00
Innei 3adf4feec9
feat(auth): implement login requirement for various actions
- 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>
2025-11-14 15:11:14 +08:00
Innei 35437ecf8e
feat(auth): allow loginless
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 00:32:34 +08:00
DIYgod abde9948be
fix: update Discord invite link across documentation and code 2025-11-13 11:47:05 +08:00
DIYgod 54e5e84617
feat: ai shortcuts 2025-11-12 20:46:46 +08:00
DIYgod e59f98e85d
feat: subscription limit warning 2025-11-12 11:45:12 +08:00
Stephen Zhou 9c2754134d
chore: paid settings level 2025-11-11 19:29:48 +08:00
Stephen Zhou 5f0e41fa5d
chore: add basic role enum 2025-11-11 15:06:10 +08:00
Stephen Zhou 03c0cc54b5
chore: downgrade linkedom 2025-11-08 15:17:47 +08:00
Innei 520ea60f2a
fix(ai): detect resume tip after consume chat
- Introduced ChatBottomPanel component to manage chat input, shortcuts, and rate limit notices.
- Refactored ChatInterface to utilize ChatBottomPanel, enhancing the structure and readability of the chat layout.
- Created ChatMessageContainer to handle message display and scrolling behavior, improving user experience.
- Added ScrollToBottomButton for easier navigation in long chat histories.
- Consolidated message rendering logic into a new Messages component for better maintainability.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-07 16:59:40 +08:00
DIYgod 2ff37e1094
fix: use exact package version 2025-11-06 21:30:35 +08:00
DIYgod 68fb09eb03
chore: update dependencies (#4667)
* chore: update dependencies

* Implement code changes to enhance functionality and improve performance
2025-11-06 21:09:46 +08:00
Innei 3439180c6c
feat(updater): implement distribution update handling and external link opening
- Added a new method to open external URLs in the app.
- Enhanced the updater to check for distribution updates and notify users.
- Updated the updater status types to include distribution updates.
- Refactored the update notice component to handle distribution store updates.
- Added localization for distribution update notifications.

This update improves the user experience by allowing seamless updates from distribution stores and providing clear notifications for available updates.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-06 16:37:33 +08:00
lawvs 9b9ee76bcc fix: handle undefined initialValue and check for empty JSON root 2025-11-06 15:32:15 +08:00
Innei f6a8691e3a
fix(translation): update user role checks for translation prefetching
Refactored translation prefetching logic across multiple components to utilize the new isFreeRole function. This change ensures that users with Free roles do not trigger translation prefetching, optimizing performance and enhancing user experience. Updated relevant imports and conditions in EntryItemImpl, useEntryContent, and various EntryList components.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-05 21:41:56 +08:00
DIYgod f7b648f25e
feat(aiChat): conditionally render floating panel based on view type
style: adjust padding in ListItem component for better spacing
2025-11-05 17:33:57 +08:00
DIYgod aee647197b
refactor: remove aiColWidthAll from UISettings interface 2025-11-05 17:12:53 +08:00
Innei 053f680dc0
fix(translation): implement user role-based translation prefetching
Enhanced translation prefetching logic across multiple components by incorporating user role checks. Users with the Free role will no longer trigger translation prefetching, optimizing performance and resource usage. Updated relevant hooks and components to utilize the new logic for improved user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-05 01:24:34 +08:00