* 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 e234dda51257dc6810f0f78e06ee918adf2214b0.
* fix(mobile): complete full mobile audit improvements
* chore: remove mobile audit planning artifacts
* fix(mobile): stabilize editable row keys in settings actions
- 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>
* feat(skill): add mobile-release skill for regular mobile versioning workflow
Summarize the mobile release process based on previous releases:
- Gather commits since last release and categorize changes
- Update changelog with user-provided content
- Execute nbump to bump version, update iOS Info.plist (version + build number)
- Create release branch and PR to mobile-main
- Guide user through post-release production build steps
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
* fix(skill): fix tag prefix and fallback grep in mobile-release skill
- Match both old `mobile@` and new `mobile/v` tag prefixes
- Use subject-only matching for fallback release commit detection
to avoid false positives from commit body matches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* 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>
* 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
* feat: add update-deps skill for dependency management
Add a comprehensive skill to update dependencies across frontend and backend projects. The skill includes:
- Changelog review for breaking changes
- Code impact analysis and automatic fixes
- TypeScript type checking and test suite validation
- Summary reporting of all updates
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
* fix: use pnpm update --latest for exact-pinned deps
With save-exact=true, versions are pinned without ^ or ~, so pnpm update
without --latest only resolves within the exact range (a no-op). Phase 1 now
explicitly uses @latest for each patch/minor package.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
* feat: add desktop-release skill for regular version releases
Add a comprehensive skill for performing regular desktop releases from dev branch.
Includes changelog management, mainHash evaluation (critical for determining whether
users need full app updates vs lightweight renderer hot updates), and automated PR creation.
The skill guides users through:
1. Gathering commits since last release and categorizing changes
2. Updating changelog with proper formatting
3. Evaluating whether mainHash should be updated (main process code changes)
4. Executing version bump with optional mainHash skip for faster renderer-only updates
5. Verifying PR creation
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
* fix: avoid unstaged bump.config.ts edit breaking git rebase
Change the "skip mainHash" strategy from pre-editing bump.config.ts
(which breaks `git pull --rebase` in the leading step) to a post-bump
approach: let bump run normally, then restore the old mainHash value
and amend + force push the release branch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: correct working directory for mainHash restore step
After `cd apps/desktop && pnpm bump`, the cwd is apps/desktop/.
Add explicit `cd ../..` before the amend step so paths resolve correctly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
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>
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.
* 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>
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>
* 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>