- Added functionality to the `BootstrapManager` to remove cache directories (`Cache` and `Code Cache`) when the app is in development mode during the quit process.
- Updated `NetworkStatusIndicator` to conditionally apply styles based on the `ELECTRON` environment.
- Enhanced font rendering in `ContentFontSelector` and `UIFontSelector` components to apply custom font styles dynamically.
These changes aim to improve the development experience and UI consistency across the desktop application.
Signed-off-by: Innei <tukon479@gmail.com>
- Upgraded various dependencies in package.json files, including @electron-forge, @sentry/react, and @better-auth.
- Updated devDependencies and fixed version mismatches in internal components and utilities.
- Enhanced settings sync queue to spread object properties for better payload handling.
Signed-off-by: Innei <tukon479@gmail.com>
* init
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: migrate API calls to followClient for improved consistency
- Replaced instances of apiClient with followClient in various modules, including push notifications, analytics, achievements, and wallet management.
- Updated related functions to ensure compatibility with the new API structure.
- This refactor enhances code maintainability and aligns with the new client architecture.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: update API calls to followClient for consistency
- Replaced instances of apiClient with followClient across various modules, including metadata, entries, feeds, lists, and inbox management.
- Adjusted related functions to align with the new API structure, enhancing maintainability and consistency throughout the codebase.
These changes improve the overall architecture by standardizing API interactions.
Signed-off-by: Innei <tukon479@gmail.com>
* update
* chore: update dependencies and improve profile settings
- Bumped versions of `@better-auth/expo`, `better-auth`, and `@better-auth/stripe` to 1.3.9 for enhanced functionality.
- Updated `@follow-app/client-sdk` reference in internal shared package.
- Added new fields (`bio`, `website`, `socialLinks`) to the profile settings form and adjusted related types for better user data handling.
- Minor adjustments in user store to accommodate new social links data structure.
These changes improve the profile management experience and ensure compatibility with updated dependencies.
Signed-off-by: Innei <tukon479@gmail.com>
* ssr done
* fix type error for action
* chore: update @follow-app/client-sdk to version 0.3.58 and refactor related code
- Updated the version of `@follow-app/client-sdk` to 0.3.58 in `pnpm-lock.yaml` and `pnpm-workspace.yaml`.
- Refactored various components and modules to utilize the updated SDK, including changes in type imports and API calls.
- Removed deprecated `api-fetch` module and replaced it with `followClient` for API interactions.
- Enhanced type safety and consistency across the application by adjusting type definitions and ensuring proper data handling.
These updates improve the overall code quality and maintainability while ensuring compatibility with the latest SDK features.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: remove hono
Signed-off-by: Innei <tukon479@gmail.com>
* fix action type for mobile
* fix(mobile): exclude all view type
* fix(mobile): exclude all for views
* fix(mobile): html render not work
* feat(mobile): auto show source content support
* fix(mobile): show source content action
* feat: more stable switching timeline back to top
* refactor: simplify entry actions handling and improve context menu integration
- Removed the 'compact' parameter from several components to streamline the entry actions logic.
- Updated the CommandActionButton usage in ActionBar for better context menu interaction.
- Enhanced the ActionBar component to handle mouse position for context menu display.
- Cleaned up imports and adjusted related components to reflect the changes in props and structure.
These modifications aim to improve code clarity and maintainability while ensuring consistent functionality across entry actions.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: streamline ChatInput key handling logic
- Simplified the Enter key handling in the ChatInput component by removing unnecessary conditions.
- Ensured that the handleSend function is called directly when the Enter key is pressed, improving code clarity.
These changes enhance the readability and maintainability of the ChatInput component.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: breadcrumb return back prev page logic
- Updated the logic in useNavigateEntry to ensure the final view is determined correctly based on the type of the view parameter.
- Refactored the EntryTitle component to simplify the rendering of recent readers, improving readability and maintainability.
- Adjusted the EntryHeaderBreadcrumb to pass the view parameter during navigation, enhancing functionality.
These changes aim to improve code clarity and ensure consistent behavior across navigation and entry display components.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: enhance navigation by integrating view parameter retrieval
- Updated EntryColumnShortcutHandler to utilize getRouteParams for retrieving the view parameter during navigation.
- Ensured that the view parameter is passed correctly when navigating to the next entry, improving the consistency of navigation behavior.
These changes aim to enhance the clarity and functionality of the entry column navigation logic.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: enhance modal styling and structure
- Updated modal component styles for improved visual consistency, including changes to border radius, padding, and text styles.
- Adjusted shadow properties in the Tailwind CSS configuration for better appearance in both light and dark themes.
- Refined layout and spacing within the modal to enhance user experience.
These changes aim to improve the overall aesthetics and usability of the modal component.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: enhance entry actions handling and toolbar integration
- Updated the HIDE_ACTIONS_IN_ENTRY_CONTEXT_MENU to explicitly define its type for better type safety.
- Introduced HIDE_ACTIONS_IN_ENTRY_TOOLBAR_ACTIONS to consolidate hidden actions for the toolbar.
- Refactored ActionBar to utilize useSortedEntryActions for improved action filtering and rendering.
These changes aim to streamline the entry actions logic and improve the maintainability of the ActionBar component.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: remove zen and wider mode
Signed-off-by: Innei <tukon479@gmail.com>
* feat: enhance subscription column functionality
- Introduced new components for managing subscription entries, including EntrySubscriptionItem and EntrySubscriptionList, to improve the display and interaction within the subscription column.
- Added hooks for handling entry visibility and data fetching, optimizing performance and user experience.
- Implemented a toolbar for toggling the visibility of the entry list, enhancing user control over the interface.
- Refactored sidebar atoms to support new subscription-related states and actions.
These changes aim to provide a more robust and user-friendly experience in managing subscriptions within the application.
Signed-off-by: Innei <tukon479@gmail.com>
* feat: integrate EntriesContext for improved subscription management
- Added EntriesProvider and context to manage subscription entries more effectively across components.
- Refactored EntrySubscriptionList and related components to utilize the new context for data fetching and state management.
- Introduced EntrySubscriptionSkeleton for better loading states in the subscription column.
- Removed the outdated useEntrySubscriptionData hook to streamline data handling.
These changes enhance the overall architecture and performance of the subscription column, providing a more cohesive user experience.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: fix lock
* fix: remove duplicated feed id, improve performance
* feat: back to feed first
* feat: replace MediaGallery with inline media rendering in SocialMediaLayout
* release(mobile): release v0.2.8
* chore(mobile): update build ID increment script and configuration
- Added a force flag to the build ID increment script to allow manual increments regardless of branch or staged changes.
- Updated iOS build version in Info.plist from 134 to 135.
- Removed unused changelog CLI configuration file.
- Modified bump.config.ts to disable tagging for mobile releases.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: adjust AI chat sidebar and error handling styles
- Added keyboard shortcut support for toggling AI chat in AISmartSidebar.
- Improved styling and transition effects in CollapsibleError for better user experience.
- Updated EntryReadHistory to conditionally render based on user visibility.
- Refactored SourceContentView to simplify rendering logic and improve performance.
- Enhanced Kbd component to support abbreviations for better accessibility.
These changes aim to improve the functionality and usability of the AI chat features and related components.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: implement comprehensive app layout architecture
- Introduced a new layout architecture for the Follow application, leveraging React Router v7's nested routing capabilities.
- Added multiple layout components including MainDestopLayout, TimelineEntryTwoColumnLayout, AIEnhancedTimelineLayout, and SubviewLayout to support various application modes.
- Enhanced the AI chat functionality with a dedicated AIChatLayout, allowing for dynamic panel styles based on user preferences.
- Implemented responsive design features and error handling mechanisms across layouts to improve user experience.
- Refactored existing components to utilize the new layout structure, ensuring a cohesive and maintainable codebase.
These changes establish a robust foundation for the application's UI, enhancing flexibility and user interaction.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: update bump configuration for PR creation
- Changed the base branch for the GitHub PR creation command from 'main' to 'mobile-main' to align with the new branching strategy.
- Removed the changelog generation script from package.json to streamline the build process.
These updates ensure proper versioning and integration with the new mobile branch structure.
Signed-off-by: Innei <tukon479@gmail.com>
* feat: implement entry context menu functionality
- Added a new hook, useEntryContextMenu, to manage context menu actions for entry items, including copy functionality.
- Integrated the context menu into EntrySubscriptionItem and EntryItemWrapper components, enhancing user interaction with entry items.
- Streamlined context menu handling by consolidating related logic into the new hook, improving code maintainability.
These changes provide a more intuitive context menu experience for users interacting with entries.
Signed-off-by: Innei <tukon479@gmail.com>
* feat: enhance media preview functionality with drag context
- Introduced a new context for managing drag state in the media preview component, allowing for improved user interaction during image dragging.
- Updated the image viewer to handle click events more effectively, considering drag state and timing to prevent unintended dismissals.
- Refactored the modal component to ensure the title is correctly rendered, enhancing accessibility.
These changes improve the overall user experience when interacting with media previews, making the interface more intuitive and responsive.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: update client SDK version and dependencies
- Bumped the version of '@follow-app/client-sdk' from 0.3.59 to 0.3.60 in both pnpm-lock.yaml and pnpm-workspace.yaml.
- Updated dependencies for '@folo-services/drizzle' from 0.1.26 to 0.1.27, and '@folo-services/shared' from 0.0.24 to 0.0.25, ensuring compatibility with the latest changes.
- Adjusted Vite configuration to use 'join' instead of 'resolve' for path handling, enhancing code clarity and consistency.
- Removed an unused import in VideoPlayer component to streamline the code.
These updates improve dependency management and maintain code quality across the project.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: interceptor
* chore: update client SDK version to 0.3.64
- Bumped the version of '@follow-app/client-sdk' from 0.3.63 to 0.3.64 in pnpm-lock.yaml and pnpm-workspace.yaml.
- Adjusted component styles in the header for improved layout consistency.
- Refactored user ID handling in metadata fetching to enhance error handling and clarity.
- Updated API client fetch method to use the native fetch function for better compatibility.
- Added User-Agent header in SSR API headers for improved request handling.
These changes ensure the application is up-to-date with the latest SDK version and improve overall code quality and user experience.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: update client SDK path in pnpm configuration
- Changed the '@follow-app/client-sdk' entry in pnpm-lock.yaml and pnpm-workspace.yaml from version 0.3.64 to a local path for development purposes.
- Refactored the fetchEntryContentByStream method in store.ts to simplify its parameters and improve API call handling.
These updates facilitate local development and enhance code clarity in the entry synchronization service.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: remove hono
Signed-off-by: Innei <tukon479@gmail.com>
* chore: update better-auth and expo dependencies to version 1.3.11
- Updated '@better-auth/expo' and 'better-auth' to version 1.3.11 in mobile and shared packages.
- Updated '@better-auth/stripe' to version 1.3.11 in shared package.
- Adjusted peer dependencies for better-auth to reflect the new version.
This update ensures compatibility with the latest features and fixes in the better-auth library.
Signed-off-by: Innei <tukon479@gmail.com>
* refactor: update auth module imports and clean up code
- Changed import path for AuthPlugins from '@follow-app/client-sdk' to '@follow-app/client-sdk/auth'.
- Removed commented-out socialLinks field from the baseAuthPlugins definition for clarity.
- Added a new line for better code readability.
These changes improve the organization and maintainability of the auth module.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: restore socialLinks field in baseAuthPlugins definition
- Reintroduced the socialLinks field in the baseAuthPlugins configuration, allowing for JSON type input.
- This change enhances the flexibility of the authentication module by enabling social link integration.
Signed-off-by: Innei <tukon479@gmail.com>
* feat: enhance API client and entry list hooks
- Added a request interceptor to the FollowClient to append a timestamp to the URL for cache-busting.
- Simplified the fetch call in the entry list hooks by removing unnecessary parameters, improving code clarity.
- Added a new line in the entry sync services to enhance readability.
These changes improve the functionality and maintainability of the API client and entry list hooks.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: add missing type error suppression for authClientContext
- Added a TypeScript error suppression comment for the authClientContext.provide call to prevent type-checking issues.
- This change ensures smoother integration of the authentication client in the application.
Signed-off-by: Innei <tukon479@gmail.com>
* fix lint
Signed-off-by: Innei <tukon479@gmail.com>
* lint
Signed-off-by: Innei <tukon479@gmail.com>
---------
Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Co-authored-by: DIYgod <i@diygod.me>
* chore: update deps
* chore: update camelcase-keys to version 10.0.0
* chore: update electron-context-menu to version 4.1.1 and remove associated patch
* fix: ts lock
* fix: downgrade linkedom to version 0.18.11
Related to https://github.com/WebReflection/linkedom/issues/249
- Introduced the FollowClient from `@follow-app/client-sdk` to manage API requests and responses, enhancing the structure and maintainability of the API client.
- Refactored the API client to utilize the new FollowClient, including request and response interceptors for logging and error handling.
- Updated the `updateNotificationsToken` and `deleteNotificationsToken` functions to use the new API methods.
- Added a new IPC service for better communication between the main and renderer processes.
This update improves API interaction efficiency and enhances error handling across the application.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the version of electron-ipc-decorator in package.json files for both main and renderer processes to 0.2.0, ensuring compatibility with the latest features and improvements.
- Adjusted pnpm-lock.yaml to reflect the new version and its integrity hash.
- Refactored IPC service classes to utilize the new version, enhancing code organization and functionality.
- Removed deprecated constructor calls in IPC service classes, simplifying the implementation.
These changes improve dependency management and enhance the overall architecture of the IPC system.
Signed-off-by: Innei <tukon479@gmail.com>
- Upgraded electron-ipc-decorator from version 0.1.1 to 0.1.3 in package.json files for both main and renderer processes.
- Updated pnpm-lock.yaml to reflect the new version and its integrity hash.
- Added AIReasoningPart export to the displays index for improved modularity in AI chat components.
- Enhanced markdown parsing logic in AIMarkdownMessage to utilize the new parseIncompleteMarkdown function for better handling of incomplete markdown content.
These changes collectively improve dependency management and enhance the functionality of the AI chat interface.
Signed-off-by: Innei <tukon479@gmail.com>
- Added electron-ipc-decorator as a dependency to streamline IPC method registration and context management.
- Refactored IPC service classes to utilize the new decorator, enhancing code organization and readability.
- Removed the base IPC context file, consolidating IPC logic within the decorator framework.
- Updated package.json files to include electron-ipc-decorator in both main and renderer processes.
These changes collectively enhance the IPC architecture, improving maintainability and reducing boilerplate code.
Signed-off-by: Innei <tukon479@gmail.com>
- Changed mainWindowDefaultSize from static properties to a getter that retrieves the primary display's work area size, ensuring the main window adapts to different screen resolutions.
- Adjusted logic for determining window dimensions to improve handling of window state and maximum size constraints.
- Introduced URL scheme handling in the integration module, allowing users to define and execute URL schemes.
- Added validation for URL scheme templates to ensure correct format and required fields.
- Enhanced the CustomIntegrationManager to support both HTTP and URL scheme integrations.
- Implemented a preview feature for URL schemes in the CustomIntegrationModal.
- Updated UI components to accommodate new integration types and improve user experience.
This update expands the capabilities of custom integrations, enabling seamless interaction with external applications through URL schemes.
Signed-off-by: Innei <tukon479@gmail.com>
- Added ky as a dependency to handle HTTP requests for file downloads.
- Implemented downloadFileWithProgress function to provide progress updates during downloads.
- Updated hot-updater to utilize the new download function, enhancing user experience with download status logging.
- Cleaned up and refactored related code for better maintainability.
Signed-off-by: Innei <tukon479@gmail.com>
- Added a web request handler to bypass CORS restrictions for requests to 'us.i.posthog.com'.
- Configured response headers to allow all origins, methods, and credentials for analytics integration.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the version setup action to handle new tag formats for desktop and mobile releases.
- Introduced a new script to extract release information from commit messages, improving the tagging process.
- Modified workflows to create tags in the format of `desktop/v1.2.3` and `mobile/v1.2.3`.
- Enhanced the updater logic to accommodate the new tagging structure and ensure proper release handling.
Signed-off-by: Innei <tukon479@gmail.com>
- Introduce MICROSOFT_STORE_BUILD constant to determine if the app is running from the Microsoft Store
- Update appUpdaterConfig to conditionally enable core updates based on the new constant
- Modify header creation logic to use MICROSOFT_STORE_BUILD for Windows platform detection
This change enhances the application's compatibility with Microsoft Store by ensuring proper update handling and header configuration.
- Refactor `checkForUpdates` method to return a promise with update status and error handling.
- Update `checkForAppUpdates` to provide detailed update information.
- Improve the About section UI with new buttons and modals for legal information and update checks.
- Add new translations for update-related messages in multiple languages.
Signed-off-by: Innei <tukon479@gmail.com>
- Bump various dependencies in package.json files, including updates to eslint, prettier, vite, and react-related packages.
- Update devDependencies such as es-toolkit, nbump, and others to their latest versions.
- Ensure consistency in @types/node and other related packages across the project.
This update enhances compatibility and performance across the application.
Signed-off-by: Innei <tukon479@gmail.com>
* fix(path): change path package to pathe
* fix: handle special chat in filename, fixed
#3342
- Integrated @sindresorhus/slugify to format file names based on titles.
- Updated pnpm-lock.yaml to include new dependencies.
- Minor adjustments in package.json files to ensure consistency.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: add eslint rule for use pathe first
* refactor: useWhoami from user store (#4061)
* refactor: useWhoami from user store
* update
* update
* update
* update
* return all
* fix: invalidate entries query after unsubscribe
* feat: implement imperative modal (#4041)
* feat: implement ImperativeModalProvider with modal context and controls
* fix: make onClose prop optional for bottom modal
* chore: add ImperativeModalProvider to context providers
* feat: wrap BottomModal content in KeyboardAvoidingView for better keyboard handling
* chore: add polyfill for Promise.withResolvers
* fix: wrap ImperativeModal in a View and update onClose to accept modal ID
* feat: implement ImperativeModal with context and modal control hooks
* refactor: redesign imperative modal with root-siblings
* fix: wrap BottomModal in a View to resolve rendering issues on Android
* refactor: replace Alert.prompt with modalPrompt for category creation and renaming
* fix(desktop): show login modal when auth fail
* feat: invalidate entry readability cache
* refactor: long press to open text select sheet for ai summary
* feat: new domain folo.is
* fix: enhance auth client with mobile-specific headers (#4064)
* feat(desktop): add missing i18n key (#4066)
* feat: update twitter handle
* docs: use google play badge
* feat: add hideAvatar prop to ProfileSettingForm for conditional avatar display
Signed-off-by: Innei <tukon479@gmail.com>
* docs: update images
* feat(ssr): add Google Analytics tracking to index.html
- Integrated Google Tag Manager for enhanced tracking and analytics capabilities.
- Added asynchronous loading of gtag.js and configuration for tracking ID G-DZMBZBW3EC.
Signed-off-by: Innei <tukon479@gmail.com>
* chore: Update Japanese Languages (#4078)
* chore: update ja.json
* chore: update 6 ja.json files
chore: update and bump 6 ja.json files.
* chore: update error/ja.json
fix locale/error/ja.json
* chore: auto-fix linting and formatting issues
* chore: update app/ja.json
* chore: update ja.json
* chore: update ja.json
* chore: update ja.json and tested local.
* chore: update ja.json
update settings/ja.json
* feat(i18n): update Japanese locale files with new error messages and dialog options
* chore(vscode): set default formatter for JSON and JSONC files
* Remove JSON and JSONC formatter settings
so sorry, @hyoban 😢
Perhaps my local settings are in. I have restored it to the original. Thanks for your kindness.
You have always been a great help.
* chore: auto-fix linting and formatting issues
* chore: update ja.json
sync and update settings/ja.json
* chore: update Japanese translations for clarity and consistency
* chore: update some ja.json
* chore(locales): update Japanese translations with new entry actions and settings
* fix: update Japanese translations for user actions and login prompts
* feat(locales): add Japanese translations for login and registration features
* feat(locales): update Japanese translations for RSSHub and related settings
* chore: auto-fix linting and formatting issues
* feat(i18n): update Japanese locale with new toolbar customization and profile link social fields
* feat(locales): update Japanese translations for search results and two-factor authentication
* feat: 日本語ローカライズの更新
---------
Co-authored-by: dai <dai@users.noreply.github.com>
Co-authored-by: Innei <i@innei.in>
Co-authored-by: Innei <Innei@users.noreply.github.com>
* feat(desktop): real user deletion
* feat(mobile): real user deletion
* feat(settings): add accent color customization and update UI components
- Introduced accent color setting to allow users to customize the app's interface.
- Updated various components to utilize the new accent color, including buttons, sliders, and text elements.
- Added translations for accent color settings in English, Japanese, and Chinese.
- Refactored related styles in Tailwind CSS configuration to support the new accent color feature.
Signed-off-by: Innei <tukon479@gmail.com>
* fix: update text styling for feed parameters message
* feat: use insertedBefore for mark above read
* feat(mobile): use insertedBefore for mark above read
* fix: improved lightbox component for iOS (#4089)
* feat: replace Image component with ProxyImage for improved performance and styling
* fix: update Image component style prop
* fix: improved layout in ImageItem component
* feat: integrate animated ref for media preview in EntryPictureItem
* fix: option can not be press when out of screen in the FlatList
* fix: lint
* fix: types
* fix: update lock
* fix: lint
* chore: auto-fix linting and formatting issues
---------
Signed-off-by: Innei <tukon479@gmail.com>
Co-authored-by: Innei <tukon479@gmail.com>
Co-authored-by: Stephen Zhou <38493346+hyoban@users.noreply.github.com>
Co-authored-by: Whitewater <me@waterwater.moe>
Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com>
Co-authored-by: DIYgod <i@diygod.me>
Co-authored-by: Konv Suu <2583695112@qq.com>
Co-authored-by: dai <dosada@gmail.com>
Co-authored-by: dai <dai@users.noreply.github.com>
Co-authored-by: Innei <i@innei.in>
Co-authored-by: Innei <Innei@users.noreply.github.com>
#3342
- Integrated @sindresorhus/slugify to format file names based on titles.
- Updated pnpm-lock.yaml to include new dependencies.
- Minor adjustments in package.json files to ensure consistency.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated various package dependencies across the project, including @sentry/react, @tanstack/react-query, and others to their latest versions for improved performance and security.
- Enhanced type safety in several components by refining type definitions, particularly in motion-related imports.
- Adjusted transition configurations to utilize new presets for smoother animations.
Signed-off-by: Innei <tukon479@gmail.com>
- Updated the onActivate method in LifecycleManager to ensure the main window is shown and focused when activated, improving user experience.
- Added import for LifecycleManager in bootstrap.ts to support the new functionality.
Signed-off-by: Innei <tukon479@gmail.com>
- Replaced direct window management functions with a WindowManager class to encapsulate window creation, retrieval, and destruction.
- Updated router, tray, menu, updater, and other modules to utilize the new WindowManager methods.
- Improved window state handling and ensured consistent window behavior across different platforms.
- Added a backup of the previous window management implementation for reference.
Signed-off-by: Innei <i@innei.in>