* ✨ feat(tool-detectors): add browser automation support and refactor tool detector categories - Introduced browser automation detectors to the tool detector manager. - Updated tool categories to include 'browser-automation'. - Refactored imports to use type imports where applicable for better clarity. - Cleaned up unnecessary comments in tool filters. Signed-off-by: Innei <tukon479@gmail.com> * 🔧 chore: add browser automation tool detection UI * 🔧 chore: update react-scan version and enhance agent-browser documentation - Updated `react-scan` dependency from version 0.4.3 to 0.5.3 in package.json. - Improved documentation in `content.ts` for the agent-browser, clarifying command usage and workflows. - Added development mode flag `__DEV__` in sharedRendererConfig for better environment handling. - Integrated `scan` functionality in `initialize.ts` to enable scanning in development mode. - Updated global type definitions to include `__DEV__` constant for clarity. Signed-off-by: Innei <tukon479@gmail.com> * 🔧 chore(builtin-skills): add dependency and refactor skill filtering logic - Added `@lobechat/const` as a dependency in package.json. - Introduced a new function `shouldEnableBuiltinSkill` to determine if a skill should be enabled based on the environment. - Refactored the `builtinSkills` export to filter skills using the new logic. Signed-off-by: Innei <tukon479@gmail.com> * 🔧 chore(builtin-skills): refactor skill management and add filtering logic - Removed unnecessary dependency from package.json. - Simplified skill filtering logic by introducing `filterBuiltinSkills` and `shouldEnableBuiltinSkill` functions. - Updated various components to utilize the new filtering logic for managing builtin skills based on the environment. Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat(builtin-skills): introduce new skill APIs and refactor manifest structure - Added new APIs for skill management: `runSkillApi`, `readReferenceApi`, and `exportFileApi` to enhance functionality. - Created a base manifest file (`manifest.base.ts`) to centralize API definitions. - Updated the desktop manifest (`manifest.desktop.ts`) to utilize the new base APIs. - Refactored existing manifest to streamline API integration and improve maintainability. - Introduced a detailed system prompt for better user guidance on skill usage. Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat: desktop skill runtime, skill store inspectors, and tool UI updates Made-with: Cursor * ✨ feat: enhance skill import functionality and testing - Updated `importFromUrl` method in `SkillImporter` to accept additional options for identifier and source. - Modified `importFromMarket` in `agentSkillsRouter` to utilize the new options for better tracking of skill imports. - Added integration tests to ensure stable behavior when re-importing skills from the market, verifying that identifiers remain consistent across imports. Signed-off-by: Innei <tukon479@gmail.com> * 🔧 chore: update .gitignore and package.json dependencies - Added 'bin' to .gitignore to exclude binary files from version control. - Included 'fflate' as a new dependency in package.json to support file compression in the application. - Updated writeFile method in LocalFileCtr to handle file content as Uint8Array for improved type safety. Signed-off-by: Innei <tukon479@gmail.com> * 🔧 chore: update package.json dependencies - Removed 'fflate' from dependencies and added it to devDependencies for better organization. - Ensured proper formatting by adding a newline at the end of the file. Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat: add agent-browser download script and integrate binary handling - Introduced a new script to download the `agent-browser` binary, ensuring it is available for the application. - Updated `electron-builder.mjs` to include the binary in the build process. - Modified `dir.ts` to define the binary directory path based on the packaging state. - Enhanced the `App` class to set environment variables for the agent-browser integration. Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat: add DevTools toggle to Linux and Windows menus - Introduced a new menu item for toggling DevTools with the F12 accelerator key in both Linux and Windows menu implementations. - Added a separator for better organization of the view submenu items. Signed-off-by: Innei <tukon479@gmail.com> * ✨ feat: integrate agent-browser binary download into build process - Added functionality to download the `agent-browser` binary during the build process in `electron-builder.mjs`. - Enhanced the download script with detailed logging for better visibility of the download status and errors. - Updated the `App` class to log the binary directory path for improved debugging. - Reintroduced the `AuthRequiredModal` in the layout for desktop users. Signed-off-by: Innei <tukon479@gmail.com> * fix: mock binary directory path in tests - Added a mock for the binary directory path in the App tests to facilitate testing of the agent-browser integration. - This change enhances the test environment by providing a consistent path for the binary during test execution. Signed-off-by: Innei <tukon479@gmail.com> * 🐛 fix: improve authorization notification handling - Updated the `notifyAuthorizationRequired` method to implement trailing-edge debounce, ensuring that rapid 401 responses are coalesced and the IPC event is sent after the burst settles. - Refactored the notification logic to enhance clarity and maintainability. ✨ feat: add desktop onboarding redirect - Introduced a `useEffect` hook in `StoreInitialization` to redirect users to the `/desktop-onboarding` page if onboarding is not completed, ensuring a smoother user experience on fresh installs. Signed-off-by: Innei <tukon479@gmail.com> * 🐛 fix(desktop): hide Agent Browser skill on Windows Made-with: Cursor * 🔧 chore: update memory limits for build processes - Increased the `NODE_OPTIONS` memory limit for both `build:next` and `build:spa` scripts from 6144 to 7168, optimizing build performance and resource management. Signed-off-by: Innei <tukon479@gmail.com> --------- Signed-off-by: Innei <tukon479@gmail.com>
@lobechat/electron-client-ipc
This package is a client-side toolkit for handling IPC (Inter-Process Communication) in LobeHub's Electron environment.
Introduction
In Electron applications, IPC (Inter-Process Communication) serves as a bridge connecting the Main Process, Renderer Process, and NextJS Process. To better organize and manage these communications, we have split the IPC-related code into two packages:
@lobechat/electron-client-ipc: Client-side IPC package@lobechat/electron-server-ipc: Server-side IPC package
Key Differences
electron-client-ipc (This Package)
- Runtime Environment: Runs in the Renderer Process
- Main Responsibilities:
- Provides interface definitions for renderer process to call main process methods
- Encapsulates
ipcRenderer.invokerelated methods - Handles communication requests with the main process
electron-server-ipc
- Runtime Environment: Runs in both Electron main process and Next.js server process
- Main Responsibilities:
- Provides Socket-based IPC communication mechanism
- Implements server-side (ElectronIPCServer) and client-side (ElectronIpcClient) communication components
- Handles cross-process requests and responses
- Provides automatic reconnection and error handling mechanisms
- Ensures type-safe API calls
Use Cases
When the renderer process needs to:
- Access system APIs
- Perform file operations
- Call main process specific functions
All such operations need to be initiated through the methods provided by the electron-client-ipc package.
Technical Notes
This separated package design follows the principle of separation of concerns, ensuring that:
- IPC communication interfaces are clear and maintainable
- Client-side and server-side code are decoupled
- TypeScript type definitions are shared, ensuring type safety
🤝 Contribution
IPC communication needs vary across different use cases and platforms. We welcome community contributions to improve and extend the IPC functionality. You can participate in improvements through:
How to Contribute
- Bug Reports: Report issues with IPC communication or type definitions
- Feature Requests: Suggest new IPC methods or improvements to existing interfaces
- Code Contributions: Submit pull requests for bug fixes or new features
Contribution Process
- Fork the LobeHub repository
- Make your changes to the IPC client package
- Submit a Pull Request describing:
- The problem being solved
- Implementation details
- Test cases or usage examples
- Impact on existing functionality
📌 Note
This is an internal module of LobeHub ("private": true), designed specifically for LobeHub and not published as a standalone package.