Commit Graph
49 Commits
Author SHA1 Message Date
2e7d1946b0 fix(ui): state-aware bootstrap buttons with user feedback (#353) (#426)
* fix(ui): state-aware bootstrap buttons with user feedback (#353)

When local AI state is "ready", replace the Bootstrap button with a
"Running" badge so clicking it no longer appears to do nothing.
Show "Retry" label when state is degraded.  Add transient success/error
messages after manual bootstrap/re-bootstrap actions so the user always
gets clear feedback.

Closes #353

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test(ui): add unit tests for state-aware bootstrap buttons (#353)

Cover the four key rendering states of the Home local-AI card:
- "Running" badge when state is ready (Bootstrap button hidden)
- "Retry" label when state is degraded
- "Bootstrap" label when state is idle
- Transient "Re-bootstrap complete" message after successful re-bootstrap

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 20:03:48 +05:30
YellowSnnowmannandGitHub 8c52236737 refactor(billing): update terminology from "5-hour" to "10-hour" for consistency across billing components (#431)
- Updated comments and variable names in the billingHelpers, InferenceBudget, SubscriptionPlans, and Conversations components to reflect the new 10-hour rolling inference window.
- Adjusted UI labels and descriptions to ensure clarity regarding the 10-hour cap and its implications for users.
- Enhanced the TeamUsage interface documentation to accurately describe the rolling inference window and its associated limits.
2026-04-08 20:01:26 +05:30
Steven EnamakelandGitHub 0609493e1a Add RAM-tiered local AI presets (#425) 2026-04-08 01:35:35 -07:00
Steven EnamakelandGitHub cd2a4a9a87 feat(screen-intelligence): OCR-only mode without vision model (#424)
* feat(settings): add 'Use Vision Model' option to Screen Intelligence Panel

- Introduced a new checkbox in the Screen Intelligence Panel to toggle the use of a vision model for richer context extraction from screenshots.
- Updated state management to handle the new option and integrated it into the configuration and processing logic.
- Adjusted related tests and configurations to support the new feature, ensuring compatibility across the application.

* feat(cli): add --no-vision-model option for screen intelligence

- Introduced a new command-line option `--no-vision-model` to allow users to skip the vision model and use OCR and text LLM only.
- Updated the CLI options parsing to handle the new flag and modified the bootstrap logic to respect this setting.
- Enhanced usage documentation to reflect the new option and its alias `--ocr-only` for clarity.

* fix(screen-intelligence): read use_vision_model from engine runtime config

The processing worker was reading use_vision_model from the persisted
config file (Config::load_or_init), so the CLI --no-vision-model flag
had no effect. Now reads from the engine's in-memory runtime config
which the CLI correctly overrides via apply_config(). Also moves image
compression before OCR pass.

* fix: add use_vision_model to test fixtures and fix rustfmt

Add the new use_vision_model field to all AccessibilityConfig test
fixtures so TypeScript compilation passes. Also includes rustfmt
auto-fix for screen_intelligence_cli.rs.
2026-04-08 01:27:59 -07:00
91996a1dd0 fix(voice): reduce dictation hallucinations and improve Fn/focus reliability (#385) (#409)
* fix(voice): add per-segment confidence validation in whisper engine (#385)

Reject whisper segments with avg token log-probability below -0.7 or
entropy above 2.4. Return TranscriptionResult with confidence metadata
instead of plain String. Update callers in speech.rs and streaming.rs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(voice): upgrade default STT model from tiny to base (#385)

Base model produces significantly fewer hallucinations than tiny,
especially in noisy/quiet conditions. User can still override via config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(voice): add real-time silence gating in audio capture (#385)

Gate sustained silence (>500ms) from being sent to whisper to prevent
hallucinations. Maintain 100ms look-ahead ring buffer so speech onset
after pauses is not clipped. Thresholds adapt to source sample rate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(voice): fix Fn key timing race condition in hotkey event loop (#385)

start_recording() blocks 1-7s on cpal device init but macOS fires Fn
Release almost immediately, causing skipped cycles. Move recording
start to spawn_blocking so the event loop stays responsive. Buffer
Release events during setup and ensure minimum 1.5s recording duration
when release arrives before recording handle is ready.

Also includes: capture focused app on hotkey press, pass through
pipeline for focus validation before paste.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(voice): validate and restore focus before paste, attempt regardless (#385)

Add expected_app parameter to insert_text(). Before Cmd+V, validate
focus via accessibility API and restore via AppleScript if shifted.
Don't abort paste on focus validation failure — attempt insertion
regardless so text is never silently lost.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(voice-ui): align voice server RPC response shape in settings panel (#385)

* style(voice): apply rustfmt formatting in text_input

* fix(voice): address CodeRabbit regressions in server, streaming, and settings polling

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 09:11:57 -07:00
Cyrus GrayandGitHub db7eeee859 feat(onboarding): move Tools step from onboarding to Settings (#408)
Remove the Tools toggle step from onboarding (5 → 4 steps) and add it
as a dedicated Tools panel under Settings > AI & Skills. This reduces
onboarding friction while keeping tool configuration accessible.
2026-04-07 17:49:40 +05:30
8627cee960 Feat/overlay (#378)
* feat(autocomplete): add overlay TTL configuration to AutocompletePanel

- Introduced `overlay_ttl_ms` parameter to the Autocomplete configuration, allowing users to set the overlay display duration.
- Updated AutocompletePanel to include a new input field for adjusting the overlay TTL in milliseconds.
- Enhanced parsing and saving logic to handle the new configuration parameter.
- Added corresponding tests to ensure functionality and validate the new overlay TTL feature.

This update improves user control over the autocomplete overlay behavior, enhancing the overall user experience.

* Refactor accessibility code for improved readability and consistency

- Simplified log statements in `precompile_helper_background` for better clarity.
- Reformatted `detect_input_monitoring_permission` check in `keys.rs` for enhanced readability.
- Rearranged imports in `mod.rs` to maintain consistent structure.
- Improved formatting of `ElementBounds` initialization across multiple test cases in `overlay.rs` and `types.rs` for better visual alignment.
- Enhanced test context creation in `types.rs` for improved clarity.

These changes enhance code maintainability and readability across the accessibility module.

* fix(overlay): parent core RPC, voice toggle, and debug for #342

- Pass OPENHUMAN_OVERLAY_PARENT_RPC_URL from sidecar spawn and strip inherited
  OPENHUMAN_CORE_PORT so the overlay no longer fights for the parent listen port.
- Overlay UI uses HTTP JSON-RPC to the parent sidecar for globe, debug, and voice
  STT so state matches the main app; add parentCoreRpc helper mirroring legacy
  method aliases.
- Skip embedded JSON-RPC server when parent URL is set; use
  OPENHUMAN_OVERLAY_EMBEDDED_CORE_PORT (default 7799) for standalone dev.
- Fix screen intelligence status method name; add voice_status polling, STT
  section, collapsible debug summary, and connection banner when core is unreachable.
- Voice capture switch gates the mic with real STT availability from voice_status.

Closes #342

Made-with: Cursor

* fix: address CodeRabbit review on overlay/autocomplete (PR #378)

- helper: correlate JSON-RPC replies with monotonic request ids; discard mismatched
  lines until deadline (fixes stale response after timeout).
- helper: serialize Swift compile via HELPER_COMPILE_LOCK (precompile vs first use).
- Overlay Tab hint: pass tab_hint from Rust from accept_with_tab; Swift hides hint when empty.
- keys: re-check Input Monitoring on an interval when denied so grant without restart works.
- engine: use non-zero confidence placeholder (0.75) until inline_complete returns scores.
- overlay dedupe: suppress identical badge only within 400ms, not for process lifetime.

Co-authored-by: Code review feedback <noreply@github.com>
Made-with: Cursor

* fix(ci): resolve clippy and warning issues for Rust gates

- Use match on anchor_bounds in autocomplete overlay (avoid unnecessary unwrap)
- Drop unused test imports in registry_ops and rpc dispatch
- Prefix unused notion_doc_id in subconscious integration test

Made-with: Cursor

* fix(overlay): improve parent RPC URL handling in App component

- Updated the useEffect hook to manage the parent RPC URL more robustly by introducing a mounted flag to prevent state updates on unmounted components.
- Added error handling to set the parent RPC URL to null in case of invocation failure, enhancing the reliability of the component's behavior.

* feat(overlay): implement timeout handling for parent core RPC requests

- Introduced a default timeout for parent core RPC requests, enhancing reliability by preventing indefinite waiting for responses.
- Added an AbortController to manage request timeouts, throwing a specific error message when a timeout occurs.
- Updated the `callParentCoreRpc` function to accept a customizable timeout parameter, improving flexibility for RPC calls.

* fix(overlay): allow stopping active recording regardless of config state

- Updated the main button handler in the App component to always permit stopping an active recording when the status is "listening", improving user experience and control over the recording process.
- Removed redundant code that previously checked the status before stopping the recording, streamlining the logic.

* feat(overlay): update Cargo.lock with new dependencies and versions

- Added new packages including `alsa`, `alsa-sys`, `arboard`, `block`, `cocoa`, `core-foundation`, `core-graphics`, `coreaudio-rs`, `coreaudio-sys`, `cpal`, `crunchy`, and `dasp_sample` to enhance functionality and support for audio processing and system interactions.
- Updated existing dependencies to their latest versions for improved performance and compatibility.
- Modified the `show_overlay` function in `ops.rs` to include an additional parameter, enhancing the overlay display functionality.

* feat(autocomplete): add overlay_ttl_ms parameter to Autocomplete interfaces

- Introduced a new optional parameter `overlay_ttl_ms` to both `AutocompleteSetStyleParams` and `AutocompleteConfig` interfaces, allowing for customizable overlay timeout settings.
- This enhancement improves the flexibility of the autocomplete feature by enabling developers to specify how long the overlay should remain visible.

---------

Co-authored-by: Code review feedback <noreply@github.com>
Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-06 21:11:27 -07:00
Steven EnamakelandGitHub 3851d1ef67 fix(voice): anti-hallucination, clipboard paste, Fn key reliability (#380)
* fix(dictation): update hotkey default value and documentation

- Changed the default global hotkey for dictation from "CmdOrCtrl+Shift+D" to "Fn" in both the configuration schema and the associated documentation.
- Updated the hotkey parsing function to recognize "Fn" as a valid key, enhancing the flexibility of hotkey configurations.
- Added a test case to ensure the "Fn" key can be parsed correctly, improving the robustness of the hotkey handling functionality.

* fix(voice): update default activation mode and hotkey in configuration

- Changed the default activation mode for voice and dictation from "tap" to "push" in the respective configuration schemas.
- Updated the default hotkey for voice commands from "ctrl+shift+space" to "Fn" across various modules and documentation.
- Adjusted related tests to reflect the new defaults, ensuring consistency in behavior and expectations.

* feat(voice): integrate embedded global voice server startup

- Added a new asynchronous function `start_if_enabled` to the voice server module, which initializes the embedded voice server based on configuration settings.
- Updated the server run logic to check if the voice server should auto-start, enhancing the startup process for the core application.
- Integrated the new server startup function into the main server run logic, ensuring the voice server is launched if enabled in the configuration.

* feat(voice): add VoicePanel for managing voice server settings

- Introduced a new `VoicePanel` component to handle voice server configurations, including startup options, hotkeys, and runtime controls.
- Updated routing in the settings page to include the new voice settings section.
- Enhanced the `useSettingsNavigation` hook to support navigation to the voice settings.
- Added tests for the `VoicePanel` to ensure functionality and reliability of the voice server management features.

* refactor(dictation): update documentation and improve component initialization

- Revised comments in `DictationHotkeyManager` to clarify the component's mounting process within the app tree.
- Removed unused imports and unnecessary state management from `ServiceBlockingGate`, streamlining the component's logic.
- Updated tests for `ServiceBlockingGate` to reflect changes in behavior, ensuring accurate rendering of child components based on service status.
- Enhanced the `Cargo.lock` file by updating dependencies to their latest versions for improved stability and security.

* fix(voice): update default skip_cleanup setting and enhance VoicePanel options

- Changed the default value of `skip_cleanup` in the voice server configuration from `false` to `true` to improve transcription handling.
- Reordered options in the `VoicePanel` component to ensure "Natural cleanup" is displayed alongside "Verbatim transcription" for better user clarity.
- Updated tests to reflect the new default settings and ensure proper functionality of the VoicePanel component.

* feat(window): add window management commands for Tauri application

- Introduced a new module `window.ts` containing functions for managing window visibility and state in a Tauri application.
- Implemented commands to show, hide, toggle visibility, minimize, maximize, close, and set the title of the main window.
- Added checks to ensure commands are only executed in a Tauri environment, enhancing compatibility with web contexts.

* feat(tauriCommands): add comprehensive Tauri command modules

- Introduced multiple new modules for Tauri commands, including `accessibility`, `autocomplete`, `config`, `conscious`, `core`, `cron`, `hardware`, `localAi`, and `window`.
- Each module contains functions for managing specific functionalities such as accessibility permissions, autocomplete suggestions, configuration settings, and hardware interactions.
- Implemented checks to ensure commands are executed only in a Tauri environment, enhancing compatibility and reliability.
- This addition significantly expands the command capabilities of the Tauri application, providing a robust framework for future development.

* feat(voice): enhance audio transcription with initial prompt support

- Added functionality to transcribe audio with an optional initial prompt, allowing for vocabulary bias and improved conversational continuity.
- Updated the `transcribe_pcm_f32` and `transcribe_wav_file` functions to accept an `initial_prompt` parameter, enhancing recognition of specific vocabulary.
- Implemented peak RMS energy tracking during audio recording for silence detection, ensuring recordings below a defined threshold are skipped.
- Enhanced the voice server configuration to include a silence threshold and custom dictionary for better transcription context.
- Introduced methods to build and manage recent transcripts for improved continuity across consecutive recordings.
- Updated tests to validate new features and ensure proper functionality of the transcription process.

* feat(voice): enhance VoiceServerConfig with silence detection and custom dictionary

- Added `silence_threshold` to the `VoiceServerConfig` for improved silence detection, allowing recordings with low RMS energy to be skipped.
- Introduced `custom_dictionary` to bias transcription towards specific vocabulary, enhancing recognition of names and technical terms.
- Updated the `voice_transcribe` and `voice_transcribe_bytes` functions to utilize the new `initial_prompt` parameter for better context during transcription.
- Adjusted the `transcribe_pcm_i16` function to accept additional parameters for improved flexibility in handling audio input.

* feat(voice): add silence threshold and custom dictionary features to VoicePanel

- Implemented a new input for setting the silence threshold, allowing recordings with low RMS energy to be skipped.
- Added functionality for a custom dictionary, enabling users to add specific vocabulary words to improve transcription accuracy.
- Updated the VoiceServerSettings interface and related functions to support the new features, ensuring seamless integration with existing settings.
- Enhanced the UI in the VoicePanel to facilitate user interaction with the new settings.

* feat(voice): propagate silence threshold and custom dictionary to voice server command

- Added `silence_threshold` and `custom_dictionary` parameters to the `run_voice_server_command` function, ensuring these settings are utilized during voice server operations.
- Enhanced integration with the existing voice server configuration to support improved transcription accuracy and silence detection.

* fix(tauriCommands): update import paths for coreRpcClient

- Adjusted import paths for `callCoreRpc` in multiple Tauri command modules to ensure correct referencing from the updated directory structure.
- This change enhances module organization and maintains consistency across the codebase.

* feat(dependencies): update Cargo.lock and Cargo.toml for new packages and versions

- Added new dependencies including `arboard`, `fax`, `fax_derive`, `gethostname`, `half`, `quick-error`, `tiff`, and `x11rb` to enhance functionality and support for clipboard operations, transcription improvements, and system interactions.
- Updated existing dependencies to their latest versions for better performance and compatibility.
- Modified `VoicePanel` to utilize the updated settings and ensure proper handling of voice server configurations.
- Enhanced the text input mechanism to use clipboard-paste for improved reliability in text insertion.

* fix(voice): update skip_cleanup default value and enhance logging

- Changed the default value of `skip_cleanup` in `VoiceServerConfig` from `true` to `false` to align with expected behavior and improve transcription handling.
- Added detailed logging in the transcription cleanup process to provide better insights into the LLM state and cleanup decisions.
- Removed unused functions related to unreliable key releases in hotkey handling to simplify the codebase.
- Updated tests to reflect the new default settings for `skip_cleanup` and ensure proper functionality across components.

* style: apply linter formatting fixes

* fix(voice): remove unused warn import in hotkey module

* test(voice): add silence threshold and custom dictionary to VoicePanel tests

- Updated tests for the VoicePanel component to include new parameters: `silence_threshold` and `custom_dictionary`.
- Ensured that the tests reflect the latest configuration settings for improved transcription accuracy and functionality.
2026-04-06 18:15:48 -07:00
48d937cf6b refactor(intelligence): move memory workspace to Settings > Developer Options (#364)
* fix(settings): normalize padding across all settings panels

Remove max-w-md mx-auto constraints from BillingPanel,
RecoveryPhrasePanel, TeamPanel, TeamMembersPanel, TeamInvitesPanel,
and TeamManagementPanel so all panels use consistent p-4 padding
matching ConnectionsPanel and the other baseline panels.

* refactor(intelligence): move memory workspace to Settings > Developer Options

Move Memory, Memory Graph, Intelligence Insights, Activity Heatmap, and
File Management from the Intelligence page into a new "Memory Data" panel
under Settings > Developer Options. The Intelligence page now shows only
the search bar and actionable items, keeping it focused for end users.

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

* refactor(intelligence): move memory workspace to Settings > Developer Options

Move Memory, Memory Graph, Intelligence Insights, Activity Heatmap, and
File Management from the Intelligence page into a new "Memory Data" panel
under Settings > Developer Options. The Intelligence page now shows only
the search bar and actionable items, keeping it focused for end users.

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-04-06 22:02:54 +05:30
Cyrus GrayandGitHub a2dff715f0 fix(settings): normalize padding across all settings panels (#362)
Remove max-w-md mx-auto constraints from BillingPanel,
RecoveryPhrasePanel, TeamPanel, TeamMembersPanel, TeamInvitesPanel,
and TeamManagementPanel so all panels use consistent p-4 padding
matching ConnectionsPanel and the other baseline panels.
2026-04-06 21:14:00 +05:30
YellowSnnowmannandGitHub 0c14aea96a Improve autocomplete observability and runtime controls in settings + JSON-RPC (#308)
* Enhance AutocompletePanel logging and functionality

- Introduced MAX_LOG_ENTRIES constant to limit log entries to 200.
- Updated log formatting to include timestamps with milliseconds for better precision.
- Added UI logging for various actions (e.g., saving settings, starting/stopping autocomplete) to improve traceability.
- Enhanced error handling in refreshStatus, acceptSuggestion, and other functions to log specific failure messages.
- Added unit tests for AutocompletePanel to ensure functionality and logging behavior.

This update improves the overall user experience by providing clearer logs and better error handling in the Autocomplete feature.

* Refactor accessibility and autocomplete components for improved error handling and logging

- Updated  to log role changes as debug information instead of returning an error, allowing for more flexible handling of role fluctuations.
- Increased the timeout for autocomplete refresh operations from 15 seconds to 120 seconds to accommodate longer processing times, enhancing reliability.
- Improved error handling in the autocomplete engine to preserve previous suggestions and provide clearer error messages when operations are aborted.

These changes enhance the user experience by providing better logging and more robust handling of focus and autocomplete functionalities.

* Enhance AutocompletePanel functionality and improve error handling

- Refactored loadHistory to return an empty array when Tauri is not available, improving error handling.
- Introduced waitForAcceptedHistoryEntry to ensure the history is loaded before accepting suggestions, enhancing user experience.
- Updated the accept suggestion logic to use the new waitForAcceptedHistoryEntry function, ensuring the correct suggestion is applied.
- Modified tests to reflect changes in the accept suggestion API, ensuring accurate functionality.

These changes improve the reliability and responsiveness of the autocomplete feature.
2026-04-06 18:14:02 +05:30
b589a29e77 Extract socket controller into dedicated domain module (#340)
* refactor: remove global_engine usage in tests and instantiate AccessibilityEngine directly

- Updated the test suite to eliminate the use of global_engine, replacing it with a direct instantiation of AccessibilityEngine.
- This change enhances test isolation and clarity by ensuring that each test operates with its own instance of the engine, improving reliability and maintainability.

* feat: add socket module for skill communication

- Introduced a new `socket` module to facilitate communication between skills, enhancing the modularity and organization of the codebase.
- Updated imports in `qjs_engine.rs` to reference the new `SocketManager` from the `socket` module, streamlining socket management for skill interactions.
- Removed the deprecated `socket_manager` module from the skills module, improving clarity and reducing redundancy in the code structure.

* feat: integrate socket controllers and schemas into core functionality

- Added socket-related registered controllers and schemas to the core build functions, enhancing the communication capabilities within the OpenHuman framework.
- Updated the `build_registered_controllers` and `build_declared_controller_schemas` functions to include socket components, ensuring comprehensive integration of the new socket module.

* feat: enhance QuickJS skill runtime with socket manager integration

- Updated the `bootstrap_skill_runtime` function to initialize and register the `SocketManager` globally, allowing RPC handlers to access socket functionalities.
- Improved documentation to reflect the addition of socket management capabilities alongside the QuickJS skill runtime.
- Cleaned up imports in `event_handlers.rs` to streamline the codebase.

* refactor: remove socket manager integration from skill runtime

- Removed the `SocketManager` integration from the `bootstrap_skill_runtime` function, simplifying the socket management process.
- Eliminated the `socket_manager` field and related methods from the `RuntimeEngine` struct, streamlining the codebase.
- Cleaned up unused MCP handlers and socket-related imports in the event handlers, enhancing code clarity and maintainability.

* refactor: remove sync_tools calls from skill status handling

- Eliminated unnecessary calls to `sync_tools()` in the `RuntimeEngine` during skill status changes, simplifying the skill lifecycle management.
- This change enhances performance by reducing redundant synchronization operations during skill execution and shutdown processes.

* feat: enhance socket event handling with improved logging

- Added logging for incoming socket events to improve observability, including event name and data size.
- Implemented detailed debug logging for event payloads, ensuring clarity on the data being processed.
- Updated event handling logic to streamline routing for webhook requests and inbound channel messages, enhancing the overall responsiveness of the system.
- Introduced logging for unhandled events to aid in debugging and monitoring.

* feat: enhance socket management and auto-connect functionality

- Updated the `bootstrap_skill_runtime` function to clone the `SocketManager` instance for global registration, ensuring proper socket management.
- Introduced background tasks for auto-starting skills and auto-connecting to the backend using stored session tokens, improving startup efficiency and user experience.
- Added detailed logging for session token checks and connection attempts, enhancing observability and debugging capabilities during socket operations.

* feat: enhance skill selection and tool management in tests

- Introduced a new `manifests_in_dir` function to retrieve skill manifests from a specified directory, improving skill discovery.
- Added `select_skill_id` function to prioritize skill selection based on environment variables and preferred candidates, enhancing flexibility in test configurations.
- Updated the test suite to utilize the new skill selection logic, ensuring more robust and configurable test scenarios.
- Improved handling of tool selection with enhanced logging and fallback mechanisms for better debugging and usability.

* format code:wq

* feat: add Rust checks and formatting commands to package.json

- Introduced new scripts for Rust checks and formatting in both the main and app package.json files.
- Updated pre-push hook to include Rust compile checks, enhancing pre-push validation.
- Modified existing format commands to integrate Rust formatting, ensuring consistency across codebases.

* fix: improve formatting of the "Keep Screenshots" label description

- Adjusted the formatting of the description text for better readability by breaking it into multiple lines within the `ScreenIntelligencePanel` component.

* fix: install rustls crypto provider before WebSocket TLS connect

The socket auto-connect was panicking with "Could not automatically
determine the process-level CryptoProvider" because tokio-tungstenite
uses rustls for wss:// but no crypto provider was installed. Install
the ring provider before each connect attempt.

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

* fix: use dynamically selected skill in sync memory tests

The tests hardcoded 'example-skill' which no longer exists in the
skills directory. Now dynamically picks the first available skill
(preferring server-ping) so tests work regardless of which skills
are present.

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-04-05 22:53:58 -07:00
bb1f2c3c8d feat: screen intelligence pipeline + CLI + keep_screenshots config (#339)
* feat: add keep_screenshots functionality to Screen Intelligence settings

- Introduced a new `keep_screenshots` option in the Screen Intelligence settings, allowing users to save captured screenshots to the workspace instead of deleting them after processing.
- Updated relevant components and tests to reflect this new feature, ensuring consistent behavior across the application.
- Enhanced the user interface to include a checkbox for the `keep_screenshots` setting, improving user experience and configurability.

* feat: add `openhuman screen-intelligence` CLI for standalone testing

Adds a dedicated CLI (mirroring `openhuman skills`) to run the screen
intelligence capture + vision pipeline without the full desktop app.

Subcommands: run, status, capture, start, stop.
Makes save_screenshot_to_disk public so the CLI capture --keep flag works.

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

* fix: add keep_screenshots to ScreenIntelligencePanel test assertion

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-04-05 22:17:10 -07:00
8aa5547af4 feat: Telegram managed login, channel messaging, and inbound agent loop (#338)
* feat: add managed Telegram login flow and API endpoints

- Introduced a new managed Telegram login flow, allowing users to link their Telegram accounts via a deep link.
- Added `telegram_login_start` and `telegram_login_check` functions to handle the creation of link tokens and status checks for user linking.
- Updated the API with new endpoints for managing Telegram login, including detailed response structures for link token creation and status verification.
- Enhanced the `.env.example` file to include a configuration option for the Telegram bot username, facilitating easier setup for developers.

* refactor: update Telegram integration to use core RPC for login flow

- Replaced the managed DM API with core RPC calls for initiating and checking Telegram login status.
- Introduced new API methods `telegramLoginStart` and `telegramLoginCheck` to handle link token creation and verification.
- Updated the TelegramConfig and MessagingPanel components to utilize the new login flow, enhancing the user experience and simplifying the codebase.
- Adjusted tests to reflect changes in the login process and ensure proper functionality.

* docs: update TODO list with new user interaction registration task for memory skill

* feat: add ChannelSetupModal for configuring channel integrations

- Introduced a new reusable modal component, ChannelSetupModal, for configuring channel integrations such as Telegram and Discord.
- The modal can be opened from the Skills page or Settings, enhancing user experience by providing a centralized configuration interface.
- Updated MessagingPanel and Skills components to integrate the new modal, allowing users to easily manage their channel settings.
- Implemented channel-specific configuration components for better modularity and maintainability.

* feat: add ChannelSetupModal for configuring channel integrations

- Introduced a new reusable modal component, ChannelSetupModal, for configuring channel integrations such as Telegram and Discord.
- The modal can be opened from the Skills page or Settings, enhancing user experience by providing a centralized configuration interface.
- Updated MessagingPanel and Skills components to integrate the new modal, allowing users to easily manage their channel settings.
- Implemented channel-specific configuration components for better modularity and maintainability.

* style: update channel components for improved UI consistency

- Refactored styles across various channel configuration components, including ChannelCapabilities, ChannelConfigPanel, ChannelFieldInput, ChannelSelector, DiscordConfig, TelegramConfig, and WebChannelConfig.
- Enhanced color schemes and layout for better readability and visual appeal, ensuring a cohesive design across the application.
- Updated status badge styles in definitions.ts to align with the new design standards.
- Improved error message visibility and loading indicators in Channels page for a more user-friendly experience.

* refactor: update WebChannelConfig and tests for improved clarity and functionality

- Renamed the `definition` prop in WebChannelConfig to `_definition` for clarity.
- Updated test cases in DiscordConfig and TelegramConfig to reflect changes in auth mode labels, ensuring accurate rendering of UI elements.
- Adjusted the TelegramConfig test to fix the click event on the connect button, enhancing test reliability.
- Modified channel definitions to streamline the managed DM auth mode, improving code organization and maintainability.

* fix: enhance WebGL error handling in MeshGradient and RotatingTetrahedronCanvas components

- Added error handling in the MeshGradient component to gracefully catch WebGL initialization failures, ensuring the app remains functional when the GPU context is unavailable.
- Updated the RotatingTetrahedronCanvas component to verify WebGL context availability before initializing the renderer, preventing crashes and improving user experience.
- Modified channel definitions to update auth mode labels for clarity and consistency across the application.

* style: update RotatingTetrahedronCanvas colors and animation speed

- Changed fill and edge colors in the RotatingTetrahedronCanvas component for improved visual appeal.
- Adjusted opacity of the fill material to enhance transparency effects.
- Introduced a speed multiplier for rotation animations, allowing for more dynamic visual effects.

* refactor: improve WebGL error handling and cleanup in MeshGradient component

- Removed unused canvas reference and WebGL context probing to streamline the MeshGradient component.
- Enhanced error handling during shader compilation to throw an error when WebGL context may be lost, improving robustness.
- Wrapped initialization logic in a try-catch block to gracefully handle failures, ensuring the gradient functionality is disabled if initialization fails.

* refactor: simplify Telegram login flow by removing unused link token check

- Removed the `check_channel_link_status` method from the `BackendOAuthClient`, streamlining the authentication process.
- Updated `telegram_login_check` to directly fetch the user profile and determine link status based on the presence of `telegramId`, enhancing clarity and reducing complexity.
- Adjusted logging to reflect the new flow and ensure accurate debugging information.

* feat: enhance JSON-RPC method invocation with session expiration handling

- Added logic to automatically clear stored session on receiving a 401 error from the backend, improving user experience by ensuring users are redirected to the login page when their session expires.
- Introduced a helper function to identify session expiration errors, enhancing code clarity and maintainability.
- Refactored the `invoke_method` function to incorporate this new error handling mechanism, ensuring robust session management during RPC calls.

* style: update app-dotted-canvas background gradient for improved visibility

- Changed the radial gradient background color in the app-dotted-canvas from rgba(0, 0, 0, 0.2) to rgba(0, 0, 0, 0.5), enhancing the contrast and overall visual appeal of the component.

* feat: implement channel messaging API with end-to-end testing script

- Added a new script `test-channel-messaging.sh` for end-to-end testing of message sending to Telegram via the backend API.
- Implemented new backend API methods for sending messages, reactions, creating threads, updating threads, and listing threads in channels.
- Enhanced the `BackendOAuthClient` with methods to handle channel messaging operations.
- Updated controller schemas and handlers to support the new messaging functionalities, ensuring robust interaction with the backend.
- Improved logging for better debugging and tracking of channel operations.

* feat: add test-channel-receive script for real-time channel message listening

- Introduced a new script `test-channel-receive.mjs` that connects to the backend Socket.IO server and listens for incoming channel messages.
- Implemented session token retrieval and validation against the backend, ensuring secure message handling.
- Added options for debugging and sending test messages, enhancing the script's usability for testing purposes.
- Improved logging for better visibility of connection status and incoming messages.

* feat: implement inbound channel message handling for real-time responses

- Added functionality to handle inbound messages from channels (e.g., Telegram, Discord) by introducing the `handle_channel_inbound_message` function.
- Implemented agent inference loop to process messages and send replies back to the originating channel via the REST API.
- Enhanced logging for better tracking of message reception and response handling.
- Integrated timeout handling to manage long-running requests effectively.

* style: fix prettier formatting for channel components

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-04-05 22:08:17 -07:00
09b627ccc9 Redesign billing: pay-as-you-go first-class + coupon redemption (#337)
* Refactor BillingPanel and introduce new billing components

- Refactored the BillingPanel component to streamline its structure and improve readability by removing unused constants and functions.
- Introduced new components: AutoRechargeSection, InferenceBudget, PayAsYouGoCard, and SubscriptionPlans to modularize billing functionalities.
- Added coupon redemption functionality in the credits API, allowing users to redeem coupon codes for credits.
- Enhanced the overall billing experience by improving the layout and organization of billing-related UI elements.

* style: apply prettier formatting to billing components

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-04-05 22:06:31 -07:00
7bce9d2bbe UI polish: skill encryption key, disconnect fix, settings layout cleanup (#330)
* feat: add overlay process launcher for OpenHuman (#328)

- Introduced a new `overlay` module to manage the lifecycle of the `openhuman-overlay` Tauri application.
- Implemented the `spawn_overlay` function to discover and launch the overlay as a child process, enhancing the user experience with a transparent debug/voice panel.
- Updated the `jsonrpc.rs` file to invoke the overlay process when the core server starts, ensuring seamless integration.
- Enhanced module organization by adding the `overlay` module to the `openhuman` namespace.

* feat: add animated mesh gradient background to App component

- Introduced a new `MeshGradient` component that renders an animated WebGL mesh gradient background, enhancing the visual appeal of the application.
- Updated the `App` component to include the `MeshGradient`, ensuring it renders behind the dotted canvas overlay for improved aesthetics.
- Modified the CSS for the `app-dotted-canvas` to use a transparent background and adjusted the gradient styling for better integration with the new component.
- Added TypeScript definitions and implementation for the `Gradient` class to manage the mesh gradient functionality.

* style: update MeshGradient component colors and opacity

- Changed the opacity of the mesh gradient from 20% to 10% for a more subtle effect.
- Updated gradient colors to enhance visual appeal, replacing previous colors with a new palette for better integration with the overall design.

* feat: enhance SkillSetupWizard with encryption key support

- Added a new input field for client-side encryption key in the OAuthLoginView component, improving security during manual integration.
- Implemented validation to ensure the encryption key is provided before submission, enhancing error handling.
- Updated the layout to accommodate both integration ID and encryption key inputs, improving user experience in development mode.
- Refactored related logic to streamline the handling of integration ID and encryption key during OAuth completion.

* feat: integrate skill installation check in SkillSetupWizard

- Updated the OAuthLoginView component to ensure skills are installed before starting the runtime, enhancing reliability during the setup process.
- Added error handling to manage cases where the skill may already be installed, improving user experience and reducing potential runtime errors.

* fix: improve base directory resolution in skill runtime

- Updated the base directory resolution logic in both `jsonrpc.rs` and `skills_cli.rs` to filter out empty workspace paths, enhancing robustness.
- Added debug logging in `qjs_engine.rs` to provide better visibility into skill startup processes, including checks for manifest existence and workspace directory status.

* feat: enhance SkillManager with skill stopping and client key cleanup

- Implemented the `stopSkill` method to halt the frontend-side runtime and added a call to `rpcStopSkill` for stopping the core sidecar skill process.
- Introduced `removePersistedClientKey` function to clear the client-side encryption key, ensuring better security and resource management during skill revocation.
- Added error handling and debug logging for both stopping the skill and cleaning up the client key, improving observability and reliability.

* style: update OnboardingOverlay background opacity and refine settings warning message

- Changed the background opacity of the OnboardingOverlay from 95% to 50% for a more subtle appearance.
- Revised the warning message in SettingsHome to clarify the local data deletion process, improving user understanding of the consequences of signing out.

* refactor: simplify layout structure in settings components

- Removed unnecessary overflow properties from the main container divs in SettingsHome, SettingsSectionPage, and SettingsPanelLayout components, improving layout clarity.
- Adjusted child divs to ensure proper content display without overflow, enhancing user experience in the settings interface.

* style: adjust padding and spacing in SettingsSectionPage component

- Updated padding in the main container from `p-4` to `py-4` for improved vertical spacing.
- Increased horizontal padding of the description text from `px-1` to `px-5`, enhancing readability and visual appeal.

* style: refine layout and spacing in settings components

- Adjusted padding and spacing in SettingsSectionPage, SettingsBackButton, and SettingsHeader components for improved visual consistency.
- Updated font sizes and margins to enhance readability and user experience across the settings interface.

* style: simplify layout and improve spacing in settings panels

- Removed unnecessary flex properties and adjusted padding in various settings panels for a cleaner layout.
- Standardized spacing across panels to enhance visual consistency and user experience.
- Updated component structures to eliminate redundant overflow properties, improving content display.

* style: simplify section layouts and improve spacing in settings panels

- Removed unnecessary border and background properties from multiple sections in the Accessibility, Screen Intelligence, and other settings panels for a cleaner appearance.
- Standardized section spacing and padding across various panels to enhance visual consistency and user experience.
- Updated font sizes for better readability and adjusted button styles for improved interaction.

* style: standardize panel headings from text-lg to text-sm

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

* style: update heading for connected skills section to improve clarity

- Changed the section title from "Connected Skills" to "3rd Party Skills" for better representation of the content.

* style: improve code formatting and spacing in various components

- Enhanced readability by adjusting spacing and formatting in SettingsBackButton, MemoryDebugPanel, WebhooksDebugPanel, and other components.
- Standardized the layout of JSX elements for better visual consistency across the application.
- Cleaned up log messages in Rust files for improved clarity and debugging.

* fix: enhance MeshGradient cleanup and improve settings warning message

- Added a call to `gradient.disconnect()` in the MeshGradient component to ensure proper cleanup on unmount.
- Updated the warning message in SettingsHome to use a list format for better clarity regarding local data deletion consequences.
- Removed unused 'tauri-commands' route from settings navigation for cleaner code.
- Added validation for the encryption key in SkillSetupWizard to prevent invalid characters.
- Updated the Gradient class to include additional checks for canvas element and WebGL context during initialization.
- Improved error handling in SkillManager's `stopSkill` method for better debugging and reliability.

* style: correct comment formatting in meshGradient.js

- Updated comment syntax in the Gradient class to ensure proper code documentation and readability.

* fix: add encryption key validation and remove double transition in dev setup

- Validate devEncryptionKey for invalid characters (quotes, backslashes,
  control chars) before using as X-Encryption-Key header
- Remove explicit onManualComplete() call — let the snapshot effect handle
  the connected→setup transition to avoid double-firing startSkill/startSetup

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

* fix: improve encryption key validation in SkillSetupWizard

- Enhanced validation for the devEncryptionKey to check for quotes, backslashes, and control characters, ensuring only valid characters are accepted.
- This change prevents potential issues when using the encryption key in the application.

* fix: resolve lint errors in MeshGradient, meshGradient.js, and SkillSetupWizard

- Fix canvasRef.current stale ref warning by capturing to local variable
- Add eslint-disable for browser globals in vendored meshGradient.js
- Replace control character regex with printable-range check
- Remove unused onManualComplete from dependency array

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-04-05 17:21:05 -07:00
Steven EnamakelandGitHub c27d796c8e Improve settings, rewards, chat, and skills UI polish (#328)
* feat: add Rewards page and enhance Settings navigation

- Introduced a new Rewards page, accessible via a protected route.
- Updated the Settings component to include a new SettingsSectionPage for better organization of account and automation settings.
- Refactored the SettingsHome component to group menu items and improve navigation.
- Enhanced the useSettingsNavigation hook to support new routes for account and automation settings.

* feat: implement app-dotted-canvas styling across multiple pages

- Added a new CSS class `app-dotted-canvas` to create a dotted background effect for various components.
- Updated the App, Agents, Conversations, Home, Intelligence, Invites, Mnemonic, Rewards, Settings, Skills, Webhooks, and Welcome pages to utilize the new styling, enhancing visual consistency across the application.
- Refactored the BottomTabBar component's SVG path for improved icon representation.

* refactor: update BottomTabBar styling for improved UI consistency

- Modified the BottomTabBar component's navigation and button styles to enhance visual appeal and user experience.
- Adjusted class names for better alignment with design standards, including changes to padding, border, and background colors.
- Improved active and inactive button states for clearer user interaction feedback.

* refactor: enhance layout and styling in App and Settings components

- Adjusted padding in the App component to improve layout consistency.
- Updated BottomTabBar component to enhance styling and user interaction.
- Removed deprecated delete data functionality from SettingsHome and refined related menu items for clarity.
- Modified Settings page layout for better responsiveness and visual appeal.

* refactor: improve layout and styling in Settings and Skills components

- Simplified the rendering of grouped and destructive settings in SettingsHome for better readability.
- Adjusted padding and margin in SettingsMenuItem for a more consistent button appearance.
- Introduced BuiltInSkillCard component in Skills page to enhance the display of built-in skills with improved navigation.
- Updated button styles in SkillActionButton for better visual consistency and user experience.

* style: align third-party skill card typography

* style: refine built-in and connected skills layout

* style: update Conversations component for improved UI consistency

- Changed background color of message container to `bg-stone-50` for better visual contrast.
- Adjusted input field layout to enhance user experience, including centering elements and refining focus styles.
- Updated class names for input field to ensure consistent focus behavior and visual feedback.

* feat: enhance settings navigation with fallback functionality

- Introduced a new `goBackWithFallback` function to improve navigation behavior when the user attempts to go back in the settings.
- Updated the `navigateBack` and `closeSettings` functions to utilize the new fallback mechanism, ensuring a smoother user experience when navigating through settings routes.
- Removed redundant route handling logic to streamline the navigation process.

* style: remove app-dotted-canvas class for consistent layout across pages

- Eliminated the `app-dotted-canvas` class from multiple components to streamline styling and ensure a uniform layout.
- Updated the Agents, Conversations, Home, Intelligence, Invites, Mnemonic, Rewards, Settings, Skills, Webhooks, and Welcome pages for improved visual consistency.

* style: improve code formatting and readability in Rewards and Skills components

- Reformatted code in the Rewards component for better readability by adjusting indentation and line breaks.
- Enhanced the Skills component by updating the description formatting for clarity and consistency.
- Ensured consistent styling practices across both components to maintain a clean codebase.
2026-04-05 14:45:07 -07:00
Steven EnamakelandGitHub e13980d8ca feat: encrypted OAuth token flow with XOR key-splitting (#327)
* feat: implement encrypted OAuth flow and client key management

- Updated the SkillSetupWizard to include an encryption mode parameter in the OAuth connection URL.
- Enhanced the SkillManager to handle client key shares during OAuth completion, allowing skills to use encrypted proxy requests.
- Introduced a new API endpoint for fetching client key shares, facilitating secure communication.
- Modified the OAuth deep link handler to retrieve and pass the client key share to the skill runtime.
- Implemented client key persistence and restoration in the skill instance, ensuring secure access during runtime.
- Updated the JavaScript fetch implementation to utilize the client key for encrypted proxy requests.

* refactor: improve registry URL handling in registry_cache.rs

- Updated the registry_url function to filter out empty environment variable values for SKILLS_REGISTRY_URL, ensuring a valid URL is always returned.
- Enhanced the code readability by using method chaining for better clarity in the URL retrieval process.

* feat: enhance SkillSetupWizard with manual integration ID entry for dev mode

- Added support for manual entry of integration IDs in development mode within the OAuthLoginView component.
- Implemented functionality to handle OAuth completion using the provided integration ID, including error handling and state management.
- Updated the component's props to include skillId and onManualComplete for better integration with the setup wizard flow.

* feat: enhance SkillSetupWizard with skill runtime readiness check

- Added a mechanism to wait for the skill runtime to be fully running after starting it, improving reliability in the OAuthLoginView component.
- Introduced a new JSON file for skill preferences, enabling configuration for skills like Notion, including setup completion status.

* refactor: streamline code formatting and improve readability in various files

- Simplified the formatting of function calls and JSON output definitions in `desktopDeepLinkListener.ts`, `rest.rs`, and `schemas.rs` for better clarity.
- Cleaned up import statements in `instance.rs` to enhance organization and maintainability.

* feat: remove dictation functionality and related components

- Deleted the DictationOverlay component and its associated hooks, streamlining the application by removing unused dictation features.
- Updated the App component to reflect the removal of dictation-related UI elements.
- Cleaned up settings and navigation to eliminate references to dictation settings and panels, enhancing overall code maintainability.

* refactor: update MemoryWorkspace title and enhance skill runtime error handling

- Changed the title in MemoryWorkspace from "Memory (EverMind)" to "Memory" for clarity.
- Improved error handling in SkillSetupWizard during skill runtime startup, ensuring more informative error messages and a timeout check for skill readiness.
2026-04-04 20:44:42 -07:00
Steven EnamakelandGitHub e925e8a319 Fix local reset flow and Accessibility permission handling (#324)
* refactor: clean up imports and improve code structure in skills_cli and registry_ops

- Removed unused imports in `skills_cli.rs` and `registry_ops.rs` to enhance code clarity.
- Streamlined import statements for better organization and readability.
- Minor adjustments in `engine.rs` to maintain consistency in import usage.

* fix: update UI text and styles for MemoryWorkspace and SkillSetupWizard components

- Changed the title in MemoryWorkspace to "Memory (EverMind)" for clarity.
- Updated text colors in SkillSetupWizard for better visibility and consistency.
- Enhanced button styles and loading indicators for improved user experience.

* feat: implement reset functionality for OpenHuman data and enhance app data clearing process

- Added a new utility function `resetOpenHumanDataAndRestartCore` to reset local OpenHuman data and restart the core process.
- Updated `clearAllAppData` in `SettingsHome` to utilize the new reset function, improving the app's data clearing process.
- Enhanced error handling during the data reset and session clearing operations to ensure robustness.
- Introduced tests for the new reset functionality to validate its behavior and integration.

* refactor: remove screen recording permission from AccessibilityPanel

- Eliminated the screen recording permission check and associated UI elements from the AccessibilityPanel component.
- Updated tests to ensure the screen recording option is no longer present in the rendered output, improving clarity and focus on relevant permissions.

* chore: update package.json files to integrate Husky for Git hooks

- Added Husky as a dev dependency in both package.json files to manage Git hooks.
- Included "prepare" and "postinstall" scripts in the main package.json to ensure Husky is set up correctly.
- Cleaned up the app's package.json by removing the "prepare" script, as it is now handled in the main package.json.
- Enhanced logging in tauriCommands.ts for better debugging during the reset process.

* fix: update variable name for clarity in ops.rs test assertions

- Changed the variable name from `data` to `value` in the test assertions to enhance clarity and better reflect its purpose.
- Ensured that the assertions remain functional and maintain the integrity of the test logic.

* feat: enhance skill selection logic in skills_debug_e2e.rs

- Introduced a new function `select_skill_id` to improve skill selection based on environment variables and preferred skills.
- Updated the skill ID retrieval process to prioritize user-defined skills while maintaining a fallback to the default skill.
- Enhanced documentation to clarify the usage of environment variables for skill testing.

* format
2026-04-04 20:26:08 -07:00
Steven EnamakelandGitHub ef708bdd20 refactor(core): move app state ownership into the Rust core (#320)
* refactor(core): integrate CoreStateProvider and streamline state management

- Replaced UserProvider with CoreStateProvider in App component to centralize state management.
- Updated various components to utilize the new CoreStateProvider for accessing session tokens and user data.
- Refactored hooks and components to eliminate direct Redux store dependencies, enhancing modularity and maintainability.
- Introduced a new core state management structure to improve the handling of user authentication and onboarding states.

This refactor aims to simplify state access across the application and improve overall code clarity.

* fix: restore polyfills import and clean up component imports

- Reintroduced the import of polyfills in main.tsx to ensure compatibility.
- Adjusted import statements in PrivacyPanel and SocketProvider for consistency.
- Simplified conditional expressions in TeamInvitesPanel and TeamMembersPanel for better readability.
- Refactored CoreStateProvider and store.ts to streamline state initialization.
- Enhanced formatting in various files for improved code clarity and maintainability.

* refactor(tests): streamline onboarding and protected route tests

- Updated OnboardingOverlay tests to utilize mock state management and simplify assertions.
- Refactored ProtectedRoute tests to improve readability and ensure consistent use of mock state.
- Enhanced teamApi tests to replace direct API calls with core RPC method calls, improving test isolation and clarity.
- Adjusted socketSelectors tests to utilize a centralized core state snapshot for better state management during tests.

* refactor(onboarding): simplify onboarding state management and improve loading logic

- Removed unnecessary local state for onboarding completion in OnboardingOverlay, directly utilizing snapshot data.
- Enhanced loading logic to prevent unnecessary renders and improve user experience during onboarding.
- Updated PrivacyPanel to handle analytics consent persistence with error handling.
- Refactored TeamManagementPanel and TeamPanel to improve team data fetching logic and loading states.
- Streamlined CoreStateProvider to manage session token synchronization and state updates more effectively.

* chore(deps): update tempfile dependency and refactor app state management

- Added `tempfile` dependency to Cargo.toml for improved temporary file handling.
- Refactored app state loading and saving functions to enhance error handling and ensure data integrity.
- Introduced quarantine mechanism for corrupted app state files to prevent application crashes.
- Updated URL parsing logic to ensure proper formatting of API URLs.
- Adjusted type definitions in schemas for better clarity and consistency.

* refactor(tests): simplify mock state usage in onboarding and protected route tests

- Consolidated mock state management in OnboardingOverlay and ProtectedRoute tests for improved readability.
- Streamlined assertions by reducing unnecessary lines in test setups.
- Enhanced consistency in mock return values across tests to ensure clarity and maintainability.

* refactor(tests): enhance PublicRoute tests with mock state and routing

- Updated PublicRoute tests to utilize MemoryRouter for improved routing simulation.
- Simplified mock state management by integrating `useCoreState` for user authentication scenarios.
- Streamlined test assertions and removed redundant preloaded state configurations for clarity and maintainability.

* refactor(tests): streamline mock state usage in PublicRoute and Mnemonic tests

- Simplified mock state management in PublicRoute and Mnemonic tests for improved readability.
- Consolidated mock return values to reduce redundancy and enhance clarity in test setups.
- Improved consistency in the usage of `useCoreState` across test files.

* Refactor billing components for improved readability

- Cleaned up import statements in BillingPanel.tsx for better organization.
- Enhanced formatting of billing plan descriptions in billingHelpers.ts for consistency.
- Improved readability of conditional checks in BillingPanel component.

* Refactor API endpoint handling for clarity and consistency

- Updated references from `/settings` to `/auth/me` in various modules to standardize user authentication flows.
- Renamed `parse_settings_response_json` to `parse_api_response_json` for improved clarity in response handling.
- Adjusted user ID extraction functions to reflect the new endpoint structure, enhancing maintainability across the codebase.
- Updated test cases to align with the new endpoint naming conventions, ensuring consistency in API interactions.
2026-04-04 03:20:18 -07:00
Steven EnamakelandGitHub 24876497df Update billing discount messaging (#321)
* feat(billing): enhance billing plan structure and display

- Added new properties to the PlanMeta interface for monthly and weekly budgets, five-hour cap, margin percentage, and storage limits.
- Updated billing plans with new budget and storage details for Free, Basic, and Pro tiers.
- Introduced utility functions for formatting USD amounts and storage limits.
- Enhanced the BillingPanel component to display new plan details, including budget and storage information, improving user clarity on subscription benefits.

* fix(tests): update billing plan tests to reflect backend configuration changes

- Adjusted test cases for the Free, Basic, and Pro plans to align with updated pricing and budget details.
- Added assertions for new properties such as margin percentage and budget limits.
- Modified display price calculations to match the revised annual pricing structure.

* refactor(billing): rename marginPercent to discountPercent in billing plans

- Updated the PlanMeta interface and billing plans to replace marginPercent with discountPercent for clarity.
- Adjusted related display elements in the BillingPanel component to reflect the new terminology.
- Modified unit tests to ensure they align with the updated property names and values.
2026-04-04 03:01:45 -07:00
8381283c52 Fix/update api (#319)
* feat(webhooks): refactor webhook URL handling and enhance API endpoints

- Introduced a new utility function `buildWebhookIngressUrl` to standardize the construction of webhook URLs across components.
- Updated `WebhooksDebugPanel` and `TunnelList` components to utilize the new URL builder for improved consistency and maintainability.
- Refactored API endpoints in `tunnelsApi` to reflect changes in webhook routing, ensuring all references to tunnel management are aligned with the new structure.
- Adjusted user API calls to replace `/telegram/me` with `/auth/me` for better clarity and consistency in authentication flows.
- Enhanced socket service to normalize channel connection update payloads, improving error handling and data integrity.

These changes streamline webhook management and enhance the overall developer experience when working with webhooks.

* feat(messaging): enhance Telegram and Discord channel linking functionality

- Added support for managed DM linking with Telegram and OAuth flow for Discord.
- Introduced `createChannelLinkToken` API to generate short-lived link tokens for messaging channels.
- Updated `MessagingPanel` to handle managed linking flows, including building launch URLs and user instructions.
- Enhanced configuration to include a Telegram bot username for fallback linking.
- Updated tests to mock new configuration values for consistent testing.

These changes improve the user experience for linking messaging channels and streamline the authentication process.

* feat(api): introduce core command client and refactor API calls

- Added a new `coreCommandClient` to facilitate RPC calls to core services.
- Refactored existing API endpoints in `authApi`, `billingApi`, `creditsApi`, `tunnelsApi`, and `userApi` to utilize the new command client for improved consistency and maintainability.
- Updated the billing API to include new endpoints for fetching balance, transactions, and managing auto-recharge settings.
- Enhanced the user API to streamline user data retrieval.
- Improved error handling and logging across the refactored API calls.

These changes enhance the overall architecture of the API services, making them more modular and easier to maintain.

* refactor(api): streamline API calls and enhance error handling

- Refactored `creditsApi` and `tunnelsApi` to ensure consistent use of the new core command client.
- Updated API methods to improve error handling and response parsing.
- Introduced a new `authed_json` method in `BackendOAuthClient` for standardized authenticated requests.
- Cleaned up unused imports and optimized code structure across various modules.

These changes enhance the maintainability and reliability of the API services.

* refactor(api): streamline API calls and improve code readability

- Reorganized API calls in `authApi`, `billingApi`, `creditsApi`, and `tunnelsApi` to enhance consistency and maintainability.
- Updated function formatting for better readability, ensuring parameters are clearly defined.
- Cleaned up import statements and removed unnecessary line breaks to improve code clarity.

These changes contribute to a more maintainable codebase and enhance the overall developer experience.

* refactor(MessagingPanel): clean up imports and remove unused constants

- Reorganized import statements for clarity and consistency.
- Removed unused constants related to channel definitions and status styles to streamline the component.
- Simplified the `updateField` function call in the rendering logic for better readability.

These changes enhance the maintainability of the MessagingPanel component.

* fix: restore helper functions removed during merge cleanup

buildManagedChannelLaunchUrl and buildManagedChannelInstruction were
stripped by the linter after merge resolution, breaking the build.

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

* feat(messaging): enhance MessagingPanel with pending instruction handling

- Introduced a new state for pending instructions to improve user feedback during channel connection processes.
- Updated error handling to ensure users receive clear instructions, including URLs for manual access if automatic opening fails.
- Refactored connection status updates to streamline the dispatch process and improve code readability.
- Enhanced the rendering logic to display pending instructions in the UI, providing better context for users during authentication flows.

* fix(api): encode channel and ID parameters in webhook and OAuth URLs

- Updated the URL construction in the BackendOAuthClient to encode the channel parameter, ensuring proper formatting for requests.
- Modified the get_tunnel, update_tunnel, and delete_tunnel functions to encode the ID parameter in webhook URLs, enhancing security and compatibility with special characters.

* fix(auth): validate channel input for link token creation

- Added validation to ensure the channel is not empty and is one of the supported types (telegram, discord).
- Converted the channel string to lowercase for consistent matching.
- Updated the call to create_channel_link_token to use a reference to the channel variable.

* chore(todos): update TODO list with completed tasks and new feature requests

- Marked several tasks as completed, including integration of the custom memory engine and skills registry into the core.
- Added new items to the TODO list, including improvements for voiceover functionalities, screen intelligence, and Gmail skill enhancements.
- Included tasks for debugging skills from the UI and improving prompts to reduce hallucinations.

* refactor(webhooks): improve formatting of get_tunnel function for readability

- Reformatted the get_tunnel function to enhance code clarity by adjusting the indentation and line breaks in the call to get_authed_value.
- This change improves the maintainability of the code and aligns with the overall code style.

* test(userApi): enhance userApi tests with improved mocking and error handling

- Added a mock function for core command calls to streamline test setup.
- Introduced a helper function to generate mock user data for consistent test cases.
- Updated tests to use the mock function for simulating API responses, improving clarity and maintainability.
- Enhanced error handling in tests to cover various API error scenarios, ensuring robustness in userApi.getMe functionality.

* refactor(billingApi): update tests to use core command mocking and improve error handling

- Replaced apiClient mocks with core command mocks for better alignment with the new API structure.
- Updated test cases to reflect changes in API call expectations, enhancing clarity and maintainability.
- Improved error handling in tests to ensure proper propagation of errors from core command calls.

* refactor(billingApi): simplify test cases by consolidating mock function calls

- Streamlined mock function calls in billingApi tests for improved readability and consistency.
- Removed unnecessary line breaks in mock responses, enhancing clarity in test definitions.
- Ensured that error handling and API call expectations are clearly represented in the tests.

* refactor(api): rename settings endpoint to current_user for clarity

- Updated the endpoint handling authenticated profile fetches to improve clarity in the codebase.
- Adjusted the routing to reflect the new function name, enhancing maintainability and understanding of the API's purpose.

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 02:59:31 -07:00
Steven EnamakelandGitHub acfa5497ef feat(skills): advanced authentication modes for skills (#315)
* feat(auth): implement advanced authentication modes and UI selector

- Introduced a new `AuthModeSelector` component for selecting authentication methods (managed, self-hosted, text).
- Enhanced the `SkillManager` to handle revocation of both OAuth and auth credentials.
- Updated the API to support advanced auth configurations with multiple modes.
- Added functionality to persist and restore auth credentials in the skill's data directory.
- Updated relevant types and interfaces to accommodate the new auth structure.

* feat(auth): enhance SkillSetupWizard with multi-phase authentication flow

- Updated `SkillSetupWizard` to support a two-phase authentication process: an optional auth mode selection followed by the setup phase.
- Integrated `AuthModeSelector` for users to choose between managed, self-hosted, and text authentication methods.
- Improved state management to handle various auth phases, including error handling and transitions to the setup phase upon successful authentication.
- Refactored relevant types and interfaces to accommodate the new authentication structure.

* refactor(skills): remove unused loader module and clean up bridge imports

- Deleted the unused `loader.rs` module, which was reserved for future ES module import support.
- Removed references to the `loader` module in `mod.rs`.
- Cleaned up the `bridge` module by removing several unused bridge files, including `cron_bridge.rs`, `db.rs`, `log_bridge.rs`, `skills_bridge.rs`, `store.rs`, and `tauri_bridge.rs`.
- Added comprehensive tests for the `manifest.rs`, `ops.rs`, and `preferences.rs` modules to ensure functionality remains intact after the refactor.

* feat(registry): introduce registry cache management for remote skill registry

- Added a new `registry_cache.rs` module to handle disk-based caching for the remote skill registry.
- Implemented functions for managing cache, including reading, writing, and checking cache freshness.
- Updated `registry_ops.rs` to utilize the new caching functions, improving performance and reducing redundant network calls.
- Introduced a new `event_loop` module to manage the QuickJS runtime, including handling incoming messages and persisting state to memory.
- Added webhook request handling and RPC message handlers to facilitate communication with external services.
- Removed the obsolete `event_loop.rs` file, consolidating functionality into the new structure.

* fix(tests): update imports in registry_ops tests to include cache management functions

- Modified test module imports in `registry_ops.rs` to include new cache management functions from `registry_cache`.
- This change ensures that tests can utilize the updated caching functionality introduced in the recent registry cache management feature.

* chore(deps): update OpenHuman version to 0.51.6 and clean up code formatting

- Updated the OpenHuman dependency version in `Cargo.lock` to 0.51.6.
- Refactored code in several files for improved readability by adjusting formatting and removing unnecessary line breaks.
- Ensured consistent logging format in `event_loop` and `rpc_handlers` modules for better clarity in log messages.

* refactor(conversations): improve team usage display logic and formatting

- Refactored the Conversations component to enhance the display of team usage information, including clearer conditional rendering for budget exhaustion messages.
- Improved formatting of budget display for both 5-hour and weekly limits, ensuring consistent presentation.
- Streamlined the import of the core HTTP base URL in the WebhooksDebugPanel for better code organization.

* refactor(auth): enhance credential management and validation process

- Updated the SkillManager to attempt revoking auth credentials even if the auth mode is unknown, improving robustness.
- Introduced a new deserialization function to ensure that at least one authentication mode is provided in the SkillAuthConfig.
- Enhanced the handling of temporary credential injection during the auth completion process, ensuring credentials are only persisted upon successful validation.
- Improved the handling of OAuth credentials in JavaScript, ensuring stale credentials are cleared for non-managed modes.
- Added checks for existing Authorization headers to prevent redundant injections in self-hosted modes.

* test(manifest): add unit tests for authentication mode deserialization

- Introduced tests to validate the deserialization of known authentication modes in the SkillManifest.
- Added checks to ensure invalid authentication types and empty mode lists are correctly rejected.
- These tests enhance the robustness of the authentication configuration handling in the manifest module.

* refactor(messaging): simplify MessagingPanel by removing unused constants and improving input handling

- Removed unused constants related to channel statuses, authentication modes, and fallback definitions to streamline the MessagingPanel component.
- Updated input handling to use a more concise onChange function, enhancing code readability.
- Commented out placeholder and className properties for input fields to improve clarity and focus on essential functionality.

* refactor(webhooks): streamline TunnelList imports for improved clarity

- Combined the import statements for Tunnel type and tunnelsApi from the same module into a single line, enhancing code readability and organization.
2026-04-04 02:20:39 -07:00
Steven EnamakelandGitHub 530cb5c5c4 Update webhook routes for backend contract (#316) 2026-04-04 01:43:08 -07:00
51b730f9d6 feat(channels): implement Telegram + Discord UI and connection state (#286) (#317)
* feat(channels): extract shared constants to lib/channels/definitions

Move FALLBACK_DEFINITIONS, STATUS_STYLES, and AUTH_MODE_LABELS from
MessagingPanel into a shared module so both the settings panel and
the upcoming Channels page can reuse them.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add ChannelStatusBadge, ChannelFieldInput, ChannelCapabilities

Reusable UI primitives for the Channels page: status pill badge,
credential form input, and capability chip list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add useChannelDefinitions hook

Shared hook that loads channel definitions and status from the core
RPC, falls back to local definitions, and syncs Redux state.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add ChannelSelector with active route display

Tab bar component showing Web / Telegram / Discord with connection
status badges and active route summary.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add TelegramConfig and DiscordConfig with managed DM flow

Channel-specific config panels with per-auth-mode credential fields,
connect/disconnect, status badges, and error handling. TelegramConfig
includes the managed DM deep link initiation flow.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add ChannelConfigPanel dispatcher and WebChannelConfig

ChannelConfigPanel switches between Telegram/Discord/Web configs based
on selection. WebChannelConfig shows a simple always-connected card.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* feat(channels): add Channels page, route, and sidebar update

Top-level /channels page with ChannelSelector + ChannelConfigPanel.
Updates sidebar nav to point to /channels instead of /settings/messaging.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor(channels): simplify MessagingPanel with shared hook and components

Replace inline loading logic with useChannelDefinitions hook, inline
status badges with ChannelStatusBadge, and inline capability chips
with ChannelCapabilities. Reduces duplication with the new Channels page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(channels): keep managed dm in a reviewable UI state for #286

* style(channels): apply formatter output for #286

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 01:42:38 -07:00
Steven EnamakelandGitHub 90f7a0dc54 feat(webhooks): add developer webhook debug panel (#314)
* feat(webhooks): add Webhooks Debug Panel and related functionality

- Introduced a new Webhooks Debug Panel for inspecting registered webhook tunnels and viewing captured request/response logs.
- Added necessary backend support for listing webhook registrations and logs, as well as clearing logs.
- Updated Developer Options to include a route for the new Webhooks Debug Panel.
- Enhanced core RPC client to support new webhook-related commands and events.
- Implemented logging and error handling for webhook requests in the backend.

This feature enhances developer tooling for monitoring and debugging webhook interactions.

* feat(webhooks): add Webhooks Debug Panel and related functionality

- Introduced a new Webhooks Debug Panel for inspecting registered webhook tunnels and captured request logs.
- Added functionality to list webhook registrations and logs, clear logs, and display real-time updates.
- Updated Developer Options to include the new Webhooks section.
- Enhanced core RPC client to support new webhook-related commands and events.
- Implemented backend support for webhook event handling and logging.

This feature aims to improve developer tooling for monitoring and debugging webhook interactions.

* feat(webhooks): enhance TunnelList and useWebhooks for echo registration

- Updated TunnelList component to include functionality for registering and unregistering echo for tunnels.
- Enhanced useWebhooks hook to support echo registration and unregistration, including real-time updates for tunnel activity.
- Added connection status display in the Webhooks page to indicate the connection state to the core service.
- Improved error handling and user feedback for echo toggle actions in the TunnelCard component.

These changes improve the user experience for managing webhook tunnels and their associated echo registrations.

* refactor(webhooks): streamline import of WebhookActivityEntry type

- Removed redundant import statement for WebhookActivityEntry in useWebhooks.ts.
- Updated the import to use a direct reference from the webhooksSlice, improving code clarity and maintainability.

* ran formatter
2026-04-03 15:04:45 -07:00
Cyrus GrayandGitHub b3e3e9bb96 feat(ui): full light theme redesign based on Figma design tokens (#307)
* feat(ui): full light theme redesign based on Figma design tokens

Redesign the entire app from dark glass-morphism to a clean light theme
per the Figma reference (OpenHuman-Prod / Ref for mithil). This is a
purely visual change — zero logic, handlers, state, or API changes.

- Update Tailwind color tokens: neutral grayscale, primary #2F6EF4,
  success #34C759, alert #E8A728, error #EF4444
- Switch global CSS from dark (black bg, white text) to light (#F5F5F5
  bg, #171717 text)
- Replace left MiniSidebar with bottom BottomTabBar (Home, Chat, Skills,
  Intelligence, Automation, Notification)
- Add Settings gear icon on Home page header for persistent access
- Restyle Home: white card, Welcome Onboard title, connection badge pill
- Restyle Chat: gray agent bubbles, blue user bubbles, white input with
  mic icon, circular send button, model pill selector
- Restyle Skills: white card, filter tabs, + Add button, skill rows
- Restyle Intelligence: light containers, filters, cards
- Convert all 25+ settings panels from dark to light theme
- Convert all shared components (modals, cards, inputs, status badges)

* fix(test): update ConnectionIndicator tests for pill badge redesign

The component no longer renders a description prop — it's now a compact
pill badge. Remove description-related test cases, add pill badge test.

* fix(ui): address CodeRabbit review — contrast, dead controls, regressions

- Remove unused description prop from ConnectionIndicator interface
- Fix Save Note button hover affordance (MemoryWorkspace)
- Fix low-contrast text in AccessibilityPanel vision summary
- Fix AIPanel metadata text contrast (gray-400 → stone-500)
- Fix ActionPanel spinner visibility on light bg variants
- Fix LocalModelPanel ollama link hover color
- Fix MessagingPanel error chip to light theme tokens
- Fix RecoveryPhrasePanel import inputs from dark to light tokens
- Fix TeamMembersPanel avatar initial contrast + modal name text
- Fix Intelligence refresh button text contrast
- Remove non-functional + Add button and filter tabs from Skills page

* feat(ui): center conversation page in a white card container

Match the Figma design where the chat is inside a centered white card
with rounded corners and shadow, consistent with the Skills page layout.

* feat(ui): wrap all remaining pages in centered white card containers

Apply the centered card layout (max-w-2xl, white bg, rounded-2xl,
shadow-soft) to every page for visual consistency with Figma designs:

- Settings: wrap Routes container in centered card with max-height
- Intelligence: centered card with padding
- Agents: centered card with empty state
- Invites: centered card, replace glass with white cards
- Webhooks: centered cards for tunnel list and activity
- Mnemonic: centered card, replace glass with white card
- Welcome: light bg, updated text colors

* fix(ui): stretch settings menu items to fill card container

Remove max-w-md constraint from SettingsHome scrollable area so menu
items fill the full width of the centered card wrapper.

* fix(ui): convert onboarding screens from dark to light theme

All onboarding steps (Welcome, LocalAI, ScreenPermissions, Analytics,
Tools, Skills, Connect, InviteCode, Mnemonic) and the overlay container
now use white cards with light backgrounds, matching the app redesign.

- Card containers: bg-black → bg-white with border-stone-200
- Info boxes: dark tinted → bg-stone-50 with border-stone-200
- Text: text-white → text-stone-900, secondary to text-stone-600
- Progress dots: inactive bg-stone-700 → bg-stone-300
- Toggle rows, permission badges, inputs all converted to light tokens

* fix(ui): fix onboarding Continue button hover turning green

Replace sage hover styles with proper primary blue hover (bg-primary-600)
on the shared OnboardingNextButton component.

* fix(ui): reapply light theme to Home.tsx after upstream merge overwrite

The merge with upstream (Local AI preset bootstrap PR #304) reverted
Home.tsx to the dark theme. Reapply the Figma-based light redesign while
preserving the new first-run bootstrap logic from upstream.

* fix(ui): light theme cleanup for MemoryWorkspace component

Remaining dark-theme classes from upstream merge — update borders,
text colors, and backgrounds to match light theme.
2026-04-03 21:05:59 +05:30
735152cb3f feat(memory): surface entity types in recall/query API and UI (#207) (#302)
* fix: patch whisper-rs-sys for Windows MSVC static CRT (/MT)

The upstream whisper-rs-sys builds whisper.cpp via CMake which
defaults to /MD (dynamic CRT), but Rust and all other C deps
use /MT (static CRT). This causes LNK2038/LNK1169 linker errors
on Windows.

Patch whisper-rs-sys from tinyhumansai/whisper-rs-sys fork which
adds config.static_crt(true) and overrides all per-config CMake
flags (Debug/Release/MinSizeRel/RelWithDebInfo) from /MD to /MT.

Closes #273

* feat: surface entity types in memory recall/query text context

Entity types extracted by GLiNER (person, project, organization, etc.)
were stored in graph attrs but not rendered in LLM context text.
Relations now display as Alice (PERSON) -[OWNS]-> Atlas (PROJECT)
instead of Alice -[OWNS]-> Atlas.

Closes #207

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

* feat(memory): add entity type UI rendering (#207)

- New MemoryTextWithEntities component with colour-coded type badges
- MemoryWorkspace + MemoryDebugPanel pass structured entity data
- MemoryGraphMap shows entity types below node labels
- MemoryInsights shows EntityTypeBadge for subject/object types
- tauriCommands returns typed MemoryQueryResult with entities
- Updated useConsciousItems and tests for new return types

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

* style: fix prettier formatting

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

* style: fix cargo fmt in query.rs

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

* fix: use local regex instead of mutating module-level lastIndex

Avoids react-hooks/immutability ESLint error by using a non-global
regex for the .test() check instead of resetting ENTITY_TYPE_RE.lastIndex.

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-04-03 20:34:55 +05:30
YellowSnnowmannandGitHub 15ee9220a8 Local AI: unified preset bootstrap, first-run Home flow, and resilient model pulls (#304)
* feat(local-ai): unify preset bootstrap, first-run Home flow, and pull retries

- Add localAiBootstrap helpers (preset apply + asset download with retries)
- Expose selected_tier from local_ai.presets; apply recommended tier in core bootstrap when unset
- Extend Ollama pull and large-asset HTTP timeouts; retry interrupted pulls
- Wire Home/onboarding to unified bootstrap; improve download snackbar vs status
- Add Vitest/Rust tests for bootstrap and UI flows

* fix: synchronize Local AI progress UI and add error logging for manual bootstrap attempts

* refactor(tests): streamline skill installation tests by removing HTTP server setup

- Simplified test_skill_install_creates_files and test_skill_install_checksum_verification by replacing the HTTP server setup with direct file creation using tempfile.
- Updated download and manifest URLs to point to local file paths instead of server endpoints, enhancing test reliability and performance.

* feat(home): implement retry logic for local AI bootstrap attempts

- Added a mechanism to track and limit the number of bootstrap attempts for local AI initialization in the Home component.
- Introduced a constant for maximum attempts and updated error handling to log failures after exceeding the limit, improving robustness during the first-run process.
2026-04-03 20:29:38 +05:30
4027f50c9e feat(memory): add bulk namespace clear operation (#205) (#301)
* fix: patch whisper-rs-sys for Windows MSVC static CRT (/MT)

The upstream whisper-rs-sys builds whisper.cpp via CMake which
defaults to /MD (dynamic CRT), but Rust and all other C deps
use /MT (static CRT). This causes LNK2038/LNK1169 linker errors
on Windows.

Patch whisper-rs-sys from tinyhumansai/whisper-rs-sys fork which
adds config.static_crt(true) and overrides all per-config CMake
flags (Debug/Release/MinSizeRel/RelWithDebInfo) from /MD to /MT.

Closes #273

* feat: add bulk namespace clear operation for memory

Add memory_clear_namespace RPC that atomically deletes all documents,
vector chunks, KV entries, and graph relations in a namespace. Includes
Tauri command wrapper and three tests verifying cleanup, no-op on empty
namespaces, and cross-namespace safety.

Closes #205

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

* feat(memory): add Clear Namespace UI to MemoryDebugPanel (#205)

Adds namespace selector, confirmation dialog, success/error feedback,
and auto-refresh after clearing.

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

* style: fix prettier and cargo fmt formatting

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

* fix: unwrap RpcOutcome envelope in memoryClearNamespace

callCoreRpc returns { result: T }, but memoryClearNamespace was returning
the raw envelope instead of unwrapping .result like other callers do.

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-04-03 17:23:23 +05:30
Cyrus GrayandGitHub e941af1fc7 refactor(onboarding): remove MnemonicStep and Open Accessibility button, add Recovery Phrase settings panel (#279)
* refactor(onboarding): remove MnemonicStep and Open Accessibility button, add Recovery Phrase settings panel

- Remove "Open Accessibility" button from ScreenPermissionsStep (step 2)
- Remove MnemonicStep (step 5) from onboarding, reducing total steps from 6 to 5
- Move onboarding completion logic (setOnboardedForUser + setOnboardingCompleted) into handleSkillsNext
- Add RecoveryPhrasePanel in Settings with the same BIP39 generate/import functionality
- Wire recovery-phrase route into Settings.tsx, SettingsHome menu, and useSettingsNavigation

* fix(recovery-phrase): add aria-labels to import inputs and word-count selector

Address CodeRabbit review feedback:
- Add aria-label to each recovery phrase word input for screen readers
- Add word-count selector (12/15/18/21/24) so longer phrases can be
  entered manually, not just via paste

* fix(recovery-phrase): remove auto-advance on single char and guard clipboard fallback

Address CodeRabbit round 2:
- Remove auto-focus-advance after single character input (was breaking
  manual word entry — typing 'abandon' would split across slots)
- Guard execCommand('copy') fallback with return value check
2026-04-02 21:57:00 +05:30
YellowSnnowmannandGitHub 8acd34d2a9 Feat/add dictation (#278)
* feat(dictation): implement voice dictation feature with overlay and settings panel

- Added DictationOverlay component for real-time speech-to-text functionality, including recording, transcribing, and error handling.
- Introduced useDictation hook to manage audio recording and transcription processes.
- Created DictationPanel for configuring dictation settings, including hotkey registration and floating launcher preferences.
- Updated SettingsHome to include a navigation option for the new dictation feature.
- Integrated dictation state management with Redux, allowing for persistent settings and status checks.
- Enhanced Tauri commands for registering global hotkeys and managing dictation state.

This update provides a comprehensive voice dictation experience, enabling users to transcribe speech to text using local AI.

* fix(dictation): update DictationOverlay to conditionally render based on floating launcher state

- Reintroduced the useAppDispatch and useAppSelector hooks for state management.
- Added showFloatingLauncher to the state selection, ensuring the overlay only renders when the floating launcher is active.
- Simplified the return statement for position calculations in the drag handler.
- Improved code readability by formatting JSX elements for better clarity.

This update enhances the user experience by ensuring the dictation overlay behaves correctly based on the application's state.

* feat(settings): add dictation route and panel to settings navigation

- Updated the SettingsRoute type to include 'dictation' as a new route.
- Integrated DictationPanel into the Settings page for user configuration.
- Enhanced dictation state management by adding showFloatingLauncher to the dictationSlice, allowing for better control of the dictation overlay.

This update improves the settings navigation and user experience by providing access to dictation features directly from the settings menu.

* feat(dictation): integrate DictationOverlay and enhance dictation settings

- Added DictationOverlay component to the main App for improved user interaction with dictation features.
- Updated DictationPanel to include a new preference for showing a floating launcher, enhancing user control over dictation functionality.
- Enhanced state management by incorporating showFloatingLauncher into the dictationSlice, allowing for better configuration of the dictation experience.

This update improves the overall user experience by providing direct access to dictation features and customizable settings.

* feat(dictation): enhance DictationOverlay and Conversations for improved text insertion

- Added functionality to insert text into editable elements from the DictationOverlay, improving user interaction with dictation features.
- Implemented event listener in Conversations to handle custom dictation insert events, allowing seamless integration of transcribed text into the input field.
- Updated state management to ensure the correct editable target is used for text insertion, enhancing overall user experience.

This update streamlines the dictation process, making it more intuitive and responsive to user actions.

* fix(dictation): refine STT availability logic in dictationSlice

- Updated the logic for determining STT availability to ensure it only considers the model file as available when both the model file exists and there is a method to run inference (either the in-process engine is loaded or a whisper binary is present).
- This change prevents misleading user experiences by avoiding the display of the overlay when the necessary components for transcription are not available.

This update enhances the reliability of the dictation feature by providing clearer conditions for STT availability.

* refactor(dictation): streamline position management in DictationOverlay

- Removed redundant state management for the position of the dictation overlay, consolidating logic to initialize and reset the position based on the current status.
- Introduced a new `resetLauncherPosition` function to simplify resetting the overlay's position when necessary.
- Updated event handling to ensure the overlay's position is reset appropriately after text insertion actions.

This update enhances the clarity and efficiency of the DictationOverlay component, improving user experience during dictation interactions.

* refactor(dictation): improve hotkey registration and unregistration process

- Streamlined the logic for registering and unregistering dictation hotkeys, ensuring that old shortcuts are properly managed before new ones are registered.
- Introduced rollback mechanisms to restore previous shortcuts in case of registration failures, enhancing reliability.
- Simplified error handling and logging for better clarity during the hotkey management process.

This update enhances the robustness of the dictation feature by ensuring a smoother transition between hotkey states.

* refactor:  delete unncessesary pr md file

* refactor(dictation): enhance dictation functionality and error handling
 compatibility.

* refactor(dictation): improve code formatting and readability across components

- Enhanced formatting in DictationOverlay for better clarity in asynchronous action handling.
- Streamlined text extraction logic in useDictation for improved readability.
- Consolidated model directory setting in DictationPanel to a single line for simplicity.
- Improved logging consistency in tauriCommands and speech service files.

These changes enhance the maintainability and readability of the dictation-related components.

* refactor(dictation): manage DictationOverlay position based on status changes

- Introduced a reference to track the previous status of the dictation overlay.
- Updated the effect to reset the overlay's position when transitioning from 'idle' to any other status, enhancing user experience during dictation sessions.

This change improves the responsiveness of the DictationOverlay component to status changes, ensuring a smoother interaction for users.

* refactor(tests): update MemoryWorkspace tests to specify span selector

- Modified test assertions in MemoryWorkspace.test.tsx to include a selector for 'span' elements when checking for text presence.
- This change enhances the specificity of the tests, ensuring they accurately target the intended elements in the rendered component.

These updates improve the reliability of the MemoryWorkspace component tests.
2026-04-02 20:54:46 +05:30
YellowSnnowmannandGitHub 79fe36b41d fix: remove the deadlock when re-enabling an already-active session and add unit tests for ScreenIntelligenceDebugPanel and ScreenIntelligencePanel (#275) 2026-04-02 20:07:15 +05:30
0dd4d1f60b fix(macos): restart sidecar so TCC permission state updates after System Settings (#133) (#182)
* fix(macos): restart sidecar so permission grants show after System Settings

Fixes #133

- Tauri: restart core after kill+wait; fail fast when port held by non-managed process
- ACL: allow core_rpc_url and restart_core_process (IPC was blocked in Tauri 2)
- Dev: default_core_bin falls through to release search when binaries/ empty
- Core: expose permission_check_process_path on accessibility status
- App: Restart & refresh UX, extractError for invoke, Vitest for RPC + slice
- Stage script: optional dev codesign helper for stable TCC identity

Made-with: Cursor

* refactor(onboarding): update button text for clarity and enhance core process restart handling

- Changed button text in ScreenPermissionsStep from 'Refresh Status' to 'Restart & Refresh Permissions' for better user understanding.
- Introduced a restart lock in CoreProcessHandle to serialize overlapping restart requests, ensuring smoother core process management.
- Updated restart_core_process function to acquire the restart lock before initiating a restart, improving reliability during the process.

* fix: improve text clarity in AccessibilityPanel and ScreenIntelligencePanel

- Adjusted text formatting in AccessibilityPanel for better readability.
- Enhanced text clarity in ScreenIntelligencePanel regarding permission refresh instructions.
- Standardized the formatting of permission_check_process_path in test files for consistency.

---------

Co-authored-by: Steven Enamakel <enamakel@tinyhumans.ai>
2026-04-01 16:34:38 -07:00
cf344facf9 feat(voice): dedicated voice assistance module for STT/TTS (#178)
* feat(voice): add dedicated voice assistance module for STT/TTS

Extracts speech-to-text (whisper.cpp) and text-to-speech (piper) into a
dedicated `src/openhuman/voice/` domain module with its own RPC namespace
(`openhuman.voice_*`). Adds proactive availability checking via
`voice_status` so the UI can show clear errors when binaries/models are
missing instead of failing silently at transcription time.

- New module: voice/types.rs, voice/ops.rs, voice/schemas.rs, voice/mod.rs
- 4 RPC endpoints: voice_status, voice_transcribe, voice_transcribe_bytes, voice_tts
- 21 unit tests + 1 integration test (json_rpc_e2e)
- Frontend updated to use voice_* endpoints with status check on mode switch

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

* style: fix cargo fmt in voice/ops.rs

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

* test(e2e): add voice mode integration spec

Tests switching to voice input mode, verifying status check fires,
recording button renders, and switching back to text mode restores
text input. Also checks reply mode toggle visibility.

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

* fix: remove unused waitForText import in voice-mode e2e spec

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

* feat(voice): in-process whisper engine and LLM post-processing

- Add whisper-rs (0.16) for in-process whisper.cpp inference, eliminating
  cold-start latency from subprocess-per-call (~1-3s) to warm inference
  (~50ms). Model is loaded once during bootstrap and reused across calls.
  Falls back to whisper-cli subprocess if in-process loading fails.

- Add LLM post-processing layer that passes raw transcription through
  Ollama to fix grammar, punctuation, and filler words. Accepts optional
  conversation context to disambiguate names and technical terms.
  Gracefully degrades to raw whisper output if Ollama is unavailable.

- Update voice RPC endpoints with new optional params (context,
  skip_cleanup) and return both cleaned text and raw_text.

- Update frontend to pass conversation history as context for voice
  transcription cleanup, and update TypeScript interfaces to match.

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

* style: apply cargo fmt formatting fixes

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

* fix(build): make whisper-rs optional behind `whisper` feature flag

The whisper-rs crate requires cmake to compile whisper.cpp from source,
which is not available in the CI environment. Move it behind an optional
cargo feature so CI builds succeed without cmake.

The whisper_engine module now compiles as a no-op stub when the feature
is disabled, returning "whisper feature not compiled in" errors. Desktop
builds can opt in with `--features whisper`.

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

* style: cargo fmt whisper_engine.rs

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

* fix(ci): make whisper-rs mandatory and install cmake in CI

Revert whisper-rs from optional to mandatory dependency. Add cmake
installation to all CI workflows (build, typecheck, test, release) and
the CI Docker image so whisper-rs can compile whisper.cpp from source.

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

* style: cargo fmt whisper_engine.rs

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

* fix: address code review findings across voice module

- whisper_engine: validate WAV sample rate (must be 16kHz) and channel
  count (1 or 2) before feeding audio to whisper
- speech: offload load_engine and transcribe_in_process to
  tokio::task::spawn_blocking to avoid blocking the Tokio runtime
- ops: use RAII guard for WHISPER_BIN env var in test to prevent races
  and ensure restore on panic; log temp file cleanup failures instead
  of silently ignoring; sanitize paths in debug logs to basenames only
- postprocess: add test for disabled cleanup config returning raw text
- voice-mode.spec: assert failure when neither voice CTA nor
  unavailable message appears; make reply mode test runnable in
  isolation with auth/nav setup

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

* style: apply cargo fmt

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-04-01 15:52:52 -07:00
dd2e33e1c6 fix: onboarding flow - registry skills, config-based flag, dead code cleanup (#177)
* feat(onboarding): enhance onboarding steps with back navigation and UI improvements

- Added back navigation functionality to all onboarding steps (LocalAIStep, ScreenPermissionsStep, SkillsStep, ToolsStep, MnemonicStep) for improved user experience.
- Updated Onboarding component to adjust total steps from 7 to 6.
- Modified ProgressIndicator to reflect the change in total steps.
- Enhanced LocalAIStep UI by removing unnecessary state and improving layout.
- Improved error handling and user feedback in MnemonicStep and ScreenPermissionsStep.
- General UI refinements across onboarding steps for better consistency and usability.

* refactor(onboarding): update skip button and UI elements for improved user experience

- Replaced "Set up later" button with a "Skip" button in the Onboarding component for better clarity.
- Removed unnecessary back navigation buttons from LocalAIStep to streamline the UI.
- Enhanced messaging in ScreenPermissionsStep to clarify data processing and permissions.
- Adjusted button layouts for improved accessibility and consistency across onboarding steps.

* refactor(onboarding): streamline button layout and styling in onboarding steps

- Updated button styles in ScreenPermissionsStep and ToolsStep for consistency and improved user experience.
- Replaced the back navigation button in ToolsStep with a full-width continue button, enhancing layout and accessibility.

* refactor(onboarding): update ProgressIndicator and button styles for improved consistency

- Adjusted ProgressIndicator component to use 'bg-sage-500' for active steps and increased height for better visibility.
- Streamlined button styles in LocalAIStep and SkillsStep for a more cohesive user experience, including removing unnecessary margins and ensuring full-width buttons where applicable.
- Enhanced ToolsStep to focus on skill installation, updating UI elements and descriptions for clarity and improved user engagement.

* refactor(onboarding): update SkillsStep title and description for clarity

- Changed the title from "Install Skills" to "Connect Skills" to better reflect the action.
- Revised the description to clarify that skills interact with the user's workflow and that all data is processed locally, enhancing user understanding of the feature.

* refactor(onboarding): enhance onboarding steps with UI improvements and functionality updates

- Integrated useUser hook in Onboarding component for better user state management.
- Updated MnemonicStep title and messaging for clarity, emphasizing the importance of the recovery phrase.
- Streamlined button layout in MnemonicStep and ScreenPermissionsStep for improved accessibility and consistency.
- Refactored SkillsStep to utilize available skills more effectively, enhancing the user experience with clearer skill descriptions and connection statuses.
- Transitioned ToolsStep to focus on enabling tools, updating UI elements and descriptions for better user guidance.

* refactor(onboarding): replace workspace flag checks with onboarding_completed config

- Removed Redux state checks for onboarding status and workspace flags.
- Integrated new core config methods to read and write onboarding completion status.
- Updated OnboardingOverlay and Onboarding components to utilize onboarding_completed for flow control.
- Enhanced error handling and user feedback during onboarding state persistence.

* refactor(onboarding): remove deferred flow and dead workspace flag code

The onboarding_completed config field is now the sole source of truth.
Skip and complete both write the same flag. Remove SetupBanner,
onboardingDeferredByUser, selectOnboardingDeferred, and the old
workspace flag file functions (openhumanWorkspaceOnboardingFlagExists/Set).

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

* fix: resolve lint errors for unused onBack params in onboarding steps

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

* fix: remove unused handleSkip in LocalAIStep

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-04-01 13:29:19 -07:00
Cyrus GrayandGitHub ec6f954356 fix(onboarding): clear all onboarding state on logout so overlay reappears (#167)
* 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.

* fix(tests): destructure build_agent_with tuple in agent tests

Two tests called .history() and .turn() on the (Agent, TempDir) tuple
instead of destructuring it first, causing compilation errors on CI.

* fix(onboarding): clear all onboarding state on logout so overlay reappears

On logout, `isOnboardedByUser` and `isAnalyticsEnabledByUser` were not
reset in the `_clearToken` reducer, and the workspace `.skip_onboarding`
flag file was never deleted. This caused the onboarding overlay to be
permanently skipped after the first completion — even for new users on
the same machine.

- Clear `isOnboardedByUser` and `isAnalyticsEnabledByUser` in `_clearToken`
- Call `openhumanWorkspaceOnboardingFlagSet(false)` on logout, clear-all,
  and auth recovery paths
- Add 3s timeout fallback in OnboardingOverlay for slow user profile loads
- Add unit test asserting `clearToken` resets all per-user fields

Closes #117

* fix(onboarding): address CodeRabbit review feedback

- Add console.warn in UserProvider catch block for workspace flag clear
- Add inline comment explaining userLoadTimedOut stickiness is harmless

Closes #117
2026-04-01 19:28:31 +05:30
a1932408dd refactor(models): standardize to reasoning-v1, agentic-v1, coding-v1 (#152)
* refactor(agent): update default model configuration and pricing structure

- Changed the default model name in `AgentBuilder` to use a constant `DEFAULT_MODEL` instead of a hardcoded string.
- Introduced new model constants (`MODEL_AGENTIC_V1`, `MODEL_CODING_V1`, `MODEL_REASONING_V1`) in `types.rs` for better clarity and maintainability.
- Refactored the pricing structure in `identity_cost.rs` to utilize the new model constants, improving consistency across the pricing definitions.

These changes enhance the configurability and readability of the agent's model and pricing settings.

* refactor(models): update default model references and suggestions

- Replaced hardcoded model names with a constant `DEFAULT_MODEL` in multiple files to enhance maintainability.
- Updated model suggestions in the `TauriCommandsPanel` and `Conversations` components to reflect new model names, improving user experience and consistency across the application.

These changes streamline model management and ensure that the application uses the latest model configurations.

* style: fix Prettier formatting for model suggestions

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 21:36:33 -07:00
1b131baf70 feat(webhooks): webhook tunnel routing for skills + remove legacy tunnel module (#147)
* feat(webhooks): implement webhook management interface and routing

- Added a new Webhooks page with TunnelList and WebhookActivity components for managing webhook tunnels and displaying recent activity.
- Introduced useWebhooks hook for handling CRUD operations related to tunnels, including fetching, creating, and deleting tunnels.
- Implemented a WebhookRouter in the backend to route incoming webhook requests to the appropriate skills based on tunnel UUIDs.
- Enhanced the API for tunnel management, including the ability to register and unregister tunnels for specific skills.
- Updated the Redux store to manage webhooks state, including tunnels, registrations, and activity logs.

This update provides a comprehensive interface for managing webhooks, improving the overall functionality and user experience in handling webhook events.

* refactor(tunnel): remove tunnel-related modules and configurations

- Deleted tunnel-related modules including Cloudflare, Custom, Ngrok, and Tailscale, along with their associated configurations and implementations.
- Removed references to TunnelConfig and related functions from the configuration and schema files.
- Cleaned up the mod.rs files to reflect the removal of tunnel modules, streamlining the codebase.

This refactor simplifies the project structure by eliminating unused tunnel functionalities, enhancing maintainability and clarity.

* refactor(config): remove tunnel settings from schemas and controllers

- Eliminated the `update_tunnel_settings` controller and its associated schema from the configuration files.
- Streamlined the `all_registered_controllers` function by removing the handler for tunnel settings, enhancing code clarity and maintainability.

This refactor simplifies the configuration structure by removing unused tunnel-related functionalities.

* refactor(tunnel): remove tunnel settings and related configurations

- Eliminated tunnel-related state variables and functions from the TauriCommandsPanel component, streamlining the settings interface.
- Removed the `openhumanUpdateTunnelSettings` function and `TunnelConfig` interface from the utility commands, enhancing code clarity.
- Updated the core RPC client to remove legacy tunnel method aliases, further simplifying the codebase.

This refactor focuses on cleaning up unused tunnel functionalities, improving maintainability and clarity across the application.

* 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 20:19:04 -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
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
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
cyrus@tinyhumans.ai 588b6d04e4 refactor: replace dynamic imports with static imports in app/src
Closes #102
2026-03-31 13:41:36 +05:30
777c98ef7c feat(skills): registry-based skill management + RPC state migration (#98)
* refactor(tauriCommands): streamline RPC method calls for skill management

- Simplified the syntax of RPC method calls in the `tauriCommands.ts` file by removing unnecessary line breaks, enhancing code readability.
- Updated descriptions in the `schemas.rs` file to maintain consistent formatting for RPC method descriptions, improving documentation clarity.

* chore(release): bump OpenHuman version to 0.49.23 in Cargo.lock

* feat(skills): add skill status management in desktopDeepLinkListener

- Introduced a new action `setSkillStatus` to manage the skill's connection status.
- Updated the OAuth deep link handling to dispatch the skill status as 'ready' upon successful connection, improving state management for skills.

* feat(screen_intelligence): implement capture mode for screenshots

- Added a `CaptureMode` enum to differentiate between windowed and fullscreen screenshot captures.
- Enhanced the `capture_screen_image_ref_for_context` function to determine capture mode based on window bounds, with fallback to fullscreen.
- Implemented logic to downscale screenshots exceeding size limits when captured in fullscreen mode.
- Introduced a new `parse_foreground_output` function to parse application context from AppleScript output, improving context retrieval for screenshots.

* chore(build): update Tauri configuration to remove updater artifacts creation

- Modified the TAURI_CONFIG_OVERRIDE to exclude the creation of updater artifacts during the build process, streamlining the build workflow.

* feat(accessibility): enhance accessibility state and add capture test functionality

- Introduced new properties `captureTestResult` and `isCaptureTestRunning` to the `AccessibilityState` interface for managing capture test states.
- Added `CaptureTestResult` and `CaptureTestContextInfo` interfaces to define the structure of capture test results.
- Implemented `openhumanScreenIntelligenceCaptureTest` function to initiate screen intelligence capture tests, improving accessibility features.

* feat(debug): add Screen Intelligence Debug Panel for enhanced diagnostics

- Introduced a new `ScreenIntelligenceDebugPanel` component to display accessibility status, session information, and capture test results.
- Integrated the debug panel into the existing `ScreenIntelligencePanel`, allowing users to expand and collapse the debug section.
- Updated accessibility state management to include `captureTestResult` and `isCaptureTestRunning` for improved testing feedback.
- Enhanced test setup to accommodate new debug functionalities.

* feat(screen_intelligence): implement custom hook for screen intelligence items

- Added `useScreenIntelligenceItems` hook to fetch and manage screen intelligence items from the accessibility state.
- Integrated the hook into the `Intelligence` component, combining items from both memory and screen intelligence sources.
- Enhanced loading state management to reflect the combined loading status of both data sources.

* test(screen_intelligence): add unit tests for useScreenIntelligenceItems mapping and confidenceToPriority functions

- Introduced tests for the mapping logic of AccessibilityVisionSummary to ActionableItem, ensuring correct transformation of properties.
- Added tests for confidenceToPriority function to validate priority assignment based on confidence levels.
- Included edge cases such as handling empty arrays, null app names, and long actionable notes truncation.

* feat(mnemonic): update mnemonic handling to support variable word counts

- Refactored mnemonic import logic to accommodate BIP39 phrase lengths (12, 15, 18, 21, 24 words).
- Updated state initialization and validation to dynamically adjust based on the allowed word counts.
- Enhanced user prompts to reflect the new word count options for recovery phrases.
- Adjusted focus handling for input fields to improve user experience during phrase entry.

* refactor(skills): migrate skill state management to RPC-based hooks

- Replaced Redux-based skill state management with RPC-backed hooks for improved performance and reactivity.
- Introduced `useSkillSnapshot` and `useAllSkillSnapshots` hooks to fetch skill states directly from the Rust core.
- Updated components to utilize the new hooks, enhancing the overall architecture and reducing dependency on Redux.
- Added event listeners to trigger state updates in response to skill state changes, ensuring real-time updates across the application.

* fix(lint): merge duplicate tauriCommands import in accessibilitySlice test

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

* refactor(tests): remove eslint-disable comment from screen intelligence E2E test file

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:31:02 -07:00
Steven EnamakelandGitHub 2746007918 feat(channels): add channel schema, RPC controllers, and definition-driven UI (#88)
* refactor(tests): rename native_dispatcher test for clarity and update assertions

- Renamed the test function to better reflect its purpose: checking that the native dispatcher returns protocol-only instructions.
- Updated assertions to ensure the instructions contain the expected protocol information and do not inline tool names.

* feat(channels): introduce channel controllers and enhance channel management

- Added new `controllers` module for channel definitions, connection management, and RPC controllers.
- Implemented channel connection logic, including connection status and credential management.
- Updated existing functions to extend support for new channel schemas and definitions.
- Enhanced documentation for channel-related functionalities, including descriptions for new RPC methods.

* feat(messaging): enhance MessagingPanel with backend-driven channel definitions and status management

- Introduced backend-driven channel definitions and status retrieval in MessagingPanel.
- Replaced hardcoded channel and auth mode definitions with dynamic data from the backend.
- Improved error handling and loading states for channel connections.
- Updated API service to support fetching channel definitions and connection statuses.
- Refactored state management for better clarity and maintainability.

* feat(messaging): implement fallback definitions for channel connections in MessagingPanel

- Added fallback definitions for Telegram and Discord channels to enhance messaging capabilities when backend is unreachable.
- Updated MessagingPanel to utilize fallback definitions if backend data is unavailable, improving error handling and user experience.
- Refactored API service methods to return results directly, streamlining data retrieval for channel definitions and statuses.

* feat(channels): add web channel support and enhance routing logic

- Introduced a new 'web' channel definition in MessagingPanel, allowing chat via the built-in web UI.
- Updated channel connection state management to include the web channel, ensuring proper handling of connections.
- Enhanced routing logic to support fallback mechanisms across all defined channels, improving resilience in connection handling.
- Refactored channel type definitions to accommodate the new web channel, ensuring consistency across the application.
2026-03-30 12:33:49 -07:00
f975cba495 feat(autocomplete): personalise suggestions via accepted-completion history (#76)
* feat(autocomplete): add persistent accepted-completion history module

Introduces history.rs — a thin persistence layer over the existing local
KV store (MemoryClient::new_local()) that stores every accepted completion
and surfaces them as formatted style examples for in-context learning.

Public API:
- save_accepted_completion(context, suggestion, app_name)
- load_recent_examples(n) → Vec<String>
- list_history(limit) → Vec<AcceptedCompletion>
- clear_history() → usize

Storage: KV namespace "autocomplete", keys "accepted:{ts_ms:018}",
auto-trimmed to 50 entries on each save.

Refs: tinyhumansai/openhuman#71

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(autocomplete): wire history module into autocomplete mod.rs

Adds `mod history` and re-exports the public types/functions so they
are accessible from sibling modules (core.rs, ops.rs, schemas.rs).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(autocomplete): save accepted completions and inject as style examples

Three additions to the autocomplete engine:

1. After RPC accept (accept method): fire-and-forget tokio::spawn to
   save the accepted completion context + suggestion to KV history.

2. After Tab-key accept (try_accept_via_tab): same fire-and-forget save.

3. Before inline_complete() in refresh(): load the 6 most recent
   accepted completions from history, merge with user's static
   style_examples (capped at 8 total), and pass as dynamic examples —
   giving the model in-context personalisation from prior acceptances.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(autocomplete): add RPC handlers for history and clear_history

Adds two new async handler functions and their param/result structs:

- autocomplete_history(limit?) → AutocompleteHistoryResult
- autocomplete_clear_history() → AutocompleteClearHistoryResult

Both delegate to the history module and return via RpcOutcome, following
the established pattern of existing autocomplete ops handlers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(autocomplete): register history + clear_history controller schemas

Adds ControllerSchema definitions and handler wiring for the two new
RPC methods: openhuman.autocomplete_history and
openhuman.autocomplete_clear_history.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(app): add TypeScript types and stubs for autocomplete history RPC

Adds AcceptedCompletion, AutocompleteHistoryResult, and
AutocompleteClearHistoryResult interfaces plus two exported async
functions (openhumanAutocompleteHistory, openhumanAutocompleteClearHistory)
following the existing callCoreRpc pattern.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(app): add Personalization History section to AutocompletePanel

Adds a new UI section between Settings and Test in the autocomplete
settings panel showing accepted completion history:

- Scrollable list of entries with timestamp, app name, context tail,
  and accepted suggestion
- Clear History button (red-toned, disabled when empty)
- Summary line with entry count
- Auto-loads on mount alongside existing settings load

Uses local component state only (no Redux) — history is fetched via
the new openhumanAutocompleteHistory RPC stub.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* style: apply prettier + cargo fmt formatting fixes

Auto-formatted by pre-push hooks — import ordering, line wrapping,
and brace style adjustments. No logic changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-30 10:04:32 -07:00
Steven EnamakelandGitHub 7bcf43314a Improve service lifecycle E2E coverage and align CI workflows (#62)
* Add JSON-RPC schema definition and HTTP schema endpoint

- Introduced a new `schema.json` file containing detailed definitions for various JSON-RPC methods, including their inputs, outputs, and descriptions.
- Implemented a new HTTP endpoint `/schema` in the core server to serve the JSON-RPC schema, enhancing API documentation and accessibility.
- Updated the core HTTP router to include the new schema route, improving the overall structure and usability of the API.
- Enhanced error handling and response formatting in the server to ensure consistent feedback for schema requests.

* Update TypeScript configuration and refactor core RPC client

- Changed TypeScript target from ES2020 to ESNext and updated library references in `tsconfig.json` for improved compatibility with modern features.
- Refactored `coreRpcClient.ts` to enhance JSON-RPC request handling, including the introduction of legacy method aliases and improved error handling.
- Updated API service methods in `authApi.ts` and `channelConnectionsApi.ts` to utilize the new core RPC client structure, streamlining authentication and channel connection processes.
- Added new utility functions for managing JSON-RPC requests and responses, improving code organization and maintainability.
- Enhanced test coverage for the new RPC client methods and refactored existing tests to align with the updated structure.

* Enhance Tauri configuration and refactor daemon program arguments

- Updated `tauri.conf.json` to include additional macOS infoPlist settings for better application identification and icon management.
- Refactored the `daemon_program_args` function in `common.rs` to improve clarity by renaming the parameter to `_exe`, indicating it is unused. This change enhances code readability and maintainability.

* Refactor Tauri configuration by removing unused macOS infoPlist settings

- Updated `tauri.conf.json` to streamline macOS configuration by removing unnecessary infoPlist entries while retaining essential settings for the application.
- This change enhances clarity and maintainability of the Tauri configuration file.

* Enhance authentication flow and testing documentation

- Introduced a new `isAuthBootstrapComplete` state in the authentication slice to manage the completion of the authentication bootstrap process.
- Updated the `UserProvider` to set the `isAuthBootstrapComplete` state based on the authentication status, improving session restoration logic.
- Modified route components (`DefaultRedirect`, `ProtectedRoute`, `PublicRoute`) to conditionally render based on the `isAuthBootstrapComplete` state, enhancing user experience during the authentication process.
- Added a comprehensive testing guide in `CLAUDE.md`, detailing unit and E2E testing practices, including setup, authoring rules, and a checklist for test coverage.
- Updated the `SettingsHome` component to redirect to the home page instead of the login page upon logout, streamlining user navigation.
- Enhanced the `LocalModelPanel` to track download progress and manage local AI assets more effectively, improving overall functionality.

* Add resolutions for @tauri-apps/api dependency in package.json

- Introduced a resolutions field in package.json to enforce the use of @tauri-apps/api version 2.10.1, ensuring compatibility across workspaces.
- Updated dependencies in app/package.json to include @tauri-apps/api version 2.10.1, aligning with the new resolution.
- Adjusted yarn.lock to reflect the updated version of @tauri-apps/api, enhancing dependency management and consistency.

* Refactor Tauri configuration and enhance E2E build process

- Updated `tauri.conf.json` to remove unused resource paths, streamlining the configuration for better maintainability.
- Modified `wdio.conf.ts` to improve application path resolution for macOS, allowing for multiple bundle base checks to enhance compatibility.
- Refactored `e2e-build.sh` to disable updater artifacts for E2E builds and introduced a conditional cargo clean mechanism, improving build efficiency and clarity.

* Enhance E2E testing setup and documentation

- Updated `CLAUDE.md` to clarify the default behavior of `OPENHUMAN_WORKSPACE` in `e2e-run-spec.sh`, emphasizing automatic creation and cleanup for reproducible E2E runs.
- Modified `e2e-run-spec.sh` to implement automatic temporary workspace creation when `OPENHUMAN_WORKSPACE` is not set, improving usability for debugging and testing.
- Enhanced cleanup logic in `e2e-run-spec.sh` to ensure proper removal of temporary workspaces after tests, contributing to a cleaner testing environment.

* Implement shared mock backend for testing and enhance documentation

- Introduced a shared mock backend for unit and integration tests, allowing for deterministic API behavior across app and Rust tests.
- Updated `CLAUDE.md` to include detailed instructions on using the shared mock backend, including key admin endpoints and manual run commands.
- Modified `package.json` to add scripts for running the mock API server and Rust tests with the mock backend.
- Refactored test setup to utilize the new mock backend, improving test reliability and isolation.
- Removed obsolete MSW handlers and server setup, streamlining the testing framework.

* Enhance authentication state management and testing coverage

- Introduced `isAuthBootstrapComplete` state in the authentication slice to track the completion of the authentication process.
- Updated `ProtectedRoute` and `PublicRoute` components to utilize the new state, improving user experience during authentication.
- Enhanced test cases for `ProtectedRoute` and `PublicRoute` to reflect the updated authentication state structure.
- Added a new end-to-end test for the authentication flow, ensuring proper handling of OAuth tokens and session management.
- Improved mock setup in tests to better simulate authentication scenarios, enhancing test reliability and coverage.

* Enhance README.md with architecture overview and component roles

- Added detailed descriptions of the OpenHuman architecture, highlighting the separation of business logic and UI components.
- Explained the roles of Rust and the UI in the monorepo, including the use of JSON-RPC, QuickJS, Vite, React, and Tauri.
- Documented the structure of controllers and the RPC surface, emphasizing the shared contract for automation and testing.
- Provided links to further documentation for architecture, frontend structure, and Tauri commands.

* Integrate ServiceBlockingGate component and enhance loading states

- Added the `ServiceBlockingGate` component to manage service availability and display appropriate loading screens.
- Updated `DefaultRedirect`, `ProtectedRoute`, and `PublicRoute` components to show a loading indicator while authentication bootstrap is in progress.
- Implemented timeout handling in `UserProvider` for improved authentication state management.
- Introduced tests for `ServiceBlockingGate` to ensure proper rendering and functionality under various service states.

* Implement core RPC URL resolution and default hash route handling

- Added a function to resolve the core RPC URL based on the environment, improving flexibility for Tauri and non-Tauri contexts.
- Introduced a default hash route handler in the main application entry point to ensure proper navigation behavior.
- Updated the core RPC command to expose the resolved RPC URL, enhancing the integration with the frontend.
- Refactored the core RPC client to utilize the new URL resolution logic, ensuring consistent API calls.

* Refactor backend URL usage to API_BASE_URL

- Replaced all instances of BACKEND_URL with API_BASE_URL across various components and services to standardize API endpoint references.
- Updated OAuth provider configurations, settings panels, hooks, and services to ensure consistent API calls.
- Enhanced test setups to reflect the new API_BASE_URL, improving test reliability and alignment with the updated configuration.

* Implement RouteLoadingScreen for improved loading states

- Introduced a new `RouteLoadingScreen` component to provide a consistent loading experience across various routes.
- Updated `DefaultRedirect`, `ProtectedRoute`, and `PublicRoute` components to utilize `RouteLoadingScreen` while waiting for authentication bootstrap completion.
- Enhanced `MiniSidebar` to hide on additional public/setup routes, improving user navigation experience.
- Refactored `UserProvider` to streamline authentication state management by removing unnecessary references.

* Add feature design workflow section to CLAUDE.md

- Introduced a comprehensive workflow for feature design, outlining steps from specification to UI implementation and testing.
- Emphasized the importance of grounding designs in existing codebases and defined planning rules for E2E scenarios.
- Provided detailed instructions for implementing features in Rust, conducting JSON-RPC tests, and building UI components in the Tauri app.

* Refactor backend URL handling and improve OAuth flow

- Replaced static API_BASE_URL references with dynamic backend URL resolution across various components and services, enhancing flexibility for Tauri and non-Tauri environments.
- Updated OAuth provider configurations to utilize the new backend URL logic, ensuring consistent login URL generation.
- Refactored API client and socket service to fetch the backend URL dynamically, improving reliability in different deployment contexts.
- Introduced a new service for resolving the backend URL, streamlining the configuration and enhancing test setups.

* Add debug logging guidelines to CLAUDE.md

- Introduced comprehensive guidelines for implementing development-oriented debug logging in both Rust and the app.
- Emphasized the importance of logging at appropriate levels (`debug`/`trace`) and following existing patterns for consistency.
- Provided instructions on avoiding sensitive information in logs and ensuring terminal output is grep-friendly for easier debugging during development.

* Enhance service management with new mock functionality and E2E tests

- Added a mock service manager to facilitate deterministic service behavior during end-to-end tests, enabling better simulation of service states.
- Introduced new buttons in the `ServiceBlockingGate` component for restarting and uninstalling services, improving user control over service management.
- Implemented a comprehensive E2E test suite for the service connectivity flow, covering installation, starting, stopping, restarting, and uninstalling services.
- Updated package scripts to include a new E2E test for service connectivity, enhancing testing coverage and reliability.
- Refactored service operations to support mock functionality, ensuring consistent behavior across testing and production environments.

* Enhance ServiceBlockingGate with improved logging and periodic health polling

- Introduced periodic health polling in the `ServiceBlockingGate` component to refresh service status every 3 seconds, enhancing responsiveness to service state changes.
- Added detailed logging for various operations, including service status checks and error handling, to improve traceability and debugging.
- Updated E2E tests to include logging steps for better visibility during service connectivity flow tests.
- Refactored error handling to ensure consistent logging of error messages across service operations.

* Refactor E2E testing scripts and enhance CLAUDE.md documentation

- Updated paths in CLAUDE.md to reflect the new location of the E2E run script, ensuring accurate instructions for running tests.
- Removed outdated E2E test scripts from package.json and migrated relevant functionality to app/package.json for better organization.
- Introduced new E2E testing scripts for specific flows (auth, login, payment, etc.) to streamline testing processes and improve modularity.
- Added a script to run all E2E flows sequentially, enhancing test coverage and simplifying execution.
- Improved documentation for E2E testing procedures in CLAUDE.md, providing clearer guidance for developers.

* Refactor imports and enhance code readability

- Removed duplicate import of `ServiceBlockingGate` in `App.tsx` for cleaner code.
- Improved readability in `MiniSidebar.tsx` by formatting conditional statements.
- Reordered imports in `PublicRoute.tsx` for consistency.
- Enhanced formatting in `ServiceBlockingGate.tsx` for better clarity in asynchronous operations.
- Streamlined import statements in various test files and components for improved organization.
- Updated `LocalModelPanel.tsx` to enhance button disable logic readability.
- Refactored CORS headers in `jsonrpc.rs` for better formatting.

* ci: align build and test workflows with app workspace e2e

* ci: align release and typecheck workflows with current workspace

* Enhance ServiceBlockingGate functionality with improved refresh options

- Introduced a new `RefreshOptions` type to customize the behavior of the `refreshStatus` function, allowing for conditional error clearing and status checking.
- Updated the `refreshStatus` function to utilize the new options, enhancing control over service state updates.
- Modified the button click handler to pass the new options, improving user experience during service refresh operations.
- Adjusted state updates to prevent unnecessary re-renders and maintain consistency in service state management.

* Refactor RefreshOptions type for improved clarity in ServiceBlockingGate

- Consolidated the definition of the `RefreshOptions` type into a single line for better readability.
- Maintained existing functionality while enhancing code clarity in the `ServiceBlockingGate` component.
2026-03-29 18:14:13 -07:00
Steven EnamakelandGitHub c1a3ae1cfe Refactor controller registration into domain schemas and generic registry (#53)
* Refactor core server helpers and enhance REPL dotenv loading

- Removed unused functions for extracting namespaces and filtering documents by namespace from `helpers.rs`, streamlining the codebase.
- Introduced dotenv loading functionality in `repl.rs`, allowing for environment variable management from a specified `.env` file.
- Added utility functions for parsing dotenv values and resolving the dotenv file path, improving configuration handling in the REPL.
- Enhanced logging for dotenv loading to provide better visibility into the process and any issues encountered.

* Add AI RPC module and enhance core server dispatch functionality

- Introduced a new `rpc` module within the `ai` namespace to handle various AI-related commands, including memory file operations and session management.
- Updated the core server's dispatch logic to integrate the new AI RPC functionality, improving modularity and maintainability.
- Removed outdated memory dispatch implementation and streamlined the overall dispatch structure for better performance and clarity.
- Enhanced error handling and logging throughout the new functionalities to improve maintainability and user feedback.

* Refactor project structure and enhance RPC functionality

- Introduced a new `rpc` module to streamline JSON-RPC handling across various domains, improving code organization and maintainability.
- Updated the core server and API modules to utilize the new `rpc` structure, enhancing modularity and reducing code duplication.
- Added new models for authentication and socket management, improving the overall functionality of the API.
- Removed outdated references to the previous `openhuman` RPC structure, ensuring a cleaner and more efficient codebase.

* Update architecture documentation and refactor AI prompt paths

- Updated references in architecture documentation to reflect the new directory structure for AI prompts, changing paths from `src/ai/prompts` to `src/openhuman/agent/prompts`.
- Enhanced clarity in command documentation by aligning AI-related commands with the updated prompt paths.
- Removed obsolete AI module and streamlined memory management references to improve code organization and maintainability.
- Introduced new markdown files for agent prompts, establishing a foundation for OpenHuman's AI capabilities.

* Update AI prompt paths and configuration references

- Changed all references from `src/ai/prompts` to `src/openhuman/agent/prompts` in documentation and code files to reflect the new directory structure.
- Updated Tauri configuration to include the new resource paths for AI prompts, ensuring proper access and functionality.
- Enhanced the AI configuration commands to align with the updated paths, improving clarity and maintainability across the project.

* Enhance core structure and introduce new RPC functionality

- Added a new `core` module to centralize shared schemas and contracts for controllers, improving code organization and maintainability.
- Introduced `jsonrpc` and `cli` modules within the `core` structure to handle JSON-RPC requests and command-line interactions, enhancing modularity.
- Defined a `ControllerSchema` for transport-agnostic function contracts, allowing for consistent handling across RPC and CLI layers.
- Established a new `all` module to manage registered controllers and their schemas, streamlining the invocation process.
- Updated documentation in `CLAUDE.md` to reflect new controller schema contracts and module organization, improving clarity for developers.

* Refactor core server structure and enhance RPC functionality

- Removed the `core_server` module and integrated its functionalities into the `core` module, improving code organization and maintainability.
- Introduced a new `dispatch` module to handle RPC requests, streamlining the invocation process for various commands.
- Updated the CLI to utilize the new core structure, enhancing command handling and modularity.
- Added comprehensive logging for RPC interactions, improving visibility and debugging capabilities.
- Enhanced error handling across the core server, ensuring consistent feedback for users and developers.

* Refactor CLI command handling and enhance JSON-RPC integration

- Consolidated CLI command structure by removing the `CoreCli` and directly implementing command functions for `run`, `call`, and `namespace`.
- Improved argument parsing for server commands, including port specification and help options, enhancing user experience.
- Streamlined the invocation of JSON-RPC methods, ensuring consistent error handling and response formatting across commands.
- Introduced a new `run_namespace_command` function to manage namespace-specific operations, improving modularity and clarity in command execution.

* Refactor SkillsPanel and TauriCommandsPanel for improved integration handling

- Removed unused integration-related functions and state management from SkillsPanel, simplifying the component's logic.
- Updated TauriCommandsPanel to eliminate integration name input and associated commands, streamlining the user interface.
- Introduced a new local AI memory management module to handle session and memory operations, enhancing overall functionality.
- Refactored core RPC client to integrate local AI method dispatching, improving command handling consistency across the application.
- Cleaned up tauriCommands utility functions to align with the new command structure, enhancing maintainability.

* Refactor TauriCommandsPanel to streamline command handling

- Removed the `openhumanModelsRefresh` function and replaced its usage with `openhumanDoctorReport`, simplifying the command logic.
- Eliminated unused model refresh buttons from the UI, enhancing the user interface and reducing clutter.
- Updated related utility functions in `tauriCommands.ts` to reflect the removal of model refresh functionality, improving maintainability.

* Refactor JSON-RPC server integration and remove legacy server module

- Updated the CLI to invoke the JSON-RPC server directly, enhancing command execution flow.
- Introduced a new HTTP router in the `jsonrpc` module, consolidating route handling for health checks and RPC requests.
- Removed the deprecated `server` module, streamlining the codebase and improving maintainability.
- Adjusted tests to reflect the new routing structure, ensuring continued functionality and integration.

* Remove submodule and update CLAUDE.md documentation

- Deleted the `.gitmodules` file and removed the `skills` submodule, simplifying the project structure.
- Updated the description in `CLAUDE.md` to reflect a broader focus on community assistance rather than just crypto, enhancing clarity.
- Added sections on coding philosophy and controller migration checklist to improve developer guidance and maintainability.

* Refactor controller registration and enhance schema management

- Introduced a centralized registry for registered controllers, improving the organization and validation of controller schemas.
- Updated the `all_registered_controllers` and `all_controller_schemas` functions across various modules to streamline controller management.
- Added comprehensive validation for controller registration to ensure consistency and prevent duplicate entries.
- Enhanced the CLI and JSON-RPC integration to utilize the new registry structure, improving command handling and modularity.
- Updated documentation in `CLAUDE.md` to reflect changes in the skills registry and controller management processes, enhancing clarity for contributors.

* Enhance autocomplete, config, and credentials modules with new schemas and controller registrations

- Added support for autocomplete, config, and credentials functionalities by introducing new schemas and registered controllers.
- Updated the `build_registered_controllers` and `build_declared_controller_schemas` functions to include new entries for autocomplete, config, and credentials.
- Implemented new JSON-RPC tests for autocomplete and config methods, ensuring proper validation and error handling.
- Refactored CLI tests to include checks for new commands related to autocomplete and configuration management, improving test coverage and reliability.
- Introduced new modules for schemas in autocomplete, config, and credentials, enhancing code organization and maintainability.

* Add local AI and migration modules with schemas and controller registrations

- Introduced local AI and migration functionalities by adding new schemas and registered controllers.
- Updated the `build_registered_controllers` and `build_declared_controller_schemas` functions to include entries for local AI and migration.
- Implemented JSON-RPC tests for local AI and migration methods, ensuring proper validation and error handling.
- Enhanced CLI tests to verify new commands related to local AI and migration, improving test coverage and reliability.
- Organized code by creating dedicated modules for schemas in local AI and migration, enhancing maintainability.

* Refactor controller schemas for config and auth modules

- Updated controller schemas for config and auth functionalities, aligning namespaces and function names for consistency.
- Changed function names in the JSON-RPC tests to reflect the new schema structure, ensuring proper invocation.
- Enhanced CLI tests to verify updated commands related to config and auth, improving test coverage and reliability.
- Organized code by consolidating related functionalities under appropriate namespaces, enhancing maintainability.

* Add agent and screen intelligence modules with schemas and controller registrations

- Introduced agent and screen intelligence functionalities by adding new schemas and registered controllers.
- Updated the `build_registered_controllers` and `build_declared_controller_schemas` functions to include entries for agent and screen intelligence.
- Created dedicated modules for schemas in agent, screen intelligence, skills, tools, tray, and workspace, enhancing code organization and maintainability.
- Implemented initial controller schemas for agent and screen intelligence, providing a foundation for future functionality.
- Enhanced the overall structure of the core module to accommodate new integrations, improving modularity and clarity.

* Enhance autocomplete and namespace descriptions in core modules

- Added a new function `namespace_description` to provide descriptions for various namespaces, improving user guidance in CLI commands.
- Updated the CLI help output to include namespace descriptions, enhancing clarity for users.
- Introduced a new `core` module for autocomplete functionalities, including various operations and structures related to inline autocomplete.
- Refactored the `autocomplete` module to improve organization and maintainability, consolidating related functionalities under appropriate namespaces.
- Implemented initial JSON-RPC operations for autocomplete, ensuring a robust interface for managing autocomplete features.

* Refactor and clean up code across multiple modules

- Removed unnecessary whitespace in `TauriCommandsPanel.tsx`, improving code readability.
- Cleaned up imports and reorganized code structure in `localCoreAiMemory.ts`, enhancing maintainability.
- Streamlined module imports in `mod.rs` files across various directories, ensuring consistency and clarity.
- Deleted the obsolete `rpc.rs` file in the `cron` module, consolidating functionality and reducing clutter.
- Updated function definitions in `ops.rs` to improve formatting and readability, enhancing overall code quality.

* Refactor session management and enhance module organization

- Changed `sessionIndex` from a mutable variable to a constant in `localCoreAiMemory.ts`, improving code clarity and immutability.
- Introduced new `ops.rs` files in the `approval`, `providers`, `skills`, and `quickjs_libs` modules, consolidating related functionalities and enhancing code organization.
- Streamlined module imports in `mod.rs` files across various directories, ensuring consistency and clarity in module structure.
- Removed obsolete code and unnecessary comments, improving overall code readability and maintainability.

* Refactor configuration schema organization and module structure

- Moved the configuration schema definitions from `mod.rs` to a new `types.rs` file, enhancing modularity and clarity.
- Updated module imports across various files to reflect the new structure, ensuring consistency in the codebase.
- Cleaned up obsolete code and comments, improving overall readability and maintainability.

* Remove obsolete configuration schema file and its associated modules

- Deleted the `types.rs` file from the configuration schema, consolidating the codebase and removing unused components.
- This change enhances maintainability by eliminating redundant code and streamlining the overall structure of the configuration management.

* Fix config schema module exports

* Add configuration schema types and enhance module exports

- Introduced a new `types.rs` file to define the top-level configuration structure for `config.toml`, improving modularity and clarity.
- Updated `mod.rs` to re-export all public types and configurations, ensuring a streamlined interface for the configuration schema.
- Enhanced the organization of configuration components, making it easier to manage and extend in the future.

* Update import path for AuthProfile and AuthProfileKind in tests module

- Changed the import statement for `AuthProfile` and `AuthProfileKind` to use the correct path, ensuring proper module resolution and consistency in the codebase.

* Refactor import statements in test files for consistency

- Cleaned up import statements across multiple test files by removing unnecessary components and ensuring uniformity in module imports.
- This change enhances code readability and maintainability by streamlining the import structure.

* Add agent chat and REPL session handling with schemas

- Introduced new schemas for agent chat and REPL session management, enhancing the functionality of the agent module.
- Implemented handlers for chat and REPL session operations, allowing for more interactive and persistent user sessions.
- Updated the memory store to include category handling for memory entries, improving data organization and retrieval.
- Refactored memory query methods to support ranked results and category storage, enhancing the memory management capabilities.
- Improved error handling in memory recall tools to ensure non-empty parameters, increasing robustness and user feedback.

* Refactor JSON-RPC method names for consistency and clarity

- Updated JSON-RPC method names in tests to follow a consistent naming convention, improving readability and maintainability.
- Adjusted parameter names in the JSON payload to align with the updated method names, ensuring proper functionality and clarity in the API interactions.
- Enhanced overall code organization by streamlining method calls in the test suite.
2026-03-29 15:59:34 -07:00
Steven EnamakelandGitHub 244702d349 Feat/refactor UI code (#52)
* Enhance autocomplete functionality and settings panel

- Added a new AutocompletePanel component for managing inline autocomplete settings, including options for enabling/disabling, debounce timing, and style configurations.
- Integrated autocomplete status tracking and logging within the panel to provide real-time feedback on the autocomplete engine's state.
- Updated settings navigation to include the new autocomplete settings route, improving user accessibility to autocomplete features.
- Introduced new Tauri commands for managing autocomplete operations, including start, stop, and current status retrieval, enhancing interaction with the autocomplete engine.
- Refactored existing code to streamline autocomplete-related functionalities and improve overall maintainability.

* Update TypeScript configuration and add new assets

- Modified `tsconfig.json` to adjust path aliases and include directories for improved module resolution.
- Added new SVG and image assets to the public directory, enhancing the application's visual resources.
- Introduced multiple Lottie animation JSON files for dynamic UI elements, expanding the application's animation capabilities.

* Update project structure and paths for Tauri integration

- Adjusted paths in the pull request template and various workflow files to reflect the new project structure, moving Tauri-related files under the `app` directory.
- Updated commands in the build and release workflows to ensure compatibility with the new file locations.
- Enhanced the test workflow to create the necessary `.env` file in the correct directory for end-to-end testing.
- Added new markdown files for agent prompts and configuration, establishing a foundation for OpenHuman's AI capabilities.

* Refactor project paths and update configurations for Tauri integration

- Adjusted script paths in package.json to reflect the new project structure, ensuring compatibility with the updated directory layout.
- Modified tsconfig.json to correct path aliases and include directories for improved module resolution.
- Introduced a new utility for resolving development paths, enhancing the ability to locate the `rust-core/ai` directory across different project structures.
- Updated Cargo.toml and tauri.conf.json to align with the new directory structure, ensuring proper resource and dependency management.
- Added a new dev_paths module to streamline path resolution logic, improving maintainability and clarity in the codebase.

* Refactor project structure and update configurations for Tauri integration

- Adjusted paths in .gitignore, Cargo.toml, and various scripts to reflect the new directory layout, moving Tauri-related files under the `app` directory.
- Introduced a new package.json file to manage workspace scripts and dependencies effectively.
- Updated end-to-end build and run scripts to ensure compatibility with the new project structure.
- Enhanced documentation in CONTRIBUTING.md to guide contributors on the updated project organization and Tauri command usage.

* Refactor Tauri command invocations to use dedicated utility functions

- Replaced direct `invoke` calls with utility functions from `tauriCommands` for improved readability and maintainability across multiple components.
- Updated `SkillsGrid`, `Skills`, `SkillProvider`, and `SkillManager` to utilize the new command structure, enhancing consistency in Tauri command handling.
- Introduced a new `coreRpcClient` for managing core RPC relay requests, streamlining error handling and request processing.
- Added a new `core_rpc_relay` command in the Tauri backend to facilitate communication with the core service, ensuring better service management and error reporting.

* Refactor Tauri command invocations in intelligence stats and memory manager

- Replaced direct `invoke` calls with utility functions from `tauriCommands` in `useIntelligenceStats` and `MemoryManager` for improved readability and maintainability.
- Updated the `aiListMemoryFiles`, `aiReadMemoryFile`, and `aiWriteMemoryFile` functions to utilize the new command structure, enhancing consistency in Tauri command handling.
- Introduced new command handling in the Rust backend for `ai.list_memory_files`, `ai.read_memory_file`, and `ai.write_memory_file`, streamlining communication with the core service.

* Refactor SkillsGrid and remove SelfEvolveModal component

- Removed the SelfEvolveModal component to streamline the SkillsGrid functionality.
- Updated the SkillsGrid to utilize the runtimeDiscoverSkills function for loading skills, replacing the previous invoke method.
- Simplified the skill entry normalization process by integrating it directly into the skills loading logic.
- Enhanced error handling during skill loading to improve robustness and user feedback.

* Refactor Tauri command invocations to use coreRpcClient

- Replaced direct `invoke` calls with `callCoreRpc` in various components, including `useIntelligenceStats`, `MemoryManager`, `SessionManager`, and `transcript` functions, enhancing code readability and maintainability.
- Updated the Rust backend to handle new command structures for memory and session management, streamlining communication with the core service.
- Improved consistency in handling Tauri commands across the application.

* Refactor Tauri command invocations to utilize coreRpcClient

- Replaced direct `invoke` calls with `callCoreRpc` in `tauriCommands.ts` and `tauriSocket.ts`, enhancing code readability and maintainability.
- Updated the Rust backend to support new command structures for authentication and session management, streamlining communication with the core service.
- Removed legacy socket reporting methods in `tauriSocket.ts`, reflecting a shift towards event-driven socket state management.
- Improved consistency in handling Tauri commands across the application, aligning with recent refactoring efforts.

* Remove pre-commit hook and update TODO list with completed tasks and new objectives. This includes separating the binary from the Tauri codebase, integrating accessibility service installation, and removing Android/iOS support from the codebase.

* Add core server functionality with dispatch and RPC handling

- Introduced new modules for core server operations, including dispatching RPC requests and handling various AI and memory-related commands.
- Implemented a robust structure for managing authentication, configuration, and session states through the `openhuman` namespace.
- Added helper functions for loading configurations, managing memory files, and processing authentication profiles.
- Established a new routing system using Axum for handling HTTP requests, including health checks and RPC endpoints.
- Enhanced error handling and logging throughout the new functionalities to improve maintainability and user feedback.

* Implement core server CLI and modular structure

- Introduced a new CLI module for the core server, enabling various commands for server management, health checks, and configuration settings.
- Established a modular structure for core server functionalities, including dispatching RPC requests and managing settings for models, memory, and runtime.
- Added comprehensive tests to validate the functionality of accessibility and autocomplete commands, ensuring robust error handling and schema compliance.
- Enhanced the overall organization of the core server codebase, improving maintainability and readability.

* Implement AI RPC dispatch functionality

- Introduced a new `ai_rpc` module for handling various AI-related commands, including memory file operations and session management.
- Enhanced the `try_dispatch` function to support commands such as listing, reading, writing memory files, and managing session states.
- Updated the core server dispatch module to integrate the new AI RPC functionality, improving modularity and maintainability.
- Refactored existing code to ensure consistent parameter parsing and error handling across AI commands.

* Update TODO list and refactor Rust core server files

- Added new tasks to the TODO list for documentation updates and feature flag cleanup.
- Introduced `Arc` import in `cli.rs` for improved concurrency handling.
- Cleaned up imports in `helpers.rs` and added conditional compilation for `tauri-host`.
- Removed unused `value_only` function in `types.rs` and added `#[allow(dead_code)]` to `SocketConnectParams` and `SocketEmitParams`.
- Enhanced `try_dispatch` function in `dispatch/mod.rs` for non-tauri-host scenarios.
- Updated `try_dispatch` in `openhuman/platform.rs` to correctly handle session parameters.
- Modified `screen_intelligence` configuration in tests to include new properties for better session management.

* Refactor import statements and enhance code readability

- Cleaned up import statements across multiple files for improved organization and consistency.
- Reformatted code in `cli.rs`, `helpers.rs`, and various dispatch modules to enhance readability.
- Ensured consistent parameter handling in `try_dispatch` functions, improving maintainability.
- Removed unnecessary whitespace and adjusted formatting for better code clarity.

* Refactor project structure and enhance AI memory management

- Consolidated the `openhuman-core` package into a single `Cargo.toml` file, removing the previous `rust-core` directory.
- Introduced new modules for AI memory management, including filesystem-based storage and encryption functionalities.
- Added Tauri commands for initializing memory and session management, enhancing user interaction with memory files.
- Implemented JSON-based storage for memory chunks and session transcripts, improving data accessibility and organization.
- Updated dependencies and features in `Cargo.toml` to support new functionalities and ensure compatibility.

* Update build and release workflows to reflect project structure changes

- Adjusted paths in GitHub Actions workflows to accommodate the consolidation of the `openhuman-core` package into a single `Cargo.toml`.
- Updated import statements in various files to point to the new locations of markdown resources.
- Modified the Tauri configuration to reflect the new resource paths, ensuring proper access to AI prompts.
- Enhanced the staging script to build the standalone binary from the updated project structure.

* Refactor AI directory resolution and update documentation

- Updated the logic for resolving AI directory paths to reflect the new project structure, replacing references to `rust-core/ai` with `src/ai/prompts`.
- Enhanced the `find_ai_directory` function across multiple modules to utilize the new path resolution methods.
- Updated documentation comments to clarify the new directory structure and fallback mechanisms for loading AI prompts.

* Rename `openhuman-core` to `openhuman` across the project

- Updated package names in `Cargo.toml` and `Cargo.lock` to reflect the new naming convention.
- Adjusted references in GitHub Actions workflows and scripts to use the new package name.
- Modified CLI command names and error messages to align with the updated naming.
- Ensured consistency in executable file names and paths throughout the codebase.

* Refactor project commands and update package scripts

- Updated package.json to change workspace references from `openhuman` to `app` for build, compile, dev, format, lint, and test scripts.
- Removed outdated memory and chat command files to streamline the codebase and improve maintainability.
- Adjusted the `lib.rs` file to reflect changes in memory command handling, transitioning to use `callCoreRpc` for Neocortex memory operations.
- Cleaned up the commands module by removing unused imports and consolidating functionality.

* Add Tauri host support and new daemon configuration

- Introduced new modules for Tauri host functionality, including `desktop` and `daemon_host`.
- Added static variables and initialization functions for managing the desktop app handle and resource directory.
- Updated import paths for `HeartbeatEngine` to improve clarity and organization.
- Implemented configuration loading and saving for daemon UI preferences, enhancing user experience.

* Update package names in project configuration

- Changed workspace references in package.json from `app` to `openhuman-app` for consistency.
- Updated the name field in the app's package.json to reflect the new naming convention.

* Remove Tauri host feature flags from core server modules

- Eliminated conditional compilation for Tauri host in `lib.rs`, `helpers.rs`, and `dispatch` modules.
- Streamlined socket management functions and dispatch logic by removing unused code related to Tauri host.
- Improved code clarity and maintainability by consolidating socket-related functionality.

* Enhance Tauri host feature integration and update dependencies

- Added `tauri-host` as a default feature in `Cargo.toml` to streamline feature management.
- Removed explicit feature flag from `openhuman` dependency in `app/src-tauri/Cargo.toml` for cleaner configuration.
- Updated Tauri command attributes in various modules to conditionally compile with the `tauri-host` feature, improving modularity.
- Expanded TODO list to include migration support from OpenClaw, indicating future development focus.

* Refactor authentication and credential management in OpenHuman

- Introduced new modules for handling authentication profiles and tokens, including `anthropic_token`, `openai_oauth`, and `profiles`.
- Removed unused Tauri host-related code from core server modules, enhancing clarity and maintainability.
- Updated `Cargo.toml` and `Cargo.lock` to reflect the removal of the `rquickjs` dependency and other package adjustments.
- Streamlined memory client initialization in dispatch logic to utilize the new `local_memory` module.
- Enhanced code organization by consolidating credential management functionalities and improving the overall structure of the OpenHuman module.

* Enhance Rust core RPC structure and streamline helper functions

- Introduced a dedicated `rpc.rs` file for each domain in the Rust core to manage JSON-RPC and CLI behavior, improving code organization and clarity.
- Refactored helper functions to utilize `rpc_invocation_from_outcome` for consistent handling of RPC responses across various modules.
- Removed unused authentication and credential management functions from `helpers.rs`, consolidating relevant logic into the new RPC structure.
- Updated dispatch logic in multiple modules to leverage the new RPC functions, enhancing maintainability and reducing code duplication.

* Enhance Rust core RPC structure and streamline helper functions

- Introduced a dedicated `rpc.rs` file for each domain in the Rust core to manage JSON-RPC and CLI behavior, improving code organization and clarity.
- Refactored helper functions to utilize `rpc_invocation_from_outcome` for consistent handling of RPC responses across various modules.
- Removed unused authentication and credential management functions from `helpers.rs`, consolidating relevant logic into the new RPC structure.
- Updated dispatch logic in multiple modules to leverage the new RPC functions, enhancing maintainability and reducing code duplication.

* Refactor OpenHuman configuration loading and enhance onboarding RPC

- Replaced the `load_openhuman_config` function with a new `load_config_with_timeout` method to improve timeout handling during configuration loading.
- Consolidated configuration loading logic across various modules, reducing redundancy and enhancing maintainability.
- Introduced new RPC functions for applying settings related to models, memory, screen intelligence, gateway, tunnel, runtime, and browser, streamlining the update process.
- Added onboarding helpers in a new `onboard` module, including a JSON-RPC controller for model refresh operations, improving onboarding flow management.

* Refactor CLI and configuration management in OpenHuman

- Consolidated CLI-related functionality by introducing new modules for settings and credentials management, enhancing code organization.
- Removed redundant functions and streamlined the configuration loading process, improving maintainability.
- Added new CLI helpers for screenshot tools and workspace initialization, facilitating better user experience and onboarding.
- Enhanced JSON-RPC responses to be more compatible with CLI requirements, ensuring consistent output across various commands.

* Remove gateway settings and related functionality from OpenHuman

- Eliminated the GatewaySettingsUpdate interface and associated functions from the codebase, streamlining configuration management.
- Removed references to gateway settings in the CLI and configuration modules, enhancing clarity and maintainability.
- Deleted the gateway module and its related components, including rate limiting and client handling, to simplify the architecture.
- Updated Cargo.toml and Cargo.lock to reflect the removal of dependencies related to gateway functionality.

* Update documentation and improve clarity in OpenHuman

- Revised comments in the `mod.rs`, `traits.rs`, and `pairing.rs` files to enhance clarity and accuracy.
- Updated descriptions related to security policy, long-running processes, and pairing functionality for better understanding.

* Refactor loading prop in TauriCommandsPanel for cleaner code

- Simplified the loading prop assignment in the TauriCommandsPanel component by removing unnecessary line breaks, enhancing readability and maintainability.

* Add OpenSSL dependency and implement OAuth authentication features

- Added OpenSSL as a dependency in `Cargo.toml` to support cryptographic operations.
- Introduced new OAuth-related structures and parameters in `types.rs` for handling authentication flows.
- Implemented OAuth connection and integration token fetching in `auth_socket.rs`, enhancing the authentication capabilities of the OpenHuman module.
- Created new modules for managing authentication profiles and responses, improving the organization of authentication-related code.
- Removed deprecated `anthropic_token` and `openai_oauth` modules to streamline credential management.
- Updated `Cargo.lock` to reflect the addition of the OpenSSL dependency.

* Refactor OpenHuman module and update dependencies

- Added OpenHuman integration entry in the registry for improved backend inference handling.
- Updated various files to enhance code clarity and organization, including adjustments to OAuth client methods and integration tests.
- Refactored import statements and removed unnecessary line breaks for better readability.
- Updated `Cargo.lock` to reflect changes in dependencies and ensure consistency across the project.

* Implement desktop host features and refactor runtime handling

- Introduced new modules for memory management, socket handling, and command definitions to support desktop host functionality.
- Refactored QuickJS runtime initialization to log errors when the engine is not linked, improving clarity on runtime status.
- Added placeholder commands for chat and model interactions, indicating unavailability in the desktop build while maintaining structure for future integration.
- Enhanced organization of the codebase by creating dedicated files for runtime and utility functions, streamlining the development process.
- Updated documentation to reflect new modules and their purposes, ensuring better understanding for future contributors.

* Add CLI banner and print function to enhance user experience

- Introduced a new CLI banner with branding and GitHub link for user engagement.
- Implemented a `print_cli_banner` function to display the banner when running the CLI, improving visibility and user interaction.
- Updated the CLI entry point to call the new banner function, ensuring it appears at startup.

* Add API integration and update dependencies

- Introduced new API modules for handling HTTP requests and WebSocket connections to the TinyHumans backend.
- Added `ureq` dependency for simplified HTTP client functionality, updating `Cargo.toml` and `Cargo.lock` accordingly.
- Implemented configuration and JWT handling in the new `api` module, enhancing session management and API interactions.
- Refactored existing code to utilize the new API helpers, improving code organization and maintainability.
- Updated documentation to reflect new API functionalities and usage guidelines.

* Refactor settings fetching and update dependencies

- Removed the `ureq` dependency and associated functions for fetching settings, streamlining the codebase.
- Updated the `fetch_settings` method to utilize `reqwest` for HTTP requests, enhancing consistency and reliability in API interactions.
- Adjusted the `Cargo.toml` to reflect the removal of `ureq`, ensuring dependencies are up to date.

* Update `ureq` dependency to version 3.3.0 in `Cargo.lock`

- Removed the specific version constraint for `ureq`, allowing for more flexibility in dependency resolution.
- Updated the `Cargo.lock` to reflect the new version of `ureq`, ensuring compatibility with recent changes in the codebase.

* Enhance JSON-RPC logging and CLI initialization

- Introduced a new `rpc_log` module for structured logging of JSON-RPC requests and responses, including redaction of sensitive parameters.
- Updated `execute_core_cli` to initialize logging with a default level and timestamp format.
- Enhanced logging in `rpc_handler` and `dispatch` functions to provide detailed insights into method calls and their execution times.
- Improved error handling logging to capture method failures with context, aiding in debugging and monitoring.

* Refactor HTTP server setup and add integration tests

- Introduced a new `build_core_http_router` function to encapsulate the HTTP routing logic, improving code organization and readability.
- Updated the `run_server` function to utilize the new router function, streamlining server initialization.
- Added comprehensive integration tests for the JSON-RPC API, ensuring robust functionality and error handling in real-world scenarios.

* Enhance OpenHuman backend integration and refactor provider handling

- Added support for the OpenHuman backend in the TauriCommandsPanel, including default configurations and validation for API keys.
- Introduced a new REPL command in the CLI for interactive RPC communication, allowing for dynamic mode switching and message handling.
- Refactored provider creation logic to streamline the integration of the OpenHuman backend, removing deprecated provider overrides and ensuring consistent usage across the codebase.
- Updated various components to improve error handling and user feedback related to provider selection and API interactions.

* Refactor provider handling and update default model settings

- Removed provider override states from the AgentChatPanel and TauriCommandsPanel components, simplifying state management.
- Updated local storage handling to exclude provider overrides, ensuring cleaner data storage.
- Changed default model settings across various components and backend configurations to use "neocortex-mk1" as the new default model.
- Enhanced error handling and validation logic in the TauriCommandsPanel, focusing on model and temperature settings.
- Streamlined integration tests and removed deprecated provider validation logic to improve code clarity and maintainability.

* Refactor code for improved readability and consistency

- Adjusted formatting in several files to enhance code clarity, including consistent parameter passing and alignment.
- Simplified match statement syntax in the `run_models` function for better readability.
- Streamlined assertions in tests to maintain consistency in error handling checks.
- Updated default model name handling in the `AgentBuilder` for cleaner initialization.

* Refactor API URL handling and enhance error reporting

- Updated the `effective_api_url` function to improve clarity in resolving the API base URL, incorporating environment variable checks.
- Enhanced diagnostics in the configuration check to provide clearer messages regarding the API URL status.
- Introduced new error formatting functions to improve the clarity of error messages related to API transport issues.
- Refactored error handling in the OpenAiCompatibleProvider to utilize the new error formatting, ensuring consistent and informative error reporting.

* Refactor API client initialization for consistency

- Updated the instantiation of `BackendOAuthClient` to consistently pass the API URL by reference across multiple functions.
- Simplified the match statement in the `run_models_refresh` function for improved readability.

* Enhance REPL command handling and add fallback mechanisms

- Improved error handling in the REPL command processing, providing clearer feedback for command execution failures.
- Introduced a fallback mechanism for the `agent_chat` RPC call, allowing for graceful degradation to a simpler chat method or a direct backend curl transport if the primary call fails.
- Added a new `backend_chat_via_curl` function to handle chat requests using curl as a last resort, ensuring continued functionality in case of RPC issues.
- Updated the `agent_chat_simple` function to support model overrides and temperature settings, enhancing flexibility in chat interactions.

* Update default Ollama model settings for consistency

- Changed the default Ollama model and vision model to "gemma3:4b-it-qat" for improved alignment across configurations.
- Ensured consistent model naming to enhance clarity in model usage within the local AI module.

* Implement login token consumption and enhance error handling

- Added functionality to consume login tokens via a new API endpoint, returning a JWT for authenticated sessions.
- Improved error handling in the Conversations component, introducing a fallback mechanism for chat interactions when the primary method is unavailable.
- Updated UserProvider to restore session tokens automatically, enhancing user experience during authentication.
- Refactored thread API to support the new login token consumption logic, ensuring seamless integration with the backend.

* Update HTTP client configuration to use Rustls TLS

- Replaced the HTTP/1.1 only setting with Rustls TLS in the OpenAiCompatibleProvider's client builder for enhanced security.
- Ensured consistent application of the new TLS setting across multiple client instances.

* Add Local AI command support and enhance error handling

- Introduced a new `LocalAi` command in the CLI for managing local AI runtime operations, including status checks, asset downloads, and prompt handling.
- Added detailed argument structures for various local AI functionalities, improving command usability.
- Enhanced error reporting in the `LocalAiService` by including response details in error messages for better debugging and user feedback.
- Refactored existing error handling to provide clearer context on failures during API interactions.

* Add local AI module with Ollama integration and model management

- Introduced a new local AI module that includes functionality for automatic installation of the Ollama runtime across different operating systems (Windows, macOS, Linux).
- Implemented model ID resolution and management, providing default settings for various AI models and ensuring compatibility with user configurations.
- Added HTTP API structures and request handling for Ollama, enabling interaction with the local AI service for generating responses and managing assets.
- Developed utility functions for parsing model outputs and managing workspace paths, enhancing the overall structure and usability of the local AI service.
- Established a comprehensive service layer for managing local AI operations, including status tracking and error handling for improved user experience.

* Refactor local AI service structure and enhance asset management

- Simplified the local AI module by reorganizing the service structure, introducing new modules for model IDs, paths, and asset management.
- Added comprehensive asset status tracking for various AI models, including chat, vision, embedding, STT, and TTS, with improved error handling.
- Implemented methods for downloading models and assets, ensuring better management of local AI resources.
- Updated visibility of service methods to enhance encapsulation and maintainability within the local AI service.

* Enhance local AI module with new download progress tracking and unit tests

- Added new structures for tracking download progress of various AI models, including detailed status and metrics.
- Implemented unit tests for model ID resolution, parsing suggestions, and asset path resolution to ensure robust functionality.
- Refactored service methods to improve encapsulation and maintainability, enhancing the overall structure of the local AI service.
- Updated existing tests to cover new functionalities and ensure consistent behavior across the module.

* Implement new local AI download functionalities and refactor model management

- Added support for downloading all local AI assets and tracking download progress, enhancing user experience and resource management.
- Introduced new RPC methods for fetching download progress and managing asset states, improving the overall functionality of the local AI module.
- Refactored existing model management code to utilize the new model catalog, ensuring better organization and maintainability.
- Updated relevant tests to cover new functionalities and ensure consistent behavior across the local AI service.

* Add new interfaces and functions for local AI download progress tracking

- Introduced `LocalAiDownloadProgressItem` and `LocalAiDownloadsProgress` interfaces to structure download progress data for various AI models.
- Implemented `openhumanLocalAiDownloadAllAssets` and `openhumanLocalAiDownloadsProgress` functions to facilitate downloading all assets and tracking their progress.
- Enhanced error handling for Tauri environment checks in new functions, ensuring robust operation within the local AI module.

* Refactor agent loop structure and introduce modular components

- Deleted the `loop_.rs` file and reorganized the agent loop into multiple modules for better maintainability and clarity.
- Introduced new files for handling credentials, history management, tool instructions, memory context, and parsing logic.
- Implemented functions for scrubbing sensitive credentials, managing conversation history, and building tool instructions.
- Enhanced the overall structure of the agent loop to facilitate easier testing and future development.

* Refactor authentication structure and migrate to credentials module

- Moved authentication-related functionality from `auth_profiles` to a new `credentials` module for better organization and clarity.
- Updated references in the API and core server to reflect the new module structure.
- Introduced new data structures and methods for managing authentication profiles, including session support and response handling.
- Removed the obsolete `auth_profiles` module to streamline the codebase and enhance maintainability.

* Add screen intelligence module with capture and context management

- Introduced new modules for screen capture and context management, specifically targeting macOS.
- Implemented functionality to capture screen images and retrieve foreground application context.
- Added data structures for managing application context and window bounds.
- Established limits for screenshot sizes and context character counts to ensure efficient resource management.
- Enhanced helper functions for input action validation and vision summary processing.
- Set up a modular structure for better maintainability and future enhancements.

* Refactor screen intelligence module and remove obsolete components

- Deleted unused files related to screen intelligence, including context and permissions management, to streamline the codebase.
- Refactored the capture functionality to improve organization and maintainability.
- Updated function signatures for better clarity and consistency.
- Enhanced the overall structure of the screen intelligence module for future development and testing.

* Enhance autocomplete CLI functionality and refactor related code

- Added new options for the autocomplete command in the CLI, allowing users to run the autocomplete loop in the current process or spawn a detached process.
- Introduced `AutocompleteStartCliOptions` struct to encapsulate the new command-line arguments.
- Refactored the `autocomplete_start_cli` function to handle the new options and improve process management for the autocomplete service.
- Updated documentation in `CLAUDE.md` to clarify the separation of concerns between routing and controller logic in the codebase.

* Enhance autocomplete error handling and improve focused text context retrieval

- Added a new function to identify "no text candidate" errors, improving error management in the autocomplete engine.
- Refactored the `focused_text_context` and `focused_text_context_verbose` functions to enhance clarity and reliability in retrieving application context.
- Updated the return format of the `focused_text_context_verbose` function to use a separator for better data parsing.
- Added a new TODO item for allowing users to select LLM model versions based on their CPU capabilities.

* Remove Docker, Native, and WASM runtime implementations along with related traits and tests

- Deleted the DockerRuntime, NativeRuntime, and WasmRuntime implementations to streamline the codebase.
- Removed associated traits and factory functions for runtime creation.
- Eliminated all related tests to ensure a clean removal of unused components.
- This refactor aims to simplify the runtime management and prepare for future enhancements.

* Add quickjs-runtime feature and introduce runtime module

- Added a new feature flag for `quickjs-runtime` in `Cargo.toml` to enable its usage.
- Created a new `runtime.rs` module to implement `NativeRuntime` and `DockerRuntime` with associated traits for runtime management.
- Updated the `skills` module to reference the correct path for `SkillConfig`.
- Removed the obsolete `skillforge` module from the `openhuman` namespace to streamline the codebase.
- Enhanced the `skills` module with new structures and functions for managing skills, including initialization and loading logic.

* Refactor autocomplete configuration to remove legacy disabled apps

- Updated the default configuration for `AutocompleteConfig` to remove the legacy disabled apps ('terminal' and 'code'), allowing for broader usage of Codex/CLI.
- Introduced a migration function to handle legacy disabled apps during configuration loading, ensuring custom user preferences remain intact.
- This change enhances the flexibility of the autocomplete feature by preventing unnecessary restrictions on application usage.

* Update rquickjs dependencies in Cargo.lock

- Updated the rquickjs and rquickjs-core dependencies to versions 0.11.0 and 0.9.0 respectively, ensuring compatibility with the latest features and fixes.
- Added new entries for rquickjs-sys and its corresponding version 0.9.0 to the dependency list, enhancing the project's runtime capabilities.
- This update improves the overall stability and performance of the application by leveraging the latest improvements in the rquickjs ecosystem.

* Add terminal application detection to autocomplete logic

- Introduced a new function `is_terminal_app` to identify terminal applications based on their names, enhancing the autocomplete feature's context awareness.
- Updated the `focused_text_context_verbose` function to allow terminal applications to bypass text role checks when the input value is not empty, improving user experience in terminal environments.
- This change aims to provide better support for terminal-based applications in the autocomplete system.

* Add terminal input context extraction and noise line detection

- Introduced functions to identify terminal-like buffers and filter out noise lines in terminal input, enhancing the autocomplete engine's context awareness.
- Updated the `focused_text_context` logic to utilize the new terminal context extraction, improving the handling of text in terminal applications.
- Enhanced the `focused_text_context_verbose` function to better retrieve static text values from UI elements, ensuring accurate context representation in terminal environments.
- These changes aim to improve user experience and functionality for terminal-based applications in the autocomplete system.

* Enhance autocomplete engine state management and error handling

- Added new fields `last_escape_down` and `last_overlay_signature` to `EngineState` for improved state tracking.
- Implemented `try_reject_via_escape` method to handle escape key interactions, allowing users to reject suggestions more intuitively.
- Updated error handling to display notifications for different states (ready, accepted, rejected, error) using `show_overflow_badge`.
- Refactored state updates to ensure consistent management of suggestion and phase transitions, enhancing overall user experience in the autocomplete system.

* Implement periodic status logging in autocomplete service

- Added a polling mechanism to log the status of the autocomplete engine at regular intervals.
- Enhanced logging to capture changes in phase, application name, suggestions, and errors, improving visibility during service execution.
- Refactored the `autocomplete_start_cli` function to integrate the new logging functionality, ensuring a more informative user experience while the service is running.

* Refactor memory dispatch logic and remove local memory implementation

- Updated the memory dispatch functions to utilize the new `memory_rpc` module, enhancing the handling of memory operations such as document management and namespace queries.
- Removed the local memory implementation, including database interactions and related functions, to streamline the codebase and improve maintainability.
- Introduced new RPC calls for document operations (put, list, delete) and context queries, ensuring a more efficient and consistent approach to memory management.
- This refactor aims to enhance the overall architecture and performance of the memory handling system.

* Remove macOS-specific overflow badge functionality and related helper functions

- Deleted the `show_overflow_badge` and `escape_applescript_string` functions, which were specific to macOS, to streamline the codebase.
- Refactored the `show_overflow_badge` function to provide a no-op implementation for non-macOS platforms, enhancing cross-platform compatibility.
- This change simplifies the autocomplete module by removing platform-dependent code, improving maintainability and clarity.

* Enhance text application logic in autocomplete module

- Updated the `apply_text_to_focused_field` function to improve interaction with focused UI elements on macOS.
- The new implementation retrieves the current value of the focused element and appends the provided text, ensuring better handling of text input.
- Enhanced error reporting to include stderr output when applying suggestions fails, improving debugging capabilities.
- These changes aim to provide a more robust and user-friendly experience in the autocomplete functionality.

* Refactor Landlock feature configuration for Linux support

- Moved the `landlock` and `rppal` dependencies under a conditional target configuration for Linux in both `Cargo.toml` files, ensuring they are only included when building for Linux.
- Updated the `landlock.rs` module to check for both the `sandbox-landlock` feature and the Linux target OS, improving the conditional compilation logic.
- This change enhances cross-platform compatibility and ensures that Landlock functionality is only available on supported systems.

* Update dependencies and enhance Tauri integration

- Updated the Tauri dependency in `Cargo.toml` to include the `tray-icon` feature, enabling system tray support.
- Introduced a new `rust-toolchain.toml` file to pin the Rust version to 1.93.0, ensuring compatibility with the matrix-sdk.
- Modified GitHub workflows to use the specified Rust version from `rust-toolchain.toml` instead of the stable version, improving build consistency.
- Refactored Tauri commands to utilize a new `wrapCommandResult` function for better response handling.
- Added a new `tray` module in `openhuman` for managing system tray functionality, enhancing the desktop experience.
- Updated various command implementations to streamline service management and improve error handling.

* Refactor core process handling and enhance encryption features

- Removed the `openhuman` dependency from `Cargo.lock` and `Cargo.toml`, streamlining the project structure.
- Updated the core process handling to fall back to a child process when in-process execution is unavailable, improving error handling and logging.
- Introduced new encryption commands (`ai_init_encryption`, `ai_encrypt`, `ai_decrypt`) to enhance security features, utilizing AES-GCM for data protection.
- Added a new `tray` module for managing system tray functionality, improving user experience on desktop platforms.
- Refactored various command implementations to improve service management and error handling, ensuring a more robust application architecture.

* Remove unused modules and refactor daemon host configuration

- Deleted the `daemon_host_config`, `memory`, `models`, `openhuman_daemon`, `tray`, `chat`, `conscious_loop`, and `runtime` modules to streamline the codebase.
- Refactored the daemon host configuration logic into the `openhuman` module, consolidating related functionality.
- Updated command implementations to utilize the new configuration methods, ensuring consistent handling of daemon host settings.
- This cleanup enhances maintainability and reduces complexity in the project structure.

* Refactor memory management and update Tauri dependencies

- Removed the `tray-icon` feature from the Tauri dependency in `Cargo.toml` to streamline the configuration.
- Deleted the `core:tray:default` capability from the default capabilities JSON, simplifying the capabilities structure.
- Refactored memory handling in tests to utilize `UnifiedMemory` instead of `SqliteMemory`, enhancing consistency across memory operations.
- Updated memory store, recall, and forget functionalities to support a global namespace, improving memory management and retrieval processes.
- Enhanced error handling and logging in memory operations to provide clearer feedback during execution.

* Remove AI encryption commands and related functionality

- Deleted the `ai_init_encryption`, `ai_encrypt`, and `ai_decrypt` functions to streamline the codebase and remove unused features.
- Updated the command registration in the `run` function to reflect the removal of these encryption commands, enhancing maintainability and reducing complexity.

* Add OAuth integration token handling and channel connection management

- Introduced functions to fetch and encrypt integration tokens using OAuth, enhancing security for token management.
- Updated the channel connections API to support OAuth integration, including listing, connecting, and disconnecting channels.
- Implemented checks for supported channels and authentication modes, improving the robustness of channel connection handling.
- Enhanced error handling for integration token retrieval to ensure required fields are present before proceeding.

* Refactor project structure and update documentation

- Renamed the project from "Outsourced" to "OpenHuman" and revised the project summary to reflect its focus on AI-powered assistance for crypto communities.
- Restructured the repository layout, detailing the purpose of each directory and its contents.
- Updated runtime scope to clarify platform support and Tauri's desktop-only focus.
- Enhanced documentation across various files, including architecture, services, and routing, to improve clarity and usability for contributors.
- Removed outdated sections and streamlined commands for development and production builds, ensuring consistency in the documentation.

* Implement REPL session management and multimodal support

- Introduced a new REPL session management system, allowing for session-specific interactions with agents.
- Added functions for starting, chatting, resetting, and ending REPL sessions, enhancing user experience and control.
- Implemented multimodal message handling, enabling the processing of images alongside text in user messages.
- Updated the project structure to include new modules for identity and multimodal functionalities, improving organization and maintainability.
- Enhanced error handling and logging for session operations, providing clearer feedback during execution.

* Refactor memory store implementation and introduce unified memory management

- Removed the legacy memory store implementation and replaced it with a new unified memory management system.
- Introduced a `MemoryClient` for handling document storage, retrieval, and namespace management.
- Added support for key-value storage and graph data structures within the unified memory framework.
- Enhanced the `UnifiedMemory` struct with methods for document upsertion, querying, and namespace operations.
- Updated the project structure to include new modules for memory types, factories, and traits, improving organization and maintainability.
- Improved error handling and logging across memory operations for clearer feedback during execution.

* Implement QuickJS skill instance management

- Removed the previous QjsSkillInstance implementation and replaced it with a new modular structure.
- Introduced separate modules for event loop management, instance handling, JavaScript handlers, and utility functions.
- Enhanced the event loop to efficiently manage QuickJS runtime tasks, including timer callbacks and message processing.
- Added support for asynchronous tool calls and lifecycle management within the QuickJS context.
- Improved error handling and logging throughout the new implementation for better debugging and user feedback.
- Updated documentation to reflect the new structure and functionality of the QuickJS skill instance.
2026-03-29 10:30:18 -07:00