简体中文 | English
Fleur is a macOS-first RSS reader for following the open web with a quiet, local-first reading workflow.
Fleur 1.0 is planned as a macOS-focused release. The source tree still contains other platform targets, but the official 1.0 release artifacts are intended to be macOS-only.
Download Fleur from GitHub Releases.
macOS security note: Fleur 1.0 builds are currently unsigned and not notarized. On first launch, macOS Gatekeeper may show a warning. Download only from the official GitHub Releases page, or build from source if you prefer to audit the app locally.
If macOS blocks the app, open Finder, locate Fleur.app, Control-click it,
choose Open, then confirm Open.
If macOS says the app is damaged or cannot be opened, see the Q&A section below.
- Read RSS and Atom feeds in a desktop workspace designed around article lists and a focused reader pane.
- Discover feeds from websites, add direct RSS/Atom URLs, and organize subscriptions with folders, tags, starred articles, unread filters, and read later.
- Import and export OPML so your subscriptions stay portable.
- Extract full article content, cache images and web pages for offline reading, and refresh sources in the background.
- Sync with local accounts, Miniflux, Fever, and Google Reader compatible services.
- Tune the reader with font stacks, reading width, line height, reading texture, code typography, syntax highlighting, math rendering, in-reader search, and keyboard shortcuts.
- Configure translation and AI summary services for optional reading assistance.
| Platform | 1.0 release status | Notes |
|---|---|---|
| macOS 10.15+ | Official 1.0 target | Distributed as an unsigned, unnotarized DMG. |
| Windows | Not included in 1.0 artifacts | 0.x releases may have Windows builds; 1.0 is macOS-first. |
| Linux | Not included in 1.0 artifacts | Source paths may exist, but no official 1.0 package is planned. |
| Android / iOS | Experimental source targets | Useful for local development only unless stated otherwise. |
| Web | Not supported | Not part of the supported release path. |
Fleur uses Flutter localization files for the app UI and macOS menu strings.
| Status | Languages |
|---|---|
| Primary | English, Simplified Chinese, Traditional Chinese |
| Beta / experimental | German, Spanish, French, Japanese, Korean, Portuguese, Portuguese (Brazil) |
Beta localization means the strings are present, but native-speaker review, layout checks, terminology cleanup, notification wording, and release-note wording still need review. Reports and pull requests for localization polish are very welcome.
Recommended toolchain:
- Flutter 3.38.x stable, matching the current CI setup
- Dart 3.10.x
- Xcode for macOS builds
Install dependencies:
flutter pub getGenerate Isar model code:
dart run build_runner build --delete-conflicting-outputsRun Fleur on macOS:
flutter run -d macosBuild a macOS release locally:
flutter build macos --release./tool/quality/format_dart.sh
./tool/quality/check_generated_sources.sh
flutter analyze
flutter testIntegration tests may require an explicit device:
flutter test -d macos integration_test/category_query_benchmark_test.dartFleur follows a Clean Architecture-style Flutter structure with Riverpod for state management.
lib/
├── app/ # App entry, routing, runtime host
├── features/ # Product features and their local layers
├── models/ # Isar models
├── repositories/ # Data access
├── providers/ # Riverpod providers and controllers
├── services/ # RSS, sync, extraction, settings, AI, notifications
├── ui/ # App shell, shared scenes, and design system
├── widgets/ # Existing shared UI components, migrated incrementally
├── theme/ # Theme and design tokens
├── l10n/ # Localization files
├── utils/ # Utilities
└── db/ # Database setup
New product code belongs in lib/features/<feature>/, with domain, data,
application, and presentation layers only where they clarify ownership.
Each feature exposes a small <feature>.dart facade. Keep application
composition in app/, shared shell and scene UI in ui/, and visual primitives
in ui/design_system/. The remaining top-level shared folders are migrated by
feature over time; do not add new screens/ or generic widgets/ entries.
| Area | Technology |
|---|---|
| App framework | Flutter |
| State management | Riverpod |
| Local database | Isar Community |
| Routing | go_router |
| HTTP | Dio |
| RSS parsing | rss_dart |
| HTML rendering | flutter_widget_from_html |
| Desktop windowing | window_manager |
| Notifications | flutter_local_notifications |
Fleur 1.0 focuses on making the desktop reading experience feel native on macOS: window chrome, keyboard navigation, split workspaces, reader layout, and menu behavior. Releasing 1.0 as macOS-first keeps the support promise honest.
Fleur is an independently maintained open-source project. The 1.0 macOS build is distributed without Apple code signing or notarization because the project does not currently maintain a paid Apple Developer Program membership. Apple currently lists that program at USD 99/year.
This means macOS may warn you the first time you open the app. It does not mean the app is intentionally unsafe, but unsigned builds also do not provide Apple's developer identity verification. Download Fleur only from the official GitHub Releases page, or build it from source if you prefer.
This can happen when Gatekeeper keeps a downloaded, unsigned app in quarantine. Only continue if you downloaded Fleur from the official GitHub Releases page or built it yourself from source.
Try these options in order:
- Copy
Fleur.appto/Applications. - Open Finder, locate
Fleur.app, Control-click it, chooseOpen, then confirmOpen. - Open System Settings -> Privacy & Security, scroll to the Security section,
and choose
Open Anywayfor Fleur if macOS shows that option. - If macOS still reports that the app is damaged, remove the quarantine attribute:
xattr -dr com.apple.quarantine /Applications/Fleur.appThen open Fleur.app again from Finder.
This does not sign or notarize the app; it only removes the local quarantine flag from your copy. Avoid disabling Gatekeeper globally.
Not necessarily. The 1.0 release policy is about official artifacts and validation focus, not a permanent removal of source code paths. Windows and Linux support can be revisited when there is enough validation and release maintenance time.
English, Simplified Chinese, and Traditional Chinese are the primary supported languages. German, Spanish, French, Japanese, Korean, Portuguese, and Portuguese (Brazil) are included as Beta / experimental localizations in 1.0.
It means the locale is available in the app, but it has not yet completed the same level of language review as English and Chinese. Please report awkward wording, truncated labels, menu issues, untranslated strings, or release-note mistakes.
Bug reports, localization review, and focused pull requests are welcome. For localization issues, please include:
- Locale and app version
- Screenshot when layout or truncation is involved
- Current wording
- Suggested wording and a short reason
Fleur is released under the MIT License.