mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-30 23:14:37 +00:00
6356e3bdc45cc6dc6710ad8a532fa9b842d02a36
166
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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. |
||
|
|
71aeb55f2e |
feat: redesign Tauri Command Console with premium UI/UX (#135)
* 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.45.0 [skip ci] * chore: bump version to 0.46.0 [skip ci] * chore: bump version to 0.47.0 * feat: comprehensive redesign of Tauri Command Console Transform 845-line admin interface into premium crypto-styled experience: - Complete architectural redesign with 6 logical categories - Premium card system with priority-based styling (Ocean blue, Slate, Amber) - Progressive disclosure system (Basic → Advanced → Developer modes) - Contextual descriptions for all 60+ form fields - Responsive design with desktop grid and mobile accordion - 100% functionality preservation while dramatically improving UX Categories reorganized: • System Configuration (Critical - API keys, model settings) • Runtime & Execution (Critical - V8 engine, skills, services) • Security & Data (Critical - encryption, integrations) • Network & Infrastructure (Infrastructure - gateway, tunnels, memory) • Development & Operations (Development - diagnostics, hardware) • Interactive Tools (Tools - agent chat, output console) Components added: - SectionCard: Priority-based collapsible sections - InputGroup: Consistent form field organization - ActionPanel: Enhanced action buttons with loading states Features: - Smart progressive disclosure with user preference memory - Contextually accurate field descriptions and guidance - Professional typography using Cabinet Grotesk and Inter - Sophisticated color gradients matching crypto aesthetic - Mobile-responsive accordion behavior - Accessibility improvements with proper ARIA labeling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: remove tooltips and reposition descriptions in Tauri Commands Panel - Remove tooltip system entirely from InputGroup components - Move full descriptions directly below labels instead of after input fields - Improve spacing and readability throughout interface - Delete unused Tooltip component and textUtils utilities - Enhance Field and CheckboxField components with better typography 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * style: improve spacing and layout in Tauri Commands Panel - Enhance spacing between sections and components for better readability - Improve grid gaps and padding throughout the interface - Refine ActionPanel and SectionCard component spacing - Better organize skills display with improved item spacing - Polish overall visual hierarchy and component alignment 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: implement comprehensive UI consistency for Tauri Command Console - Replace all white backgrounds with sophisticated dark theme styling - Update input fields with bg-stone-900/40 and proper focus states - Implement custom button system replacing DaisyUI dependencies - Apply consistent glass morphism patterns throughout interface - Enhance checkbox and form component styling for better integration - Fix textarea elements with proper dark theme colors and borders - Add professional hover states and accessibility improvements - Achieve perfect visual consistency with Intelligence and Skills pages 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: implement accordion pattern for System Configuration, Runtime & Execution, and Security & Data sections - Convert three critical sections to use collapsible accordion pattern - Add isSectionVisible() conditional wrappers for progressive disclosure - Change collapsible={false} to collapsible={true} for all three sections - Add defaultExpanded={!isCollapsed()} for consistent state management - Fix section ID consistency in getSectionVisibility() function - Maintain all existing functionality and content - Provide consistent UX matching Network & Infrastructure pattern 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * style: standardize all sections with Network & Infrastructure color scheme - Change all priority values to "infrastructure" for visual consistency - System Configuration: priority="critical" → "infrastructure" - Runtime & Execution: priority="critical" → "infrastructure" - Security & Data: priority="critical" → "infrastructure" - Development & Operations: priority="development" → "infrastructure" - Interactive Tools: priority="tools" → "infrastructure" All sections now use unified slate gradient backgrounds and icon colors for a cohesive, professional appearance throughout the interface. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: resolve JSX syntax error in Interactive Tools section - Fix extra '>' character in ChatBubbleLeftRightIcon icon prop - Corrects TypeScript compilation error on line 1050 - Ensures proper JSX syntax for SectionCard component 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: remove view mode selector and always show all 6 sections - Remove view mode state and selector UI (basic/advanced/developer) - Always show all sections: System Configuration, Runtime & Execution, Security & Data, Network & Infrastructure, Development & Operations, Interactive Tools - All sections start expanded by default for immediate access - Simplify section visibility logic to always return true - Keep loading indicator positioned on the right - Improve UX by removing unnecessary progressive disclosure 🤖 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> |
||
|
|
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> |
||
|
|
2993571eb0 |
Feat/chats (#119)
* feat: add Conversations section with error handling and optimistic message removal * feat: add thread deletion functionality and update Conversations component for thread selection * feat: add unread message count and responsive layout to Conversations and MiniSidebar components * feat: implement suggested questions feature in Conversations component for new threads * feat: add scrollbar hiding utility and improve suggested questions layout in Conversations component |
||
|
|
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> |
||
|
|
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> |
||
|
|
f4801726f3 |
Fix async tool calls not fetching data in QuickJS runtime (#102)
* Implement data synchronization feature in SkillManagementPanel - Added a new `handleSync` function to trigger manual synchronization for skills, enhancing user control over data updates. - Integrated skill state management to track synchronization progress, errors, and completion status. - Updated the UI to display synchronization status, including progress indicators and error messages, improving user feedback during sync operations. - Enhanced the SkillManager and SkillRuntime classes to support the new sync functionality, ensuring proper handling of sync requests and lifecycle hooks. Updated subproject commit reference in the skills directory. * Implement Conversations UI with two-panel thread layout and resizable sidebar Add full Conversations feature: thread types, API service, Redux slice, and a two-panel page with a draggable resize handle. Uncomment Conversations nav item in MiniSidebar and enable prefix-based active state matching. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add Intelligence page and integrate intelligence stats hook - Introduced a new Intelligence page with a skill management interface, allowing users to view and manage skills. - Implemented the `useIntelligenceStats` hook to fetch and display session statistics, memory files, and entity counts. - Enhanced the SkillsGrid component to utilize shared skill icons and status displays, improving UI consistency. - Added functionality for skill synchronization and management, including action buttons for skill setup and syncing. - Updated the Conversations page to support sending messages with optimistic UI updates, enhancing user experience. This commit lays the groundwork for a more interactive and informative intelligence management feature. * Update subproject commit reference in skills directory and enhance fetch handling in bootstrap.js - Updated the subproject commit reference in the skills directory to the latest version. - Modified the fetch implementation in bootstrap.js to ensure options are sent as a JSON string and to parse the JSON response, improving data handling and error management. * Update subproject commit reference in skills directory and comment out Conversations nav item in MiniSidebar - Updated the subproject commit reference in the skills directory to the latest version. - Commented out the Conversations navigation item in MiniSidebar for future implementation. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
c54404bfe1 |
Fix TDLib client lifecycle and skill status handling (#99)
* Refactor skill management and enhance TDLib client handling - Updated skill registration logic to retain skills with Error and Stopped statuses for better UI feedback and restart capability. - Improved TDLib client management by introducing a flag to prevent concurrent client creation during destruction, ensuring proper resource cleanup and database lock handling. - Enhanced error handling in TDLib client destruction process to ensure graceful shutdown and resource release. * Update skills subproject reference and enhance connection status handling - Updated the subproject commit reference in the skills directory. - Modified connection status checks in `SkillsGrid.tsx` and `hooks.ts` to account for 'stopping' state, improving the accuracy of skill status reporting. - Added handling for 'stopped' and 'pending' statuses in `SkillProvider.tsx` to reset UI state appropriately. * Update skills subproject commit reference to latest version |
||
|
|
4a8c3265a9 |
Refactor API documentation and improve code formatting
- 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. |
||
|
|
6125befc39 | Enhance teamSlice test to include initial state in clearTeamState test case | ||
|
|
e23b3643bd |
Add invite codes feature (#94)
* Refactor import statement in store configuration for clarity - Combined the import of `configureStore` and `Middleware` from '@reduxjs/toolkit' into a single line for improved readability. * Add invite codes feature with onboarding step and dedicated page Implement frontend for the invite codes system: users get 5 invite codes to share, can redeem codes for free credits, and new users are prompted during onboarding (step 1) to enter an invite code. - Add invite types, API service, and Redux slice - Add InviteCodeStep as first onboarding step (skip-able) - Add /invites page with redeem input and code list with copy buttons - Add "Invite Friends" nav item to sidebar - Update UserReferral interface to match backend PR #418 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Update reqwest dependency to enable HTTP/2 support and switch to rustls TLS in network requests - Modified Cargo.toml to include the "http2" feature for reqwest. - Updated network request implementations in bridge and ops_net modules to use rustls TLS instead of native TLS for improved security and compatibility. * Update event loop to handle async tool calls and improve message processing - Introduced a `PendingToolCall` struct to manage in-flight async tool calls. - Enhanced the event loop to check for completion of async tool calls and handle timeouts. - Updated message handling to support async tool execution, allowing the event loop to process other messages concurrently. - Refactored `handle_tool_call` to differentiate between synchronous and asynchronous tool results. - Modified JavaScript fetch functions to use async/await for improved readability and performance. * Enhance skill instance with initial ping verification and job driving - Added an immediate ping to verify the connection health during skill execution, logging the result or any errors encountered. - Updated the event loop to drive jobs asynchronously after the initial ping check. - Removed unnecessary logging statements from the network operations for cleaner output. * Update subproject commit reference in skills directory --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
561da4a0b4 |
feat: Implement complete team management system with role-based access control (#92)
* 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] * feat: implement complete team management flow with role-based access control - Add comprehensive team management system with proper role handling - Create TeamManagementPanel for team-specific management hub - Fix role case sensitivity issues (API returns lowercase, UI expects uppercase) - Implement proper team context routing for members and invites panels - Add teams API reference documentation for development reference - Update navigation hooks to support team management routing - Apply consistent max-w-md width constraints across all team panels - Support team switching, creation, joining, and leaving functionality 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: resolve role dropdown case sensitivity issue in TeamMembersPanel - Fix dropdown showing incorrect default role due to case mismatch - API returns lowercase roles ("admin", "member") but UI expects uppercase - Normalize member.role to uppercase in dropdown value and badge display - Ensures dropdown correctly shows actual member role instead of defaulting to first option 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: correct navigation flow from team management members/invites back to team management - Fix route detection to prioritize team management paths over regular team paths - Ensure back button from /team/manage/{id}/members goes to /team/manage/{id} instead of /team - Ensure back button from /team/manage/{id}/invites goes to /team/manage/{id} instead of /team - Replace unreliable document.referrer with proper URL path pattern matching - Add proper hierarchical navigation for team management flow 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add loading states for team members and invites pages - Add separate loading states (isLoadingMembers, isLoadingInvites) to team slice - Display spinner with "Loading members..." message while fetching team members - Display spinner with "Loading invites..." message while fetching team invites - Hide member count and show loading UI during fetch operations - Improve user experience by providing visual feedback during API calls - Ensure proper loading state management in Redux reducers 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * improve: enhance loading UX for team members and invites - Show existing data during refresh instead of hiding everything - Add subtle "Refreshing members..." indicator when data exists - Add subtle "Refreshing invites..." indicator when data exists - Only show full loading screen when no existing data (first load) - Use amber color for refresh indicators to distinguish from main loading - Maintain member/invite count visibility during refresh operations - Significantly better user experience with non-blocking refresh states 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: implement complete team edit and delete functionality - Add Team Settings button with modal to edit team name using updateTeam() API - Add Delete Team button with confirmation modal using deleteTeam() API - Prevent deletion of personal teams (safety check) - Include proper error handling with user-friendly messages - Add loading states for update/delete operations - Modal overlays with proper styling and responsive design - Navigate back to teams list after successful deletion - Refresh teams data after successful name update - Complete the remaining team management API integrations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add confirmation modals for all critical team management actions - Add confirmation modal for removing team members with impact explanation - Add confirmation modal for changing member roles with permission details - Add confirmation modal for revoking invite codes with validation info - Include specific warnings for admin role changes (granting/removing admin rights) - Display invite codes in confirmation modal for clarity - Maintain loading states during confirmation flow - Enhance user safety by preventing accidental critical actions - Follow consistent modal design patterns across all confirmations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add visual indicators for used/expired invite codes - Add status detection for expired and used up invites - Implement visual styling with reduced opacity for inactive invites - Add status badges (Expired/Used Up) next to invite codes - Disable copy button for inactive invites with visual feedback - Restrict revoke button to active invites only - Improve invite code styling based on status 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: add confirmation modal for leaving teams - Add confirmation modal for team leave action matching other critical actions - Update handleLeaveTeam to show confirmation instead of immediate action - Add new confirmLeaveTeam function for actual leave operation - Include loading states and proper error handling in leave button - Show warning about losing access and needing new invite to rejoin 🤖 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> |
||
|
|
fa41d90c2d |
Update subproject commit reference and enhance GitHub workflows
- Updated the subproject commit reference in the skills directory. - Modified the build workflow to enable submodule fetching. - Standardized quotation styles in the package-and-publish workflow for consistency. - Refactored the `setSkillOAuthCredential` function for improved readability. - Added an attribute to the `Error` variant in the `SkillMessage` enum to suppress warnings for unused code. |
||
|
|
f372d5ce29 |
Move skill ping/health-check from frontend to Rust backend
The frontend ping loop only runs while React is active, but the Rust backend keeps skills running independently. This adds a PingScheduler (modeled after CronScheduler) that pings all running skills every 5 minutes from a background Tokio task and acts on auth/network failures. The redundant frontend ping loop is removed since SkillProvider already listens for the Tauri events the Rust scheduler emits. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
96de8e902b | Merge branch 'develop' into feat/skills-ping | ||
|
|
1aa7c077d6 |
Add skill ping/health-check system for connection monitoring
Periodic (5-min) onPing() calls verify skill service connections are healthy. Auth errors stop the skill; network errors update connection status while keeping the skill running for retry. Skills without onPing are treated as healthy (backward compatible). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
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> |
||
|
|
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 |
||
|
|
27b5c2800e |
Add user-facing error handling with opt-in reporting (#81)
* chore: add CI secrets management and local testing script - Added ci-secrets.example.json to provide a template for CI secrets configuration. - Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act. - Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens. * Add user-facing error handling system with opt-in reporting Intercept all errors (React, global JS, skill runtime) and show non-blocking notifications that let users inspect the exact sanitized payload before choosing to report or dismiss. Errors are no longer auto-sent to Sentry. - Add error report queue (errorReportQueue.ts) with subscribe/notify pattern - Add ErrorReportNotification rendered in isolated React root (survives crashes) - Add ErrorFallbackScreen for catastrophic React boundary errors - Wire Sentry beforeSend to queue errors instead of auto-sending - Add skill runtime error capture via runtime:skill-status-changed listener Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Remove conflicting Telegram API fields from ci-secrets.example.json * Strip sensitive fields from exception before queuing for user review Sanitize stacktrace frames to remove local variables (vars), source code context lines (context_line, pre_context, post_context), and mechanism.data. Only safe location metadata (filename, function, lineno, colno, in_app) is retained in the sanitized event shown to the user. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Compute analyticsEnabled on each render instead of caching with useMemo The Report button now reflects the current analytics setting immediately when the user toggles it in Settings. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Refactor components for improved readability and consistency - Adjusted formatting in ErrorFallbackScreen and ErrorReportNotification components for better JSX structure. - Removed unnecessary line breaks in Home component for cleaner layout. - Streamlined error handling logic in SkillProvider for clarity. - Enhanced errorReportQueue with consistent object formatting for better maintainability. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
5717b9993e |
Remove local LLM, route AI to cloud backend (#78)
* Remove ModelProvider and related components to streamline application architecture - Deleted the ModelProvider component and its associated hooks and state management, simplifying the application structure. - Removed ModelDownloadProgress component from Home and Welcome pages, eliminating unnecessary model download handling. - Updated App component to remove ModelProvider wrapping, ensuring a cleaner provider hierarchy. - Adjusted Redux store configuration by removing model-related state management, enhancing overall performance and maintainability. * Update subproject commit and refactor Model Bridge API to route requests to cloud backend - Updated the subproject commit reference in the skills directory. - Refactored the Model Bridge API to replace local inference methods with cloud-based requests for text generation and summarization, enhancing functionality and scalability. * Update skills submodule with prettier formatting fixes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
83cfa95378 |
Add left mini sidebar with page-based settings (#79)
* Add MiniSidebar component and update routing for Conversations and Agents pages - Introduced a new MiniSidebar component for navigation, enhancing user experience. - Updated App component to include MiniSidebar and adjusted layout for better responsiveness. - Added new routes for Conversations and Agents pages, ensuring they are protected routes. - Refactored Settings route to render as a page instead of a modal, streamlining settings management. - Removed obsolete SettingsModal and SettingsLayout components to clean up the codebase. * Update layout and styles in Settings components for improved user experience - Updated the `MiniSidebar` component to enhance navigation with adjusted z-index and background styles. - Refactored `SettingsHome` and `SettingsHeader` components to improve layout and responsiveness. - Added max-width constraints to various elements for better alignment and presentation. - Cleaned up commented-out code in `MiniSidebar` for clarity. - Updated subproject commit reference in the skills directory. |
||
|
|
ab9e7b7a0f |
Refactor code for improved readability and functionality
- Simplified error handling in `useModelStatus` and `ModelProvider` by consolidating dispatch calls. - Streamlined greeting array initialization in `Welcome` component for better readability. - Enhanced `SkillProvider` to listen for skill state changes and dispatch updates accordingly. - Updated Rust backend to sync published state and emit events for skill state changes. - Introduced a `dirty` flag in `SkillState` to track modifications for efficient state management. |
||
|
|
6ad553f16e |
Update subproject commit and refactor OAuth connection handling in SkillSetupWizard
- Updated the subproject commit reference in the skills directory. - Refactored the SkillSetupWizard component to use `connection_status: "connected"` instead of `connected: true` for improved clarity in state management during OAuth completion. |
||
|
|
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. |
||
|
|
bbe137b530 |
feat: add dev-mode support for OAuth URL generation in SkillSetupWizard
- Introduced `IS_DEV` flag to conditionally append `responseType=json` for OAuth URL generation in development mode - Enhances testing flexibility when working with authentication flows in development environments |
||
|
|
f86dc7ded9 |
Refactor SkillSetupWizard API call for OAuth URL retrieval
- Updated the API endpoint in SkillSetupWizard to remove the unnecessary responseType parameter, streamlining the OAuth URL request. - This change enhances the clarity of the API call while maintaining functionality for OAuth integration. |
||
|
|
cbdc6051d0 |
Refactor SkillSetupWizard to utilize apiClient for OAuth URL retrieval
- Replaced direct URL construction with a call to apiClient to fetch the OAuth authorization URL from the backend. - Improved error handling for OAuth connection failures, providing clearer feedback in case of issues. - Updated state management to reflect the new OAuth flow, enhancing user experience during the setup process. |
||
|
|
3f6431f457 |
Enhance SkillSetupWizard and SkillManager for OAuth-only skills
- Updated SkillSetupWizard to handle cases where no setup steps are returned, indicating an OAuth-only skill. - Modified SkillManager's startSetup method to return null for skills that do not implement setup/start. - Enhanced SkillRuntime's setupStart method to return null if no setup step is available, improving error handling. - Updated SkillProvider to include OAuth configuration details in skill discovery. |
||
|
|
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. |
||
|
|
6b7aaa1375 |
Update SkillsGrid and transport logic to utilize QuickJS runtime
- Changed the runtime specification in SkillsGrid from 'v8' to 'quickjs'. - Updated documentation in the SkillRuntime class to reflect the transition to QuickJS. - Modified transport logic to clarify that reverse RPC handling is now managed by QuickJS bridge globals, ensuring compatibility with the new runtime. |
||
|
|
556107b31c |
Update skill runtime to use QuickJS and enhance TODO list
- Updated the skill runtime documentation to reflect the transition from V8 to the Rust QuickJS runtime engine. - Modified the SkillManifest interface to specify "quickjs" as the only runtime option. - Enhanced the SkillProvider to discover skills using the QuickJS runtime and added filtering for production builds. - Expanded the TODO list with new tasks for Android version release, background processes, AI message summarization, and remaining skills implementation. |
||
|
|
aeb9626db1 |
Update .gitignore, refactor UI components, and enhance model download logic
- Added CLAUDE.local.md to .gitignore to prevent local configuration files from being tracked. - Refactored the App component layout for improved responsiveness and user experience. - Updated ModelDownloadProgress to include a new `isDownloaded` state for better visibility of download status. - Simplified SettingsHome by commenting out unused functions and improving the organization of settings options. - Adjusted PrivacyPanel to ensure analytics settings are correctly evaluated. - Modified various page components to use `min-h-full` for consistent height management across the application. |
||
|
|
af7ca87831 |
Refactor PublicRoute and ModelProvider for improved user flow and state management
- Simplified the `PublicRoute` component by removing the onboarding status check, allowing the `Home` component to handle redirection based on user profile loading. - Enhanced the `ModelProvider` component by consolidating the initialization logic and improving error handling during model status checks and downloads. - Introduced cancellation logic in the `ModelProvider` to prevent state updates after component unmounting, ensuring better resource management and preventing memory leaks. |
||
|
|
cdb416192f |
Refactor routing logic for onboarding and home navigation
- Introduced a new `HomeRoute` component to manage user redirection based on onboarding status. - Updated `DefaultRedirect` and `PublicRoute` components to simplify navigation logic, ensuring users are directed to the home page if logged in, while handling onboarding within the `HomeRoute`. - Removed redundant checks for onboarding status in `DefaultRedirect` and `PublicRoute`, streamlining the routing process. |
||
|
|
14b330a17d |
Integrate ModelProvider for enhanced model management and state synchronization
- Introduced a new `ModelProvider` component to manage model download and status synchronization with the Rust backend. - Updated the `useModelStatus` hook to utilize Redux for state management, improving error handling and download control. - Refactored the `App` component to include `ModelProvider`, ensuring proper context for model-related operations. - Simplified the `Welcome` component by removing auto-trigger logic for model downloads, relying on the new provider for state management. - Added a new `modelSlice` to the Redux store to handle model status and actions, enhancing overall state management. |
||
|
|
2309021bbd |
Enforce static imports and improve error handling for Tauri API calls
- Updated the codebase to replace dynamic imports with static imports for Tauri API calls, enhancing performance and compliance with new coding standards. - Implemented try/catch blocks around Tauri API calls to handle errors gracefully in non-Tauri environments. - Refactored components to ensure consistent usage of static imports, improving code clarity and maintainability. - Adjusted the `activeTeamId` property in the User interface to be required, ensuring better type safety. |
||
|
|
e70b3d1ab9 |
Enhance model download functionality and UI feedback
- Added a new `downloaded` status to the `ModelStatus` interface to track if the model file has been downloaded. - Implemented `startDownload` function in the `useModelStatus` hook to initiate model downloads without loading into memory. - Updated the `Welcome` component to automatically trigger model downloads on desktop and provide visual feedback on download progress. - Enhanced the Tauri backend with a new `model_start_download` command to support the download process. - Improved the model status management to reflect the current download state and handle errors effectively. |
||
|
|
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. |
||
|
|
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. |
||
|
|
339334466a |
Refactor socket user ID selection and update QuickJS register function signatures
- Replaced the `selectCurrentUserId` function with `selectSocketUserId` to derive the socket user ID from the JWT token, improving clarity and functionality. - Updated the `register` function signatures across multiple QuickJS operation files to use a generic lifetime parameter, enhancing type safety and consistency. |
||
|
|
dde4d6fce7 |
feat: add platform detection and support for mobile in ModelDownloadProgress and SkillsGrid components
- Integrated the @tauri-apps/plugin-os to detect mobile platforms (Android and iOS) in both ModelDownloadProgress and SkillsGrid components. - Updated rendering logic to display mobile-specific messages, indicating that certain features are available only on desktop. - Enhanced package.json and yarn.lock to include the new plugin dependency for platform detection. - Adjusted capabilities configuration to support the new plugin across desktop and mobile platforms. |
||
|
|
3fb5e1dd11 |
feat: local model support and SocketManager WebSocket transport (#36)
* chore: add simulation function for deep link testing in development - Introduced a simulation function for deep links in the development environment to facilitate testing. - The function allows developers to simulate deep link URLs without affecting production behavior. * feat: implement QuickJS skill runtime integration - Added a new QuickJS skill runtime engine to manage skill execution within the application. - Introduced commands for skill management, including discovery, starting, stopping, and querying skill states. - Implemented a SQLite database bridge for each skill to handle data storage. - Enhanced the application structure with new modules for runtime management, skill instances, and manifest parsing. - Updated dependencies in Cargo.toml and Cargo.lock to support new features. * refactor: improve code readability and formatting in DownloadScreen and deviceDetection - Enhanced the button className formatting in DownloadScreen for better readability. - Reformatted the fetchLatestRelease and parseReleaseAssetsByArchitecture functions in deviceDetection for improved clarity and maintainability. - Utilized multiline formatting for complex conditions to enhance code structure. * feat: integrate Rust-native Socket.io client for persistent connections - Implemented a SocketManager in Rust to handle Socket.io connections, ensuring persistence across app backgrounding. - Updated SocketProvider to connect/disconnect using Rust-native methods in Tauri mode. - Enhanced Tauri event listeners for socket state changes and server events. - Refactored socket handling logic to differentiate between web and Tauri modes, improving maintainability and clarity. - Added new commands for connecting, disconnecting, and emitting events through the Rust socket. * refactor: remove Telegram login commands and related functionality - Deleted the startTelegramLogin and startTelegramLoginWithUrl functions from the Tauri commands. - Removed associated references in the Rust command module and utility file. - This cleanup simplifies the codebase by eliminating unused Telegram login features. * feat: add cron scheduling functionality for skills - Introduced a new CronScheduler to manage scheduled tasks for skills, allowing for cron expression parsing and execution. - Added a cron bridge to expose scheduling methods to skill contexts, enabling skills to register, unregister, and list cron schedules. - Updated the RuntimeEngine to initialize and manage the cron scheduler, ensuring it runs in the background. - Enhanced skill instances to support cron scheduling through a new BridgeDeps structure. - Updated dependencies in Cargo.toml and Cargo.lock to include the cron crate. * feat: add Android support and enhance dependencies - Introduced Android-specific build and run commands in package.json for Tauri. - Updated Cargo.toml to include OpenSSL for Android and adjusted reqwest for cross-platform TLS support. - Added new mobile capabilities configuration for Android and iOS. - Implemented a foreground service in the Android app to maintain the Rust backend process. - Added various Android resources including layouts, icons, and notification handling. - Updated Cargo.lock with new dependencies for improved functionality. * chore: update .gitignore and AndroidManifest.xml for deep link support - Added .kotlin and .cargo to .gitignore to exclude Kotlin and Cargo build artifacts. - Updated AndroidManifest.xml with comments for the deep link plugin, clarifying its auto-generated nature. * feat: enhance store configuration for development testing - Added functionality to auto-inject a JWT token from environment variables during development. - Implemented automatic onboarding for users once their profile is fetched, improving the testing experience. * feat: enhance socket connection handling and add Android logging support - Updated the Rust socket connection command to accept an optional URL parameter, allowing for dynamic backend URL configuration. - Integrated Android logging capabilities using the android_logger crate, ensuring logs are properly routed to logcat. - Improved error handling in the SocketManager to log connection errors and successful connections for better debugging. * feat: implement notification permission handling and enhance foreground service in Android - Added runtime permission request for POST_NOTIFICATIONS in MainActivity to comply with API 33+ requirements. - Updated RuntimeService to specify foreground service type for API 34+ compatibility. - Improved logging levels in the Rust backend for better debugging and monitoring of socket connections and skill discovery. * feat: integrate QuickJS skill management and service - Added QuickJS skill hooks for retrieving and managing QuickJS skills from Redux. - Implemented a QuickJS service to handle skill lifecycle, preferences, and IPC calls with the Rust backend. - Enhanced the skills state in Redux to include QuickJS skills, enabling better management and state tracking. - Updated the store configuration to persist QuickJS skills state across sessions. - Introduced new commands in the Rust backend for enabling/disabling skills and managing preferences. - Improved the SkillProvider to initialize the QuickJS service during app startup. * refactor: transition skill management to QuickJS runtime - Removed legacy skill catalog and loading logic, replacing it with QuickJS runtime integration for skill discovery and management. - Updated SkillProvider to utilize QuickJS for skill registration and lifecycle management. - Simplified skill data handling by directly invoking the Rust backend for skill operations. - Enhanced error handling and logging for skill loading processes. - Cleaned up unused interfaces and functions related to previous skill management methods. * refactor: remove unused skill commands and plugins - Deleted the skills command module and related functions to streamline the codebase. - Removed dependencies on the tauri-plugin-shell and other unused plugins from Cargo.toml and Cargo.lock. - Updated the authentication module by removing the exchange_token function and its associated structures. - Simplified the capabilities configuration by eliminating shell-related permissions. - Enhanced the runtime engine to support new JSON-RPC commands for skill data management. * feat: expose whitelisted environment values to skills - Added `platform.env(key)` function to retrieve whitelisted environment values for skills. - Implemented `get_skill_env` function to provide access to `BACKEND_URL` and `PLATFORM`. - Updated `get_backend_url` to check for `VITE_BACKEND_URL` before falling back to `BACKEND_URL`. - Enhanced the QuickJS runtime to support the new environment functionality. * feat: fix skills enable/disable flow, setup pipeline, and status derivation - Add SkillSetup struct to Rust manifest and include setup field in discovery response so the frontend knows which skills need setup - Map setup field in SkillProvider discoverSkills() - Fix SkillsGrid to use real hasSetup from manifest instead of hardcoding false - Add contextual Enable/Setup/Configure/Retry buttons in management modal - Add status indicator dots to compact skill table rows - Fix deriveConnectionStatus to return "connected" for ready skills with completed setup that don't push host state (e.g. cron-based skills) - Add select option renderer in SkillManagementPanel for non-boolean options - Add dotenvy crate to load .env file at Rust startup so env vars like VITE_BACKEND_URL are available to the runtime engine and skills Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add platform support for skills and enhance manifest handling - Introduced platform filtering for skills in the SkillManifest, allowing skills to specify supported platforms. - Updated QuickJSManifest and runtime engine to handle platform checks, ensuring skills are only loaded on compatible platforms. - Added new build and watch commands for skills in package.json to streamline development. - Enhanced the Rust backend to log unsupported skills based on platform restrictions. * feat: update skills submodule with TypeScript pipeline and test harness Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: transition from QuickJS to V8 runtime for skill management - Replaced QuickJS with V8 (via deno_core) for improved JavaScript execution and WASM support. - Updated skill management logic to utilize the new V8 runtime, including changes to the RuntimeEngine and skill instance handling. - Enhanced manifest handling to support the new runtime and added platform compatibility checks. - Introduced new dependencies and updated Cargo.toml to reflect changes in the skill execution environment. - Refactored related modules and commands to align with the V8 integration, ensuring a seamless transition for skill operations. * refactor: clean up dead code in IdbStorage and enhance ops module - Removed unused `#[allow(dead_code)]` annotations from the IdbStorage struct and its methods to improve code clarity. - Introduced new timer and WebSocket state management structures in the ops module, laying groundwork for future enhancements. - Added timer and WebSocket operation functions, including `op_timer_start`, `op_timer_cancel`, and WebSocket connection handling, to support asynchronous operations. * feat: implement high-level TDLib service with V8 integration - Introduced a new `TdlibV8Service` to manage TDLib client instances using the V8 runtime. - Added a `MockTdClient` for development and testing, simulating TDLib responses for various queries. - Enhanced the bootstrap script to initialize and manage TDLib clients, including methods for sending queries and retrieving authentication states. - Updated the `mod.rs` file to include the new service module and improved documentation for clarity. - Refactored existing code to support the new TDLib integration, ensuring a seamless experience for skill management. * refactor: update V8 runtime integration and platform handling - Updated the V8 runtime integration to ensure it is only available on desktop platforms, with appropriate error handling for mobile. - Refactored the `SocketManager` and command implementations to conditionally include desktop-only features, enhancing clarity and maintainability. - Cleaned up the `Cargo.toml` to reflect the changes in V8 runtime availability and added relevant documentation. - Removed dead code related to mobile platform handling in the TDLib integration, ensuring a streamlined codebase. * chore: update skills submodule to latest commit - Updated the skills submodule to the latest commit (19a18e8), ensuring alignment with recent changes and improvements in the codebase. * refactor: transition from QuickJS to V8 runtime for skill management - Updated the skills submodule to the latest commit, reflecting the transition from QuickJS to V8 for improved JavaScript execution. - Refactored skill management logic to utilize the V8 runtime, including changes to the RuntimeEngine and skill instance handling. - Enhanced manifest handling to support the new runtime and updated platform compatibility checks. - Removed dead code related to QuickJS, ensuring a streamlined codebase. - Updated comments and documentation to reflect the changes in runtime integration. * feat: enhance logging and update timer operations in V8 integration - Added logging for skill discovery and manifest processing in the V8 runtime, improving traceability during skill management. - Updated timer operation functions to use new prefixed names (`op_ah_timer_start` and `op_ah_timer_cancel`) to avoid conflicts with deno_core built-ins. - Implemented a mechanism to load .env files from various locations, ensuring environment variables are available for configuration. - Enhanced the `get_backend_url` function to include debug logging for better visibility of the backend URL resolution process. * chore: update skills submodule to latest commit and enhance logging - Updated the skills submodule to the latest commit (54c40a1), ensuring alignment with recent changes. - Added console logging for skill manifests during discovery in the SkillsGrid component to improve debugging and traceability. * refactor: clean up and format code in DownloadScreen and SkillsGrid components - Improved code readability by formatting multi-line statements in the DownloadScreen and SkillsGrid components. - Removed unnecessary type imports in DownloadScreen for clarity. - Enhanced the structure of the SkillsGrid component by adjusting the layout of JSX elements for better maintainability. - Updated socketService to ensure consistent import order and improved logging in TauriSocket utility functions. * chore: update development script in package.json - Replaced the existing setup-python-sidecar script with a new dev:app script to streamline the development process for Tauri applications, enabling better debugging with RUST_BACKTRACE and RUST_LOG settings. * refactor: update load method to accept additional parameters - Modified the load method in SkillRuntime to accept an optional additionalParams argument, enhancing flexibility for skill loading. - Ensured compatibility by using a fallback to an empty object when additionalParams is not provided. * refactor: improve JSX structure in SkillsGrid component - Enhanced the formatting of the connection status indicator in the SkillsGrid component for better readability. - Adjusted the indentation and spacing to maintain consistent code style and improve maintainability. * Refactor invoke_handler to consolidate command registration across platforms - Simplified the command registration process by merging desktop and mobile command handlers into a single `invoke_handler` call. - Improved code readability and maintainability by reducing duplication in command definitions. - Ensured that window commands remain desktop-only while maintaining common functionality for all platforms. * updated icon * Update skills submodule to latest commit and remove redundant logging statements in V8 engine skill discovery * Update skills submodule to reflect dirty state * feat: expose BACKEND_URL environment variable for skills - Added "BACKEND_URL" to the list of whitelisted environment variables accessible to skills, allowing for broader usage without the "VITE_" prefix. * Enhance V8 runtime with async event loop and timer management - Implemented an async event loop in the V8 skill instance to handle timers and messages efficiently. - Introduced a new TimerState structure for managing scheduled timers, allowing for better integration with the V8 event loop. - Updated the dotenv loading mechanism to check for environment variables in the current and parent directories. - Enhanced logging for timer operations and skill management processes to improve traceability. * Update skills submodule to latest commit and expose additional environment variables for skills - Updated the skills submodule to commit 3793fdc, ensuring alignment with recent changes. - Added "TELEGRAM_API_ID" and "TELEGRAM_API_HASH" to the list of whitelisted environment variables, allowing skills to access these without the "VITE_" prefix. * Integrate TDLib support for Telegram skill - Added TDLib commands for creating, sending, receiving, and destroying clients, enabling Telegram functionality. - Implemented a TdLibManager for managing TDLib client lifecycle and asynchronous operations on desktop platforms. - Introduced JNI bridge for Android to facilitate TDLib interactions. - Updated Cargo.toml and Cargo.lock to include tdlib-rs and related dependencies. - Enhanced the V8 runtime to support TDLib operations, ensuring compatibility across platforms. * Enhance TDLib manager with update queue and async polling - Introduced an update queue and notification channel in ClientState for managing TDLib updates. - Implemented a separate polling task for TDLib updates to improve responsiveness and prevent blocking the main event loop. - Updated lifecycle function handling in the V8 runtime to avoid waiting for the event loop, allowing for long-running async operations. - Improved error handling and logging for better traceability during TDLib operations. * Enhance documentation and improve code formatting - Updated CLAUDE.md to include new core commands and runtime management features for the Rust backend, as well as Android support and platform-specific details. - Refactored SettingsHeader component in SettingsHeader.tsx for improved readability by consolidating props and cleaning up JSX formatting. - Enhanced SkillProvider.tsx with better logging for skill loading errors, improving traceability in the development process. * Integrate local LLM inference support and update dependencies - Added local LLM inference capabilities for desktop and Android platforms, excluding iOS. - Introduced new model commands for checking availability, generating text, and summarizing content. - Updated Cargo.toml and Cargo.lock to include necessary dependencies such as `llama-cpp-2` and `encoding_rs`. - Enhanced the V8 runtime and JavaScript API to support model operations, improving the overall functionality of the application. * Enhance SocketManager with WebSocket transport type - Added support for WebSocket transport type in SocketManager for improved connection handling. - Updated connection configuration to utilize WebSocketUpgrade, enhancing real-time communication capabilities. * style: fix Prettier formatting in ModelDownloadProgress * chore: update skills submodule to latest commit --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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. |
||
|
|
b5bccd2de9 | fixed ssues | ||
|
|
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. |
||
|
|
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. |
||
|
|
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. |