Commit Graph

1243 Commits

Author SHA1 Message Date
DIYgod 6880d3b893 docs(release): prepare mobile and desktop changelogs 2026-03-12 17:36:40 +08:00
DIYgod 3fbaf119ae fix(mobile): align ios subscription upgrade actions 2026-03-12 17:30:31 +08:00
DIYgod 394730251a feat(mobile): align upgrade prompts with desktop (#4914) 2026-03-12 16:35:33 +08:00
DIYgod cfb23ad15d fix(mobile): polish settings and discover ui (#4913) 2026-03-12 14:31:33 +08:00
DIYgod e8ae098ba0 fix(mobile): repair discover categories and bootstrap iOS auth (#4912) 2026-03-12 12:27:52 +08:00
DIYgod f78d7e766b feat(mobile): support anonymous timeline reading (#4911) 2026-03-12 11:29:45 +08:00
DIYgod 565793fceb feat: support iOS Apple subscriptions (#4910)
* feat(mobile): support iOS Apple subscriptions

* fix: stabilize mobile subscription checks
2026-03-12 09:41:55 +08:00
DIYgod b1ed3828d4 feat: add store review prompts for desktop and mobile (#4909) 2026-03-11 22:54:04 +08:00
DIYgod 65c18693da fix(mobile): avoid android modal header overlap (#4907) 2026-03-11 11:43:41 +08:00
DIYgod 7cc1cd549c fix(mobile): stabilize auth e2e flows (#4905)
* fix(mobile): stabilize auth e2e flows

* docs(skill): add mobile e2e runbook
2026-03-11 10:41:02 +08:00
DIYgod 0b344fd0e7 fix(mobile): align translation gating with real roles (#4906) 2026-03-11 10:30:46 +08:00
DIYgod 93c1fc3de6 revert: remove mobile auth cookie fallback (#4902) 2026-03-10 11:53:31 +08:00
DIYgod 93e4a3b48f feat: add cross-platform e2e coverage (#4901)
* feat: add cross-platform e2e coverage

* fix: stabilize desktop e2e navigation

* fix: harden desktop e2e read flow

* fix: harden desktop e2e auth and follow flows

* fix: stabilize desktop e2e discover entry flows

* fix: run android e2e in a single shell

* fix: speed up mobile e2e builds in ci

* fix: build android e2e app from mobile workspace

* fix: invoke android gradle build from repo root

* fix: use absolute path for android ci build

* fix: restore android eas build in ci

* fix: target iOS simulator by udid in ci

* fix: align desktop e2e with discover card flow

* fix: reorder web e2e after relogin

* fix: navigate web e2e via real hash url

* fix: close stale settings modal before reopening

* fix: track android maestro flows

* fix: wait for settings router in web e2e

* fix: wait for web settings sync propagation

* fix: stabilize desktop e2e settings flows

* fix: harden desktop e2e regressions

* fix: stabilize desktop e2e selectors

* fix: read desktop entry state from locators

* fix: relax desktop e2e entry assertions

* fix: avoid waiting on missing desktop feed ids
2026-03-10 11:32:00 +08:00
DIYgod 3d812446c6 feat(mobile): add French locale support (#4876) 2026-02-24 18:01:33 +08:00
DIYgod 330ee9cd1a fix: harden setting sync auth lifecycle (#4872)
* fix: harden setting sync auth lifecycle

* fix: preserve legacy setting sync queue

* fix: keep setting queue on auth flaps

* fix: persist queue reset on auth errors

* fix: initialize setting sync queue earlier

* fix: await mobile sync queue load
2026-02-24 12:24:20 +08:00
DIYgod 0bba08f103 chore(firebase): switch to diygod Firebase config (#4868) 2026-02-22 15:15:13 +08:00
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