Expose a model-callable `skills_call` tool in the shared tool registry and add coverage for native dispatcher execution of generic skill invocations. Closes#67.
Made-with: Cursor
Unify tool-call parsing across dispatcher paths and persist parsed fallback calls with stable IDs so execution and history stay aligned end-to-end.
Closes#65
Made-with: Cursor
- Add openhuman-skills submodule pointing to tinyhumansai/openhuman-skills
- Remove openhuman-skills from .gitignore so the submodule is tracked
- Update skill discovery paths in qjs_engine.rs from skills/skills to
openhuman-skills/skills (dev cwd, parent, and bundled resource paths)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace openssl with aes-gcm for AES-256-GCM decryption in rest.rs
- Remove openssl/openssl-sys from Cargo.toml and Cargo.lock
- Use ci_safe_config() in ingestion tests to skip ORT model loading
(avoids Mutex poisoned panic on CI without libonnxruntime)
- Remove serial_test dependency (no longer needed)
- Fix cargo fmt issue in rest.rs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add tiered model presets (Low/Medium/High) with device-aware recommendations
so users can pick a local AI model that fits their machine without editing
raw JSON config. Detect RAM, CPU, GPU via sysinfo crate and recommend a tier.
Persist selection to config.toml, with env var override and graceful
degradation hints on bootstrap failure.
- Rust: presets.rs (tier definitions, recommendation logic), device.rs
(hardware detection), 3 new RPC methods, env var override, bootstrap hints
- Frontend: tier selector UI in Settings > Local AI Model with device info,
loading/error states, and "Advanced" toggle for existing controls
- Tests: 7 Rust unit tests + comprehensive JSON-RPC E2E test
- Also fixes pre-existing lint warning in SkillSetupWizard.tsx
Closes#80
CI runner lacks libonnxruntime so ORT Session::builder panics inside
its internal std::Mutex, poisoning it for the parallel test. Running
them serially avoids the second test hitting the poisoned mutex.
- Remove duplicate `libloading` package entry in Cargo.lock that caused
`failed to parse lock file` build errors
- Remove extra blank line in ingestion.rs:1098 to pass cargo fmt check
- Introduced a new job `notify-discord` to send notifications to a Discord channel upon successful release publication.
- The notification includes release details such as title, version, and assets, formatted for clarity.
- Added error handling for missing webhook URL and invalid release IDs to ensure robustness.
All 26 agent tests shared std::env::temp_dir() as workspace, causing
them to contend on the same SQLite database file when running in
parallel. This caused flaky "database is locked" failures in CI
(e.g. clear_history_resets_conversation).
Fix: each test helper now creates its own tempfile::TempDir, returning
it alongside the Agent so it stays alive for the test duration.
Verified: 36/36 pass across 5 consecutive runs with zero flakiness.
- Introduced `.claude/memory.md` to document fixes, gotchas, strict rules, workflow, and environment setup.
- Aims to streamline onboarding and provide quick reference for common issues and workflows.
- Centralize all VITE_* env var reads in app/src/utils/config.ts (SENTRY_DSN, BACKEND_URL, DEV_JWT_TOKEN)
- Update consumers (analytics.ts, backendUrl.ts, store/index.ts) to import from config.ts
- Add TypeScript type declarations for ImportMetaEnv in vite-env.d.ts
- Remove dead import.meta.env.OPENHUMAN_CORE_RPC_URL fallback (non-VITE prefix, never exposed by Vite)
- Remove unused TELEGRAM_BOT_USERNAME/TELEGRAM_BOT_ID from test mocks
- Create .env.example (root) documenting ~30 Rust/Tauri env vars with [required]/[optional] tags
- Create app/.env.example documenting 6 frontend VITE_* vars
- Add Configuration section to CLAUDE.md
Closes#61
- Added `.claude/memory.md` to serve as a centralized quick reference for project fixes, gotchas, rules, and workflows.
- Documented `memory-keeper` agent's purpose and guidelines in `.claude/agents/memory-keeper.md`.
- Ensured concise formatting and strict update rules for maintaining institutional knowledge.
Extends WebSearchTool with a `parallel` provider backed by the
Parallel Search API (POST /v1beta/search). Includes API key loading
from env vars, encrypted persistence mirroring Brave, structured result
parsing with excerpt truncation, and full unit test coverage using
mocked JSON responses. Defaults are unchanged (duckduckgo).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added an "Early Beta" note to the README to inform users about the development status.
- Updated the download instructions in the README for clarity and added a script for global installation.
- Introduced a new BUILDING.md file detailing the steps to build and install OpenHuman from source or via stable releases.
- Added a placeholder install script to guide users on future installation options.
- Updated the signing workflow to sign non-main binaries (sidecars) before the main .app bundle, improving compliance with Apple notarization requirements.
- Added diagnostic output to display the main executable name and list contents of the app bundle for better visibility during the signing process.
- Improved comments for clarity on the new signing steps and their significance in the overall workflow.