Commit Graph
45 Commits
Author SHA1 Message Date
cyrus 5b9a088141 Refactor: centralize development environment check with IS_DEV
Replaces scattered environment checks with the centralized `IS_DEV` constant from `config.ts`. This improves consistency and simplifies maintenance by reducing redundancy across multiple files.
2026-03-20 17:38:28 +05:30
M3gA-Mind 232767c19a feat: integrate TinyHumans memory client for skill data synchronization
- Added `syncMemoryClientToken` utility to synchronize JWT token with the TinyHumans memory client after user login and Redux rehydration.
- Updated `PersistGate` in `App.tsx` to call `syncMemoryClientToken` on lift.
- Modified `SkillManagementPanel` to use `triggerSync` for skill management instead of stopping and starting skills.
- Implemented memory commands in Tauri for initializing and querying the TinyHumans memory client.
- Enhanced skill instance handling to persist sync data and clear memory on OAuth revocation.
- Introduced a new memory module to manage skill data synchronization effectively.
2026-03-18 17:05:16 +05:30
M3gA-Mind 5d2fbc9e47 Refactor Gmail email handling and improve HTTP client management
- Updated `gmailSlice` to replace `GmailEmailSummary` with `GmailEmailBatch`, enhancing email data structure.
- Modified `SkillProvider` to dispatch emails as `GmailEmailBatch | null`.
- Improved HTTP client management in `ops_net.rs` by implementing a shared client for fetch calls, optimizing connection handling and timeout management.
- Enhanced deep link handling in `desktopDeepLinkListener.ts` to trigger synchronization after OAuth completion.
2026-03-14 04:33:03 +05:30
cyrus d8f79dbd2c Refactor OAuth login URLs and improve deep link handling.
Updated OAuth provider login URLs to use "responseType=json" for development mode. Enhanced deep link handling by adding support for an additional "key" parameter to distinguish token types.
2026-03-11 17:18:55 +05:30
M3gA-Mind 01c6fd9421 refactor: streamline JSON formatting and enhance documentation clarity
- Consolidated JSON structure in `.mcp.json` and `.claude/mcp.json` for improved readability.
- Updated `CLAUDE.md` and other documentation files to enhance formatting consistency and clarity.
- Improved the organization of agent roles and initialization procedures in `AGENTS.md`, `BOOTSTRAP.md`, and `IDENTITY.md`.
- Enhanced user understanding and personalization strategies in `USER.md` and `MEMORY.md`.
- Refined tool generation scripts for better error handling and output formatting in `discover-tools.js` and `openClaw-formatter.js`.
2026-03-10 05:31:26 +05:30
cyrusandClaude aef7df5dce feat: implement unified AI injection system with dynamic TOOLS.md generation
- Create complete modular AI configuration system following OpenClaw standards
- Add dynamic TOOLS.md generation from V8 skills runtime discovery
- Implement unified injection system with injectAll() for SOUL + TOOLS contexts
- Update all 4 integration points to use unified injection consistently

## New Features:

### Modular AI Configuration System
- loadSoul() → SoulConfig (personality, voice, behavior)
- loadTools() → ToolsConfig (available tools and capabilities)
- loadAIConfig() → AIConfig (unified SOUL + TOOLS configuration)
- Multi-layer caching: memory → localStorage → GitHub → bundled

### Dynamic TOOLS.md Generation
- yarn tools:generate command for build-time tool discovery
- Spawns Tauri runtime to call runtime_all_tools() from V8 skills
- Generates OpenClaw-compliant documentation with usage examples
- Professional formatting with environment configs and statistics
- Currently discovers 4 tools from 3 skills (telegram, notion, gmail)

### Unified Injection System
- injectAll() function combines SOUL + TOOLS injection
- injectSoul() and injectTools() for individual injection
- Consistent [PERSONA_CONTEXT] and [TOOLS_CONTEXT] formatting
- Updated all integration points: Conversations.tsx, threadSlice.ts, threadApi.ts, tauriCommands.ts

### Build System Integration
- Added tools:generate script to package.json
- Rust binary: src-tauri/src/bin/alphahuman-tools-discovery.rs
- Cross-platform discovery scripts in scripts/tools-generator/
- Fixed Cargo.toml binary configuration and main.rs imports

### Enhanced Settings UI
- AI Configuration panel shows both SOUL and TOOLS
- Individual refresh buttons for each component
- Combined "Refresh All AI Configuration" functionality
- Source indicators and statistics display

## Technical Implementation:

### File Structure:
- /ai/TOOLS.md - Auto-generated tool documentation
- src/lib/ai/tools/injector.ts - Tools injection system
- src/lib/ai/injector.ts - Unified injection orchestrator
- src/lib/ai/loader.ts - Unified configuration loader
- scripts/tools-generator/ - Build-time discovery system

### Message Format:
```
[PERSONA_CONTEXT]
I am AlphaHuman: incredibly smart, funny friend...
[/PERSONA_CONTEXT]

[TOOLS_CONTEXT]
4 tools across 3 skills
Categories: Communication (2), Productivity (1), Email (1)
[/TOOLS_CONTEXT]

User message: Hello!
```

### Performance & Reliability:
- Multi-layer caching with 30min TTL
- Graceful degradation if injection fails
- Cross-platform build support (Windows, macOS, Linux)
- Full TypeScript compliance with comprehensive error handling

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 19:42:55 +05:30
cyrusandClaude d85313138f feat: implement SOUL.md persona injection system
- Add complete SOUL.md persona injection into user messages
- Create AI Configuration panel in Settings for SOUL management
- Implement multi-layer caching (memory → localStorage → GitHub → bundled)
- Add SOUL injection to all message flows:
  - Main Conversations page (inferenceApi flow)
  - Settings Agent Chat (Tauri commands)
  - Redux sendMessage thunk
  - Thread API layer
- Parse SOUL.md sections: personality, safety rules, behaviors, interactions
- Inject persona context with [PERSONA_CONTEXT] tags
- Add graceful error handling with console logging
- Token-optimized context building (top 3 traits, critical safety rules)
- Cross-platform compatibility (Tauri + web environments)

Files added:
- src/lib/ai/soul/types.ts - TypeScript interfaces
- src/lib/ai/soul/loader.ts - SOUL loading with caching
- src/lib/ai/soul/injector.ts - Message injection logic
- src/components/settings/panels/AIPanel.tsx - Settings UI

Files modified:
- src/pages/Conversations.tsx - Add SOUL injection to main chat
- src/store/threadSlice.ts - Add SOUL injection to Redux flow
- src/services/api/threadApi.ts - Add SOUL injection to API layer
- src/utils/tauriCommands.ts - Add SOUL injection to Tauri commands
- src/components/settings/SettingsHome.tsx - Add AI Configuration menu
- src/pages/Settings.tsx - Add AI panel routing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 17:36:18 +05:30
Mega MindandGitHub c3718d9e4f Feat/final flow check (#155)
* feat: add mnemonic recovery flow and encryption key management

- Introduced a new Mnemonic page for users to generate or import their recovery phrase.
- Updated routing to redirect users to the Mnemonic page after onboarding.
- Enhanced state management to store and retrieve AES encryption keys derived from the mnemonic.
- Added utility functions for generating and validating BIP39 mnemonic phrases.
- Updated selectors and reducers to handle encryption key state in the auth slice.
- Included new dependencies for cryptographic operations.

* 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.

* fix: improve error handling and network selection in WalletInfoSection

- Enhanced the parsing of network data to ensure robustness against undefined values.
- Updated network selection logic to prioritize valid entries and provide a fallback.
- Improved error logging for better debugging of wallet information loading issues.
- Adjusted balance retrieval to handle cases where chain_id may be missing.

* feat: add socket event contract for Tauri integration

- Documented the socket event contract for communication between the backend and frontend in Tauri mode.
- Introduced constants for `REQUEST_ENCRYPTION_KEY` and `ENCRYPTION_KEY_EVENT` to facilitate encryption key management.
- Updated `setupTauriSocketListeners` to handle the encryption key request and response flow.

* Refactor wallet information fetching and connection status handling

- Updated `WalletInfoSection` to improve loading state management and error handling during wallet info retrieval.
- Introduced a retry mechanism for fetching wallet information with a maximum of 5 attempts.
- Enhanced connection status logic in `SkillsGrid` to treat missing authentication status as connected.
- Added a new method in `SkillManager` to set the wallet address and notify the wallet skill accordingly.

* 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.

* refactor: move integration token encryption/decryption logic to a new utility file

- Extracted encryption and decryption functions for integration tokens into `integrationTokensCrypto.ts`.
- Removed redundant functions from `desktopDeepLinkListener.ts` to streamline the code.
- Updated deep link handling to store only the encrypted tokens instead of decrypted ones.
- Improved type definitions for integration tokens and their payloads.

* 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.

* feat: implement Gmail metadata synchronization to backend

- Added a new utility function `syncGmailMetadataToBackend` to emit Gmail profile and email summaries to the backend via the `integration:metadata-sync` socket event.
- Updated `SkillProvider` to call the new synchronization function, ensuring Gmail skill state is sent to the backend when updated.

* refactor: update Tauri socket event handling and improve Mnemonic component typing

- Revised the Tauri socket event contract to clarify that encryption key handling is managed via the API instead of the socket.
- Removed outdated socket event constants related to encryption key requests from `tauriSocket.ts`.
- Enhanced type definitions in the `Mnemonic` component by specifying the event type for keyboard events.

* fix: update Gmail provider constant and adjust metadata synchronization logic

- Changed the constant for the Google provider from 'google' to 'gmail' for clarity.
- Commented out the email metadata synchronization logic in `syncGmailMetadataToBackend` to prevent potential issues with undefined email states.

* feat: implement Gmail metadata synchronization service

- Added a new file `metadataSync.ts` to handle the synchronization of Gmail profile and email summaries to the backend via the `integration:metadata-sync` socket event.
- Updated import paths in `SkillProvider` to reflect the new location of the Gmail metadata synchronization function.
- Enhanced type definitions for Gmail profile and email summaries to ensure proper data structure during synchronization.

* refactor: clean up code formatting and improve readability across multiple components

- Standardized import statements and formatting in various files, including `WalletInfoSection`, `AgentChatPanel`, and `SkillsPanel`.
- Enhanced readability by adjusting line breaks and spacing in JSX elements and function definitions.
- Improved consistency in the use of arrow functions and destructuring across components.
- Updated type definitions and ensured proper alignment of code for better maintainability.

* feat: enhance error handling in WalletInfoSection and improve user feedback

- Added error reporting functionality in `WalletInfoSection` to capture and enqueue errors when wallet info fails to load.
- Updated `Mnemonic` component to handle user state more robustly, ensuring encryption key is only set if the user is loaded.
- Refactored `TauriCommandsPanel` to improve string comparisons for loading states by converting to lowercase.
- Adjusted deep link handling in `desktopDeepLinkListener` to use trimmed hex values for encryption key conversion.

* fix: improve balance parsing and error handling in WalletInfoSection

- Updated balance parsing logic in `WalletInfoSection` to ensure that non-finite values default to zero.
- Enhanced error handling in `desktopDeepLinkListener` by adding error reporting for invalid encryption keys and conversion failures, improving user feedback and debugging capabilities.

* Merge remote-tracking branch 'upstream/develop' into feat/final-flow-check

* chore: update submodule URL for skills repository to use HTTPS

* chore: update skills submodule to latest commit and enhance SkillsGrid component

- Updated the skills submodule to the latest commit for improved functionality.
- Refactored `SkillsGrid` to better handle skill setup logic, ensuring accurate representation of skills with setup requirements.
- Cleaned up code formatting and improved readability in various components, including `SkillActionButton` and `desktopDeepLinkListener`.

* feat: implement Notion metadata synchronization and user profile management

- Added a new service `metadataSync.ts` to handle synchronization of Notion user metadata to the backend via the `integration:metadata-sync` socket event.
- Introduced a new Redux slice `notionSlice.ts` for managing the Notion user profile state.
- Updated `SkillProvider` to fetch and sync Notion user profile upon connection, ensuring seamless integration with the backend.
- Enhanced the store configuration to include the new Notion reducer.

* refactor: remove unnecessary console warnings in SkillProvider

- Eliminated console warnings related to Notion user retrieval errors and auto-loading skills, streamlining the logging process for better clarity and reducing noise in the console output.
- Improved code readability by cleaning up commented-out warning messages that were no longer needed.
2026-03-04 14:33:17 +05:30
b037627d84 Feat/daemon setup (#148)
* feat: add .mcp.json for MCP server configuration

- Introduced `.mcp.json` with server details for managing MCP integrations
- Defines `readme` server with HTTP type and URL endpoint configuration

* fix: Update skills submodule with Telegram error handling improvements

- Fixed setup flow showing false success when TDLib errors occurred
- Improved async error handling in setup steps
- Added client reset mechanisms for error recovery
- Enhanced error messaging for better user experience
- Cleaned up excessive debug logging while maintaining error logs

Resolves issue where Telegram setup showed success modal despite underlying TDLib errors.

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

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

* Add daemon lifecycle management system to frontend UI

This implementation integrates the Rust daemon's health monitoring and lifecycle management into the React frontend. Key features include real-time health indicators, automatic start/error recovery, and detailed control panels, enhancing both user experience and operational reliability.

* Enhance daemon health monitoring with detailed logging, event tracking, and state management improvements.

* Add extensive logging for Tauri socket lifecycle and event listeners

This update improves troubleshooting and debugging by adding detailed logs throughout Tauri socket initialization, event listener setup, and error handling processes.

* Define global Tauri interface types in TypeScript

* Fix daemon service management and health communication issues

This comprehensive fix resolves two critical daemon-related issues:

1. **Launchctl "Input/output error" fix**:
   - Add intelligent state checking before service operations
   - Only load LaunchAgent if not already loaded
   - Treat "already running" as success, not failure
   - Add helper functions for cross-platform service state detection
   - Implement idempotent service start operations

2. **Daemon health communication fix**:
   - Add ALPHAHUMAN_DAEMON_INTERNAL environment variable to external service plist
   - Force external daemon to use file-based communication (daemon_state.json)
   - Implement file watching bridge in main app to emit Tauri events
   - Ensure frontend receives proper health updates from external daemon

**Key Changes**:
- Enhanced `start()` function with state checking across all platforms
- Added `is_service_loaded_macos()`, `is_service_enabled_linux()`, `is_task_exists_windows()`
- Modified macOS plist to include `ALPHAHUMAN_DAEMON_INTERNAL=false`
- Added `watch_daemon_health_file()` function for external daemon communication
- Updated daemon mode detection logic for cross-platform consistency
- Added comprehensive logging for service management operations

**Expected Results**:
- No more "Input/output error" when clicking daemon start button
- External daemon status shows "connected" instead of "disconnected"
- Idempotent service operations (safe to run multiple times)
- Single daemon process prevents resource conflicts
- Cross-platform daemon service reliability

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

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

* Add `ALPHAHUMAN_DAEMON_INTERNAL` env variable to configuration documentation

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-02-26 19:55:53 +04:00
Mega MindandGitHub 6356e3bdc4 Payment Flow resolved (#127)
* feat: implement payment success deep link handling and confirmation banner

- Added a new state to manage payment confirmation in BillingPanel.
- Implemented a deep link listener for payment success and cancellation events.
- Created functions to build payment success and cancel deep links.
- Displayed a confirmation banner upon successful payment, which auto-hides after 5 seconds.

* feat: enhance payment success handling in BillingPanel

- Updated the onPaymentSuccess function to be asynchronous.
- Added a call to fetch the current billing plan from the backend after a successful payment.
- Implemented error handling for the API call to ensure robustness.

* fix: improve payment success timeout handling in BillingPanel

- Introduced a timeoutRef to manage the auto-hide functionality of the payment confirmation banner.
- Ensured that the timeout is cleared when the component unmounts to prevent memory leaks.
2026-02-21 10:56:49 +04:00
c2ff8b693b feat/openclaw (#128)
* feat: add initial project structure and documentation

- Introduced the GNU General Public License (GPL) v3 in LICENSE file.
- Added MCP configuration in .claude/mcp.json for server integration.
- Created architecture documentation in docs/ARCHITECTURE.md outlining the platform's design and components.
- Defined MVP specifications in docs/MVP.md for the Telegram-based Agent Assistant.
- Established API reference for team management in docs/teams-api-reference.md.
- Set up basic HTML structure in public/index.html and added logo image in public/logo.png.

* feat: add initial project documentation and HTML structure

- Introduced CODE_OF_CONDUCT.md to establish community guidelines and standards for behavior.
- Created CONTRIBUTING.md to outline contribution process, development setup, and project conventions.
- Added SECURITY.md to define the security policy, supported versions, and reporting procedures for vulnerabilities.
- Established basic HTML structure in index.html for the application interface.

* chore: remove hello-python skill files

- Deleted skill.json and skill.py files for the Hello Python example runtime skill, as they are no longer needed in the project.

* feat: port tinyhuman agent runtime from ZeroClaw into Tauri backend

Port daemon supervisor, health registry, security (policy, secrets, audit,
pairing), agent traits, and config modules from ZeroClaw (MIT) into a new
tinyhuman/ module under src-tauri/src/. The daemon auto-starts on desktop
and shuts down gracefully on app exit via CancellationToken.

- health: global HealthRegistry with component tracking and JSON snapshots
- security/policy: SecurityPolicy with command validation, risk levels, rate limiting
- security/secrets: ChaCha20-Poly1305 SecretStore with legacy XOR migration
- security/audit: AuditLogger with JSON-line events and log rotation
- security/pairing: PairingGuard with brute-force protection and SHA-256 hashing
- security/traits: Sandbox trait + NoopSandbox
- config: minimal DaemonConfig with autonomy, reliability, secrets, audit sub-configs
- daemon: supervisor with health state writer emitting Tauri events
- agent/traits: Provider, Tool, Memory, Observer, RuntimeAdapter traits + Noop impls
- commands/tinyhuman: Tauri commands for health, security policy, encrypt/decrypt
- 185 inline unit tests across all modules
- README updated with custom inference/tunneling/memory positioning

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

* feat: update README to reflect AlphaHuman Mk1 branding and enhanced description

- Changed project title to "AlphaHuman Mk1" for clarity.
- Revised project description to emphasize user-friendly AI capabilities and the use of the Neocortex Mk1 model.
- Removed outdated sections on custom inference, tunneling, and memory, streamlining the content for better readability.

* update readme

* Port zeroclaw runtime into tinyhuman

* Replace CLI mentions with UI language

* Split gateway module into smaller units

* Split channels and config schema modules

* Fix tinyhuman build, tests, and tunnel integration

* feat(tinyhuman): add missing modules and ui-friendly services

* refactor: rename tinyhuman to alphahuman

* chore: remove bottom text from Welcome component

* feat(settings): add tauri command console

* feat(daemon): enhance daemon mode handling and integrate rustls with ring feature

* feat(settings): implement comprehensive configuration management in TauriCommandsPanel

* refactor(TauriCommandsPanel): streamline error handling and enhance async function usage

* feat(settings): add skill management functionality to TauriCommandsPanel

* style(TauriCommandsPanel): update input styles for improved readability and user experience

* feat(settings): add Skills and Agent Chat panels with navigation and integration management

* feat(settings): implement browser access management in SkillsPanel and enhance AgentChatPanel with local storage functionality

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 13:03:15 +04:00
ad9d001261 Feat/e2e appium mac2 (#116)
* Replace Playwright with Appium mac2 + WebDriverIO for E2E testing and add unit tests

- Remove Playwright config and old e2e/ directory
- Add WebDriverIO + Appium mac2 driver for true native macOS app testing
- Add wdio.conf.ts with platform-aware app path detection
- Add scripts/e2e.sh to manage Appium lifecycle under Node 24
- Add E2E smoke, navigation, and Tauri integration specs
- Add tsconfig.e2e.json for E2E test TypeScript config
- Add unit tests for components, store slices, selectors, services, and utils
- Add test infrastructure (setup.ts, MSW handlers, test-utils)
- Update vitest.config.ts with coverage thresholds and setup
- Update package.json scripts and dependencies

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

* Update skills submodule to latest

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

* Add complete E2E login flow test with mock server and onboarding walkthrough

Implements end-to-end testing of the full deep link auth → onboarding → home
flow using Appium mac2, WebDriverIO, and a local HTTP/WebSocket mock server.

Key additions:
- Mock server (port 18473) with all API routes + Socket.IO/Engine.IO WebSocket
  handler to prevent Rust SocketManager crashes
- Deep link helpers to trigger alphahuman:// URLs via macOS `open` command
- Element helpers using XPath selectors (not iOS predicates, which crash on
  mac2 with non-string attributes) and W3C pointer actions for clicking
  WKWebView content (standard element.click() doesn't trigger DOM handlers)
- Login flow spec: 11 tests covering auth deep link, API call verification,
  all 4 onboarding steps, and home page arrival
- Dedicated e2e-build.sh script with cargo clean + mock URL injection
- Cache cleanup and mock URL verification in e2e.sh

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

* Harden E2E tests and fix config issues from PR review

- e2e.sh: fail fast when dist bundle is missing instead of silently skipping
- setup.ts: add React type import for PersistGate mock annotation
- app-helpers: throw descriptive error on waitForAppReady timeout
- element-helpers: XPath quote escaping via concat() for special chars
- login-flow: fail explicitly when invite code step retry doesn't advance
- smoke.spec: replace no-op assertion with real session ID checks
- vite/vitest configs: remove unused @alphahuman/skill-types alias and
  dead path/fileURLToPath imports

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

* Add TypeScript types to E2E element helpers and configure ESLint for E2E files

Remove blanket eslint-disable/ts-nocheck from element-helpers.ts, add explicit
TypeScript types with ChainablePromiseElement import, and add ESLint config block
for test/e2e/ files using tsconfig.e2e.json with WebDriverIO/Mocha globals.

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

* Fix CI submodule checkout by adding XGH_TOKEN_READ secret

The skills submodule is a private repo that requires authentication.
The build and package-android workflows were missing the token that
package-and-publish already had.

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

* Fix CI: install skills deps, format with Prettier, lower coverage thresholds

- build.yml: add skills dependency install step and remove redundant
  frontend build (tauri build already runs build:app via beforeBuildCommand)
- Run Prettier --write on all 32 files with formatting drift
- Lower vitest coverage thresholds to match actual coverage (~20%)
  until test coverage improves organically

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

* Remove stray globals.d.ts that failed Prettier check

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

* Fix ESLint parsing for wdio.conf.ts and type remaining E2E helpers

- Add wdio.conf.ts to ESLint E2E config block so TS parser covers it
- Remove blanket eslint-disable/ts-nocheck from deep-link-helpers.ts
  and app-helpers.ts, add explicit TypeScript types

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

* Fix unnecessary regex escape in useSettingsNavigation

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

---------

Co-authored-by: Ghost Scripter <ghostscripter@zerolend.xyz>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 17:10:06 +05:30
069638a746 Replace Playwright with Appium mac2 + WebDriverIO E2E and add unit tests (#110)
* Replace Playwright with Appium mac2 + WebDriverIO for E2E testing and add unit tests

- Remove Playwright config and old e2e/ directory
- Add WebDriverIO + Appium mac2 driver for true native macOS app testing
- Add wdio.conf.ts with platform-aware app path detection
- Add scripts/e2e.sh to manage Appium lifecycle under Node 24
- Add E2E smoke, navigation, and Tauri integration specs
- Add tsconfig.e2e.json for E2E test TypeScript config
- Add unit tests for components, store slices, selectors, services, and utils
- Add test infrastructure (setup.ts, MSW handlers, test-utils)
- Update vitest.config.ts with coverage thresholds and setup
- Update package.json scripts and dependencies

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

* Update skills submodule to latest

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 00:53:43 +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
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 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 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 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
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
Cyrus GrayGitHubClaudeSteven Enamakelgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
9b3dfd0c2d Handling the status of skills (#23)
* chore: bump version to 0.20.0 [skip ci]

* revert: remove automatic skill dependency installation system

- Removed dependency installation loading state from SkillSetupWizard
- Reverted SkillRuntime dependency checking and installation methods
- Cleaned up dependency-related imports and event listeners
- Documented complete implementation in skills/todo.md for future work

The dependency installation system was causing unwanted loading states
when configuring skills. All functionality has been properly reverted
while preserving implementation details for future development.

* Refactor SkillManagementPanel to conditionally show action buttons based on connection status

- Added offline and setup-required states with informative messages
- Updated SkillSetupModal to use connection status for setup vs. manage mode
- Simplified mode logic for better UX and error handling in setup scenarios

* Update CLAUDE.md with new features, state slices, and code quality tools

- Document additions: Redux aiSlice, skillsSlice, teamSlice, and architecture updates
- Add ESLint, Prettier integrations with Husky hooks and GitHub workflows
- Update development commands from npm to yarn for consistency
- Expand key user groups and revise target audiences
- Include enhanced project structure, build outputs, and CI/CD updates

* fix: resolve TypeScript compilation error and enhance skill session synchronization

- Fix unused parameter error in SkillManager.getSkillLoadParams() by prefixing with underscore
- Add support for session parameter passing in SkillRuntime.load() method
- Implement skill reloading capability for post-authentication updates
- Ensure proper connection status synchronization between skill setup and UI display

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

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

* fix: change skill button text from 'Configure' to 'Manage' for connected skills

- Update SkillsGrid button text to dynamically show based on connection status
- Connected skills now show 'Manage' button instead of 'Configure'
- Provides clearer user indication of skill state
- Improves UX for authenticated skills like Telegram

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

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

* refactor: update documentation, download system and code formatting improvements

- Update Claude rules with improved project overview and command documentation
- Enhance download screen with better architecture detection and formatting
- Improve device detection utilities with multi-architecture support
- Add skills system troubleshooting documentation
- Code formatting improvements with better line breaks and spacing
- Optimize GitHub release asset parsing for platform-specific downloads

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

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

---------

Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-02-03 05:35:54 +05:30
Steven Enamakel 9d7472131f refactor: optimize asset parsing by using Maps for unique architecture links
- Introduced Maps to track unique architectures for Windows, macOS, Linux, and Android.
- Enhanced logic to prefer more specific filenames when adding links to the architecture arrays.
- Converted Maps back to arrays for final output, improving the efficiency of the asset parsing process.
2026-02-02 11:15:31 +05:30
Steven Enamakel b5bccd2de9 fixed ssues 2026-02-02 11:15:15 +05:30
Steven Enamakel eff58168af chore: update GitHub workflows for consistency and add changelog update job
- Standardized quotes in YAML files for better readability.
- Introduced a new workflow to automatically update the changelog on pushes to the develop branch, enhancing project documentation.
- Added architecture and README files to provide an overview of the project and its features.

These changes improve the maintainability and clarity of the project workflows and documentation.
2026-02-02 08:19:18 +05:30
Steven Enamakel 8da646a898 refactor: standardize cache keys in workflows
- Updated cache keys in both build and package-and-publish workflows to reference 'src-tauri/Cargo.lock' instead of using a wildcard pattern.
- Changed quotes from single to double for consistency across the workflows.

These changes enhance clarity and maintainability of the workflow configurations.
2026-02-02 07:37:54 +05:30
Steven EnamakelandGitHub 58969667d9 fix: add ESLint and Prettier configuration (#15)
* ran prettier

* Refactor ESLint configuration to use ES module syntax and enhance TypeScript support

- Converted CommonJS `require` statements to ES module `import` syntax for better compatibility with modern JavaScript.
- Added new paths to ignore in ESLint configuration to exclude additional directories.
- Updated TypeScript file patterns to be more specific, improving linting accuracy.
- Adjusted React hooks rules to allow certain patterns, enhancing flexibility in component design.

These changes improve the maintainability and clarity of the ESLint configuration, aligning it with current best practices.

* Refactor ESLint configuration to use ES module syntax and enhance TypeScript support

- Converted CommonJS `require` statements to ES module `import` syntax for better compatibility with modern JavaScript.
- Added new paths to ignore in ESLint configuration to exclude additional directories.
- Updated TypeScript file patterns to be more specific, improving linting accuracy.
- Introduced new React hooks rules and adjusted existing rules for better adherence to best practices.
- Made minor adjustments to import statements across various files for consistency and clarity.

These changes improve the overall linting setup and ensure better code quality across the project.

* Refactor import statements across multiple files for consistency

- Updated import statements to use TypeScript's `type` syntax for type imports, enhancing clarity and consistency across the codebase.
- Consolidated imports from the same module into single statements, improving readability and maintainability.

These changes streamline the code structure and align with best practices for TypeScript imports.

* Refactor import statements in memory manager for improved clarity

- Updated import statements to consolidate type imports and enhance readability.
- Removed redundant imports, streamlining the code structure in the memory manager file.

These changes align with best practices for TypeScript imports and improve maintainability.

* Add Husky for pre-commit and pre-push hooks

- Introduced Husky to manage Git hooks, enhancing the development workflow.
- Added pre-commit and pre-push scripts to enforce code formatting and linting checks before commits and pushes.
- Updated package.json to include Husky as a dependency and added a prepare script for setup.

These changes improve code quality and ensure adherence to formatting and linting standards during the development process.

* Refactor import statements for improved clarity and consistency

- Updated import statements across multiple files to consolidate type imports and enhance readability.
- Adjusted the order of imports for better organization and alignment with best practices in TypeScript.

These changes streamline the code structure and improve maintainability throughout the project.

* ran formatter

* Refactor import statements and improve code formatting across multiple files

- Consolidated and reordered import statements for better clarity and consistency in `SkillsGrid.tsx`, `SkillProvider.tsx`, and `index.ts`.
- Enhanced readability by adjusting formatting and removing redundant lines.
- These changes align with best practices for TypeScript imports and improve overall maintainability of the codebase.

* Refactor and optimize code in multiple components

- Removed redundant properties from the `STATUS_DISPLAY` object in `SkillsGrid.tsx` to streamline status handling.
- Consolidated import statements in `SettingsModal.tsx` for improved organization.
- Simplified state management and error handling in `BillingPanel.tsx`, enhancing performance and readability.
- Added `REHYDRATE` import to `index.ts` for better state persistence management.

These changes improve code clarity, maintainability, and align with best practices in TypeScript development.

* Consolidate import statements in SettingsModal.tsx for improved organization

* Add Prettier and ESLint checks to typecheck workflow

- Integrated a Prettier formatting check to ensure code style consistency.
- Added an ESLint step to enforce code quality and catch potential issues.
- These enhancements improve the development workflow by automating formatting and linting checks during the typecheck process.

* Add activeSkillDescription state to ConnectionsPanel and ConnectStep

- Introduced activeSkillDescription state in both ConnectionsPanel and ConnectStep components to store and manage skill descriptions.
- Updated the SkillSetupModal to accept skillDescription as a prop, enhancing the modal's functionality and data handling.

These changes improve the user experience by providing more detailed information about skills during the connection setup process.

* Enhance pre-push hook to include TypeScript compile check

- Added a TypeScript compile check to the pre-push script, ensuring that code compiles successfully before pushing.
- Updated error handling to include compile errors alongside formatting and linting issues, providing clearer feedback to developers.

These changes improve the reliability of the codebase by preventing non-compiling code from being pushed.

* Update GitHub workflows for pull request handling and publishing logic

- Modified the package-and-publish workflow to support pull request events, ensuring proper handling of branches.
- Adjusted the SHOULD_PUBLISH environment variable to differentiate between pull requests and main branch events.
- Updated the pr-protection workflow to focus solely on the main branch, removing references to the master branch.

These changes enhance the CI/CD process by refining branch handling and improving clarity in workflow conditions.
2026-02-02 06:24:50 +05:30
Steven EnamakelandGitHub cd9ebcd927 Feat/skills advanced (#12)
* Update skills submodule and enhance skill management interface

- Updated the skills submodule to the latest commit, ensuring alignment with project dependencies.
- Refactored the SkillSetupModal to conditionally render either the SkillSetupWizard or SkillManagementPanel based on the skill's setup status, improving user experience.
- Introduced the SkillManagementPanel component to manage connected skills, allowing users to view connection status and configurable options.
- Enhanced the package-and-publish workflow by updating the release name for better clarity.

These changes improve the overall functionality and maintainability of the skill management system.

* Remove skills catalog JSON and refactor skills loading mechanism

- Deleted the `skills-catalog.json` file from the public directory, as it is no longer needed.
- Updated the `SkillsGrid` component to load the skills catalog directly from the local skills directory via Rust, improving the skills management process.
- Enhanced the `SkillProvider` to discover skills from the local directory and sync from GitHub if no local skills are found, streamlining the skill lifecycle management.

These changes improve the overall efficiency and maintainability of the skill management system.

* Update skills submodule and enhance skill management features

- Updated the skills submodule to the latest commit, ensuring alignment with project dependencies.
- Modified the `ConnectionIndicator` component's description for clarity.
- Refactored the `SkillsGrid` component to improve type definitions and streamline skill processing, including the addition of a `hasSetup` property for better skill management.
- Enhanced the `SkillManagementPanel` to conditionally render the "Re-run Setup" button based on the presence of setup hooks.
- Updated the `SkillSetupModal` to handle skills without setup hooks more effectively.
- Implemented a background update check in the `SkillProvider` to ensure skills are kept up to date with the latest changes from GitHub.

These changes improve the overall functionality and maintainability of the skill management system.

* Enhance skill management interface and update dependencies

- Added new CSS styles for the skills table, improving layout and user experience.
- Updated the SkillsGrid component to utilize new props and improve type definitions.
- Enhanced the SkillSetupModal to include skill descriptions for better context.
- Updated the Home component to include a call-to-action for upgrading to premium plans.
- Added new entries to .gitignore for mypy and ruff caches to streamline development.

These changes improve the overall functionality and maintainability of the skill management system.
2026-02-01 09:26:32 +05:30
e2833f27e0 Adopt supermemory patterns into AI memory system (#11)
* Add submodule for skills and initialize skills repository

- Created a new .gitmodules file to include the skills submodule.
- Initialized the skills submodule with a commit reference, linking to the skills repository on GitHub.

This update integrates the skills component into the project, enhancing the AI system's capabilities.

* Implement subscription billing UI with Stripe and Coinbase integration

Replace the placeholder BillingPanel with a working subscription billing
interface. Users can view their current plan and token usage, upgrade via
Stripe (card) or Coinbase (crypto, annual-only), and manage subscriptions
through Stripe's Customer Portal. Adds billing API service and types.

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

* Add unified skill system with core type definitions and management features

- Introduced a comprehensive skill system that includes lifecycle management, tool definitions, state management, entity extensions, and intelligence rules.
- Implemented a skill state manager using Zustand for managing skill-specific state.
- Created an entity extension registry for registering new entity and relation types.
- Developed an intelligence engine for evaluating rules and executing actions based on events.
- Established a unified tool registry to streamline tool management across various integrations.

This update enhances the AI system's capabilities by providing a robust framework for skill management and interaction.

* Add billing helpers and refactor BillingPanel for improved plan management

- Introduced a new `billingHelpers.ts` file containing plan metadata, utility functions for plan management, and pricing calculations.
- Refactored `BillingPanel` to utilize the new billing helpers, streamlining the display of plan information and pricing.
- Added unit tests for billing helpers to ensure functionality and correctness of plan-related operations.

This update enhances the billing system's structure and maintainability, providing a clearer separation of concerns for plan management.

* Enhance skill management system with new features and integrations

- Added path aliases in `tsconfig.json` for improved module resolution.
- Updated `vite.config.ts` to include skill types path for better integration.
- Integrated `SkillsProvider` into the application to manage skill lifecycle, including registration and activation of virtual skills like Telegram, bulk operations, and reminders.
- Implemented a unified skill system with a new orchestrator for managing skill states and tool definitions.
- Enhanced bundled skill loading mechanism to utilize a unified skill system, improving the overall architecture and maintainability.

This update strengthens the skill management framework, enabling better organization and functionality within the AI system.

* Adopt supermemory patterns into AI memory system

Port 5 patterns from claude-supermemory reference implementation to fill
gaps in the existing memory pipeline:

1. Tool observation compression — compress verbose tool outputs before
   compaction summarization and memory flush, saving tokens and signal
2. Categorized memory context — render memory as structured XML with
   profile facts, recent context, and search results with dedup
3. Relative timestamps — surface updated_at from FTS chunks and display
   human-readable relative times in search results
4. Memory deduplication on write — filter duplicate facts before appending
   to memory files during flush
5. Auto-capture on session end — lightweight memory flush for short sessions
   that never trigger compaction

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

* Refactor TelegramMCPServer to delegate entirely to unified tool registry

The server was still maintaining its own tool map with 80+ handler entries
and legacy fallback paths. Now it delegates all tool listing and execution
to skillOrchestrator.toolRegistry, matching the architecture established
in the skills system. Updated tests to mock the unified registry instead
of individual tool handlers.

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

* Consolidate skill system and migrate Telegram state to Zustand

Remove legacy skill implementations (src/lib/ai/skills/, src/lib/mcp/skills/)
and consolidate everything into the unified skill orchestrator at
src/lib/skills/. Add runtime skill subprocess support with stdio JSON-RPC
transport for Python/Node/Deno skills.

Key changes:
- Delete old SkillRegistry, installer, loader, runner, frontmatter parser
- Delete MCP skills layer (bulk.ts, reminders.ts, index.ts) and move
  skill definitions to src/lib/skills/definitions/
- Add RuntimeHost and StdioTransport for subprocess-based skills
- Add shell plugin (tauri-plugin-shell) with scoped permissions for
  python3, node, deno, npx executables
- Extend orchestrator with runtime skill lifecycle (spawn, load, activate,
  tick, deactivate, shutdown) and reverse RPC handling
- Add overrideTier parameter to enforceRateLimit for unified registry
- Decouple prompt system from old SkillEntry type
- Remove old SkillRegistry from AIProvider
- Migrate Telegram state functions from Redux dispatch to Zustand store
- Add Telegram Zustand store, selectors, actions, migration utilities
- Add hello-python example skill

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

* Migrate Telegram state from Redux to Zustand

Replace the Redux telegram slice with a Zustand store using immer middleware.
All 49 reducers ported as store methods, 5 thunks converted to standalone async
functions, and 30+ selectors migrated to Zustand hooks and plain functions.
Updates all consumers: services, API helpers, tool adapters, and UI components.

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

* Refactor skill management and remove Telegram components

- Updated TODO.md to include integration of the payments flow.
- Refactored App.tsx to remove unused TelegramProvider and SkillsProvider, streamlining the component structure.
- Deleted obsolete test fixtures related to Telegram state and skills, including mcpContext.ts, rootState.ts, telegramState.ts, and TelegramConnection components.
- Removed legacy skill loading and entity extension files, consolidating the skill system into a unified orchestrator.
- Updated documentation to reflect changes in skill management and structure.

This commit enhances the overall architecture by eliminating deprecated components and improving the skill management framework.

* Update skills submodule to latest commit 22e42c9, ensuring alignment with the current project structure and dependencies.

* Integrate Python skills system with JSON-RPC IPC and interactive setup UI

Wire the Python skills runtime into the Tauri frontend via the shell plugin,
communicating over JSON-RPC 2.0 stdin/stdout. Replace "Coming Soon" Telegram
entries in onboarding and settings with a live setup wizard that drives the
skill's multi-step authentication flow.

- Phase 0: Create skill.py SkillDefinition for Telegram, update __main__.py
  to use SkillServer (MCP preserved via --mcp flag)
- Phase 1: Add skills lib (types, transport, runtime, manager, paths),
  Redux skillsSlice with persistence, setup UI components
  (SetupFormRenderer, SkillSetupWizard, SkillSetupModal)
- Phase 2: Add SkillProvider to provider chain, Rust skill data I/O commands
- Phase 3: Tool bridge for AI registry integration in AIProvider

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

* Update skill management and billing helpers

- Updated skills submodule to the latest commit, ensuring alignment with project dependencies.
- Refactored SkillSetupWizard to ensure the skill is running before starting the setup flow, improving user experience.
- Adjusted billingHelpers test to import PlanTier from the correct path, enhancing type safety.
- Modified embedQuery method in NullEmbeddingProvider to accept a parameter, improving method signature clarity.

These changes enhance the overall functionality and maintainability of the skill management and billing systems.

* Enhance deep link handling and skill setup error management

- Added a note in CLAUDE.md regarding the requirement to run the .app for deep link testing on macOS.
- Introduced a simulation feature for deep links in development mode within desktopDeepLinkListener.ts.
- Updated SkillSetupWizard to throw descriptive errors if a skill fails to start, improving error handling and user feedback.

These changes improve the development experience and robustness of the skill setup process.

* Add Python sidecar setup script and update dependencies

- Introduced a new script `setup-python-sidecar.mjs` to symlink the system Python to the Tauri runtime for local development.
- Updated the `package.json` to include a new npm script for setting up the Python sidecar.
- Changed the version specification for `@tauri-apps/plugin-shell` from `^2` to `~2` for more controlled updates.
- Updated the `tauri.conf.json` to include the new Python sidecar in the external binaries list.
- Updated the skills submodule to the latest commit for alignment with project dependencies.

These changes enhance the development workflow for Python skills integration and improve dependency management.

* Update skills submodule to latest commit and modify TODO.md

- Updated the skills submodule to the latest commit for better alignment with project dependencies.
- Added a note in TODO.md to skip the connect account page and redirect to the home page during the payment flow integration.

These changes ensure the project remains up-to-date and clarify the next steps for the payment flow implementation.

* Refactor Python sidecar integration and enhance skill runtime management

- Updated `setup-python-sidecar.mjs` to symlink system Python to `src-tauri/runtime-skill-python-<target>` for local development.
- Introduced new commands in Rust for retrieving the current working directory and virtual environment site-packages for Python skills.
- Modified `SkillTransport` to support spawning skills using the sidecar for bundled runtimes, improving the execution flow.
- Updated `tauri.conf.json` to reflect changes in external binaries and added documentation for the Python sidecar setup.
- Adjusted skill management to ensure proper error handling and logging during skill execution.

These changes streamline the development process for Python skills and enhance the overall robustness of the skill management system.

* Enhance skill connection indicators and logging

- Added a new `TelegramConnectionIndicator` component to display real-time connection status for the Telegram skill.
- Integrated `useSkillConnectionStatus` hook across various components to provide unified connection status for skills.
- Updated `ConnectionsPanel` and `ConnectStep` to utilize the new connection status logic, improving user feedback during skill setup.
- Enhanced logging in `SocketService` and `SocketProvider` for better debugging and error tracking.
- Introduced utility functions for sanitizing sensitive data before logging, ensuring security during error handling.

These changes improve the user experience by providing clear connection statuses and enhance the robustness of the logging system.

* Remove console logging from SocketProvider for cleaner code

- Eliminated console log statements related to socket connection and disconnection events, as well as error handling, to streamline the codebase.
- This change enhances the maintainability of the SocketProvider component by reducing unnecessary logging clutter.

* Enhance SocketService with MCP transport and tool management

- Introduced `SocketIOMCPTransportImpl` for handling client-server MCP requests, improving communication efficiency.
- Updated the `mcp:listTools` event to aggregate tools from all ready skills, providing a comprehensive tool list in response to requests.
- Enhanced the `mcp:toolCall` event to validate tool name formats and handle tool calls asynchronously, improving error handling and logging.
- Added a method to retrieve the MCP transport instance, enhancing the SocketService's functionality.

These changes improve the robustness and usability of the SocketService in managing MCP interactions.

* Remove logger service and replace with debug package in SocketService

- Deleted the custom logger implementation in favor of using the `debug` package for logging in the SocketService.
- Updated the SocketService to enable logging based on the development environment, improving debugging capabilities.

These changes streamline the logging process and enhance the maintainability of the codebase.

* Add SkillsGrid component to enhance skill management interface

- Introduced a new SkillsGrid component to display a grid of skills with connection statuses and setup options.
- Implemented skill icons and status badges for better visual representation of skill states.
- Integrated skills catalog loading functionality to dynamically fetch and display available skills.
- Updated Home component to include the SkillsGrid, improving user interaction with skills.

These changes enhance the user experience by providing a clear and interactive skills management interface.

* Update skills submodule and add skills catalog JSON

- Updated the skills submodule to the latest commit for improved functionality.
- Introduced a new `skills-catalog.json` file containing detailed descriptions and configurations for various skills, enhancing the skills management system.
- Enhanced the `SkillsGrid` component to validate skill names, ensuring they do not contain underscores, which are reserved for tool namespacing.

These changes improve the robustness of the skills management interface and ensure better adherence to naming conventions.

* Update skills submodule and modify tool name formatting in SocketService

- Updated the skills submodule to the latest commit for improved functionality.
- Changed the tool name formatting in SocketService to use double underscores instead of single underscores, enhancing clarity in tool identification.

These changes ensure better alignment with naming conventions and improve the overall functionality of the skills management system.

* Add DownloadScreen component and update Welcome page

- Introduced a new DownloadScreen component to provide users with platform-specific download options for the application.
- Updated the Welcome page to conditionally display the DownloadScreen for web users while showing the Telegram login button for Tauri users.
- Modified the greeting text and adjusted layout for improved user experience.

These changes enhance the onboarding process by offering clear download options based on the user's platform.

* Enhance AppRoutes and Welcome component for web detection

- Added logic in AppRoutes to determine if the application is running on the web or Tauri, using the `isTauri` utility.
- Updated the Welcome component to accept a prop indicating the platform, allowing for tailored rendering based on the environment.
- This change improves the onboarding experience by providing a more context-aware interface for users depending on their platform.

* Refactor SkillsGrid and Home components for improved clarity

- Removed unused Telegram and Gmail connection indicators from the Home component to streamline the interface.
- Simplified the SkillCard function in SkillsGrid by renaming the description parameter for better clarity.
- These changes enhance code readability and maintainability by eliminating unnecessary components and improving parameter naming.

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 06:44:53 +05:30
Steven Enamakel c46cf127e9 Update deep link scheme from outsourced:// to alphahuman:// for improved desktop authentication flow
- Changed all references of the deep link scheme in documentation and code to `alphahuman://` to align with the new branding.
- Updated the Telegram login flow documentation to reflect the new deep link handling.
- Adjusted various files to ensure consistency in the authentication process across platforms.

This update enhances the clarity and branding of the authentication flow for the desktop application.
2026-01-30 11:27:01 +05:30
M3gA-Mind 03f4af637f Add Telegram login documentation and enhance desktop integration
- Introduced a new documentation file detailing the Telegram login flow for the desktop client, including system-browser authentication and deep link handling.
- Updated the TelegramLoginButton component to initiate the login process using the backend URL for Tauri desktop applications.
- Enhanced deep link listener to validate incoming URLs and manage session tokens more effectively.
- Refactored utility functions to streamline Tauri environment checks and improve code clarity.

This update improves the onboarding experience for desktop users and provides comprehensive guidance on implementing Telegram login functionality.
2026-01-30 03:13:49 +05:30
M3gA-Mind 632ecc05b7 Add comprehensive documentation for application architecture, state management, services layer, MCP system, pages and routing, components, and providers
- Introduced detailed architecture overview outlining system components and entry points.
- Documented state management using Redux Toolkit and Redux-Persist, including store configuration and slice structures.
- Described services layer architecture, detailing API client, socket service, and MTProto service functionalities.
- Explained the Model Context Protocol (MCP) system, including tool categories and implementation examples.
- Outlined routing structure and page components, emphasizing protected and public routes.
- Organized reusable components by feature, detailing their structure and usage.
- Provided insights into provider management for service lifecycle and shared state.

This documentation enhances understanding of the application's structure and improves onboarding for new developers, ensuring clarity in the system's design and functionality.
2026-01-29 21:21:07 +05:30
Steven EnamakelandGitHub 520bfdb74c Fix/telegram login (#4)
* Add UserProvider to App component and enhance user data fetching logic

- Integrated UserProvider into the App component to manage user state.
- Updated UserProvider to fetch current user data on token availability and handle token expiration by clearing the token on fetch failure.
- Improved user data fetching logic for better error handling and user experience.

* Enhance Telegram connection handling and error management

- Added logic to handle Telegram account mismatch, providing user feedback and resetting connection state.
- Improved user verification during authentication to ensure the logged-in account matches the Telegram account.
- Refactored connection status checks and error handling for better user experience.
- Introduced a method to clear session and disconnect when account mismatch occurs.
- Updated polling mechanism for authentication status to ensure timely updates.

This update improves the robustness of the Telegram connection process and enhances user feedback during authentication failures.

* ran prettier

* Refactor socket and auth state management for user-specific handling

- Updated socket state management to support multiple users by introducing user-specific selectors and actions.
- Refactored connection status handling in the socket service to dispatch user-specific status updates.
- Enhanced onboarding state management to track completion per user, allowing for more granular control.
- Introduced new selectors for socket and auth states to improve readability and maintainability.
- Updated relevant components to utilize the new user-specific state management.

This update improves the application's ability to handle multiple users and enhances the overall user experience during onboarding and socket connections.

* Enhance MTProto client session management and introduce user-specific session handling

- Updated the MTProtoService to manage sessions per user by storing session data under a user-specific key.
- Modified the initialize method to accept a userId parameter, allowing for user-specific session initialization and management.
- Improved session loading and saving logic to ensure proper handling of user sessions.
- Added a utility function to generate session keys based on userId for better maintainability.

This update enhances the application's ability to handle multiple user sessions effectively.

* Refactor Telegram state management for user-specific handling

- Introduced user-specific state management in the Telegram store, allowing for better handling of multiple users.
- Updated selectors to retrieve state based on the current user, improving data encapsulation and reducing global state dependencies.
- Enhanced reducers and thunks to ensure actions are dispatched with user context, maintaining user-specific data integrity.
- Modified persistence configuration to store Telegram state scoped by user, ensuring isolated state management.

This update significantly improves the application's ability to manage multiple user sessions effectively and enhances overall user experience.

* Enhance MTProtoService connection handling with user-specific initialization

- Updated the checkConnection method to accept an optional userId parameter, allowing for user-specific connection initialization.
- Modified the connection logic to ensure proper initialization only occurs when a userId is provided, improving session management.
- Refactored related thunks to use a consistent naming convention for userId parameters, enhancing code clarity.

This update improves the handling of user sessions in the MTProtoService, aligning with recent enhancements in user-specific state management.

* Refactor Telegram connection handling for user-specific management

- Updated the TelegramConnectionModal to utilize user-specific identifiers for connection status and authentication processes, enhancing session management.
- Refactored related components and selectors to ensure userId is consistently passed and utilized, improving clarity and maintainability.
- Enhanced the ConnectionsPanel and ConnectStep to check for saved sessions based on userId, allowing for better handling of multiple user connections.

This update significantly improves the application's ability to manage user-specific Telegram connections and enhances the overall user experience.

* Refactor Telegram connection logic to simplify session management

- Removed unnecessary userId checks and localStorage interactions from ConnectionsPanel and ConnectStep components, streamlining the connection status determination.
- Updated MTProtoService to manage session data through Redux instead of localStorage, enhancing consistency and maintainability.
- Improved session loading and saving logic to focus solely on Redux state, ensuring better integration with user-specific session handling.

This update enhances the clarity and efficiency of the Telegram connection management process, aligning with recent improvements in user-specific state management.

* Update CLAUDE.md to clarify localStorage usage and emphasize Redux for state management

- Revised documentation to discourage the use of localStorage and sessionStorage for app state, advocating for Redux and Redux Persist instead.
- Added guidelines for removing existing localStorage usage and migrating relevant data to Redux.
- Updated service layer documentation to reflect changes in session management, specifying that session data is now stored in Redux rather than localStorage.
- Enhanced clarity on deep link handling and the prevention of infinite reload loops.

This update aligns with recent improvements in user-specific state management and reinforces best practices for state handling.

* Enhance onboarding process with error handling and API integration

- Updated the Onboarding component to include an API call for marking onboarding as complete, with error handling to provide user feedback.
- Refactored the GetStartedStep component to support asynchronous completion handling, including loading state and error messages.
- Introduced a new onboardingComplete method in the userApi service to facilitate the onboarding completion process.

This update improves the user experience during onboarding by ensuring proper error management and feedback.

* Enhance TelegramConnectionModal with socket connection management and improved initialization flow

- Integrated socket connection handling in the TelegramConnectionModal to ensure the socket is connected when the modal opens, enhancing real-time features.
- Refactored the initialization logic to streamline the connection process, including user verification and error handling.
- Introduced a reference to track the QR code flow state, preventing multiple initiations and improving user experience during authentication.

This update improves the reliability of the Telegram connection process and enhances user feedback during the onboarding experience.

* Refactor Telegram connection checks for improved logic consistency

- Updated the ConnectionsPanel and ConnectStep components to refine the logic for determining if a Telegram connection is established, ensuring that both session string and authentication status are required for a valid connection.
- Simplified className definitions in the UI components for better readability and maintainability.

This update enhances the clarity of connection status checks and improves the overall user experience during the onboarding process.

* Refactor Telegram authentication flow and improve error handling

- Simplified the TelegramLoginButton component by removing complex authentication logic and replacing it with a direct link to the Telegram bot for login.
- Enhanced the Login page to consume a login token from the URL, providing better error handling and user feedback during the authentication process.
- Introduced a new API service for consuming login tokens, ensuring secure retrieval of JWT tokens from the backend.

This update streamlines the authentication experience and improves error management, enhancing overall user experience during login.
2026-01-29 07:38:34 +05:30
Steven Enamakel 4cb8a83dd6 Add Telegram integration with MTProto service and Redux slice
- Introduced MTProtoService for managing Telegram client initialization, connection, and message handling.
- Created telegramSlice for Redux state management, including connection and authentication states, user data, chats, messages, and threads.
- Implemented asynchronous actions for initializing the Telegram client, connecting, checking authentication status, and fetching chats and messages.
- Enhanced configuration utility to include Telegram API credentials for improved integration.

These changes establish a robust foundation for Telegram functionality within the application, enhancing user experience and state management.
2026-01-28 05:14:29 +05:30
Steven Enamakel 06356b81f4 Refactor App component and enhance user data handling
- Removed UserProvider from the App component, simplifying the structure and relying on the useUser hook for user data management.
- Updated Home component to utilize the useUser hook for fetching user information, improving user experience by displaying the user's first name.
- Refactored Redux store configuration to conditionally include redux-logger in development mode, enhancing debugging capabilities.
- Introduced IS_DEV constant in the config utility to streamline environment checks.

These changes improve the application's architecture by enhancing user data management and refining the development experience.
2026-01-28 04:45:11 +05:30
Steven Enamakel ac55221e37 Enhance desktop deep link handling for Tauri environment
- Introduced a utility function to check if the application is running in a Tauri desktop environment.
- Updated the deep link URL handling to use Tauri's invoke method for token exchange, with a fallback to the fetch API for browser environments.
- Added conditional setup for deep link listeners to ensure they are only active in Tauri, improving code clarity and functionality.

These changes improve the application's adaptability to different environments and streamline the authentication process for desktop users.
2026-01-28 04:32:49 +05:30
Steven Enamakel f0a49fc167 Refactor authentication flow to remove localStorage dependencies and improve state management
- Removed localStorage interactions for session tokens and user data in the TelegramLoginButton and authSlice, enhancing security and simplifying the codebase.
- Updated the desktop deep link listener to eliminate localStorage usage for user data, streamlining the authentication process.
- Adjusted the Redux store configuration to remove custom storage for backward compatibility, focusing on a cleaner state management approach.

These changes enhance the application's architecture by centralizing state management and improving maintainability.
2026-01-28 04:31:23 +05:30
Steven Enamakel 4323c4812c Integrate Redux for state management and refactor authentication flow
- Added Redux Toolkit for managing authentication state, replacing Zustand for token handling.
- Implemented authSlice for token management, including setting and clearing tokens with localStorage synchronization.
- Refactored components (Login, Home, TelegramLoginButton) to utilize Redux for token management, enhancing state consistency.
- Updated App component to include Redux Provider and PersistGate for state persistence.
- Removed Zustand-based authStore and socketStore, streamlining the state management approach.

These changes improve the application's architecture by centralizing state management with Redux, enhancing maintainability and scalability.
2026-01-28 04:29:06 +05:30
Steven Enamakel 781439842b Implement Zustand for authentication state management and update components
- Introduced Zustand for managing authentication state, including token storage and user session handling.
- Updated TelegramLoginButton and Home components to utilize the new auth store for setting and clearing tokens.
- Enhanced the desktop deep link listener to store session tokens in the Zustand store, ensuring consistent state management.
- Refactored localStorage interactions for session tokens to improve backward compatibility.

These changes streamline the authentication process and improve state management across the application.
2026-01-28 04:14:07 +05:30
Steven Enamakel 0023795e13 Add TelegramLoginButton component and integrate into Welcome page
- Introduced a new TelegramLoginButton component to handle user authentication via Telegram.
- Replaced the previous Telegram login button implementation in the Welcome component with the new TelegramLoginButton for improved modularity and code clarity.
- Updated configuration to include TELEGRAM_BOT_ID for seamless integration with the Telegram authentication flow.

These changes enhance the user experience by providing a dedicated component for Telegram login, streamlining the authentication process.
2026-01-28 04:07:44 +05:30
Steven Enamakel 8b5cea7164 Merge remote-tracking branch 'origin/feat/login-web-to-desktop' into feat/theme 2026-01-28 02:40:25 +05:30
M3gA-MindandClaude Opus 4.5 4f05041e05 Fix deep link auth flow with Rust token exchange and platform workarounds
Replace browser fetch() with Rust invoke() for token exchange to bypass
CORS restrictions. Fix deep link listener by removing premature __TAURI__
guard (not available at module load), using lazy dynamic import instead.
Add deepLinkHandled localStorage flag to prevent infinite reload loops
from getCurrent() re-delivering the same URL after navigation. Add
backend auth implementation guide and platform-specific deep link docs.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 02:25:55 +05:30
Steven Enamakel cb0cf66649 Refactor URL opening logic and update imports for improved modularity
- Moved the openUrl function to a new utility file for better organization and reusability across components.
- Updated import paths in Home and GetStartedStep components to reflect the new location of the openUrl function.
- Simplified error handling in the handleStartCooking function by removing unnecessary try-catch block.

These changes enhance code maintainability and streamline the process of opening URLs in the application.
2026-01-28 01:55:01 +05:30
Steven Enamakel 9ebf724651 Add environment configuration and update styles for dark mode
- Created a new .env file to store the Telegram bot username.
- Added new background images (bg-dark.png, bg.jpg, bg.png) for enhanced visuals.
- Updated App.css and index.css to implement dark mode styles, including color adjustments and background changes.
- Modified Home.tsx to include a button that opens the Telegram bot link.
- Enhanced the configuration file to include the Telegram bot username.

This update improves the user interface with a dark mode theme and integrates Telegram functionality for better user engagement.
2026-01-28 00:02:06 +05:30
M3gA-Mind 098cf17d44 Add deep link functionality and backend integration for authentication
- Introduced @tauri-apps/plugin-deep-link for handling deep link events
- Implemented setup for deep link listener in main application entry
- Enhanced Login page to support Telegram authentication via deep links
- Created utility functions for building and handling deep links
- Added configuration for backend URL management
- Updated Tauri configuration to support deep link plugin

This update enhances the user experience by allowing seamless transitions between web and desktop applications through deep linking.
2026-01-27 22:37:36 +05:30