DIYgod mirror
Go to file
songkeys 7d0a0d1c40
feat(feed): a masonry view for all feed (#4335)
* 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>
2025-09-05 21:24:42 +08:00
.claude/agents feat(ai): add ai mention plugin (#4305) 2025-08-04 23:06:15 +08:00
.cursor/rules feat: ai features (#4040) 2025-07-16 21:54:32 +08:00
.github chore(workflow): remove max-tokens setting from similar-issues workflow 2025-09-03 16:12:27 +08:00
.vscode fix: update tag filter to include mobile and desktop versions 2025-08-04 17:52:20 +08:00
PRPs docs: add prps 2025-08-30 16:32:59 +08:00
api feat: new domain folo.is 2025-07-03 13:13:42 +08:00
apps feat(feed): a masonry view for all feed (#4335) 2025-09-05 21:24:42 +08:00
icons/mgc feat(feed): a masonry view for all feed (#4335) 2025-09-05 21:24:42 +08:00
locales feat(feed): a masonry view for all feed (#4335) 2025-09-05 21:24:42 +08:00
packages feat(feed): a masonry view for all feed (#4335) 2025-09-05 21:24:42 +08:00
patches chore: remove unused patch for expo-image 2025-07-14 16:59:58 +08:00
plugins feat: hide view count when hideRecentReader is on (#4167) 2025-07-14 17:08:38 +08:00
scripts feat: add script to increment build ID for iOS on release branches and update package.json for automation 2025-07-24 20:26:12 +08:00
wiki chore: format 2025-06-23 18:36:50 +08:00
.cursorignore feat: ai features (#4040) 2025-07-16 21:54:32 +08:00
.editorconfig chore: fix file format & use .gitattributes (#4082) 2025-07-07 19:58:29 +08:00
.gitattributes feat: ai features (#4040) 2025-07-16 21:54:32 +08:00
.gitignore refactor(webview): ios preload webview module 2025-08-26 22:20:57 +08:00
.npmrc chore: update dependencies 2025-02-19 15:27:20 +08:00
.nvmrc
.prettierignore fix: lint 2025-08-29 13:29:06 +08:00
.prettierrc.mjs chore: disbale prettier objectWrap 2025-02-20 18:03:18 +08:00
CLAUDE.md feat(ai): MCP integration presets (#4398) 2025-08-29 23:59:35 +08:00
CODE_OF_CONDUCT.md
CONTRIBUTING.md docs: consummate contributing (#4114) 2025-07-09 05:31:25 +08:00
LICENSE chore: replace placeholder (#3785) 2025-05-22 20:15:40 +08:00
README.md fix: lint 2025-08-29 13:29:06 +08:00
SECURITY.md
buildServer.json fix(desktop): update styling for UpdateNotice component 2025-05-03 21:47:58 +08:00
changelogithub.config.ts fix: update tag filter to include mobile and desktop versions 2025-08-04 17:52:20 +08:00
eslint.config.mjs refactor: ai module and implement rich text (#4282) 2025-07-31 00:16:40 +08:00
package.json feat: add script to increment build ID for iOS on release branches and update package.json for automation 2025-07-24 20:26:12 +08:00
pnpm-lock.yaml feat: add notification channels configuration (#4442) 2025-09-05 15:47:22 +08:00
pnpm-workspace.yaml feat: add notification channels configuration (#4442) 2025-09-05 15:47:22 +08:00
tsconfig.json chore: enable noUncheckedIndexedAccess, better type check (#2608) 2025-01-18 22:35:23 +08:00
tsslint.config.ts refactor(tsslint): update rules import and configuration (#3561) 2025-04-24 07:22:03 +08:00
turbo.json refactor(legal): remove legal package and update references 2025-08-24 01:46:30 +08:00
vercel.json refactor(legal): remove legal package and update references 2025-08-24 01:46:30 +08:00
vitest.workspace.js refactor: upgrade react 19 and react native 0.79 (#3661) 2025-05-07 16:30:30 +08:00
vitest.workspace.ts

README.md

Logo

Folo

   




Folo Mobile Folo Desktop

As they say, your thoughts are what you read—and weve been consuming noisy feeds for too long! Folo organizes content into one timeline, keeping you updated on what matters, noise-free. Share lists, explore collections, and enjoy distraction-free browsing.

👋🏻 Getting Started & Join Our Community

Whether for users or professional developers, Folo will be your open information playground. Please be aware that Folo is currently under active development, and feedback is welcome for any issue encountered.

Feel free to try it using the following methods:

Operating System Source
Any Browser
iOS App Store
Android Google Play App Store
macOS Microsoft Store App Store
Windows Microsoft Store App Store
Linux App Store

You can also install using the following methods maintained by our community:

Discord Join our Discord server to connect with developers, request features, and receive support.
Follow us on X/Twitter for product updates and to join in on reward activities.
!IMPORTANT]

**Star Us**, You will receive all release notifications from GitHub without any delay \~

Image

Performance Stats of RSSNext/Folo - Last 28 days

Features

Customized Information Hub

Subscribe to a vast range of feeds and curated lists. Curate your favorites and keep track of what matters most to you.

AI At Your Fingertips

A smarter and more efficient browsing with AI-powered features like translation, summary, and more.

Dynamic Content Support

Because we know content is more than just text. From articles to videos, images to audio — Folo gets it all covered.

More Than Just An App

This isnt just another app. Folo is a community — introducing a new era of openness and community-driven experience.

🤝 Contributing

You are welcome to join the open source community to build together, please check our Contributing Guide for more details.

🔏 Code signing policy

Folo for Windows uses free code signing provided by SignPath.io, certificate by SignPath Foundation.

Folo for macOS and iOS are signed and notarized by Apple Developer Program.

All released files are verified with GitHub artifact attestations to ensure their provenance and integrity.

📝 License

Folo is licensed under the GNU General Public License version 3 with the addition of the following special exception:

All content in the icons/mgc directory is copyrighted by https://mgc.mingcute.com/ and cannot be redistributed.

All content in the lottie directory is distributed under the Lottie Simple License.