Commit Graph
847 Commits
Author SHA1 Message Date
58b8a0dd4d fix(skills): persist OAuth credentials and fix skill auto-start lifecycle (#146)
* refactor(deep-link): streamline OAuth handling and skill setup process

- Removed the RPC call for persisting setup completion, now handled directly in the preferences store.
- Updated comments in the deep link handler to clarify the sequence of operations during OAuth completion.
- Enhanced the `set_setup_complete` function to automatically enable skills upon setup completion, improving user experience during skill activation.

This refactor simplifies the OAuth deep link handling and ensures skills are automatically enabled after setup, enhancing the overall flow.

* feat(skills): enhance SkillSetupModal and snapshot fetching with polling

- Added a mechanism in SkillSetupModal to sync the setup mode when the setup completion status changes, improving user experience during asynchronous loading.
- Updated the useSkillSnapshot and useAllSkillSnapshots hooks to include periodic polling every 3 seconds, ensuring timely updates from the core sidecar and enhancing responsiveness to state changes.

These changes improve the handling of skill setup and snapshot fetching, providing a more seamless user experience.

* fix(ErrorFallbackScreen): update reload button behavior to navigate to home before reloading

- Modified the onClick handler of the reload button to first set the window location hash to '#/home' before reloading the application. This change improves user experience by ensuring users are directed to the home screen upon reloading.

* refactor(intelligence-api): simplify local-only hooks and remove unused code

- Refactored the `useIntelligenceApiFallback` hooks to focus on local-only implementations, removing reliance on backend APIs and mock data.
- Streamlined the `useActionableItems`, `useUpdateActionableItem`, `useSnoozeActionableItem`, and `useChatSession` hooks to operate solely with in-memory data.
- Updated comments for clarity on the local-only nature of the hooks and their intended usage.
- Enhanced the `useIntelligenceStats` hook to derive entity counts from local graph relations instead of fetching from a backend API, improving performance and reliability.
- Removed unused imports and code related to backend interactions, resulting in cleaner and more maintainable code.

* feat(intelligence): add active tab state management for Intelligence component

- Introduced a new `IntelligenceTab` type to manage the active tab state within the Intelligence component.
- Initialized the `activeTab` state to 'memory', enhancing user experience by allowing tab-specific functionality and navigation.

This update lays the groundwork for future enhancements related to tabbed navigation in the Intelligence feature.

* feat(intelligence): implement tab navigation and enhance UI interactions

- Added a tab navigation system to the Intelligence component, allowing users to switch between 'Memory', 'Subconscious', and 'Dreams' tabs.
- Integrated conditional rendering for the 'Analyze Now' button, ensuring it is only displayed when the 'Memory' tab is active.
- Updated the UI to include a 'Coming Soon' label for the 'Subconscious' and 'Dreams' tabs, improving user awareness of upcoming features.
- Enhanced the overall layout and styling for better user experience and interaction.

* refactor(intelligence): streamline UI text and enhance OAuth credential handling

- Simplified text rendering in the Intelligence component for better readability.
- Updated the description for subconscious and dreams sections to provide clearer context on functionality.
- Refactored OAuth credential handling in the QjsSkillInstance to utilize a data directory for persistence, improving credential management and recovery.
- Enhanced logging for OAuth credential restoration and persistence, ensuring better traceability of actions.

* fix(skills): update OAuth credential handling in SkillManager

- Modified the SkillManager to use `credentialId` instead of `integrationId` for OAuth notifications, aligning with the expectations of the JS bootstrap's oauth.fetch.
- Enhanced the parameters passed during the core RPC call to include `grantedScopes` and ensure the provider defaults to "unknown" if not specified, improving the robustness of the skill activation process.

* fix(skills): derive modal mode from snapshot instead of syncing via effect

Avoids the react-hooks/set-state-in-effect lint warning by deriving
the setup/manage mode directly from the snapshot's setup_complete flag.

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

* refactor(ErrorFallbackScreen): format reload button onClick handler for improved readability

- Reformatted the onClick handler of the reload button to enhance code readability by adding line breaks.
- Updated import order in useIntelligenceStats for consistency.
- Improved logging format in event_loop.rs and js_helpers.rs for better traceability of OAuth credential actions.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 16:37:41 -07:00
3369454cbe fix(local-ai): Ollama bootstrap failure UX and auto-recovery (#142)
* feat(local-ai): enhance Ollama installation and path configuration

- Added a new command to set a custom path for the Ollama binary, allowing users to specify a manually installed version.
- Updated the LocalModelPanel and Home components to reflect the installation state, including progress indicators for downloading and installing.
- Enhanced error handling to display detailed installation errors and provide guidance for manual installation if needed.
- Introduced a new state for 'installing' to improve user feedback during the Ollama installation process.
- Refactored related components and utility functions to accommodate the new installation flow and error handling.

This update improves the user experience by providing clearer feedback during the Ollama installation process and allowing for custom binary paths.

* feat(local-ai): enhance LocalAIDownloadSnackbar and Home component

- Updated LocalAIDownloadSnackbar to display installation phase details and improve progress bar animations during the installation state.
- Refactored the display logic to show 'Installing...' when in the installing phase, enhancing user feedback.
- Modified Home component to present warnings in a more user-friendly format, improving visibility of local AI status warnings.

These changes improve the user experience by providing clearer feedback during downloads and installations.

* feat(onboarding): update LocalAIStep to integrate Ollama installation

- Added Ollama SVG icon to the LocalAIStep component for visual representation.
- Updated text to clarify that OpenHuman will automatically install Ollama for local AI model execution.
- Enhanced privacy and resource impact descriptions to reflect Ollama's functionality.
- Changed button text to "Download & Install Ollama" for clearer user action guidance.
- Improved messaging for users who skip Ollama installation, emphasizing future setup options.

These changes enhance user understanding and streamline the onboarding process for local AI model usage.

* feat(onboarding): update LocalAIStep and LocalAIDownloadSnackbar for improved user experience

- Modified the LocalAIStep component to include a "Setup later" button for user convenience and updated the messaging to clarify the installation process for Ollama.
- Enhanced the LocalAIDownloadSnackbar by repositioning it to the bottom-right corner for better visibility and user interaction.
- Updated the Ollama SVG icon to include a white background for improved contrast and visibility.

These changes aim to streamline the onboarding process and enhance user understanding of the local AI installation and usage.

* feat(local-ai): add diagnostics functionality for Ollama server health check

- Introduced a new diagnostics command to assess the Ollama server's health, list installed models, and verify expected models.
- Updated the LocalModelPanel to manage diagnostics state and display errors effectively.
- Enhanced error handling for prompt testing to provide clearer feedback on issues encountered.
- Refactored related components and utility functions to support the new diagnostics feature.

These changes improve the application's ability to monitor and report on the local AI environment, enhancing user experience and troubleshooting capabilities.

* feat(local-ai): add Ollama diagnostics section to LocalModelPanel

- Introduced a new diagnostics feature in the LocalModelPanel to check the health of the Ollama server, display installed models, and verify expected models.
- Implemented loading states and error handling for the diagnostics process, enhancing user feedback during checks.
- Updated the UI to present diagnostics results clearly, including server status, installed models, and any issues found.

These changes improve the application's monitoring capabilities for the local AI environment, aiding in troubleshooting and user experience.

* feat(local-ai): implement auto-retry for Ollama installation on degraded state

- Enhanced the Home component to include a reference for tracking auto-retry status during Ollama installation.
- Updated the local AI service to retry the installation process if the server state is degraded, improving resilience against installation failures.
- Introduced a new method to force a fresh install of the Ollama binary, ensuring that users can recover from initial setup issues more effectively.

These changes enhance the reliability of the local AI setup process, providing a smoother user experience during installation and recovery from errors.

* feat(local-ai): improve Ollama server management and diagnostics

- Refactored the Ollama server management logic to include a check for the runner's health, ensuring that the server can execute models correctly.
- Introduced a new method to verify the Ollama runner's functionality by sending a lightweight request, enhancing error handling for server issues.
- Added functionality to kill any stale Ollama server processes before restarting with the correct binary, improving reliability during server restarts.
- Updated the server startup process to streamline the handling of server health checks and binary resolution.

These changes enhance the robustness of the local AI service, ensuring better management of the Ollama server and improved diagnostics for user experience.

* style: apply prettier and cargo fmt formatting

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 15:34:53 -07:00
c5e5ae170c ci: speed up GitHub Actions builds (~14m → ~3-5m warm) (#136)
* chore: add CI profile for faster compilation in Cargo.toml files

- Introduced a new `[profile.ci]` section in both root and Tauri Cargo.toml files to optimize build settings for continuous integration.
- Adjusted compilation parameters to prioritize speed over runtime performance, including reduced optimization level and enabled code generation units.

* refactor(tests): update agent test setup to return temporary directory

- Modified the `build_agent_with` function calls in the agent tests to return a temporary directory alongside the agent instance, improving resource management during tests.
- Ensured consistency in test setup across multiple test functions.

* chore: update .gitignore to include fastembed_cache

- Added 'workflow' and '.fastembed_cache' to the .gitignore file to prevent unnecessary files from being tracked in the repository.

* test: enhance dispatch routing tests with panic handling

Updated the `dispatch_routes_memory_doc_ingest` test to use `AssertUnwindSafe` and `catch_unwind` for better handling of potential panics during execution. This ensures that the test verifies route existence even if the handler encounters a panic, improving robustness against shared state issues in concurrent tests.

* ci: speed up builds with rust-cache, sccache, mold linker, and CI profile

- Replace manual Cargo registry cache with Swatinem/rust-cache@v2 (caches
  target/ directories for both core and Tauri crates)
- Add mozilla-actions/sccache for cross-branch compilation caching
- Install mold linker on Linux for faster linking
- Use --profile ci for sidecar build (opt-level 1, codegen-units 16)
- Override release profile env vars for Tauri build with CI-tuned settings
- Add --bundles none to CI build (skip unused deb/appimage packaging)
- Restrict push triggers to main branch only (PRs already cover feature
  branches, preventing duplicate runs)

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

* fix(ci): unset RUSTC_WRAPPER for cargo fmt to avoid sccache errors

The sccache-action sets RUSTC_WRAPPER globally for the job. cargo fmt
invokes rustc through sccache which fails if the GHA cache service is
unavailable. Clear RUSTC_WRAPPER for fmt steps and remove redundant
per-step env overrides (the action already sets them job-wide).

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

* refactor: implement Default trait for various structs and enums

- Added Default implementations for ConnectionStatus, AgentBuilder, NativeRuntime, AutocompleteEngine, CliChannel, ActionTracker, SkillStatus, and ExtractionMode to streamline object initialization.
- Simplified condition checks in several places by replacing map_or with is_some_and and is_none_or for better readability and performance.
- Updated various instances of string handling in message sending to remove unnecessary conversions.

This refactor enhances code clarity and consistency across the codebase.

* style: clean up whitespace and improve code formatting

- Removed unnecessary blank lines in several files to enhance code readability.
- Simplified condition checks by consolidating method calls into single lines for better clarity.
- Improved formatting in various functions to maintain consistency across the codebase.

* fix(ci): use --bundles deb instead of unsupported none value

Tauri CLI on this version doesn't support 'none' as a bundle type.
Use 'deb' as the lightest single bundle to minimize packaging time.

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

* feat(ci): add Dockerfile and CI workflows for building and pushing Docker images

- Introduced a Dockerfile to set up a CI environment with necessary dependencies for Tauri, Rust, Node.js, and sccache.
- Created a new workflow to build and push the CI Docker image to GitHub Container Registry on main branch pushes.
- Updated existing workflows to utilize the new Docker image for building and testing, enhancing consistency and efficiency in CI processes.

* chore(ci): update container image references in CI workflows

- Removed unnecessary permissions for packages in build, test, and typecheck workflows.
- Updated container image references to use a specific digest instead of the latest tag for improved stability and reproducibility in CI processes.

* fix(ci): use correct amd64 Docker image digest

Previous digest was from arm64 build (Mac). Rebuilt with
--platform linux/amd64 for GitHub Actions runners.

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

* fix(ci): use tag instead of digest for Docker image reference

GHCR doesn't support pulling OCI index manifests by digest reliably.
Use the rust-1.93.0 tag which is pinned to a specific Rust version
and resolves correctly on amd64 CI runners.

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

* fix(ci): rename Docker package to openhuman_ci

Move from nested ghcr.io/tinyhumansai/openhuman/ci-runner to
ghcr.io/tinyhumansai/openhuman_ci to avoid GHCR nested package
manifest resolution issues.

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

* fix(ci): remove sccache env vars from container jobs

sccache can't access the GHA cache API from inside a Docker container
(missing ACTIONS_CACHE_URL/ACTIONS_RUNTIME_TOKEN). Swatinem/rust-cache
already caches target/ which provides the main build speedup.

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

* chore: update installer smoke workflow to trigger on main branch pushes

- Added a trigger for the installer smoke workflow to run on pushes to the main branch, enhancing CI coverage for mainline changes.

* fix: enhance Sentry DSN retrieval logic

- Updated the Sentry DSN retrieval process to include an additional fallback option using `option_env!`, ensuring that the DSN can be sourced from both environment variables and optional configuration, improving robustness in observability setup.

* chore: add OPENHUMAN_SENTRY_DSN to release workflow and example secrets

- Included the OPENHUMAN_SENTRY_DSN variable in the release workflow configuration to enhance observability setup.
- Updated the ci-secrets.example.json file to include a placeholder for OPENHUMAN_SENTRY_DSN, providing clarity for developers on required environment variables.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 14:16:12 -07:00
Cyrus GrayandGitHub 8486a3b02e feat(onboarding): calmer onboarding + local AI download snackbar (#134)
* feat(onboarding): calmer onboarding with durable deferral + local AI download snackbar

- Add persisted `onboardingDeferredByUser` state so "Set up later" survives
  across sessions (no more overlay nagging on every launch)
- Add SetupBanner for non-intrusive "Finish setting up" reminder with resume path
- Convert LocalAIStep to fire-and-forget download, advancing immediately
- Add LocalAIDownloadSnackbar (bottom-left, collapsible) for persistent download
  progress that doesn't block the main chrome
- Extract shared helpers (formatBytes, formatEta, progressFromStatus) to localAiHelpers.ts
- Add Vitest tests for overlay gating, banner, and snackbar

Closes #101

* fix(test): remove per-test config mock that overrode global setup exports

The OnboardingOverlay test mocked utils/config with only DEV_FORCE_ONBOARDING,
which shadowed the global mock from setup.ts and dropped IS_DEV — causing
store/index.ts to fail on CI.
2026-03-31 13:59:33 -07:00
sanil-23andGitHub 600dab4336 refactor: migrate memory service to controller registry pattern (#138)
Move all 23 memory RPC methods from legacy dispatch (src/rpc/dispatch.rs)
to the controller registry pattern with typed schemas.

- Create src/openhuman/memory/schemas.rs with 23 ControllerSchema
  definitions, RegisteredController entries, and handler functions
- Wire memory controllers into src/core/all.rs registry builders
- Remove all memory.* and ai.* branches from dispatch.rs (only
  security_policy_info remains)
- Update frontend to use openhuman.memory_* method names directly
  in tauriCommands.ts (no legacy aliases needed)
- Move ai.list_memory_files/read/write into memory namespace as
  openhuman.memory_list_files/read_file/write_file
- Update jsonrpc.rs and tauriCommandsMemory test method strings

Methods are now accessible via both JSON-RPC (openhuman.memory_*)
and CLI (openhuman memory <function>).
2026-03-31 13:59:21 -07:00
Steven EnamakelandGitHub e5e09221b2 fix: service gate buttons unclickable on startup (#139)
* refactor: enhance service command handling and improve service state checks

- Updated the ServiceBlockingGate component to include additional checks for service installation status, ensuring it accounts for 'Unknown' states.
- Refactored tauriCommands to implement direct service command invocations with error handling, allowing fallback to CLI parsing for service operations (install, start, stop, status, uninstall).
- Introduced a new utility function to parse CLI JSON output into the expected CommandResponse format, improving robustness in service command responses.
- Added new Tauri commands for direct service interactions, enhancing the application's ability to manage service states effectively.

* docs: add debug logging guidelines to CLAUDE.md and enhance ServiceBlockingGate component

- Introduced a new section in CLAUDE.md outlining best practices for debug logging, emphasizing verbose diagnostics, critical checkpoints, structured context, and safety measures.
- Updated the ServiceBlockingGate component to improve operation handling by adding an operating label state, enhancing user feedback during service operations, and refining error handling and logging for better traceability.

* style: add pointer-events none to CSS for improved interaction handling

- Updated index.css to include pointer-events: none; for specific elements, enhancing user experience by preventing unintended interactions.

* style: improve text formatting and readability in ServiceBlockingGate and tauriCommands

- Refactored text in the ServiceBlockingGate component for better readability by consolidating lines.
- Enhanced the formatting of the openhumanServiceStart function in tauriCommands for improved clarity in the method call structure.
2026-03-31 13:59:08 -07:00
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