Commit Graph
35 Commits
Author SHA1 Message Date
M3gA-Mind 159e111a29 feat: enhance Gmail skill integration and state management
- Updated `SkillManager` to accept an optional access token for Gmail during OAuth completion.
- Introduced `gmailSlice` to manage Gmail user profile and emails in the Redux store.
- Implemented synchronization of Gmail skill state with the Redux store to keep user data updated.
- Refactored `SkillProvider` to handle Gmail state changes and fetch initial state from the backend.
- Adjusted deep link handling to pass decrypted access tokens for Gmail integration.
- Modified API endpoint for onboarding completion to remove the Telegram prefix.
2026-02-20 20:45:36 +05:30
M3gA-Mind 98895bc038 feat: add integration token fetching and decryption functionality
- Introduced `fetchIntegrationTokens` API call to retrieve encrypted OAuth tokens for integrations.
- Implemented decryption logic for integration tokens using a provided key.
- Enhanced deep link handling to support fetching and storing integration tokens upon successful OAuth login.
- Added utility functions for hex and base64 conversions to facilitate token decryption.
- Updated `authApi.ts` and `desktopDeepLinkListener.ts` to integrate new functionality.
2026-02-19 20:26:54 +05:30
M3gA-Mind 4a6f0ec992 Merge remote-tracking branch 'upstream/develop' into feat/cryto-encryption 2026-02-19 17:05:26 +05:30
f4801726f3 Fix async tool calls not fetching data in QuickJS runtime (#102)
* Implement data synchronization feature in SkillManagementPanel

- Added a new `handleSync` function to trigger manual synchronization for skills, enhancing user control over data updates.
- Integrated skill state management to track synchronization progress, errors, and completion status.
- Updated the UI to display synchronization status, including progress indicators and error messages, improving user feedback during sync operations.
- Enhanced the SkillManager and SkillRuntime classes to support the new sync functionality, ensuring proper handling of sync requests and lifecycle hooks.

Updated subproject commit reference in the skills directory.

* Implement Conversations UI with two-panel thread layout and resizable sidebar

Add full Conversations feature: thread types, API service, Redux slice, and a
two-panel page with a draggable resize handle. Uncomment Conversations nav item
in MiniSidebar and enable prefix-based active state matching.

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

* Add Intelligence page and integrate intelligence stats hook

- Introduced a new Intelligence page with a skill management interface, allowing users to view and manage skills.
- Implemented the `useIntelligenceStats` hook to fetch and display session statistics, memory files, and entity counts.
- Enhanced the SkillsGrid component to utilize shared skill icons and status displays, improving UI consistency.
- Added functionality for skill synchronization and management, including action buttons for skill setup and syncing.
- Updated the Conversations page to support sending messages with optimistic UI updates, enhancing user experience.

This commit lays the groundwork for a more interactive and informative intelligence management feature.

* Update subproject commit reference in skills directory and enhance fetch handling in bootstrap.js

- Updated the subproject commit reference in the skills directory to the latest version.
- Modified the fetch implementation in bootstrap.js to ensure options are sent as a JSON string and to parse the JSON response, improving data handling and error management.

* Update subproject commit reference in skills directory and comment out Conversations nav item in MiniSidebar

- Updated the subproject commit reference in the skills directory to the latest version.
- Commented out the Conversations navigation item in MiniSidebar for future implementation.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 17:56:47 +05:30
Steven EnamakelandGitHub c54404bfe1 Fix TDLib client lifecycle and skill status handling (#99)
* Refactor skill management and enhance TDLib client handling

- Updated skill registration logic to retain skills with Error and Stopped statuses for better UI feedback and restart capability.
- Improved TDLib client management by introducing a flag to prevent concurrent client creation during destruction, ensuring proper resource cleanup and database lock handling.
- Enhanced error handling in TDLib client destruction process to ensure graceful shutdown and resource release.

* Update skills subproject reference and enhance connection status handling

- Updated the subproject commit reference in the skills directory.
- Modified connection status checks in `SkillsGrid.tsx` and `hooks.ts` to account for 'stopping' state, improving the accuracy of skill status reporting.
- Added handling for 'stopped' and 'pending' statuses in `SkillProvider.tsx` to reset UI state appropriately.

* Update skills subproject commit reference to latest version
2026-02-11 13:14:12 +05:30
Steven EnamakelandGitHub 105a5fc08f Fix/tuesday (#97)
* Update submodule URL for skills and refresh commit reference

- Changed the submodule URL for the "skills" repository to use SSH instead of HTTPS.
- Updated the subproject commit reference in the skills directory to the latest commit.

* Update subproject commit reference for skills to latest version b5d138f

* updated skills

* Update ping interval and refactor context usage in QjsSkillInstance

- Reduced the PING_INTERVAL from 60 seconds to 5 seconds for more frequent pings.
- Refactored the context parameter in lifecycle calls and message handling functions to use the runtime context, improving consistency and performance.
- Updated subproject commit reference for skills to the latest version.
2026-02-11 02:50:50 +05:30
e23b3643bd Add invite codes feature (#94)
* Refactor import statement in store configuration for clarity

- Combined the import of `configureStore` and `Middleware` from '@reduxjs/toolkit' into a single line for improved readability.

* Add invite codes feature with onboarding step and dedicated page

Implement frontend for the invite codes system: users get 5 invite codes
to share, can redeem codes for free credits, and new users are prompted
during onboarding (step 1) to enter an invite code.

- Add invite types, API service, and Redux slice
- Add InviteCodeStep as first onboarding step (skip-able)
- Add /invites page with redeem input and code list with copy buttons
- Add "Invite Friends" nav item to sidebar
- Update UserReferral interface to match backend PR #418

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

* Update reqwest dependency to enable HTTP/2 support and switch to rustls TLS in network requests

- Modified Cargo.toml to include the "http2" feature for reqwest.
- Updated network request implementations in bridge and ops_net modules to use rustls TLS instead of native TLS for improved security and compatibility.

* Update event loop to handle async tool calls and improve message processing

- Introduced a `PendingToolCall` struct to manage in-flight async tool calls.
- Enhanced the event loop to check for completion of async tool calls and handle timeouts.
- Updated message handling to support async tool execution, allowing the event loop to process other messages concurrently.
- Refactored `handle_tool_call` to differentiate between synchronous and asynchronous tool results.
- Modified JavaScript fetch functions to use async/await for improved readability and performance.

* Enhance skill instance with initial ping verification and job driving

- Added an immediate ping to verify the connection health during skill execution, logging the result or any errors encountered.
- Updated the event loop to drive jobs asynchronously after the initial ping check.
- Removed unnecessary logging statements from the network operations for cleaner output.

* Update subproject commit reference in skills directory

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 22:28:54 +05:30
M3gA-Mind ba82647880 Merge remote-tracking branch 'upstream/develop' into feat/cryto-encryption 2026-02-10 17:13:04 +05:30
Steven Enamakel fa41d90c2d Update subproject commit reference and enhance GitHub workflows
- Updated the subproject commit reference in the skills directory.
- Modified the build workflow to enable submodule fetching.
- Standardized quotation styles in the package-and-publish workflow for consistency.
- Refactored the `setSkillOAuthCredential` function for improved readability.
- Added an attribute to the `Error` variant in the `SkillMessage` enum to suppress warnings for unused code.
2026-02-10 16:41:29 +05:30
Steven Enamakel 95b7e2acce Enhance error handling in skill message processing
- Added a new `Error` variant to the `SkillMessage` enum to notify skills of errors from async operations, including error type, message, source, and recoverability.
- Updated the `handle_message` function to handle `SkillMessage::Error`, invoking the `onError` JavaScript handler and logging any failures in the handler execution.
- Updated subproject commit reference in the skills directory.
2026-02-10 16:24:17 +05:30
Steven Enamakel 81c61fac12 Update logging configuration and adjust ping interval for improved performance
- Enhanced logging setup in `lib.rs` to allow customizable verbosity and color-coded output based on log levels and tags.
- Reduced ping interval in `ping_scheduler.rs` from 5 minutes to 1 minute for more frequent health checks on skills.
- Added functionality to suppress TDLib's native C++ logs based on environment variable settings in `manager.rs`.
2026-02-10 15:30:57 +05:30
Steven EnamakelandClaude Opus 4.6 f372d5ce29 Move skill ping/health-check from frontend to Rust backend
The frontend ping loop only runs while React is active, but the Rust
backend keeps skills running independently. This adds a PingScheduler
(modeled after CronScheduler) that pings all running skills every 5
minutes from a background Tokio task and acts on auth/network failures.
The redundant frontend ping loop is removed since SkillProvider already
listens for the Tauri events the Rust scheduler emits.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:22:15 +05:30
Steven EnamakelandGitHub 96de8e902b Merge branch 'develop' into feat/skills-ping 2026-02-10 11:11:20 +05:30
Steven EnamakelandClaude Opus 4.6 1aa7c077d6 Add skill ping/health-check system for connection monitoring
Periodic (5-min) onPing() calls verify skill service connections are
healthy. Auth errors stop the skill; network errors update connection
status while keeping the skill running for retry. Skills without onPing
are treated as healthy (backward compatible).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 11:09:20 +05:30
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
M3gA-Mind a1ae34ad2f Merge remote-tracking branch 'upstream/main' into feat/cryto-encryption 2026-02-09 15:18:14 +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 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
M3gA-Mind 1470b9482e feat: integrate Web3 wallet functionality and enhance state management
- Added WalletInfoSection component to display connected wallet address, network, and balance.
- Updated auth slice to manage primary wallet address derived from mnemonic.
- Enhanced SkillManager to pass wallet address as load parameters for wallet skill.
- Introduced utility function to derive EVM wallet address from mnemonic.
- Updated dependencies for cryptographic operations related to wallet functionality.
2026-02-06 21:15:47 +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
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 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 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 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 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 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 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
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
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
f0e3c03544 fix: tg-skill (#34)
* 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.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 08:02:06 +05:30
c96b617d32 Feat/javscript skills (#26)
* 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.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:26:38 +05:30