Commit Graph
4 Commits
Author SHA1 Message Date
Steven EnamakelandGitHub b5037b0c91 feat(local-ai): sequential multi-model downloads + multimodal local runtime (#48)
* refactor: replace TinyHumans memory client with local SQLite implementation

- Removed references to the TinyHumans memory client and its dependencies from Cargo.toml and Cargo.lock.
- Introduced a new local memory client using SQLite for persistent storage, including methods for storing, querying, and managing memory documents and chunks.
- Updated memory management commands to work with the new local implementation, ensuring compatibility with existing functionality.
- Enhanced error handling and logging for memory operations, improving overall reliability and user feedback.

* chore: update subproject commit reference in skills

* fix: update default model URL and artifact name for Qwen AI configuration

- Changed the default download URL to the new GGUF format for Qwen3-1.7B.
- Updated the default artifact name to reflect the new naming convention for the model.

* feat(local-ai): add prompt functionality to local AI service

- Introduced a new `LocalAiPromptParams` struct for handling prompt requests.
- Implemented the `prompt` method in the `LocalAiService` to process prompts with optional token limits and a no-think mode.
- Updated the Tauri command `openhuman_local_ai_prompt` to invoke the new prompt functionality.
- Enhanced the Local Model panel to include a UI for testing custom prompts, allowing users to input prompts and view responses.
- Added error handling for prompt execution in the UI, improving user feedback during interactions.

* feat(local-ai): enhance backend configuration and support for multiple runtimes

- Added `backend_preference` field to `LocalAiConfig` for specifying preferred runtime.
- Implemented backend resolution logic to select between CPU, Metal, CUDA, and Vulkan based on user preference and feature availability.
- Updated `LocalAiStatus` to include fields for tracking active backend and performance metrics.
- Introduced runtime backend enumeration and support functions to manage backend capabilities.
- Enhanced Cargo.toml files to include features for Metal, CUDA, and Vulkan support in both core and Tauri projects.

* feat(local-ai): enhance model inference and backend status reporting

- Updated `LocalAiService` to include backend status tracking with `active_backend` and `backend_reason` fields.
- Improved inference methods to accept a `no_think` parameter, allowing for more flexible prompt processing.
- Enhanced latency and token metrics tracking during inference, providing better performance insights.
- Adjusted default token limits for various inference methods to optimize user experience.

* feat(local-ai): enhance inference methods and status reporting

- Updated inference methods in `LocalAiService` to include a `no_think` parameter for improved prompt processing.
- Added backend status tracking with `active_backend`, `backend_reason`, and performance metrics such as `last_latency_ms`, `prompt_toks_per_sec`, and `gen_toks_per_sec`.
- Enhanced the UI in `LocalModelPanel` to display backend status and performance metrics, improving user experience and transparency.
- Adjusted token limits for various inference methods to optimize functionality.

* refactor(local-ai): update local AI configuration and model defaults

- Removed the `mistralrs` dependency and related configurations from `Cargo.toml` and `LocalAiConfig`.
- Changed default model provider from `mistralrs` to `ollama`, updating associated default values for model ID, download URL, and artifact name.
- Simplified backend handling in `LocalAiService`, ensuring consistent use of the `ollama` provider for model management and status reporting.
- Enhanced `LocalAiStatus` to reflect the new provider and model path format.

* feat(local-ai): expand local AI capabilities with new inference methods and asset management

- Introduced new parameters and methods for vision prompting, embedding, transcription, and text-to-speech (TTS) functionalities in the Local AI service.
- Enhanced the LocalAiConfig structure to support additional model IDs and preload options for various capabilities.
- Updated the LocalModelPanel UI to facilitate user interaction with new AI features, including asset status and download triggers.
- Implemented backend commands for managing local AI assets and their statuses, improving overall functionality and user experience.

* feat(local-ai): implement model download and asset management features

- Added methods for downloading STT and TTS models, including configuration for download URLs in LocalAiConfig.
- Enhanced the LocalAiService with a new `download_all_models` method to manage model downloads and status updates.
- Introduced error handling for model availability checks, marking the service as degraded if downloads fail.
- Updated dispatch logic to trigger full model downloads, improving the initialization process for local AI services.

* chore(format): apply pre-push formatting for local-ai updates

* feat(accessibility): add vision summary and flush functionalities

- Implemented new commands for fetching recent vision summaries and flushing the vision queue in the accessibility module.
- Enhanced the AccessibilityEngine to manage vision state, including queue depth and last vision summary.
- Updated the AccessibilityPanel UI to display vision state and recent summaries, allowing users to trigger flush actions.
- Added Redux state management for vision-related data, including loading states and error handling.
- Expanded onboarding steps to include user consent for local model usage, improving privacy and resource management awareness.

* feat: add messaging channel configuration and routing support

- Introduced a new 'Channels' section in the MiniSidebar for navigating to messaging settings.
- Added a Messaging Channels panel in SettingsHome for configuring Telegram and Discord authentication modes.
- Implemented channel connection management in MessagingPanel, including connection status updates and error handling.
- Created a routing utility to resolve preferred authentication modes for messaging channels.
- Enhanced socket service to handle real-time updates for channel connection statuses.
- Added API service for managing channel connections, including connect and disconnect functionalities.
- Updated thread API to support outbound routing based on the selected messaging channel.

* feat(local-ai): update default vision model and enhance audio transcription capabilities

- Changed the default vision model from `qwen2.5vl:3b` to `moondream:1.8b` in the local AI configuration.
- Implemented a new function `openhumanLocalAiTranscribeBytes` for transcribing audio from byte arrays, improving flexibility in audio input handling.
- Enhanced the `Conversations` component to support voice recording and transcription, including state management for recording and playback.
- Added error handling and user feedback for audio transcription processes, improving overall user experience.

* refactor(accessibility): improve code formatting and readability in AccessibilityEngine

- Reformatted code in the AccessibilityEngine for better readability, including consistent indentation and line breaks.
- Enhanced the clarity of the `analyze_frame_with_vision` function signature by spreading parameters across multiple lines.
- Improved the readability of temporary path creation in the `capture_screen_image_ref` function.

* feat(accessibility): implement permission request functionality and enhance accessibility features

- Added a new command to request specific accessibility permissions on macOS, including screen recording, accessibility, and input monitoring.
- Updated the AccessibilityPanel and onboarding steps to utilize the new permission request functionality, improving user experience and compliance with macOS requirements.
- Introduced a MemoryWorkspace component for managing memory documents, enhancing the intelligence features of the application.
- Refactored related Redux actions and state management to support the new permission handling and memory functionalities.

* feat(skills): enhance skill synchronization metrics and UI display

- Added synchronization summary text to the SkillsGrid and SkillCard components, providing users with insights on sync counts, local data size, and last sync time.
- Implemented a new function to derive skill sync summary text based on skill state and sync statistics.
- Updated the SkillsGrid to display sync metrics in a new column, improving the visibility of synchronization status.
- Enhanced the SkillManager to manage sync statistics, including tracking sync durations and local data metrics.
- Refactored Redux state management to include persistent sync metrics for each skill, ensuring accurate reporting and user feedback.

* feat(cron): implement cron job management features in settings

- Added new commands for listing, updating, removing, running, and retrieving run history of cron jobs.
- Introduced a dedicated CronJobsPanel for managing scheduled jobs, enhancing user interface for cron job configuration.
- Updated navigation components to include links to the new cron jobs settings.
- Enhanced the core server to support cron job operations, ensuring integration with existing functionality.
- Implemented error handling and user feedback for cron job actions, improving overall user experience.

* refactor(cron): streamline error handling and improve code readability

- Simplified error handling in cron job management functions by removing unnecessary line breaks.
- Enhanced the readability of the `dispatch` function in the core server by consolidating related code.
- Improved formatting in the AccessibilityEngine for better consistency and clarity in permission requests.

* fix(docs): update image format in README and replace JPG with PNG

- Changed the image reference in README.md from JPG to PNG format for better compatibility.
- Removed the old JPG file and added the new PNG file to the documentation directory.
2026-03-28 10:32:56 -07:00
Steven EnamakelandGitHub 249aedfc04 chore: remov unwanted/mobile references and update skills submodule (#45)
* refactor: remove mobile platform support and update documentation

- Updated CONTRIBUTING.md and SECURITY.md to reflect the removal of Android and iOS support, focusing on desktop platforms only.
- Modified AGENTS.md and MEMORY.md to clarify the platform capabilities of OpenHuman as a desktop application.
- Adjusted various Rust files to eliminate references to mobile platforms, including socket management and platform detection logic.
- Removed mobile-specific code from SkillsGrid and Skills components, ensuring the application is tailored for desktop usage.
- Deleted unused iOS and Android assets and configurations from the Tauri project structure.

* chore: remove zeroclaw mentions and mobile support paths
2026-03-27 14:38:48 -07:00
Steven EnamakelandGitHub 5ecc7cbc75 refactor: consolidate CLI binaries and streamline CI workflows (#44)
* chore: update dependencies and remove unused packages

- Removed several unused dependencies from package.json, including `@tauri-apps/plugin-shell`, `@types/react-router-dom`, `immer`, `qrcode.react`, and `@testing-library/user-event`.
- Updated the Vite configuration to exclude `telegram` from the optimizeDeps include list.
- Cleaned up yarn.lock by removing references to deleted packages.
- Deleted outdated GitHub Actions workflows for macOS ARM64 build, package and publish, and update changelog.

* refactor: consolidate CLI binaries and update configurations

- Renamed the main binary from `openhuman-core` to `openhuman` for consistency across the project.
- Removed the `openhuman-cli` and `openhuman-core` binaries, consolidating functionality into the new `openhuman` binary.
- Updated build configurations in GitHub Actions and Tauri to reflect the new binary name and paths.
- Adjusted the Tailwind and Vite configurations to point to the correct HTML and source directories.
- Introduced a new method in the Rust core server for handling JSON-RPC calls, enhancing the API structure.

* chore: update subproject commit reference in skills

* chore: update Rust test workflow and improve CLI command formatting

- Modified the GitHub Actions workflow to include a new job for running Rust tests in the workspace.
- Updated the `test:rust` command in `package.json` to run tests for the entire workspace.
- Refactored CLI command definitions in `openhuman.rs` for improved readability by consolidating struct fields into single lines.

* chore: enhance E2E testing scripts and workflows

- Updated `.prettierignore` to exclude the `rust-core` directory.
- Added new E2E testing commands in `package.json` for running all flows and improved formatting commands to include `cargo fmt`.
- Enhanced GitHub Actions workflows to streamline E2E testing, including new scripts for running individual specs and all flows sequentially.
- Refactored existing E2E scripts to utilize a common function for running tests, improving maintainability and readability.
- Introduced a new script for resolving Node.js and Appium dependencies, ensuring compatibility for E2E tests.
- Cleaned up and simplified existing E2E scripts by removing redundant code and consolidating functionality.

* chore: update GitHub Actions workflows for Tauri build process

- Modified build and release workflows to reference the correct target directory for Rust binaries, ensuring compatibility with the Cargo workspace structure.
- Adjusted caching configuration in the test workflow for consistency and improved readability.
- Standardized environment variable formatting in the test workflow to enhance clarity.

* fix: standardize string formatting in GitHub Actions workflows

- Updated the test workflow to use single quotes for cache configuration and environment variables, enhancing consistency across the file.
2026-03-27 13:58:29 -07:00
Steven EnamakelandGitHub 37991fc567 refactor: split tauri host from openhuman_core runtime (#43)
* chore: add Cargo.toml and Cargo.lock for rust-core workspace

- Introduced a new workspace for the rust-core module with its own Cargo.toml.
- Added Cargo.lock to manage dependencies for the rust-core module.
- Updated .gitignore to exclude the target directory generated by Cargo.
- Modified GitHub Actions workflow to build from the new rust-core path instead of src-tauri.

* feat: enhance memory and authentication models in rust-core

- Added new `memory` module to handle persistent memory operations for skills, including methods for storing and querying skill data.
- Introduced `models` module with `auth` and `socket` submodules to manage user session and socket connection states.
- Updated `lib.rs` to include new modules and ensure proper integration within the rust-core workspace.
- Modified `eslint.config.js` to ignore target directories in linting processes.

* feat: integrate Tauri and QuickJS support in rust-core

- Added `tauri` and `rquickjs` as optional dependencies in `Cargo.toml` to enable Tauri integration and JavaScript execution.
- Introduced `CronScheduler` and `PingScheduler` modules for managing scheduled tasks and health checks for skills.
- Implemented `MemoryState` struct for shared app-state management in the memory client.
- Updated the runtime module to include new schedulers and ensure proper integration with Tauri features.
- Enhanced the skill registry to support new functionalities related to skill management and communication.

* chore: update ESLint configuration and refactor Rust module imports

- Added 'rust-core/**' to ESLint ignore list to streamline linting processes.
- Refactored import paths in Rust modules to directly reference the `memory` module, enhancing clarity and maintainability.
- Improved formatting in JavaScript files for better readability and consistency.

* refactor: rename rust-core to openhuman-core and update dependencies

- Renamed the `rust-core` module to `openhuman-core` across all files for consistency.
- Updated `Cargo.lock` to include `openhuman-core` as a new dependency and removed `rust-core`.
- Adjusted import paths in the codebase to reflect the new module name, ensuring all references are updated.
- Enhanced the Tauri integration by modifying dependencies in `src-tauri/Cargo.toml` to point to `openhuman-core`.

* refactor: simplify platform detection using match statements

- Replaced multiple if-else statements with match expressions in `current_platform`, `get_platform`, and `register` functions for improved readability and maintainability.
- Removed unnecessary conditional compilation for Android and iOS in the `SocketManager` and `tauri_bridge` modules, streamlining the codebase.
- Enhanced the `send_notification` function to handle platform checks more efficiently.

* refactor: update platform detection to use std::env::consts

- Replaced `cfg!(target_os = "os_name")` checks with `std::env::consts::OS` for improved clarity and consistency across the codebase.
- Added `rppal` as an optional dependency in `Cargo.toml` for Raspberry Pi support.
- Cleaned up platform-specific code in various modules, enhancing maintainability.

* refactor: streamline platform-specific code and improve readability

- Replaced conditional compilation with `std::env::consts::OS` checks in various modules to enhance clarity and maintainability.
- Simplified platform detection logic in `available_disk_space_mb`, `ensure_arduino_cli`, and `open_in_brave` functions.
- Updated `screenshot_command_exists` test to conditionally skip based on the operating system.
- Cleaned up unnecessary `#[cfg]` attributes, focusing on a more consistent approach across the codebase.

* feat: introduce comprehensive AI configuration and memory management

- Added multiple configuration files for OpenHuman AI, including `AGENTS.md`, `BOOTSTRAP.md`, `CONSCIOUS_LOOP.md`, `IDENTITY.md`, `MEMORY.md`, `README.md`, `SOUL.md`, `TOOLS.md`, and `USER.md` to define agent roles, onboarding processes, identity, memory management, and tool capabilities.
- Implemented an encryption layer for AI memory storage in `encryption.rs`, utilizing AES-256-GCM for secure data handling.
- Updated `lib.rs` to include the new AI module structure, enhancing the overall architecture and maintainability of the codebase.

* refactor: update dependencies and configuration for improved structure

- Removed `android_logger` and related packages from `Cargo.lock` and `Cargo.toml`, streamlining the dependency list.
- Adjusted the `APP_IDENTIFIER` constant in `config.rs` to reflect the new application identifier.
- Updated resource paths in `tauri.conf.json` for better organization.
- Enhanced platform-specific dependency management in `Cargo.toml` for clarity and maintainability.

* fix(core): gate ai module behind tauri-host feature

* refactor: update AI loading mechanisms and improve platform handling

- Refactored the AI configuration loading in `loader.ts` and `tools/loader.ts` to utilize Tauri commands for desktop environments, enhancing performance and reliability.
- Updated paths for AI markdown files to reflect the new `rust-core` structure.
- Introduced a new end-to-end test for Tauri command interactions in `tauriCoreBridge.e2e.test.ts`.
- Cleaned up platform-specific code across various modules, ensuring a more consistent approach to handling desktop and web contexts.

* feat: add sidecar core binary build and staging for Tauri bundler

- Implemented build steps for the sidecar core binary in multiple workflows, targeting both x86_64-unknown-linux-gnu and aarch64-apple-darwin architectures.
- Added staging steps to copy the built binaries into the Tauri resources directory, ensuring proper integration for application bundling.
- Updated relevant workflows to enhance the build process and streamline artifact management.

* refactor: enhance AI loading logic for Tauri integration

- Updated `loader.ts` and `tools/loader.ts` to prioritize Tauri commands for loading configurations in desktop environments, with a fallback to bundled markdown files for web contexts.
- Adjusted test mocks to reflect the new file paths for tools markdown.
- Improved test setup to mock Tauri API behavior accurately.

* docs: update CLAUDE.md and remove Android build scripts from package.json

- Added a new section in CLAUDE.md detailing the runtime scope, clarifying that Tauri is desktop-only and should not include mobile or web branches.
- Removed Android development and build scripts from package.json to streamline the project for desktop platforms only.

* refactor: streamline import statements and enhance test mock structure

- Reordered import statements in `loader.ts` and `tools/loader.ts` for consistency.
- Simplified mock implementation in `tauriCoreBridge.e2e.test.ts` to improve readability and maintainability.
- Added external binary configuration in `build.rs` to support resource management during local builds.

* test: stabilize core/unit test paths and tauri build-test config

* chore: update subproject commit reference in skills

* chore: update Tauri build configuration to include custom environment variable

- Modified the Tauri build command in the GitHub Actions workflow to set a custom configuration for updater artifacts, enhancing the build process for the x86_64-unknown-linux-gnu target.
2026-03-27 13:30:32 -07:00