Commit Graph
841 Commits
Author SHA1 Message Date
Mega MindandGitHub 2b33afeefe fix(skills): enforce per-skill runtime tool isolation (#140)
* Add unit tests for Mnemonic page

- Introduced comprehensive tests for the Mnemonic page, covering initial render, copy to clipboard functionality, confirmation checkbox behavior, and mode switching between generate and import.
- Validated user interactions, including input handling and button states, ensuring robust functionality and user experience.
- Enhanced test coverage for various scenarios, including validation of mnemonic phrases and loading states during operations.

* test: add cross-stack test coverage for core and tauri flows

Add focused Rust and frontend tests for core process startup behavior, CLI argument parsing, JSON-RPC error handling, and Tauri command/RPC mapping paths to improve confidence for issue #57.

Closes #57

Made-with: Cursor

* refactor(tests): streamline test code and improve readability

Consolidate mock imports and simplify function calls in coreRpcClient tests. Adjust formatting in Rust core_process and CLI tests for better clarity. Update mnemonic test assertions for improved accuracy.

Made-with: Cursor

* fix(e2e): harden deep-link login flow reliability

Stabilize auth deep-link handling and E2E delivery with readiness guards, retries, and new listener unit tests so login/onboarding flows are deterministic for issue #70.

Closes #70

Made-with: Cursor

* refactor(tests): update agent initialization in tests for consistency

Refactor test cases to use a tuple return from `build_agent_with`, improving consistency in agent setup across multiple tests. This change enhances readability and maintains uniformity in the test structure.

Made-with: Cursor

* fix(skills): enforce per-skill runtime tool isolation

Add explicit tool-call origin policy in the QuickJS runtime so skills cannot invoke other skills' tools, while preserving external orchestration through RPC/socket surfaces. Also remove the generic skills_call tool path and document the isolation contract for skill authors.

Closes #94

Made-with: Cursor
2026-03-31 13:58:56 -07:00
Mega MindandGitHub ccb151be8a fix(e2e): harden deep-link login flow reliability (#137)
* Add unit tests for Mnemonic page

- Introduced comprehensive tests for the Mnemonic page, covering initial render, copy to clipboard functionality, confirmation checkbox behavior, and mode switching between generate and import.
- Validated user interactions, including input handling and button states, ensuring robust functionality and user experience.
- Enhanced test coverage for various scenarios, including validation of mnemonic phrases and loading states during operations.

* test: add cross-stack test coverage for core and tauri flows

Add focused Rust and frontend tests for core process startup behavior, CLI argument parsing, JSON-RPC error handling, and Tauri command/RPC mapping paths to improve confidence for issue #57.

Closes #57

Made-with: Cursor

* refactor(tests): streamline test code and improve readability

Consolidate mock imports and simplify function calls in coreRpcClient tests. Adjust formatting in Rust core_process and CLI tests for better clarity. Update mnemonic test assertions for improved accuracy.

Made-with: Cursor

* fix(e2e): harden deep-link login flow reliability

Stabilize auth deep-link handling and E2E delivery with readiness guards, retries, and new listener unit tests so login/onboarding flows are deterministic for issue #70.

Closes #70

Made-with: Cursor
2026-03-31 13:02:52 -07:00
77fd5f9edd fix: propagate entity_type into retrieval context for graph visualization (#135)
* feat(memory): connect graph query and doc ingest APIs to frontend

Wire up memory.graph.query and memory.doc.ingest RPC endpoints and
integrate graph relations into the MemoryWorkspace UI, replacing
backend-only entity counts with local graph store data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in MemoryWorkspace and tauriCommands

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add unit tests for memory graph query, doc ingest, and dispatch routing

Cover the new graph query and doc ingest APIs added in this PR:
- Rust dispatch tests: routing, param validation, unknown method fallthrough
- Frontend tauriCommands tests: Tauri guard, RPC forwarding for memoryGraphQuery/memoryDocIngest
- MemoryWorkspace component tests: graph relations rendering, evidence badges, empty states

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier and cargo fmt formatting in test files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in tauriCommandsMemory test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: merge duplicate tauriCommands import in MemoryWorkspace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in MemoryWorkspace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: propagate entity_type from graph relation attrs into retrieval context

build_retrieval_context was discarding entity types that were already
present in relation attrs.entity_types (populated during ingestion by
GLiNER relex). Entities in MemoryRetrievalEntity now carry their type
(e.g. PERSON, PROJECT, WORK_ITEM) instead of always being None.

Adds unit tests for both typed and untyped paths, plus an ignored
GLiNER smoke test (gline_rs_smoke) that verifies the full pipeline
from Notion fixture ingestion through graph storage to retrieval
context with the real ONNX model.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: sanil jain <jainsanil18@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 12:37:03 -07:00
906b55b63e feat(observability): add Sentry error reporting to Rust core (#131)
* chore(workflows): comment out Windows smoke tests in installer and release workflows

* feat(observability): integrate Sentry for error reporting and add configuration support

- Added Sentry integration for error reporting in the application, initializing it in the main function.
- Introduced a new environment variable `OPENHUMAN_SENTRY_DSN` to configure Sentry DSN.
- Updated the observability configuration schema to include a field for Sentry DSN.
- Enhanced logging to include Sentry event filtering based on log levels.
- Implemented secret scrubbing to protect sensitive information in error reports.

* feat(analytics): add support for anonymized analytics settings

- Introduced new environment variable `OPENHUMAN_ANALYTICS_ENABLED` to enable or disable anonymized analytics and crash reports.
- Updated the PrivacyPanel component to sync analytics consent with the core configuration.
- Added new functions to handle analytics settings updates and retrieval in the Tauri backend.
- Enhanced observability configuration to include analytics settings, defaulting to enabled.
- Updated relevant schemas and handlers for analytics settings in the backend.

* refactor(tauriCommands): improve formatting and structure of analytics settings function

- Reformatted the `openhumanUpdateAnalyticsSettings` function for better readability by adjusting the parameter structure.
- Enhanced the output formatting in the `handle_get_analytics_settings` function for improved clarity in the JSON response.

* feat(analytics): sync analytics consent to core RPC and improve anonymization copy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 12:18:50 -07:00
Mega MindandGitHub 52b59f62d7 test: add cross-stack coverage for core and tauri flows (#130)
* Add unit tests for Mnemonic page

- Introduced comprehensive tests for the Mnemonic page, covering initial render, copy to clipboard functionality, confirmation checkbox behavior, and mode switching between generate and import.
- Validated user interactions, including input handling and button states, ensuring robust functionality and user experience.
- Enhanced test coverage for various scenarios, including validation of mnemonic phrases and loading states during operations.

* test: add cross-stack test coverage for core and tauri flows

Add focused Rust and frontend tests for core process startup behavior, CLI argument parsing, JSON-RPC error handling, and Tauri command/RPC mapping paths to improve confidence for issue #57.

Closes #57

Made-with: Cursor

* refactor(tests): streamline test code and improve readability

Consolidate mock imports and simplify function calls in coreRpcClient tests. Adjust formatting in Rust core_process and CLI tests for better clarity. Update mnemonic test assertions for improved accuracy.

Made-with: Cursor
2026-04-01 00:25:04 +05:30
4d3b63857f feat(memory): connect graph query and doc ingest APIs (#124)
* feat(memory): connect graph query and doc ingest APIs to frontend

Wire up memory.graph.query and memory.doc.ingest RPC endpoints and
integrate graph relations into the MemoryWorkspace UI, replacing
backend-only entity counts with local graph store data.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in MemoryWorkspace and tauriCommands

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add unit tests for memory graph query, doc ingest, and dispatch routing

Cover the new graph query and doc ingest APIs added in this PR:
- Rust dispatch tests: routing, param validation, unknown method fallthrough
- Frontend tauriCommands tests: Tauri guard, RPC forwarding for memoryGraphQuery/memoryDocIngest
- MemoryWorkspace component tests: graph relations rendering, evidence badges, empty states

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier and cargo fmt formatting in test files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in tauriCommandsMemory test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix: merge duplicate tauriCommands import in MemoryWorkspace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* style: fix Prettier formatting in MemoryWorkspace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: sanil jain <jainsanil18@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 11:01:06 -07:00
Mega MindandGitHub b855ce97fd Merge pull request #127 from M3gA-Mind/feat/system-tray-bug
fix(tauri): restore working tray controls in desktop shell
2026-03-31 22:17:57 +05:30
M3gA-Mind 91e92cb98a fix(tauri): restore working tray controls in desktop shell
Implement tray icon setup directly in app/src-tauri with open/quit actions and daemon-safe window restore flow, plus tray behavior docs updates. Closes #93.

Made-with: Cursor
2026-03-31 22:17:00 +05:30
Mega MindandGitHub 1a1f948e82 Merge pull request #126 from M3gA-Mind/feat/skills-resetup
feat: re-setup skills runtime and add model-callable skills bridge
2026-03-31 22:06:47 +05:30
M3gA-Mind 9aa60e6e42 feat(agent): add generic skills_call bridge for runtime skill tools
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
2026-03-31 22:04:51 +05:30
Mega MindandGitHub f87c2d0894 Merge pull request #125 from M3gA-Mind/feat/skills-resetup
fix(agent): execute fallback tool calls in the loop
2026-03-31 21:48:31 +05:30
M3gA-Mind 331b1e4ef8 Remove openhuman-skills submodule and add comprehensive documentation on the skills system, detailing discovery, installation, execution, and synchronization processes for engineers. This includes a mental model, key directories, skill packaging, registry flow, and runtime behavior. 2026-03-31 21:46:10 +05:30
M3gA-Mind 7b0e07f8ad fix(agent): execute fallback tool calls in the loop
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
2026-03-31 21:44:04 +05:30
oxoxDevandGitHub 5481c9266e feat(autocomplete): persist accepted completions in memory and reuse them for suggestions (#108) (#119) 2026-03-31 08:08:41 -07:00
oxoxDevandGitHub c46adfa19a feat(installer): add one-command installer flow and release smoke checks (#123) 2026-03-31 08:08:08 -07:00
Al629176andGitHub e7a7f90fb6 Merge pull request #113 from sanil-23/issue-60-ingestion-relex
Add GLiNER relex ingestion pipeline (#60)
2026-03-31 19:23:25 +05:30
M3gA-MindandClaude Sonnet 4.6 649c381f3d feat: set up openhuman-skills git submodule
- 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>
2026-03-31 19:22:37 +05:30
Cyrus GrayandGitHub 32cd2a7ef3 Merge pull request #121 from graycyrus/main
update: modify .gitignore to include `create_issue` and remove redund…
2026-03-31 19:09:18 +05:30
cyrus@tinyhumans.ai f8f63f97c8 update: modify .gitignore to include create_issue and remove redundant workflow entry 2026-03-31 19:08:25 +05:30
Cyrus GrayandGitHub 93c0b725e8 Merge pull request #120 from tinyhumansai/feat/local-ai-model-tier-presets
feat(local-ai): guided model tier selection by device capability
2026-03-31 19:06:01 +05:30
sanil jainandClaude Opus 4.6 6964abbf5f Fix CI: remove openssl dep, skip ORT init in ingestion tests, fix fmt
- 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>
2026-03-31 19:03:27 +05:30
cyrus@tinyhumans.ai 6f6cdc5631 merge: resolve Cargo.lock conflict with main 2026-03-31 18:46:31 +05:30
cyrus@tinyhumans.ai 2570195604 feat(local-ai): add guided model tier selection by device capability
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
2026-03-31 18:43:50 +05:30
sanil jain 3bd86fa4d4 Fix ORT mutex poisoning: serialize ingestion tests
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.
2026-03-31 18:41:29 +05:30
M3gA-Mind c273d60f9d chore: update .gitignore and increment OpenHuman version to 0.49.32
- Added 'workflow' to .gitignore to exclude workflow files from version control.
- Updated OpenHuman version in Cargo.lock from 0.49.31 to 0.49.32.
2026-03-31 18:26:32 +05:30
sanil jain 9e6e8cafa5 Fix cargo fmt for fixture path helper 2026-03-31 18:25:34 +05:30
sanil jain c981c33c78 Fix fixture path to use platform-agnostic Path::join
The test fixture loader used Windows backslashes which broke on Linux CI.
2026-03-31 18:20:15 +05:30
sanil jain 0dc1dc25aa Fix CI: remove duplicate libloading in Cargo.lock and cargo fmt
- 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
2026-03-31 18:10:16 +05:30
Cyrus GrayandGitHub a89d5a03fe Merge pull request #118 from YellowSnnowmann/feat/github-release-discord-notify
feat: add Discord notification for new releases in GitHub Actions wor…
2026-03-31 17:52:54 +05:30
Al629176andGitHub fdbba4f037 Merge pull request #112 from sanil-23/issue-69-memory-rpc
Add core memory RPC surface (#69)
2026-03-31 17:52:14 +05:30
sanil jain c396014632 Merge Linux ONNX runtime fixes into relex branch 2026-03-31 17:49:33 +05:30
Cyrus GrayandGitHub f9c526ea17 Merge pull request #116 from tinyhumansai/refactor/update-config-env-vars
refactor(config): centralize env vars and add .env.example docs
2026-03-31 17:36:35 +05:30
shanu 92b19fdf2d feat: add Discord notification for new releases in GitHub Actions workflow
- 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.
2026-03-31 17:33:14 +05:30
cyrus@tinyhumans.ai 064ec59ce0 merge: resolve conflicts with main (memory.md, Cargo.lock) 2026-03-31 17:29:54 +05:30
sanil jain 076b8beb36 Add Linux ONNX runtime bootstrap for relex 2026-03-31 17:28:49 +05:30
sanil jain 55cd5bef45 Fix Linux ONNX runtime loading for embeddings 2026-03-31 17:28:20 +05:30
cyrus@tinyhumans.ai a3fbdc68b1 fix(tests): isolate agent tests with per-test temp directories
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.
2026-03-31 17:28:09 +05:30
cyrus@tinyhumans.ai 483b628e7e docs: add project memory guide for onboarding and troubleshooting
- 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.
2026-03-31 16:58:38 +05:30
cyrus@tinyhumans.ai f8a7cfbf50 chore: update OpenHuman dependency to v0.49.32 2026-03-31 16:56:54 +05:30
cyrus@tinyhumans.ai b27eaac5e8 update: refine .gitignore to exclude workflow and adjust my_docs handling 2026-03-31 16:56:50 +05:30
cyrus@tinyhumans.ai 06f013719c refactor(config): centralize env vars, add .env.example files, remove stale config
- 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
2026-03-31 16:55:19 +05:30
Cyrus GrayandGitHub 81cc084880 Merge pull request #115 from tinyhumansai/feat/memory-agent
Feat/memory agent
2026-03-31 16:33:53 +05:30
cyrus@tinyhumans.ai aaf6b1975c chore: update .gitignore to exclude local workflow documentation files 2026-03-31 16:19:42 +05:30
cyrus@tinyhumans.ai 1c3fd9b474 docs: introduce memory-keeper agent and add .claude/memory.md for project knowledge tracking
- 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.
2026-03-31 16:19:36 +05:30
Cyrus GrayandGitHub 3968239075 Merge pull request #114 from YellowSnnowmann/feat/parallel-search-provider
feat(web-search): add Parallel search provider to WebSearchTool
2026-03-31 16:16:16 +05:30
sanil jain b7835eb843 Add GLiNER relex ingestion pipeline 2026-03-31 14:11:26 +05:30
shanuandClaude Sonnet 4.6 d5bb194e22 feat(web-search): add Parallel search provider to WebSearchTool
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>
2026-03-31 14:08:50 +05:30
Cyrus GrayandGitHub fca77f3ffc Merge pull request #111 from tinyhumansai/fix/remove-dynamic-imports
refactor: replace dynamic imports with static imports in app/src
2026-03-31 14:03:32 +05:30
sanil jain 16e5ac543c Add core memory RPC surface 2026-03-31 14:01:51 +05:30
cyrus@tinyhumans.ai 588b6d04e4 refactor: replace dynamic imports with static imports in app/src
Closes #102
2026-03-31 13:41:36 +05:30