Commit Graph

1227 Commits

Author SHA1 Message Date
DIYgod b548f5a39c Merge remote-tracking branch 'origin/mobile-main' into release/mobile/0.3.0
# Conflicts:
#	apps/desktop/layer/main/src/updater/custom-github-provider.ts
#	apps/desktop/layer/renderer/src/modules/achievement/AchievementModalContent.tsx
#	apps/desktop/layer/renderer/src/modules/entry-column/EntrySubscriptionItem.tsx
#	apps/desktop/layer/renderer/src/modules/entry-column/components/EntryPlaneToolbar.tsx
#	apps/desktop/layer/renderer/src/modules/entry-column/components/EntrySubscriptionSkeleton.tsx
#	apps/desktop/layer/renderer/src/modules/entry-content/EntryContent.legacy.tsx
#	apps/desktop/layer/renderer/src/modules/new-user-guide/guide-modal-content.tsx
#	apps/desktop/layer/renderer/src/modules/settings/tabs/invitations.tsx
#	apps/desktop/layer/renderer/src/modules/settings/tabs/referral.tsx
#	apps/desktop/layer/renderer/src/modules/wallet/level.tsx
#	apps/mobile/src/modules/login/referral.tsx
#	apps/mobile/src/modules/settings/routes/Invitations.tsx
#	apps/mobile/src/modules/settings/routes/Referral.tsx
#	apps/mobile/src/screens/(modal)/InvitationScreen.tsx
2026-02-18 23:53:40 +08:00
DIYgod 30985c2e51 release(mobile): release v0.3.0 2026-02-18 23:42:59 +08:00
DIYgod b322dc1dd8 chore(mobile): update changelog for next release 2026-02-18 23:40:00 +08:00
DIYgod 0da9f2098e feat: migrate desktop/mobile error tracking to posthog (#4858)
* feat: migrate desktop and mobile error tracking to PostHog

* fix(mobile): remove unsupported tab bar minimize API

* Revert "fix(mobile): remove unsupported tab bar minimize API"

This reverts commit e234dda512.
2026-02-18 23:16:00 +08:00
DIYgod 47a56c5017 fix(mobile): reduce timeline indicator jank on iOS (#4857) 2026-02-18 20:23:24 +08:00
DIYgod d9a426b745 fix(mobile): stabilize timeline initial load and scroll position (#4856) 2026-02-18 20:09:06 +08:00
DIYgod d4aa9f40d0 fix(mobile): stabilize preview login and asset build (#4853) 2026-02-15 15:14:31 +08:00
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 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 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 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
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 3d21eab3f0 chore: update ai sdk to v6.0.5 (#4790) 2026-01-01 15:52:02 +08:00
DIYgod 7d7723f04f chore: update license 2025-12-28 18:27:30 +08:00
DIYgod 1f0902177c fix(translation): refresh cache on mode changes 2025-12-22 13:51:47 +08:00
DIYgod 45568d010f chore: remove list power pricing ui 2025-12-15 12:58:39 +08:00
Stephen Zhou 2d0fa19e14 feat: read secure image setting from server 2025-11-20 17:09:15 +08:00
Stephen Zhou f207cc328d feat: secure image proxy in plan 2025-11-19 21:54:29 +08:00
Stephen Zhou 0b806fcf07 fix: increase timeout for now 2025-11-17 11:18:24 +08:00
Innei 35437ecf8e feat(auth): allow loginless
Signed-off-by: Innei <tukon479@gmail.com>
2025-11-14 00:32:34 +08:00
DIYgod abde9948be fix: update Discord invite link across documentation and code 2025-11-13 11:47:05 +08:00
DIYgod 5a642b0230 feat: simplify 2025-11-12 15:40:25 +08:00
DIYgod e59f98e85d feat: subscription limit warning 2025-11-12 11:45:12 +08:00
DIYgod 7ca97e0208 fix: types 2025-11-06 21:16:06 +08:00
DIYgod 68fb09eb03 chore: update dependencies (#4667)
* chore: update dependencies

* Implement code changes to enhance functionality and improve performance
2025-11-06 21:09:46 +08:00
Innei f6a8691e3a fix(translation): update user role checks for translation prefetching
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>
2025-11-05 21:41:56 +08:00
Innei 053f680dc0 fix(translation): implement user role-based translation prefetching
Enhanced translation prefetching logic across multiple components by incorporating user role checks. Users with the Free role will no longer trigger translation prefetching, optimizing performance and resource usage. Updated relevant hooks and components to utilize the new logic for improved user experience.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-05 01:24:34 +08:00
Innei e9553e40d0 feat(payment): implement upgrade prompt for AI summary and enhance error handling
Added functionality to suggest an upgrade when payment-related errors occur in the AI summary component. Introduced a new UpgradeRequiredDialog for user prompts and integrated it with existing error handling. Updated localization for upgrade messages in multiple languages. Refactored related components to improve clarity and maintainability.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-05 01:06:36 +08:00
Innei fabe63621e refactor(api): remove unused API fetch and activation modal components
Deleted the api-fetch module and the ActivationModalContent component, streamlining the codebase. Updated references to use the new UpgradePlanModalContent where necessary. Adjusted response interceptors in the api-client to remove unused router references and error handling logic.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-04 21:21:23 +08:00
Innei 6a49168181 feat(subscription): add SubscriptionScreen and update settings navigation
Introduced a new SubscriptionScreen for managing user subscriptions, replacing the previous PlanScreen references. Updated navigation links in SettingsList to reflect this change, ensuring proper routing. Enhanced localization files to include new subscription-related strings for multiple languages.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-04 20:45:58 +08:00
Innei 45b607d8fa fix(header): adjust header and banner styles for modal presentation
Updated the header and user banner components to conditionally adjust styles based on modal presentation state. The header now accounts for modal visibility when setting padding, and the user banner adjusts its margin and padding accordingly to enhance layout consistency in modal views.

Signed-off-by: Innei <tukon479@gmail.com>
2025-11-03 22:42:31 +08:00
Stephen Zhou 53e3578af2 feat: new payment (#4629)
* 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>
2025-10-31 11:42:57 +08:00
Innei 8db25e6157 Merge remote-tracking branch 'origin/dev' into mobile-main
Signed-off-by: Innei <tukon479@gmail.com>
2025-10-24 14:59:18 +08:00
DIYgod 13cb874cac fix: types 2025-10-23 11:41:17 +08:00
Innei c221cb3691 fix: remap prop setting -> enabled
Signed-off-by: Innei <tukon479@gmail.com>
2025-10-23 01:41:41 +08:00
Innei c72c526664 chore: downgrade React and React-DOM to version 19.0.0 across all packages for compatibility
Signed-off-by: Innei <tukon479@gmail.com>
2025-10-22 01:06:50 +08:00
DIYgod baacb1c672 fix: package inconsistent versions 2025-10-21 17:20:39 +08:00
DIYgod 8757e5a2ef fix: prettier tailwindcss classname sorting 2025-10-21 16:49:19 +08:00
DIYgod 7507270b39 chore: update dependencies 2025-10-21 16:33:03 +08:00
Innei ef0af46e6f fix: update text autospace classes in ListItem, EntryTitle, and ArticleLayout components
- Replaced `[text-autospace:auto]` with `autospace-normal` class in ListItem, EntryTitle, and ArticleLayout components to standardize text spacing.
- Added a new utility class `autospace-normal` in tailwind.css to ensure consistent text rendering across the application.

Signed-off-by: Innei <tukon479@gmail.com>
2025-10-19 23:44:44 +08:00
Innei 9e28fcd738 fix: update text autospace in ArticleLayout and HTML components
- Added `[text-autospace:auto]` class to the `className` property in both ArticleLayout and HTML components to enhance text rendering and improve readability.
- This change ensures better handling of text spacing across different content types.

Signed-off-by: Innei <tukon479@gmail.com>
2025-10-19 20:33:28 +08:00
Stephen Zhou 35cd41e3fa refactor: remove view--1 (#4548) 2025-10-15 21:51:40 +08:00