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>
* feat: new payment
* update
* update
* update
* update
* feat: enhance plan feature formatting and update localization strings
* update
* update
* update
* update
* refactor: remove NeedActivationToast and related activation modal logic
* update
* feat(settings): guard paid settings
Centralized paid-level metadata in @follow/shared and exposed the SettingNamespace union.
Updated the builder helpers and every settings tab to pull paid badges from that shared map.
Hardened the atoms helper to block writes and surface default values when a user lacks the required role.
Added the necessary workspace dependencies for the atoms package.
* fix: types
* feat(rate-limit-notice): update error messaging and add upgrade prompt
* feat(settings): integrate review checks into settings components
* update
* fix(plan): correct priority calculation in setting page data
* feat(ai-summary): add upgrade suggestion for AI summary when plan is insufficient
* feat(settings): enhance PaidBadge component to conditionally render based on MAS review status
---------
Co-authored-by: DIYgod <i@diygod.me>
* 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>
* Implement code changes to enhance functionality and improve performance
Signed-off-by: Innei <tukon479@gmail.com>
* chore: update @follow-app/client-sdk to version 0.2.6 and add new dependencies
refactor: adjust types in server configs and features to use ExtractResponseData
feat: implement followApi for server configurations and API client context
Signed-off-by: Innei <tukon479@gmail.com>
* feat: move to client-sdk
Signed-off-by: Innei <tukon479@gmail.com>
* feat: update @follow-app/client-sdk to version 0.3.22 and add ShrinkingFocusBorder component
- Updated the version of @follow-app/client-sdk in pnpm-workspace.yaml from 0.3.15 to 0.3.22.
- Introduced a new ShrinkingFocusBorder component that animates a focus border effect using a canvas element.
- Implemented resize observer for persistent border and animation logic for visibility changes.
Signed-off-by: Innei <tukon479@gmail.com>
---------
Signed-off-by: Innei <tukon479@gmail.com>
- Introduced accent color setting to allow users to customize the app's interface.
- Updated various components to utilize the new accent color, including buttons, sliders, and text elements.
- Added translations for accent color settings in English, Japanese, and Chinese.
- Refactored related styles in Tailwind CSS configuration to support the new accent color feature.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: fix prettier error
* refactor: migrate to ES modules and update global constants handling
- Changed the global constants definition to use Object.assign for better clarity.
- Replaced usage of `isDev` with `__DEV__` throughout the codebase for consistency.
- Updated imports to use ES module syntax, including dynamic imports where necessary.
- Removed the deprecated `env.ts` file and adjusted related logic in the build scripts.
- Ensured compatibility with ES module format in various files, including Vite and API client configurations.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(api): migrate handler to ES module syntax
- Updated the API handler to use ES module export syntax.
- Removed commented-out configuration for Node.js runtime.
Signed-off-by: Innei <tukon479@gmail.com>
* feat(404): enhance 404 page with animations and improve accessibility
- Replaced `motion` components with `m` shorthand for better readability.
- Introduced animation controls for various elements on the 404 page to enhance user experience.
- Updated the glitch text array for consistency.
- Adjusted layout and styling for improved visual presentation.
- Removed unused `framer-lazy-feature` file and updated `MotionProvider` to use `domMax` for performance optimization.
Signed-off-by: Innei <tukon479@gmail.com>
* feat(og): replace Folo text with SVG logo in OGCanvas component
- Updated the OGCanvas component to replace the static "Folo" text with a new LogoText SVG component for improved branding.
- Added the LogoText function that defines the SVG structure for the logo.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(tsdown): update font imports to use dynamic loading
- Modified font imports in `tsdown.config.ts` to utilize dynamic loading with `then` for improved performance and error handling.
- Introduced a no-operation function to handle the promise resolution of font imports.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor(404): replace Jotai provider with RootProviders for improved context management
- Updated the 404 component to use `RootProviders` instead of the Jotai store provider for better context handling.
- Simplified the component structure while maintaining functionality.
Signed-off-by: Innei <tukon479@gmail.com>
---------
Signed-off-by: Innei <tukon479@gmail.com>
- Updated icon class names for social media links to include color styles for better visibility in light and dark modes.
- Added a new hotkey configuration option in the Vite setup to improve user experience with customizable shortcuts.
Signed-off-by: Innei <tukon479@gmail.com>
- Added meta tags for Apple App Store integration in both desktop and SSR index HTML files.
- Enhanced server logging to display the server's IP address when running outside of Vercel.
- Introduced a constant for the Apple App Store ID to streamline future updates.
Signed-off-by: Innei <tukon479@gmail.com>
- Deleted obsolete configuration files and unused components across various packages.
- Updated package.json files to reflect the removal of dependencies.
- Cleaned up code by removing unnecessary exports and unused imports in multiple modules.
Signed-off-by: Innei <tukon479@gmail.com>