* init Signed-off-by: Innei <i@innei.in> * feat: feed column Signed-off-by: Innei <i@innei.in> * feat: float bar Signed-off-by: Innei <tukon479@gmail.com> * feat: profile button Signed-off-by: Innei <tukon479@gmail.com> * chore: comment Signed-off-by: Innei <tukon479@gmail.com> * feat: layout Signed-off-by: Innei <tukon479@gmail.com> * feat: split mobile entry content Signed-off-by: Innei <tukon479@gmail.com> * feat: add history stack Signed-off-by: Innei <tukon479@gmail.com> * feat: return back Signed-off-by: Innei <tukon479@gmail.com> * fix: return back position Signed-off-by: Innei <tukon479@gmail.com> * feat: entry list header Signed-off-by: Innei <tukon479@gmail.com> * feat: sync selector Signed-off-by: Innei <tukon479@gmail.com> * feat: modal stack mobile Signed-off-by: Innei <tukon479@gmail.com> * fix: modal selector Signed-off-by: Innei <tukon479@gmail.com> * cleanup Signed-off-by: Innei <tukon479@gmail.com> * fix: sheet and optimize entry readers Signed-off-by: Innei <tukon479@gmail.com> * fix: scroller Signed-off-by: Innei <tukon479@gmail.com> * feat: entry contents Signed-off-by: Innei <tukon479@gmail.com> * feat: entry content Signed-off-by: Innei <tukon479@gmail.com> * update Signed-off-by: Innei <tukon479@gmail.com> * feat: user profile sheet Signed-off-by: Innei <tukon479@gmail.com> * fix: entry content header Signed-off-by: Innei <tukon479@gmail.com> * fix: entry header Signed-off-by: Innei <tukon479@gmail.com> * chore: auto-fix linting and formatting issues * fix: return back Signed-off-by: Innei <tukon479@gmail.com> * feat: image view Signed-off-by: Innei <tukon479@gmail.com> * feat: audio Signed-off-by: Innei <tukon479@gmail.com> * feat: inline player Signed-off-by: Innei <tukon479@gmail.com> * feat: pull to refresh Signed-off-by: Innei <tukon479@gmail.com> * cleanup Signed-off-by: Innei <tukon479@gmail.com> * update Signed-off-by: Innei <tukon479@gmail.com> * chore: auto-fix linting and formatting issues * chore: fix import, remove no support display * chore: auto-fix linting and formatting issues * feat: achievement modal in mobile Signed-off-by: Innei <tukon479@gmail.com> * fix: subview mobile Signed-off-by: Innei <tukon479@gmail.com> * feat: power Signed-off-by: Innei <tukon479@gmail.com> * feat: wallet mobile design Signed-off-by: Innei <tukon479@gmail.com> * feat: pwa support (#1575) Co-authored-by: hyoban <hyoban@users.noreply.github.com> * chore: auto-fix linting and formatting issues * fix import * discover * fix: border color Signed-off-by: Innei <tukon479@gmail.com> * fix: modal async Signed-off-by: Innei <tukon479@gmail.com> * feat: mobile setting Signed-off-by: Innei <tukon479@gmail.com> * fix: entry header width Signed-off-by: Innei <tukon479@gmail.com> * fix: remove unused hide filter * feat: settings Signed-off-by: Innei <tukon479@gmail.com> * feat: setting done Signed-off-by: Innei <tukon479@gmail.com> * action card * fix discover feed form * popular filter * inbox table * fix: picture masonry pull to refresh Signed-off-by: Innei <tukon479@gmail.com> * fix: scroll element Signed-off-by: Innei <tukon479@gmail.com> * fix: radio in mobile Signed-off-by: Innei <tukon479@gmail.com> * feat: to scientific notation Signed-off-by: Innei <tukon479@gmail.com> * fix: login Signed-off-by: Innei <tukon479@gmail.com> * ResponsiveSelect for action card * chore: remove theme color Signed-off-by: Innei <tukon479@gmail.com> * type check * type check * fix: setting import circular Signed-off-by: Innei <tukon479@gmail.com> * refactor: remove hijack pushState Signed-off-by: Innei <tukon479@gmail.com> * fix: float bar Signed-off-by: Innei <tukon479@gmail.com> * fix: scroll end trigger Signed-off-by: Innei <tukon479@gmail.com> * fix: dark theme color Signed-off-by: Innei <tukon479@gmail.com> * fix: overscroll-behavior only in destop Signed-off-by: Innei <tukon479@gmail.com> * fix: ux Signed-off-by: Innei <tukon479@gmail.com> * fix: color Signed-off-by: Innei <tukon479@gmail.com> * fix: list scroll area Signed-off-by: Innei <tukon479@gmail.com> * update Signed-off-by: Innei <tukon479@gmail.com> * merge * update * update favicon link * fix: reload prompt on mobile * test Signed-off-by: Innei <i@innei.in> * test Signed-off-by: Innei <i@innei.in> * fix: ios Signed-off-by: Innei <i@innei.in> * try patch precaching * try * try * build * try * try * feat: ctx menu on safari Signed-off-by: Innei <tukon479@gmail.com> * try * clear timeout Signed-off-by: Innei <tukon479@gmail.com> * try * fix * deny og * fix patch * pre cache exclude * feat: add all Signed-off-by: Innei <tukon479@gmail.com> * i18n Signed-off-by: Innei <tukon479@gmail.com> * feat: slide Signed-off-by: Innei <tukon479@gmail.com> * feat: ico Signed-off-by: Innei <tukon479@gmail.com> * fix: build Signed-off-by: Innei <tukon479@gmail.com> * test network first Signed-off-by: Innei <tukon479@gmail.com> * test Signed-off-by: Innei <tukon479@gmail.com> * fix: icon padding * test Signed-off-by: Innei <tukon479@gmail.com> * use react-ios-pwa-prompt * fix: icon path * update * fix: prompt Signed-off-by: Innei <tukon479@gmail.com> * feat: redesign toc Signed-off-by: Innei <tukon479@gmail.com> * ctx Signed-off-by: Innei <tukon479@gmail.com> * ready to prod Signed-off-by: Innei <tukon479@gmail.com> * feat: startup screen Signed-off-by: Innei <tukon479@gmail.com> * feat: floatbar Signed-off-by: Innei <tukon479@gmail.com> * fix: switch view Signed-off-by: Innei <tukon479@gmail.com> * fix: keep scroll map Signed-off-by: Innei <tukon479@gmail.com> * enable hoverOnlyWhenSupported * fix: count Signed-off-by: Innei <tukon479@gmail.com> * fix: hoverOnlyWhenSupported only in web Signed-off-by: Innei <tukon479@gmail.com> * fix Signed-off-by: Innei <tukon479@gmail.com> * chore: auto-fix linting and formatting issues --------- Signed-off-by: Innei <i@innei.in> Signed-off-by: Innei <tukon479@gmail.com> Co-authored-by: Innei <Innei@users.noreply.github.com> Co-authored-by: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Co-authored-by: hyoban <hyoban@users.noreply.github.com> Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com> Co-authored-by: lawvs <lawvs@users.noreply.github.com> |
||
|---|---|---|
| .github | ||
| .vscode | ||
| api | ||
| apps | ||
| build | ||
| changelog | ||
| configs | ||
| constants | ||
| icons/mgc | ||
| locales | ||
| packages | ||
| patches | ||
| plugins | ||
| resources | ||
| scripts | ||
| static | ||
| types | ||
| wiki | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| .npmrc | ||
| .nvmrc | ||
| .prettierignore | ||
| .prettierrc.mjs | ||
| CHANGELOG.md | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTE.md | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| bump.hotfix.config.js | ||
| changelogithub.config.ts | ||
| dev-app-update.yml | ||
| docker-compose.deps.yml | ||
| electron.vite.config.ts | ||
| eslint.config.mjs | ||
| forge.config.ts | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| postcss.config.cjs | ||
| tailwind.config.ts | ||
| tsconfig.json | ||
| turbo.json | ||
| vercel.json | ||
| vite.config.ts | ||
| vitest.workspace.ts | ||
README.md
As they say, your thoughts are what you read—and we’ve been consuming noisy feeds for too long! Follow 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, Follow will be your open information playground. Please be aware that Follow is currently under active development, and feedback is welcome for any issue encountered.
Feel free to try it using the following methods:
| No installation necessary! Visit our web app to experience it firsthand. | |
|---|---|
| Download and install the desktop client for a smoother experience and enhanced features. |
You can also install using the following methods maintained by our community:
- If you are using Arch Linux, you can install package follow-appimage that maintained by timochan.
- If you are using Nix, you can install package follow that maintained by iosmanthus.
- If you are using macOS with Homebrew, you can install cask follow (also @alpha and @nightly) that maintained by realSunyz.
| 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 \~
✨ 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 — Follow gets it all covered.
$POWER An Ownership Economy
Tip creators across instantly with $POWER, support content you love, and unlock value in your own work. Your content, your power.
More Than Just An App
This isn’t just another app. Follow is a community — introducing a new era of openness and community-driven experience.
🤝 Contributing
If you are eligible to use Follow, you are welcome to join the open source community to build together.
Before you start, make sure you have enabled Corepack. Corepack makes sure you are using the correct version (packageManager field in package.json) for package manager when you run corresponding commands.
corepack enable
Install dependencies.
pnpm install
Develop in the browser
pnpm run dev:web
Then the browser opens https://app.follow.is/__debug_proxy,you can access the online API environment to development and debugging.
Develop in the electron
You need to fill in the required environment variables first.
cp .env.example .env
Then set VITE_API_URL to https://api.follow.is and run:
pnpm run dev
Since it is not very convenient to develop in Electron, the first way to develop and contribute is recommended at this stage.
[!TIP] If you can't log in to the app, copy the
authjs.session-tokenin the cookie from your browser into the app.
📝 License
Follow 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.