* 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>
* 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>
* chore: bump version to 0.38.0 [skip ci]
* chore: bump version to 0.39.0 [skip ci]
* chore: bump version to 0.40.0 [skip ci]
* chore: bump version to 0.41.0 [skip ci]
* chore: bump version to 0.42.0 [skip ci]
* fix: update skills submodule with Telegram timeout fixes
Update skills submodule to include comprehensive fixes for Telegram skill setup timeout issues:
### Skills Changes (ec04185):
- Increased Telegram authentication timeout from 15s to 45s
- Added progressive timeout warnings with troubleshooting guidance
- Implemented automatic retry mechanism for timeout and connection issues
- Enhanced error reporting with specific, actionable messages
- Added real-time progress indicators during authentication
- Improved TDLib connectivity validation and database recovery
- Added 'closing' auth state support for better state handling
### Impact:
- Resolves "onSetupSubmit() timed out after 30s" errors
- Provides better user experience with real-time feedback
- Automatic recovery from temporary network and database issues
- Clear troubleshooting guidance when issues occur
This update significantly improves the reliability of Telegram skill setup
and reduces setup failures caused by timeout issues.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
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>
* chore: bump version to 0.38.0 [skip ci]
* chore: bump version to 0.39.0 [skip ci]
* chore: bump version to 0.40.0 [skip ci]
* chore: bump version to 0.41.0 [skip ci]
* chore: bump version to 0.42.0 [skip ci]
* feat: implement TDLib client initialization and ensure parameters are set
- Added early TDLib client startup in `run` function to prepare for skill execution.
- Introduced `ensureInitialized` method in QuickJS to create the client and set parameters atomically.
- Enhanced `TdLibManager` with `ensure_initialized` method to streamline client creation and parameter handling.
- Improved logging for client creation and parameter setting processes, aiding in debugging and monitoring.
* feat: reactive TDLib param auto-send and query initial auth state
- Rust worker loop auto-sends setTdlibParameters when TDLib requests them
- Add getAuthorizationState call after update loop starts in TS skill
- Add verbose logging to TDLib manager for debugging
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* update skill
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Implement data synchronization feature in SkillManagementPanel
- Added a new `handleSync` function to trigger manual synchronization for skills, enhancing user control over data updates.
- Integrated skill state management to track synchronization progress, errors, and completion status.
- Updated the UI to display synchronization status, including progress indicators and error messages, improving user feedback during sync operations.
- Enhanced the SkillManager and SkillRuntime classes to support the new sync functionality, ensuring proper handling of sync requests and lifecycle hooks.
Updated subproject commit reference in the skills directory.
* Implement Conversations UI with two-panel thread layout and resizable sidebar
Add full Conversations feature: thread types, API service, Redux slice, and a
two-panel page with a draggable resize handle. Uncomment Conversations nav item
in MiniSidebar and enable prefix-based active state matching.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add Intelligence page and integrate intelligence stats hook
- Introduced a new Intelligence page with a skill management interface, allowing users to view and manage skills.
- Implemented the `useIntelligenceStats` hook to fetch and display session statistics, memory files, and entity counts.
- Enhanced the SkillsGrid component to utilize shared skill icons and status displays, improving UI consistency.
- Added functionality for skill synchronization and management, including action buttons for skill setup and syncing.
- Updated the Conversations page to support sending messages with optimistic UI updates, enhancing user experience.
This commit lays the groundwork for a more interactive and informative intelligence management feature.
* Update subproject commit reference in skills directory and enhance fetch handling in bootstrap.js
- Updated the subproject commit reference in the skills directory to the latest version.
- Modified the fetch implementation in bootstrap.js to ensure options are sent as a JSON string and to parse the JSON response, improving data handling and error management.
* Update subproject commit reference in skills directory and comment out Conversations nav item in MiniSidebar
- Updated the subproject commit reference in the skills directory to the latest version.
- Commented out the Conversations navigation item in MiniSidebar for future implementation.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Refactor skill management and enhance TDLib client handling
- Updated skill registration logic to retain skills with Error and Stopped statuses for better UI feedback and restart capability.
- Improved TDLib client management by introducing a flag to prevent concurrent client creation during destruction, ensuring proper resource cleanup and database lock handling.
- Enhanced error handling in TDLib client destruction process to ensure graceful shutdown and resource release.
* Update skills subproject reference and enhance connection status handling
- Updated the subproject commit reference in the skills directory.
- Modified connection status checks in `SkillsGrid.tsx` and `hooks.ts` to account for 'stopping' state, improving the accuracy of skill status reporting.
- Added handling for 'stopped' and 'pending' statuses in `SkillProvider.tsx` to reset UI state appropriately.
* Update skills subproject commit reference to latest version
- Updated the subproject commit reference in the skills directory.
- Standardized quotation marks in the package-and-publish.yml workflow for consistency.
- Added token configuration for GitHub actions to enhance security.
* Update submodule URL for skills and refresh commit reference
- Changed the submodule URL for the "skills" repository to use SSH instead of HTTPS.
- Updated the subproject commit reference in the skills directory to the latest commit.
* Update subproject commit reference for skills to latest version b5d138f
* updated skills
* Update ping interval and refactor context usage in QjsSkillInstance
- Reduced the PING_INTERVAL from 60 seconds to 5 seconds for more frequent pings.
- Refactored the context parameter in lifecycle calls and message handling functions to use the runtime context, improving consistency and performance.
- Updated subproject commit reference for skills to the latest version.
- Simplified JSON formatting in `.mcp.json` for better readability.
- Updated API reference documentation for team management endpoints to use consistent JSON formatting.
- Enhanced code readability in various components by standardizing formatting and removing unnecessary line breaks.
- Improved user interface elements in TeamInvitesPanel and TeamManagementPanel for better clarity and consistency.
* Refactor import statement in store configuration for clarity
- Combined the import of `configureStore` and `Middleware` from '@reduxjs/toolkit' into a single line for improved readability.
* Add invite codes feature with onboarding step and dedicated page
Implement frontend for the invite codes system: users get 5 invite codes
to share, can redeem codes for free credits, and new users are prompted
during onboarding (step 1) to enter an invite code.
- Add invite types, API service, and Redux slice
- Add InviteCodeStep as first onboarding step (skip-able)
- Add /invites page with redeem input and code list with copy buttons
- Add "Invite Friends" nav item to sidebar
- Update UserReferral interface to match backend PR #418
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update reqwest dependency to enable HTTP/2 support and switch to rustls TLS in network requests
- Modified Cargo.toml to include the "http2" feature for reqwest.
- Updated network request implementations in bridge and ops_net modules to use rustls TLS instead of native TLS for improved security and compatibility.
* Update event loop to handle async tool calls and improve message processing
- Introduced a `PendingToolCall` struct to manage in-flight async tool calls.
- Enhanced the event loop to check for completion of async tool calls and handle timeouts.
- Updated message handling to support async tool execution, allowing the event loop to process other messages concurrently.
- Refactored `handle_tool_call` to differentiate between synchronous and asynchronous tool results.
- Modified JavaScript fetch functions to use async/await for improved readability and performance.
* Enhance skill instance with initial ping verification and job driving
- Added an immediate ping to verify the connection health during skill execution, logging the result or any errors encountered.
- Updated the event loop to drive jobs asynchronously after the initial ping check.
- Removed unnecessary logging statements from the network operations for cleaner output.
* Update subproject commit reference in skills directory
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: bump version to 0.34.0 [skip ci]
* chore: bump version to 0.35.0 [skip ci]
* 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
* chore: bump version to 0.36.0 [skip ci]
* chore: bump version to 0.37.0 [skip ci]
* 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>
---------
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>