Commit Graph
68 Commits
Author SHA1 Message Date
d0048718ea Emit tool:sync socket event on skill state changes (#83)
* Refactor BillingPanel to use updated user usage structure

- Changed the usage data source in BillingPanel from activeTeam to user, aligning with the new IUserUsage interface.
- Updated the display of token usage percentage and progress bar to reflect the new usage metrics (spentThisCycleUsd and cycleBudgetUsd).
- Cleaned up commented-out code and improved layout for better readability and user experience.

* Enhance skill synchronization and connection status management

- Exported `deriveConnectionStatus` function from hooks for better accessibility.
- Introduced `syncToolsToBackend` function to synchronize tool states with the backend, ensuring up-to-date connection status.
- Integrated `syncToolsToBackend` calls in `SkillManager` lifecycle methods and socket connection events to maintain consistent state across the application.
- Added new `sync.ts` file to encapsulate synchronization logic, improving code organization and maintainability.

* Add Rust-side tool:sync emission and document dual socket codebase

Implement tool:sync on the Rust side so desktop/mobile apps emit skill
state to the backend natively, without relying on the frontend WebView.

- SocketManager: add sync_tools() method, derive_connection_status()
  helper, and sync_tools_via_channel() for event handler context
- SocketManager: emit tool:sync on "ready" (connect/reconnect)
- RuntimeEngine: store SocketManager reference, call sync_tools after
  start_skill, stop_skill, and auto_start_skills
- lib.rs: wire SocketManager into RuntimeEngine during setup
- CLAUDE.md: add Dual Socket Codebase pattern noting that any socket
  event change must be implemented in both TypeScript and Rust

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:02:04 +05:30
Steven EnamakelandGitHub 4be6693599 Fix OAuth credential lifecycle and JWT token sync for skills (#82)
* Refactor BillingPanel to use updated user usage structure

- Changed the usage data source in BillingPanel from activeTeam to user, aligning with the new IUserUsage interface.
- Updated the display of token usage percentage and progress bar to reflect the new usage metrics (spentThisCycleUsd and cycleBudgetUsd).
- Cleaned up commented-out code and improved layout for better readability and user experience.

* Update OAuth credential handling in SkillManager and related state management

- Introduced `setSkillOAuthCredential` action to manage OAuth credentials in the Redux store.
- Enhanced `SkillManager` to persist and restore OAuth credentials during skill setup and disconnection.
- Updated `SkillState` interface to include `oauthCredential` for better state management.
- Refactored related components to ensure seamless integration of OAuth handling.
- Updated subproject commit reference in the skills directory.

* Update connection indicator messages and enhance OAuth credential handling

- Changed the default description in the ConnectionIndicator component to refer to "Your device" instead of "Your browser."
- Removed hardcoded connection indicator in GetStartedStep to use the updated description.
- Improved OAuth credential management by restoring persisted credentials on startup and ensuring they are cleared from the store when revoked.
- Updated HTTP client configuration to use native TLS for better compatibility across platforms.
- Cleaned up Cargo.lock and Cargo.toml by removing unused dependencies and ensuring proper feature flags for reqwest.

* Enhance OAuth credential management in QjsSkillInstance

- Removed redundant comment regarding OAuth credential restoration.
- Implemented lazy-loading of persisted OAuth credentials before tool calls.
- Cleared OAuth credentials from memory upon skill stop and marked as disconnected in the store.
- Updated comments for clarity on credential handling during OAuth operations.

* Refactor JWT token retrieval to use session token method

- Updated the JWT token retrieval in multiple functions to utilize the new `get_session_token` method from `__ops`, enhancing security and consistency in token management.
- Added the `get_session_token` function to the operations core for improved session handling.

* update bootstrap

* Add middleware to sync JWT token with Rust SESSION_SERVICE

- Introduced `syncTokenToRust` middleware to synchronize the JWT token with the Rust SESSION_SERVICE whenever the `setToken` action is dispatched or the auth state is rehydrated.
- Enhanced the `get_session_token` function in Rust to log the retrieved token for better debugging and monitoring.
- Updated Redux store configuration to include the new middleware, improving token management and security.

* update skills

* Update subproject commit reference in skills directory to indicate a dirty state

* Remove unused ConnectionIndicator import from GetStartedStep component
2026-02-10 01:25:14 +05:30
5717b9993e Remove local LLM, route AI to cloud backend (#78)
* Remove ModelProvider and related components to streamline application architecture

- Deleted the ModelProvider component and its associated hooks and state management, simplifying the application structure.
- Removed ModelDownloadProgress component from Home and Welcome pages, eliminating unnecessary model download handling.
- Updated App component to remove ModelProvider wrapping, ensuring a cleaner provider hierarchy.
- Adjusted Redux store configuration by removing model-related state management, enhancing overall performance and maintainability.

* Update subproject commit and refactor Model Bridge API to route requests to cloud backend

- Updated the subproject commit reference in the skills directory.
- Refactored the Model Bridge API to replace local inference methods with cloud-based requests for text generation and summarization, enhancing functionality and scalability.

* Update skills submodule with prettier formatting fixes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 17:51:10 +05:30
Steven Enamakel ab9e7b7a0f Refactor code for improved readability and functionality
- Simplified error handling in `useModelStatus` and `ModelProvider` by consolidating dispatch calls.
- Streamlined greeting array initialization in `Welcome` component for better readability.
- Enhanced `SkillProvider` to listen for skill state changes and dispatch updates accordingly.
- Updated Rust backend to sync published state and emit events for skill state changes.
- Introduced a `dirty` flag in `SkillState` to track modifications for efficient state management.
2026-02-09 09:37:10 +05:30
Steven Enamakel 49648606a4 Update subproject commit and refactor state management in QuickJS bootstrap
- Updated the subproject commit reference in the skills directory.
- Refactored state management functions to directly use __ops for data operations, removing the obsolete __store functions for improved clarity and efficiency.
2026-02-09 09:15:56 +05:30
Steven Enamakel af15c7c8e1 Enhance SkillsGrid and Manifest Handling
- Added `ignoreInProduction` property to `SkillListEntry` and updated processing logic to filter skills based on the `IS_DEV` flag.
- Updated Rust structures in the Tauri backend to include `ignoreInProduction` in the skill manifest.
- Refactored desktop deep link listener to remove unnecessary `IS_DEV` checks.
- Improved JSON serialization handling in QuickJS skill instance.
2026-02-09 09:07:51 +05:30
Steven Enamakel f53d8cb62e Update subproject commit and modify state management in QuickJS bootstrap
- Updated the subproject commit reference in the skills directory.
- Adjusted the state management functions to utilize the __store for get, set, and delete operations, ensuring consistency in data handling.
- Removed obsolete store functions to streamline the codebase.
2026-02-09 03:52:22 +05:30
Steven Enamakel f17ebc071a Merge branch 'develop' of github.com:vezuresdotxyz/frontend-runner-alphahuman into develop 2026-02-07 22:22:25 +05:30
cyrusandClaude 39d108c895 Fix Telegram TDLib JSON serialization error
Resolved "Error converting from js 'object' into type 'string'" in TDLib integration:

- Updated TdLibClient.send() to serialize JavaScript objects to JSON strings before sending to Rust bridge
- Enhanced error handling and logging in TDLib manager for better debugging
- Added comprehensive parameter validation and type conversion
- Improved V8 ops bridge logging for TDLib operations

This ensures proper communication between TypeScript skills and Rust TDLib backend.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-06 15:39:06 +05:30
Steven Enamakel 890b20e876 Refactor to QuickJS Integration and Update Documentation
- Replaced TDLib references with QuickJS in the CLAUDE.md documentation.
- Updated service paths and imports in the Rust codebase to reflect the transition to QuickJS.
- Added a new bootstrap.js file for QuickJS runtime, providing necessary browser-like API shims.
- Enhanced the TODO list with tasks for allowing bundling of unverified skills and coding new skills independently.
- Introduced a new storage layer for IndexedDB emulation and updated related operations for QuickJS compatibility.
2026-02-06 11:24:57 +05:30
github-actions[bot] b277fb8151 chore: bump version to 0.33.0 [skip ci] 2026-02-06 01:08:39 +00:00
Steven EnamakelandGitHub f038fde03e Merge pull request #53 from vezuresdotxyz/develop
chore: merge develop into main (v0.32.0)
2026-02-06 06:38:25 +05:30
Steven Enamakel 3f6431f457 Enhance SkillSetupWizard and SkillManager for OAuth-only skills
- Updated SkillSetupWizard to handle cases where no setup steps are returned, indicating an OAuth-only skill.
- Modified SkillManager's startSetup method to return null for skills that do not implement setup/start.
- Enhanced SkillRuntime's setupStart method to return null if no setup step is available, improving error handling.
- Updated SkillProvider to include OAuth configuration details in skill discovery.
2026-02-06 06:06:39 +05:30
Steven Enamakel 65d42f2526 Implement OAuth flow in SkillSetupWizard and enhance skill manager
- Added support for OAuth in the SkillSetupWizard, allowing skills to handle OAuth login and state management.
- Introduced new OAuthLoginView component for user interaction during OAuth processes.
- Updated SkillManager to notify skills of successful OAuth completion and manage OAuth credentials.
- Enhanced deep link handling to support OAuth success and error states.
- Modified SkillManifest to include OAuth configuration details.
- Updated runtime and backend to accommodate OAuth functionality, ensuring skills can utilize OAuth for authentication.
2026-02-06 05:48:10 +05:30
Steven Enamakel e70b3d1ab9 Enhance model download functionality and UI feedback
- Added a new `downloaded` status to the `ModelStatus` interface to track if the model file has been downloaded.
- Implemented `startDownload` function in the `useModelStatus` hook to initiate model downloads without loading into memory.
- Updated the `Welcome` component to automatically trigger model downloads on desktop and provide visual feedback on download progress.
- Enhanced the Tauri backend with a new `model_start_download` command to support the download process.
- Improved the model status management to reflect the current download state and handle errors effectively.
2026-02-06 01:37:09 +05:30
github-actions[bot] fec7470a4c chore: bump version to 0.32.0 [skip ci] 2026-02-05 17:12:37 +00:00
Steven Enamakel 9e88195c74 Update subproject reference and clean up GitHub Actions workflows
- Updated the subproject reference in the `skills` file to the latest commit.
- Standardized quotes in the `deploy-gh-pages.yml` and `package-android.yml` workflows for consistency.
- Removed unused Telegram API credentials from environment variables in workflows and example configuration files to streamline the setup.
2026-02-05 22:27:34 +05:30
Steven Enamakel f8f202c494 Add Telegram API credentials to GitHub Actions workflow
- Included `TELEGRAM_API_ID` and `TELEGRAM_API_HASH` as environment variables in the `package-and-publish.yml` workflow to facilitate Telegram integration.
- Removed the `dotenvy` dependency from `Cargo.toml` and `Cargo.lock` to streamline the project and eliminate unnecessary packages.
2026-02-05 22:19:37 +05:30
github-actions[bot] 285e17f150 chore: bump version to 0.31.0 [skip ci] 2026-02-05 16:35:58 +00:00
Steven EnamakelandGitHub fd4f61f6d9 fix: replace rust_socketio with direct WebSocket Socket.IO client (#52)
* Enhance socket connection logging and URL handling

- Added logging for the backend URL in the `runtime_socket_connect` function to improve traceability.
- Updated the `SocketManager` to convert HTTP/HTTPS URLs to WebSocket URLs, enhancing connection handling.
- Improved error logging to capture detailed error chains during connection failures, aiding in debugging.

* Enhance TDLib integration and macOS bundling process

- Updated build.rs to include a setup function for TDLib, ensuring the correct version is used based on the target OS.
- Added a new script, build-tdlib-from-source.sh, to facilitate building TDLib from source for macOS with the appropriate deployment target.
- Modified .gitignore to exclude the new tdlib-local and tdlib-build directories.
- Updated tauri.conf.json to streamline TDLib references and ensure compatibility with the new bundling process.
- Removed outdated bundling scripts to simplify the build workflow.

* Refactor socket management and update dependencies

- Updated `build.rs` to correctly reference architecture-specific paths for local TDLib builds.
- Replaced `rust_socketio` with `tf-rust-socketio` in `Cargo.toml` and `socket_manager.rs` to align with the new dependency structure.
- Enhanced logging in `socket_manager.rs` for better connection diagnostics and pre-flight checks.
- Updated `build-tdlib-from-source.sh` to define architecture-specific build and install directories, improving build isolation.

* Update TDLib installation process and refine socket payload handling

- Modified `build-tdlib-from-source.sh` to manually install `tdjson` libraries, addressing potential installation failures.
- Updated `socket_manager.rs` to handle payloads with an additional parameter in `Payload::Text`, improving data extraction and connection management.

* Add macOS TDLib binary for version 1.8.29

- Introduced the `libtdjson.1.8.29.dylib` binary to the macOS TDLib prebuilt directory, enabling integration with the latest TDLib features and improvements.

* Refactor SocketManager to use WebSocket and update dependencies

- Replaced `tf-rust-socketio` with a WebSocket-based implementation using `tokio-tungstenite`, enhancing connection stability and compatibility.
- Updated `Cargo.toml` to include new features for `reqwest` and removed deprecated dependencies.
- Improved documentation in `socket_manager.rs` to clarify the new WebSocket connection handling and its implications for Android.
- Streamlined connection lifecycle management and error handling for better performance and maintainability.
2026-02-05 21:17:43 +05:30
Steven Enamakel caa85528b5 Refactor SocketManager to use WebSocket and update dependencies
- Replaced `tf-rust-socketio` with a WebSocket-based implementation using `tokio-tungstenite`, enhancing connection stability and compatibility.
- Updated `Cargo.toml` to include new features for `reqwest` and removed deprecated dependencies.
- Improved documentation in `socket_manager.rs` to clarify the new WebSocket connection handling and its implications for Android.
- Streamlined connection lifecycle management and error handling for better performance and maintainability.
2026-02-05 21:16:36 +05:30
Steven Enamakel 4bb6ff05c7 Add macOS TDLib binary for version 1.8.29
- Introduced the `libtdjson.1.8.29.dylib` binary to the macOS TDLib prebuilt directory, enabling integration with the latest TDLib features and improvements.
2026-02-05 20:57:23 +05:30
Steven Enamakel 54e0fc059a Update TDLib installation process and refine socket payload handling
- Modified `build-tdlib-from-source.sh` to manually install `tdjson` libraries, addressing potential installation failures.
- Updated `socket_manager.rs` to handle payloads with an additional parameter in `Payload::Text`, improving data extraction and connection management.
2026-02-05 20:56:51 +05:30
Steven Enamakel 58b820c308 Refactor socket management and update dependencies
- Updated `build.rs` to correctly reference architecture-specific paths for local TDLib builds.
- Replaced `rust_socketio` with `tf-rust-socketio` in `Cargo.toml` and `socket_manager.rs` to align with the new dependency structure.
- Enhanced logging in `socket_manager.rs` for better connection diagnostics and pre-flight checks.
- Updated `build-tdlib-from-source.sh` to define architecture-specific build and install directories, improving build isolation.
2026-02-05 20:44:27 +05:30
Steven Enamakel d0fdcb43fc Enhance TDLib integration and macOS bundling process
- Updated build.rs to include a setup function for TDLib, ensuring the correct version is used based on the target OS.
- Added a new script, build-tdlib-from-source.sh, to facilitate building TDLib from source for macOS with the appropriate deployment target.
- Modified .gitignore to exclude the new tdlib-local and tdlib-build directories.
- Updated tauri.conf.json to streamline TDLib references and ensure compatibility with the new bundling process.
- Removed outdated bundling scripts to simplify the build workflow.
2026-02-05 20:32:23 +05:30
Steven Enamakel 9e678a08a6 Enhance socket connection logging and URL handling
- Added logging for the backend URL in the `runtime_socket_connect` function to improve traceability.
- Updated the `SocketManager` to convert HTTP/HTTPS URLs to WebSocket URLs, enhancing connection handling.
- Improved error logging to capture detailed error chains during connection failures, aiding in debugging.
2026-02-05 20:12:42 +05:30
Steven Enamakel 339334466a Refactor socket user ID selection and update QuickJS register function signatures
- Replaced the `selectCurrentUserId` function with `selectSocketUserId` to derive the socket user ID from the JWT token, improving clarity and functionality.
- Updated the `register` function signatures across multiple QuickJS operation files to use a generic lifetime parameter, enhancing type safety and consistency.
2026-02-05 19:45:35 +05:30
Steven Enamakel 851d9feb63 Update QuickJS ops and remove deprecated files
- Updated the QuickJS operations by introducing new modules for core functionality, network operations, state management, storage, and TDLib integration.
- Removed the obsolete `qjs_ops.rs` file and replaced it with modularized implementations for better organization and maintainability.
- Deleted the `qjs_ops.rs` file, which contained outdated code, and added new files for improved structure and clarity in the QuickJS integration.
- Updated the subproject reference in the `skills` file to reflect the latest commit.
2026-02-05 19:42:52 +05:30
Steven EnamakelandGitHub ceb03fb2bc Fix/prod build (#51)
* chore: add CI secrets management and local testing script

- Added ci-secrets.example.json to provide a template for CI secrets configuration.
- Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act.
- Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens.

* chore: enhance local testing and environment loading scripts

- Added scripts to load environment variables from .env and JSON files, improving local development setup.
- Introduced ci-event.json to simulate GitHub event payloads for local CI testing.
- Updated test-ci-local.sh to utilize the new event JSON for better integration with local testing workflows.
- Modified .gitignore to include ci-secrets.local.json for local secret management.

* chore: enhance environment loading and improve V8 memory management

- Updated load-env.sh to conditionally load ci-secrets.local.json and set APPLE_PASSWORD for notarization.
- Introduced a delay in auto-starting skills to prevent memory spikes during initialization.
- Adjusted V8 runtime memory settings to minimize initial heap allocation, reducing the risk of OOM errors.

* chore: update version bump workflow to modify tauri.conf.json

- Changed the version update process to reflect changes in tauri.conf.json instead of Cargo.toml.
- Adjusted the commit message to indicate the inclusion of tauri.conf.json in the version bump process.

* chore: migrate from V8 to QuickJS runtime and update related configurations

- Replaced V8 runtime references with QuickJS throughout the codebase, including updates to initialization and error handling.
- Modified package.json to change the build command for macOS to source environment variables correctly.
- Updated Cargo.toml to remove deno_core dependency and include rquickjs with appropriate features.
- Cleaned up unused V8-related code and comments in the runtime modules.
- Adjusted skill manifest checks to support QuickJS compatibility.

* refactor: implement QuickJS runtime and remove V8 references

- Replaced V8 engine with QuickJS in the runtime module, updating related imports and initialization logic.
- Introduced new `qjs_engine.rs` and `qjs_skill_instance.rs` files to handle QuickJS-specific functionality.
- Removed the deprecated `v8_skill_instance.rs` and associated V8-related code.
- Updated JavaScript bootstrap code to align with QuickJS operations and APIs.
- Adjusted documentation and comments to reflect the transition to QuickJS.

* refactor: update IdbStorage to use parking_lot::Mutex for improved concurrency

- Changed the connection management in IdbStorage from RwLock to parking_lot::Mutex for better performance.
- Updated related methods to reflect the new locking mechanism, enhancing the efficiency of database operations.
- Adjusted the IdbOpenResult struct to include serde::Serialize for potential serialization needs.

* refactor: update QuickJS skill instance and timer management

- Modified memory limit and stack size settings in QjsSkillInstance to be asynchronous, improving performance.
- Cleaned up imports in qjs_ops.rs by removing unused dependencies and enhancing function definitions for clarity.
- Refactored timer management functions for better readability and efficiency, including renaming and restructuring comments.

* chore: update package.json scripts and clean up build.rs

- Added a new script for running the Tauri app with environment variable loading.
- Simplified the macOS development command to use a dedicated build script.
- Removed unnecessary environment variable logging from build.rs to streamline the build process.
- Cleaned up commented-out sections in the GitHub Actions workflow for Android packaging.
2026-02-05 19:29:21 +05:30
Steven Enamakel 29d62544d6 refactor: improve macOS event handling and TDLib shutdown process
- Updated the event handling in the Tauri application to use a match statement for better clarity and maintainability.
- Added graceful shutdown logic for TDLib during application exit to prevent crashes related to C++ destructors.
- Enhanced the TDLib manager to signal shutdown and exit the receive loop cleanly, improving application stability.
2026-02-05 16:21:03 +05:30
Steven Enamakel 532eae1bdc chore: replace SVG background with PNG for macOS DMG
- Added a new PNG background image for the DMG installer, replacing the previous SVG file to improve compatibility and performance.
2026-02-05 16:17:40 +05:30
Steven Enamakel 864dce5c8d fix: update memory limit for skills and improve V8 runtime creation
- Increased the default memory limit for skills from 64 MB to 256 MB, allowing for better performance and resource management.
- Enhanced the V8 runtime creation process to include memory limits, preventing out-of-memory crashes when multiple skills are active.
2026-02-05 15:42:15 +05:30
Steven Enamakel de77740a23 chore: add custom DMG background for macOS app
- Updated tauri.conf.json to include a custom background image for the DMG installer on macOS, enhancing the visual presentation of the application.
2026-02-05 15:26:14 +05:30
Steven Enamakel a4b61d305d chore: enhance macOS bundling process for TDLib
- Updated the package-and-publish.yml workflow to utilize Tauri's native bundling for TDLib on macOS, removing the need for post-build scripts.
- Modified build.rs to copy TDLib and its dependencies to the libraries/ directory, ensuring they are included in the app bundle.
- Updated tauri.conf.json to reference the newly bundled TDLib and its dependencies.
- Added entries to .gitignore for the new libraries directory.
2026-02-05 15:24:41 +05:30
Steven Enamakel ff84c69006 Merge remote-tracking branch 'upstream' into develop 2026-02-05 14:45:22 +05:30
Steven Enamakel 8ba6636341 chore: standardize quote styles and add new scripts for macOS app handling
- Updated quote styles in package-and-publish.yml for consistency by converting single quotes to double quotes.
- Introduced new scripts: recreate-dmg-macos.sh for DMG recreation after TDLib bundling and resign-macos.sh for re-signing the macOS app bundle, ensuring proper code signing after modifications.
2026-02-05 14:36:58 +05:30
github-actions[bot] d772594b84 chore: bump version to 0.30.0 [skip ci] 2026-02-05 08:48:20 +00:00
github-actions[bot] ad1300e5ec chore: bump version to 0.29.0 [skip ci] 2026-02-04 19:46:42 +00:00
Steven EnamakelandGitHub be41b94493 Merge pull request #43 from vezuresdotxyz/develop
chore: merge develop into main (v0.29.0)
2026-02-05 01:16:29 +05:30
Steven Enamakel e71bdc17ae feat: enhance macOS and Android CI workflows for app packaging
- Updated the package-and-publish.yml to improve macOS app re-signing by adding certificate handling and keychain management.
- Modified package-android.yml to transition from APK to AAB packaging, including updates to artifact handling and Google Play upload.
- Enhanced the bundle-tdlib-macos.sh script to fix binary rpaths, ensuring proper runtime behavior of bundled frameworks.
2026-02-05 01:05:55 +05:30
github-actions[bot] 6f1069d0fb chore: bump version to 0.28.0 [skip ci] 2026-02-04 18:54:56 +00:00
Steven Enamakel 603dbcba85 feat: enhance build process and resource management
- Added a new build command in package.json for building the app with skills integration.
- Updated tauri.conf.json to use the new build command before building the app.
- Enhanced the RuntimeEngine to manage a resource directory for bundled skills in production, improving resource handling.
- Implemented logic to locate skills from various directories, including bundled resources, ensuring flexibility in both development and production environments.
2026-02-04 23:31:28 +05:30
Mega MindandGitHub 58ba771e19 Feat/images update (#39)
* Update application icons with new designs for various resolutions

* Update DMG creation script to use new icon and background paths; replace old assets with updated images for various resolutions.
2026-02-04 18:05:04 +05:30
Steven Enamakel aa1194b34c feat: integrate TDLib bundling into macOS build process
- Updated package.json to include new scripts for bundling TDLib dylib during macOS builds.
- Enhanced CI workflow to automate the bundling and re-signing of the macOS app after TDLib integration, addressing "Library not loaded" issues.
- Introduced a new script for managing TDLib dependencies and ensuring proper installation paths within the app bundle.
2026-02-04 14:02:57 +05:30
Steven Enamakel 205089ecbc feat: enhance CI workflow for skills module integration
- Added support for caching node modules in the skills directory to optimize build times.
- Included steps for installing and building skills dependencies within the CI workflow.
- Updated the MediaPipeLlmBridge.kt file to clarify supported parameters in the MediaPipe LLM Inference API, improving documentation and code clarity.
2026-02-04 13:25:06 +05:30
Steven Enamakel 78b0a1c48a feat: specify macOS deployment target in CI and configuration
- Added a macOS deployment target of 10.15 in the package-and-publish.yml workflow to ensure compatibility with std::filesystem used by llama.cpp.
- Updated tauri.conf.json to set the minimum system version for macOS to 10.15, aligning with the new deployment requirements.
2026-02-04 12:11:16 +05:30
Steven Enamakel b4dc9f0ea6 feat: enhance Android support with MediaPipe LLM integration
- Updated the pre-push hook to comment out formatting and lint checks for easier debugging.
- Simplified VSCode settings for default formatting across various file types.
- Introduced MediaPipe LLM Bridge for Android, enabling on-device LLM inference.
- Updated build scripts and dependencies to support MediaPipe integration.
- Refactored TDLib Bridge to indicate that TDLib is not available on Android, ensuring clarity in mobile platform capabilities.
- Enhanced model commands to include Android-specific functionality for LLM operations.
- Improved SocketManager to handle Android-specific socket connections and stubs.
- Updated documentation and comments to reflect changes in platform support and functionality.
2026-02-04 12:01:37 +05:30
Steven Enamakel dde4d6fce7 feat: add platform detection and support for mobile in ModelDownloadProgress and SkillsGrid components
- Integrated the @tauri-apps/plugin-os to detect mobile platforms (Android and iOS) in both ModelDownloadProgress and SkillsGrid components.
- Updated rendering logic to display mobile-specific messages, indicating that certain features are available only on desktop.
- Enhanced package.json and yarn.lock to include the new plugin dependency for platform detection.
- Adjusted capabilities configuration to support the new plugin across desktop and mobile platforms.
2026-02-04 11:19:58 +05:30
Steven Enamakel 8a936c8fe1 refactor: remove Python sidecar setup from CI workflows
- Deleted the setup steps for creating a Python sidecar binary in both build.yml and package-and-publish.yml workflows.
- Removed the associated script for symlinking the system Python to the sidecar path, simplifying the CI configuration.
- Updated package installation steps to exclude Python dependencies, streamlining the build process.
2026-02-04 11:00:54 +05:30
3fb5e1dd11 feat: local model support and SocketManager WebSocket transport (#36)
* chore: add simulation function for deep link testing in development

- Introduced a simulation function for deep links in the development environment to facilitate testing.
- The function allows developers to simulate deep link URLs without affecting production behavior.

* feat: implement QuickJS skill runtime integration

- Added a new QuickJS skill runtime engine to manage skill execution within the application.
- Introduced commands for skill management, including discovery, starting, stopping, and querying skill states.
- Implemented a SQLite database bridge for each skill to handle data storage.
- Enhanced the application structure with new modules for runtime management, skill instances, and manifest parsing.
- Updated dependencies in Cargo.toml and Cargo.lock to support new features.

* refactor: improve code readability and formatting in DownloadScreen and deviceDetection

- Enhanced the button className formatting in DownloadScreen for better readability.
- Reformatted the fetchLatestRelease and parseReleaseAssetsByArchitecture functions in deviceDetection for improved clarity and maintainability.
- Utilized multiline formatting for complex conditions to enhance code structure.

* feat: integrate Rust-native Socket.io client for persistent connections

- Implemented a SocketManager in Rust to handle Socket.io connections, ensuring persistence across app backgrounding.
- Updated SocketProvider to connect/disconnect using Rust-native methods in Tauri mode.
- Enhanced Tauri event listeners for socket state changes and server events.
- Refactored socket handling logic to differentiate between web and Tauri modes, improving maintainability and clarity.
- Added new commands for connecting, disconnecting, and emitting events through the Rust socket.

* refactor: remove Telegram login commands and related functionality

- Deleted the startTelegramLogin and startTelegramLoginWithUrl functions from the Tauri commands.
- Removed associated references in the Rust command module and utility file.
- This cleanup simplifies the codebase by eliminating unused Telegram login features.

* feat: add cron scheduling functionality for skills

- Introduced a new CronScheduler to manage scheduled tasks for skills, allowing for cron expression parsing and execution.
- Added a cron bridge to expose scheduling methods to skill contexts, enabling skills to register, unregister, and list cron schedules.
- Updated the RuntimeEngine to initialize and manage the cron scheduler, ensuring it runs in the background.
- Enhanced skill instances to support cron scheduling through a new BridgeDeps structure.
- Updated dependencies in Cargo.toml and Cargo.lock to include the cron crate.

* feat: add Android support and enhance dependencies

- Introduced Android-specific build and run commands in package.json for Tauri.
- Updated Cargo.toml to include OpenSSL for Android and adjusted reqwest for cross-platform TLS support.
- Added new mobile capabilities configuration for Android and iOS.
- Implemented a foreground service in the Android app to maintain the Rust backend process.
- Added various Android resources including layouts, icons, and notification handling.
- Updated Cargo.lock with new dependencies for improved functionality.

* chore: update .gitignore and AndroidManifest.xml for deep link support

- Added .kotlin and .cargo to .gitignore to exclude Kotlin and Cargo build artifacts.
- Updated AndroidManifest.xml with comments for the deep link plugin, clarifying its auto-generated nature.

* feat: enhance store configuration for development testing

- Added functionality to auto-inject a JWT token from environment variables during development.
- Implemented automatic onboarding for users once their profile is fetched, improving the testing experience.

* feat: enhance socket connection handling and add Android logging support

- Updated the Rust socket connection command to accept an optional URL parameter, allowing for dynamic backend URL configuration.
- Integrated Android logging capabilities using the android_logger crate, ensuring logs are properly routed to logcat.
- Improved error handling in the SocketManager to log connection errors and successful connections for better debugging.

* feat: implement notification permission handling and enhance foreground service in Android

- Added runtime permission request for POST_NOTIFICATIONS in MainActivity to comply with API 33+ requirements.
- Updated RuntimeService to specify foreground service type for API 34+ compatibility.
- Improved logging levels in the Rust backend for better debugging and monitoring of socket connections and skill discovery.

* feat: integrate QuickJS skill management and service

- Added QuickJS skill hooks for retrieving and managing QuickJS skills from Redux.
- Implemented a QuickJS service to handle skill lifecycle, preferences, and IPC calls with the Rust backend.
- Enhanced the skills state in Redux to include QuickJS skills, enabling better management and state tracking.
- Updated the store configuration to persist QuickJS skills state across sessions.
- Introduced new commands in the Rust backend for enabling/disabling skills and managing preferences.
- Improved the SkillProvider to initialize the QuickJS service during app startup.

* refactor: transition skill management to QuickJS runtime

- Removed legacy skill catalog and loading logic, replacing it with QuickJS runtime integration for skill discovery and management.
- Updated SkillProvider to utilize QuickJS for skill registration and lifecycle management.
- Simplified skill data handling by directly invoking the Rust backend for skill operations.
- Enhanced error handling and logging for skill loading processes.
- Cleaned up unused interfaces and functions related to previous skill management methods.

* refactor: remove unused skill commands and plugins

- Deleted the skills command module and related functions to streamline the codebase.
- Removed dependencies on the tauri-plugin-shell and other unused plugins from Cargo.toml and Cargo.lock.
- Updated the authentication module by removing the exchange_token function and its associated structures.
- Simplified the capabilities configuration by eliminating shell-related permissions.
- Enhanced the runtime engine to support new JSON-RPC commands for skill data management.

* feat: expose whitelisted environment values to skills

- Added `platform.env(key)` function to retrieve whitelisted environment values for skills.
- Implemented `get_skill_env` function to provide access to `BACKEND_URL` and `PLATFORM`.
- Updated `get_backend_url` to check for `VITE_BACKEND_URL` before falling back to `BACKEND_URL`.
- Enhanced the QuickJS runtime to support the new environment functionality.

* feat: fix skills enable/disable flow, setup pipeline, and status derivation

- Add SkillSetup struct to Rust manifest and include setup field in
  discovery response so the frontend knows which skills need setup
- Map setup field in SkillProvider discoverSkills()
- Fix SkillsGrid to use real hasSetup from manifest instead of hardcoding false
- Add contextual Enable/Setup/Configure/Retry buttons in management modal
- Add status indicator dots to compact skill table rows
- Fix deriveConnectionStatus to return "connected" for ready skills with
  completed setup that don't push host state (e.g. cron-based skills)
- Add select option renderer in SkillManagementPanel for non-boolean options
- Add dotenvy crate to load .env file at Rust startup so env vars like
  VITE_BACKEND_URL are available to the runtime engine and skills

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: add platform support for skills and enhance manifest handling

- Introduced platform filtering for skills in the SkillManifest, allowing skills to specify supported platforms.
- Updated QuickJSManifest and runtime engine to handle platform checks, ensuring skills are only loaded on compatible platforms.
- Added new build and watch commands for skills in package.json to streamline development.
- Enhanced the Rust backend to log unsupported skills based on platform restrictions.

* feat: update skills submodule with TypeScript pipeline and test harness

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat: transition from QuickJS to V8 runtime for skill management

- Replaced QuickJS with V8 (via deno_core) for improved JavaScript execution and WASM support.
- Updated skill management logic to utilize the new V8 runtime, including changes to the RuntimeEngine and skill instance handling.
- Enhanced manifest handling to support the new runtime and added platform compatibility checks.
- Introduced new dependencies and updated Cargo.toml to reflect changes in the skill execution environment.
- Refactored related modules and commands to align with the V8 integration, ensuring a seamless transition for skill operations.

* refactor: clean up dead code in IdbStorage and enhance ops module

- Removed unused `#[allow(dead_code)]` annotations from the IdbStorage struct and its methods to improve code clarity.
- Introduced new timer and WebSocket state management structures in the ops module, laying groundwork for future enhancements.
- Added timer and WebSocket operation functions, including `op_timer_start`, `op_timer_cancel`, and WebSocket connection handling, to support asynchronous operations.

* feat: implement high-level TDLib service with V8 integration

- Introduced a new `TdlibV8Service` to manage TDLib client instances using the V8 runtime.
- Added a `MockTdClient` for development and testing, simulating TDLib responses for various queries.
- Enhanced the bootstrap script to initialize and manage TDLib clients, including methods for sending queries and retrieving authentication states.
- Updated the `mod.rs` file to include the new service module and improved documentation for clarity.
- Refactored existing code to support the new TDLib integration, ensuring a seamless experience for skill management.

* refactor: update V8 runtime integration and platform handling

- Updated the V8 runtime integration to ensure it is only available on desktop platforms, with appropriate error handling for mobile.
- Refactored the `SocketManager` and command implementations to conditionally include desktop-only features, enhancing clarity and maintainability.
- Cleaned up the `Cargo.toml` to reflect the changes in V8 runtime availability and added relevant documentation.
- Removed dead code related to mobile platform handling in the TDLib integration, ensuring a streamlined codebase.

* chore: update skills submodule to latest commit

- Updated the skills submodule to the latest commit (19a18e8), ensuring alignment with recent changes and improvements in the codebase.

* refactor: transition from QuickJS to V8 runtime for skill management

- Updated the skills submodule to the latest commit, reflecting the transition from QuickJS to V8 for improved JavaScript execution.
- Refactored skill management logic to utilize the V8 runtime, including changes to the RuntimeEngine and skill instance handling.
- Enhanced manifest handling to support the new runtime and updated platform compatibility checks.
- Removed dead code related to QuickJS, ensuring a streamlined codebase.
- Updated comments and documentation to reflect the changes in runtime integration.

* feat: enhance logging and update timer operations in V8 integration

- Added logging for skill discovery and manifest processing in the V8 runtime, improving traceability during skill management.
- Updated timer operation functions to use new prefixed names (`op_ah_timer_start` and `op_ah_timer_cancel`) to avoid conflicts with deno_core built-ins.
- Implemented a mechanism to load .env files from various locations, ensuring environment variables are available for configuration.
- Enhanced the `get_backend_url` function to include debug logging for better visibility of the backend URL resolution process.

* chore: update skills submodule to latest commit and enhance logging

- Updated the skills submodule to the latest commit (54c40a1), ensuring alignment with recent changes.
- Added console logging for skill manifests during discovery in the SkillsGrid component to improve debugging and traceability.

* refactor: clean up and format code in DownloadScreen and SkillsGrid components

- Improved code readability by formatting multi-line statements in the DownloadScreen and SkillsGrid components.
- Removed unnecessary type imports in DownloadScreen for clarity.
- Enhanced the structure of the SkillsGrid component by adjusting the layout of JSX elements for better maintainability.
- Updated socketService to ensure consistent import order and improved logging in TauriSocket utility functions.

* chore: update development script in package.json

- Replaced the existing setup-python-sidecar script with a new dev:app script to streamline the development process for Tauri applications, enabling better debugging with RUST_BACKTRACE and RUST_LOG settings.

* refactor: update load method to accept additional parameters

- Modified the load method in SkillRuntime to accept an optional additionalParams argument, enhancing flexibility for skill loading.
- Ensured compatibility by using a fallback to an empty object when additionalParams is not provided.

* refactor: improve JSX structure in SkillsGrid component

- Enhanced the formatting of the connection status indicator in the SkillsGrid component for better readability.
- Adjusted the indentation and spacing to maintain consistent code style and improve maintainability.

* Refactor invoke_handler to consolidate command registration across platforms

- Simplified the command registration process by merging desktop and mobile command handlers into a single `invoke_handler` call.
- Improved code readability and maintainability by reducing duplication in command definitions.
- Ensured that window commands remain desktop-only while maintaining common functionality for all platforms.

* updated icon

* Update skills submodule to latest commit and remove redundant logging statements in V8 engine skill discovery

* Update skills submodule to reflect dirty state

* feat: expose BACKEND_URL environment variable for skills

- Added "BACKEND_URL" to the list of whitelisted environment variables accessible to skills, allowing for broader usage without the "VITE_" prefix.

* Enhance V8 runtime with async event loop and timer management

- Implemented an async event loop in the V8 skill instance to handle timers and messages efficiently.
- Introduced a new TimerState structure for managing scheduled timers, allowing for better integration with the V8 event loop.
- Updated the dotenv loading mechanism to check for environment variables in the current and parent directories.
- Enhanced logging for timer operations and skill management processes to improve traceability.

* Update skills submodule to latest commit and expose additional environment variables for skills

- Updated the skills submodule to commit 3793fdc, ensuring alignment with recent changes.
- Added "TELEGRAM_API_ID" and "TELEGRAM_API_HASH" to the list of whitelisted environment variables, allowing skills to access these without the "VITE_" prefix.

* Integrate TDLib support for Telegram skill

- Added TDLib commands for creating, sending, receiving, and destroying clients, enabling Telegram functionality.
- Implemented a TdLibManager for managing TDLib client lifecycle and asynchronous operations on desktop platforms.
- Introduced JNI bridge for Android to facilitate TDLib interactions.
- Updated Cargo.toml and Cargo.lock to include tdlib-rs and related dependencies.
- Enhanced the V8 runtime to support TDLib operations, ensuring compatibility across platforms.

* Enhance TDLib manager with update queue and async polling

- Introduced an update queue and notification channel in ClientState for managing TDLib updates.
- Implemented a separate polling task for TDLib updates to improve responsiveness and prevent blocking the main event loop.
- Updated lifecycle function handling in the V8 runtime to avoid waiting for the event loop, allowing for long-running async operations.
- Improved error handling and logging for better traceability during TDLib operations.

* Enhance documentation and improve code formatting

- Updated CLAUDE.md to include new core commands and runtime management features for the Rust backend, as well as Android support and platform-specific details.
- Refactored SettingsHeader component in SettingsHeader.tsx for improved readability by consolidating props and cleaning up JSX formatting.
- Enhanced SkillProvider.tsx with better logging for skill loading errors, improving traceability in the development process.

* Integrate local LLM inference support and update dependencies

- Added local LLM inference capabilities for desktop and Android platforms, excluding iOS.
- Introduced new model commands for checking availability, generating text, and summarizing content.
- Updated Cargo.toml and Cargo.lock to include necessary dependencies such as `llama-cpp-2` and `encoding_rs`.
- Enhanced the V8 runtime and JavaScript API to support model operations, improving the overall functionality of the application.

* Enhance SocketManager with WebSocket transport type

- Added support for WebSocket transport type in SocketManager for improved connection handling.
- Updated connection configuration to utilize WebSocketUpgrade, enhancing real-time communication capabilities.

* style: fix Prettier formatting in ModelDownloadProgress

* chore: update skills submodule to latest commit

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 08:15:00 +05:30