Commit Graph

4216 Commits

Author SHA1 Message Date
DIYgod 6db0b452f6
fix(mobile): align header height with safe area inset (#4850)
* fix(mobile): use safe area inset for header height

* fix(mobile): reset timeline on view switch
2026-02-15 11:56:13 +08:00
DIYgod 7c80dab193
fix: mobile full audit for UI consistency and stability (#4849)
* fix(mobile): complete full mobile audit improvements

* chore: remove mobile audit planning artifacts

* fix(mobile): stabilize editable row keys in settings actions
2026-02-15 10:18:09 +08:00
DIYgod 4f80c47250
style(mobile): rebalance typography sizes (#4848) 2026-02-14 21:20:28 +08:00
DIYgod 50ed7aae10
fix(mobile): hide payment ui outside apk (#4847) 2026-02-14 21:12:47 +08:00
DIYgod 87784b2246
fix(mobile): migrate SwipeableItem to ReanimatedSwipeable and upgrade react-native-css-interop (#4846)
- Replace deprecated Swipeable (old API) with ReanimatedSwipeable (new API with Reanimated integration)
- Migrate from React Native Animated to react-native-reanimated for animations
- Extract LeftActionItem component to properly use useAnimatedStyle hook
- Update renderRightActions to use SharedValue translation for detecting swipe-right-to-call-action
- Replace RN Animated.AnimatedInterpolation with Reanimated's interpolate function
- Use useAnimatedReaction to monitor translation.value and trigger haptic feedback
- Upgrade react-native-css-interop from 0.1.22 to 0.2.1 (removes outdated React 19 compatibility issue)

Fixes React 19 + React Native 0.81 compatibility issues with gesture handler and animation APIs.

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-14 20:36:34 +08:00
DIYgod 56263d229b
fix(mobile): fix Crashlytics crash issues affecting 101+ users (#4845)
- Fix iOS WebViewState initialization on non-main thread
- Fix iOS SecureStore background access failures in auth/env setup
- Fix Android TrackPlayer ForegroundService crash with AppState check
- Fix Android TabBar event handler null reference crashes
- Fix iOS BackgroundTask handler registration timing
- Fix Android VideoView state management during fullscreen
- Fix DatabaseSource stream state before enqueue operation

Addresses 8 critical Crashlytics issues across iOS and Android:
- iOS WebView main thread: 22 users
- iOS SecureStore background: 18 users
- Android ForegroundService: 26 users
- Android TabPress null ref: 12 users
- Android VideoView not found: 6 users
- Stream enqueue race: 7 users
- iOS BackgroundTask handler: 2 users
+ improvements to error handling and recovery paths

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-14 19:53:53 +08:00
DIYgod 992e5ce3ea
fix(mobile): upgrade Expo SDK54 and fix iOS sqlite startup crash (#4841)
* fix(mobile): stabilize Expo SDK54 startup and sqlite migration

* fix(ci): resolve mobile typecheck and desktop release failures

* fix(ci): format files failing prettier check

* fix(ci): align drizzle and mobile menu dependency resolution

* fix(mobile): align react versions for lint

* fix(mobile): upgrade react-native-menu

* fix(mobile): patch track-player android build
2026-02-14 09:35:25 +08:00
DIYgod 01da257c90
feat(i18n): merge #4597/#4774 and complete localization audit (#4839)
* chore: Update Japanese translations for new features and errors

Added and updated multiple Japanese locale strings across AI, app, errors, external, settings, and shortcuts modules. Changes include new labels, descriptions, error messages, and UI text for features such as scheduling, token usage, inbox management, toolbar customization, and quick search.

* Add Japanese README documentation

Introduces README-ja.md with comprehensive information about Folo, including features, installation instructions, community links, contribution guidelines, code signing policies, and license details for Japanese-speaking users.

* Update formatting in Japanese README

Corrected the admonition marker from '[!重要]' to '[!IMPORTANT]' for consistency and made minor formatting adjustments in the README-ja.md file.

* Update community section in Japanese README

Revised wording and formatting in the community participation section of README-ja.md for improved clarity and consistency.

* Remove Japanese README file

Deleted README-ja.md to reduce duplication or outdated documentation. All relevant information should now be referenced from the main README or other documentation files.

* feat: add French (fr-FR) localization

* fix: sort imports in default-resource.ts to resolve lint error

* feat: add missing French translations for mobile/default, native, and external locales

* feat: add French language filter to discovery/recommended feeds

* docs: update changelog for French localization

* feat(i18n): merge PR #4597/#4774 and finish localization audit

---------

Co-authored-by: dai <dosada@gmail.com>
Co-authored-by: Anthony Mahé <snpepito@gmail.com>
Co-authored-by: Anthony Mahé <104373430+AnthonyMahe@users.noreply.github.com>
2026-02-13 09:25:08 +00:00
DIYgod 0859f56ad4
chore: update workspace dependencies and lockfile (#4838)
* chore: update workspace dependencies

- bump dependencies across desktop, mobile, ssr, and internal packages

- refresh pnpm lockfile

- apply type compatibility fixes required by upgraded packages

* fix(ssr): prevent tsdown CI warning from failing build

- set inlineOnly to false in tsdown config

* style: format files for CI prettier check

- apply prettier formatting to files reported by format:check

* fix(mobile): downgrade reanimated for rn 0.79 ios build
2026-02-13 16:04:13 +08:00
DIYgod ef5fcc9bcb release(desktop): release v1.3.0 2026-02-13 11:03:51 +08:00
DIYgod 67d06d1df7 chore: update changelog for next release 2026-02-13 11:03:34 +08:00
DIYgod 2290ec7f3c
fix: preserve session when switching API domain (#4833)
* feat(auth): migrate session across API domain switch

* fix(auth): address PR review on migration flow

* fix(ci): avoid package.json mutation during renderer build
2026-02-12 20:58:03 +08:00
DIYgod 62efdd29b2
fix: handle invalid URL parsing in useFeedSafeUrl hook (#4823)
Wrap new URL() constructor in try-catch to gracefully handle malformed URL strings that start with 'http' but are invalid. Returns null instead of throwing.

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-30 13:48:23 +08:00
DIYgod c0ce04453f
refactor: remove checkNew timeline update detection logic (#4817)
Remove the checkNew query and related state management that periodically checked for new entries in the timeline. The hasUpdate state and related UI indication (refresh button highlighting) have been removed while preserving fetchedTime for mark-all-read filtering.
2026-01-21 13:31:54 +08:00
DIYgod 2bba6a9032
refactor: remove entry tags support (#4813)
* refactor: remove entry tags support

* fix: remove remaining tags references from entry selectors

Follow-up to 9ea61dbfd - these files were missed in the entry tags removal.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 17:37:16 +08:00
DIYgod 95b0da87a4
refactor: remove deprecated features (referral, invitations, memory, wallet) (#4812)
Remove the following modules and features:
- Referral/invitation system across desktop, mobile, and SSR
- AI memory management (SaveMemoryCard, ManageMemoryCard, UserMemorySection)
- Daily reward claim and reward description modal
- Activity points and level display in wallet
- Related query files and imports

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-18 16:22:10 +08:00
XLor f03e81b8fc
feat: markdown link supports open share feed link directly (#4811)
* feat: markdown link supports open share feed link directly

* docs: update changelog

* fix: revert stopPropagation

* fix: revert stopPropagation

* fix: revert stopPropagation
2026-01-16 21:35:54 +08:00
DIYgod 3c0612e16f
feat: update mainhash 2026-01-02 19:30:16 +08:00
DIYgod 8970d4d1d9
fix: mainHash 2026-01-02 19:23:03 +08:00
DIYgod 2b43f925b4
release(desktop): release v1.2.6 2026-01-02 19:00:47 +08:00
DIYgod e1c28abffc
docs: update changelog for next version (#4795) 2026-01-02 18:59:23 +08:00
DIYgod a86b2c6383
feat: optimize Stripe subscription management UI (#4793)
* feat: optimize Stripe subscription management UI

- Replace static billing portal link with dynamic Stripe Billing Portal Session API
- Allow canceled subscriptions to display status and expiration date
- Show subscription status indicator with color coding (green/blue/yellow)
- Move status info above manage button for better layout
- Update UI for both desktop and mobile platforms
- Add translations for subscription status messages

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: use authenticated API client for billing portal on mobile

Replace raw fetch with followClient.request() to properly inject
authentication cookie and required headers on React Native.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-01 19:15:34 +08:00
DIYgod f39bcb97d8
fix: align ai-chat message types (#4792) 2026-01-01 16:45:54 +08:00
DIYgod 3d21eab3f0
chore: update ai sdk to v6.0.5 (#4790) 2026-01-01 15:52:02 +08:00
DIYgod 211bd6e67e
Revert "feat: apple iap in electron (#4757)"
This reverts commit edf417fe81.
2026-01-01 14:52:34 +08:00
DIYgod 7d7723f04f
chore: update license 2025-12-28 18:27:30 +08:00
DIYgod c9b0e65182
Revert "fix(headers): set app origin for OPTIONS requests"
This reverts commit dbff42baca.
2025-12-24 16:22:31 +08:00
DIYgod dbff42baca
fix(headers): set app origin for OPTIONS requests 2025-12-24 12:18:38 +08:00
Stephen Zhou edf417fe81
feat: apple iap in electron (#4757)
* feat: apple iap in electron

* update
2025-12-24 10:26:49 +08:00
DIYgod 1f0902177c
fix(translation): refresh cache on mode changes 2025-12-22 13:51:47 +08:00
DIYgod 396349ccea
release(desktop): hotfix to release v1.2.5 2025-12-18 12:12:32 +08:00
DIYgod 4f5314167f
fix: update mainHash in package.json 2025-12-18 12:09:50 +08:00
DIYgod 688cfceab9
feat: upgrade ai sdk 2025-12-18 12:07:27 +08:00
DIYgod 1b7d88275a
feat: remove unused login benefits and not logged in notice 2025-12-15 13:09:49 +08:00
DIYgod 45568d010f
chore: remove list power pricing ui 2025-12-15 12:58:39 +08:00
DIYgod 899eb7309f
feat(entry-content): integrate AI translation support in EntryContent component 2025-12-15 12:55:44 +08:00
Innei 3bab2a5595
fix(discover): correct atom key reference in UnifiedDiscoverForm to ensure proper data retrieval
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 23:19:35 +08:00
Innei d45701263c
release(desktop): hotfix to release v1.2.4 2025-11-27 23:17:45 +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
Stephen Zhou 1aa8b63305
fix: stable unread sort 2025-11-27 22:40:37 +08:00
Konv Suu 07acce799e
fix(discover): prevent empty results when keyword changes without search (#4759)
Co-authored-by: Innei <i@innei.in>
2025-11-27 01:09:36 +08:00
Innei 844b5f490f
feat: refactor discover module state management
- Introduced new atom hooks for managing discover search data, improving state handling in UnifiedDiscoverForm.
- Replaced direct atom usage with custom hooks for better abstraction and maintainability.
- Updated related components to utilize the new state management approach, enhancing overall code clarity.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-27 01:08:01 +08:00
Innei 519d0ba110
feat: enhance feed management with filtering options
- Added a responsive select component to filter feeds by type (All, RSSHub).
- Implemented logic to count and display RSSHub feeds.
- Updated feed selection and sorting functionality to respect the selected filter.
- Enhanced localization files to include new filter labels in English, Japanese, Simplified Chinese, and Traditional Chinese.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-26 17:35:24 +08:00
Innei f7460fd7ce
style: adjust unify setting item margin
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-26 17:17:12 +08:00
Innei 431a32345d
feat: redesign discover layout
- Introduced DiscoveryContent and UnifiedDiscoverForm components for better organization and functionality in the discover module.
- Updated existing components to remove unnecessary max-width constraints for improved responsiveness.
- Enhanced the Trending component with a view selector and improved layout handling.
- Updated localization files to include new tool descriptions and tips for user guidance.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-25 22:44:14 +08:00
Innei 0ee37eec61
perf: sync with streamdown logic
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-25 19:42:15 +08:00
Stephen Zhou 09380eefcf
chore: no injectionPoint 2025-11-25 15:00:07 +08:00
Stephen Zhou 03e99f55c6
chore: try remove workbox preaching 2025-11-25 14:48:54 +08:00
Stephen Zhou 51d39f6f6f
fix: youtube embed 2025-11-25 12:05:33 +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