- Removed packageManager entry from package.json for cleaner configuration.
- Standardized quotes in build.yml and create-develop-to-main-pr.yml for consistency.
- Updated GitHub Actions to use the correct token in create-develop-to-main-pr.yml.
- Modified build.yml to trigger on changes in 'src/**' and 'src-tauri/**' paths.
- Standardized quotes in package-and-publish.yml for consistency.
- Updated README.md and SUMMARY.md to reflect new branding and added new sections for platform and privacy.
- Introduced new documentation files for platform availability and privacy/security features.
- Renamed all instances of "AlphaHuman" to "OpenHuman" in various components, pages, and files.
- Updated links and email addresses to reflect the new OpenHuman branding.
- Ensured consistency in messaging and branding throughout the application.
- Fixed the spelling of "reminisces" in the README.md file.
- Updated Node.js version from 20 to 24 in the GitHub Actions workflow for lander pages.
- Changed yarn install command to use --non-interactive for smoother CI execution.
- Deleted obsolete .mcp.json file.
- Updated ESLint and test configurations to reflect new file paths.
- Changed title and branding in index.html and README.md to OpenHuman.
- Adjusted package.json scripts for testing with new configuration files.
- Modified E2E test scripts to use updated WebDriverIO configuration paths.
- Added new TypeScript configuration files for E2E testing and Vitest.
- Added .gitignore to exclude unnecessary files and directories.
- Created ESLint configuration for code quality enforcement.
- Set up Next.js configuration file for project settings.
- Established package.json with dependencies for React, Next.js, and TypeScript.
- Configured PostCSS for Tailwind CSS integration.
- Developed foundational components including layout, global styles, and animated backgrounds.
- Implemented feedback system components for user interaction and feedback management.
- Added README for project documentation and setup instructions.
* added gitbooks
* add: create TODO.md for upcoming features and improvements
- Documented tasks including skill downloads, JSON-RPC state management, and custom MCP server integration.
- Outlined payment flow integration and various skill enhancements.
- Added checklist for upcoming Android version and background processes.
* refactor: update ESLint configuration and adjust module import path
- Removed 'deploy/**' from ESLint ignore patterns to ensure better linting coverage.
- Changed the module import path in the GitHub Actions workflow from 'deploy/prepareTauriConfig.js' to 'scripts/prepareTauriConfig.js' for improved organization.
* Replace Playwright with Appium mac2 + WebDriverIO for E2E testing and add unit tests
- Remove Playwright config and old e2e/ directory
- Add WebDriverIO + Appium mac2 driver for true native macOS app testing
- Add wdio.conf.ts with platform-aware app path detection
- Add scripts/e2e.sh to manage Appium lifecycle under Node 24
- Add E2E smoke, navigation, and Tauri integration specs
- Add tsconfig.e2e.json for E2E test TypeScript config
- Add unit tests for components, store slices, selectors, services, and utils
- Add test infrastructure (setup.ts, MSW handlers, test-utils)
- Update vitest.config.ts with coverage thresholds and setup
- Update package.json scripts and dependencies
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update skills submodule to latest
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add complete E2E login flow test with mock server and onboarding walkthrough
Implements end-to-end testing of the full deep link auth → onboarding → home
flow using Appium mac2, WebDriverIO, and a local HTTP/WebSocket mock server.
Key additions:
- Mock server (port 18473) with all API routes + Socket.IO/Engine.IO WebSocket
handler to prevent Rust SocketManager crashes
- Deep link helpers to trigger alphahuman:// URLs via macOS `open` command
- Element helpers using XPath selectors (not iOS predicates, which crash on
mac2 with non-string attributes) and W3C pointer actions for clicking
WKWebView content (standard element.click() doesn't trigger DOM handlers)
- Login flow spec: 11 tests covering auth deep link, API call verification,
all 4 onboarding steps, and home page arrival
- Dedicated e2e-build.sh script with cargo clean + mock URL injection
- Cache cleanup and mock URL verification in e2e.sh
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Harden E2E tests and fix config issues from PR review
- e2e.sh: fail fast when dist bundle is missing instead of silently skipping
- setup.ts: add React type import for PersistGate mock annotation
- app-helpers: throw descriptive error on waitForAppReady timeout
- element-helpers: XPath quote escaping via concat() for special chars
- login-flow: fail explicitly when invite code step retry doesn't advance
- smoke.spec: replace no-op assertion with real session ID checks
- vite/vitest configs: remove unused @alphahuman/skill-types alias and
dead path/fileURLToPath imports
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add TypeScript types to E2E element helpers and configure ESLint for E2E files
Remove blanket eslint-disable/ts-nocheck from element-helpers.ts, add explicit
TypeScript types with ChainablePromiseElement import, and add ESLint config block
for test/e2e/ files using tsconfig.e2e.json with WebDriverIO/Mocha globals.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix CI submodule checkout by adding XGH_TOKEN_READ secret
The skills submodule is a private repo that requires authentication.
The build and package-android workflows were missing the token that
package-and-publish already had.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix CI: install skills deps, format with Prettier, lower coverage thresholds
- build.yml: add skills dependency install step and remove redundant
frontend build (tauri build already runs build:app via beforeBuildCommand)
- Run Prettier --write on all 32 files with formatting drift
- Lower vitest coverage thresholds to match actual coverage (~20%)
until test coverage improves organically
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove stray globals.d.ts that failed Prettier check
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix ESLint parsing for wdio.conf.ts and type remaining E2E helpers
- Add wdio.conf.ts to ESLint E2E config block so TS parser covers it
- Remove blanket eslint-disable/ts-nocheck from deep-link-helpers.ts
and app-helpers.ts, add explicit TypeScript types
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix unnecessary regex escape in useSettingsNavigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Ghost Scripter <ghostscripter@zerolend.xyz>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Refactor skill management and enhance TDLib client handling
- Updated skill registration logic to retain skills with Error and Stopped statuses for better UI feedback and restart capability.
- Improved TDLib client management by introducing a flag to prevent concurrent client creation during destruction, ensuring proper resource cleanup and database lock handling.
- Enhanced error handling in TDLib client destruction process to ensure graceful shutdown and resource release.
* Update skills subproject reference and enhance connection status handling
- Updated the subproject commit reference in the skills directory.
- Modified connection status checks in `SkillsGrid.tsx` and `hooks.ts` to account for 'stopping' state, improving the accuracy of skill status reporting.
- Added handling for 'stopped' and 'pending' statuses in `SkillProvider.tsx` to reset UI state appropriately.
* Update skills subproject commit reference to latest version
- Updated the subproject commit reference in the skills directory.
- Standardized quotation marks in the package-and-publish.yml workflow for consistency.
- Added token configuration for GitHub actions to enhance security.
- Updated quotation marks in the package-and-publish.yml workflow for consistency.
- Removed the 'develop' branch from the pull_request section in package-android.yml to streamline the workflow configuration.
- Updated the subproject commit reference in the skills directory.
- Modified the build workflow to enable submodule fetching.
- Standardized quotation styles in the package-and-publish workflow for consistency.
- Refactored the `setSkillOAuthCredential` function for improved readability.
- Added an attribute to the `Error` variant in the `SkillMessage` enum to suppress warnings for unused code.
* Refactor BillingPanel to use updated user usage structure
- Changed the usage data source in BillingPanel from activeTeam to user, aligning with the new IUserUsage interface.
- Updated the display of token usage percentage and progress bar to reflect the new usage metrics (spentThisCycleUsd and cycleBudgetUsd).
- Cleaned up commented-out code and improved layout for better readability and user experience.
* Add skill ping/health-check system for connection monitoring
Periodic (5-min) onPing() calls verify skill service connections are
healthy. Auth errors stop the skill; network errors update connection
status while keeping the skill running for retry. Skills without onPing
are treated as healthy (backward compatible).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Move skill ping/health-check from frontend to Rust backend
The frontend ping loop only runs while React is active, but the Rust
backend keeps skills running independently. This adds a PingScheduler
(modeled after CronScheduler) that pings all running skills every 5
minutes from a background Tokio task and acts on auth/network failures.
The redundant frontend ping loop is removed since SkillProvider already
listens for the Tauri events the Rust scheduler emits.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Refactor package-and-publish workflow for consistency
Updated formatting in the package-and-publish.yml file to use consistent quotation styles for strings. Removed unnecessary branch entry from the pull_request section to streamline the workflow configuration.
* Update logging configuration and adjust ping interval for improved performance
- Enhanced logging setup in `lib.rs` to allow customizable verbosity and color-coded output based on log levels and tags.
- Reduced ping interval in `ping_scheduler.rs` from 5 minutes to 1 minute for more frequent health checks on skills.
- Added functionality to suppress TDLib's native C++ logs based on environment variable settings in `manager.rs`.
* Update subproject commit reference in skills directory and remove logging from get_session_token function for improved security
* Enhance error handling in skill message processing
- Added a new `Error` variant to the `SkillMessage` enum to notify skills of errors from async operations, including error type, message, source, and recoverability.
- Updated the `handle_message` function to handle `SkillMessage::Error`, invoking the `onError` JavaScript handler and logging any failures in the handler execution.
- Updated subproject commit reference in the skills directory.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Updated formatting in the package-and-publish.yml file to use consistent quotation styles for strings. Removed unnecessary branch entry from the pull_request section to streamline the workflow configuration.
- Updated the motto formatting in multiple agent markdown files to use italics for consistency.
- Modified YAML files for package and publish workflows to standardize quotation marks and improve readability.
- Ensured no newlines at the end of files were added during the updates.
- Updated the subproject commit reference in the skills directory.
- Deleted the deploy-gh-pages.yml workflow as it is no longer needed.
- Modified package-and-publish.yml to include a release body in the draft release creation step.
- Removed ARCHITECTURE.md and README.md files from the publish directory as part of the cleanup.
- Updated the subproject reference in the `skills` file to the latest commit.
- Standardized quotes in the `deploy-gh-pages.yml` and `package-android.yml` workflows for consistency.
- Removed unused Telegram API credentials from environment variables in workflows and example configuration files to streamline the setup.
- Included `TELEGRAM_API_ID` and `TELEGRAM_API_HASH` as environment variables in the `package-and-publish.yml` workflow to facilitate Telegram integration.
- Removed the `dotenvy` dependency from `Cargo.toml` and `Cargo.lock` to streamline the project and eliminate unnecessary packages.
* chore: add CI secrets management and local testing script
- Added ci-secrets.example.json to provide a template for CI secrets configuration.
- Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act.
- Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens.
* chore: enhance local testing and environment loading scripts
- Added scripts to load environment variables from .env and JSON files, improving local development setup.
- Introduced ci-event.json to simulate GitHub event payloads for local CI testing.
- Updated test-ci-local.sh to utilize the new event JSON for better integration with local testing workflows.
- Modified .gitignore to include ci-secrets.local.json for local secret management.
* chore: enhance environment loading and improve V8 memory management
- Updated load-env.sh to conditionally load ci-secrets.local.json and set APPLE_PASSWORD for notarization.
- Introduced a delay in auto-starting skills to prevent memory spikes during initialization.
- Adjusted V8 runtime memory settings to minimize initial heap allocation, reducing the risk of OOM errors.
* chore: update version bump workflow to modify tauri.conf.json
- Changed the version update process to reflect changes in tauri.conf.json instead of Cargo.toml.
- Adjusted the commit message to indicate the inclusion of tauri.conf.json in the version bump process.
* chore: migrate from V8 to QuickJS runtime and update related configurations
- Replaced V8 runtime references with QuickJS throughout the codebase, including updates to initialization and error handling.
- Modified package.json to change the build command for macOS to source environment variables correctly.
- Updated Cargo.toml to remove deno_core dependency and include rquickjs with appropriate features.
- Cleaned up unused V8-related code and comments in the runtime modules.
- Adjusted skill manifest checks to support QuickJS compatibility.
* refactor: implement QuickJS runtime and remove V8 references
- Replaced V8 engine with QuickJS in the runtime module, updating related imports and initialization logic.
- Introduced new `qjs_engine.rs` and `qjs_skill_instance.rs` files to handle QuickJS-specific functionality.
- Removed the deprecated `v8_skill_instance.rs` and associated V8-related code.
- Updated JavaScript bootstrap code to align with QuickJS operations and APIs.
- Adjusted documentation and comments to reflect the transition to QuickJS.
* refactor: update IdbStorage to use parking_lot::Mutex for improved concurrency
- Changed the connection management in IdbStorage from RwLock to parking_lot::Mutex for better performance.
- Updated related methods to reflect the new locking mechanism, enhancing the efficiency of database operations.
- Adjusted the IdbOpenResult struct to include serde::Serialize for potential serialization needs.
* refactor: update QuickJS skill instance and timer management
- Modified memory limit and stack size settings in QjsSkillInstance to be asynchronous, improving performance.
- Cleaned up imports in qjs_ops.rs by removing unused dependencies and enhancing function definitions for clarity.
- Refactored timer management functions for better readability and efficiency, including renaming and restructuring comments.
* chore: update package.json scripts and clean up build.rs
- Added a new script for running the Tauri app with environment variable loading.
- Simplified the macOS development command to use a dedicated build script.
- Removed unnecessary environment variable logging from build.rs to streamline the build process.
- Cleaned up commented-out sections in the GitHub Actions workflow for Android packaging.
- Updated the package-and-publish.yml workflow to utilize Tauri's native bundling for TDLib on macOS, removing the need for post-build scripts.
- Modified build.rs to copy TDLib and its dependencies to the libraries/ directory, ensuring they are included in the app bundle.
- Updated tauri.conf.json to reference the newly bundled TDLib and its dependencies.
- Added entries to .gitignore for the new libraries directory.
- Reformatted the workflow_run and pull_request sections for clarity and consistency in the package-android.yml workflow, ensuring proper trigger conditions for CI processes.
- Updated quote styles in package-and-publish.yml for consistency by converting single quotes to double quotes.
- Introduced new scripts: recreate-dmg-macos.sh for DMG recreation after TDLib bundling and resign-macos.sh for re-signing the macOS app bundle, ensuring proper code signing after modifications.
- Adjusted the paths for locating the app bundle and original DMG in the package-and-publish.yml workflow to reflect the new directory structure introduced by Tauri v2, ensuring correct DMG recreation.
- Modified the condition for uploading AAB files to Google Play in package-android.yml to check for the GOOGLE_PLAY_UPLOAD_ENABLED variable instead of the GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret, ensuring proper configuration for the upload process.
- Fixed the conditional syntax in the package-android.yml workflow to ensure proper evaluation of the GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret before uploading the AAB to Google Play.
- Standardized quote styles in the package-android.yml workflow by converting single quotes to double quotes for consistency across descriptions and configuration options.
- Updated quote styles in the package-android.yml workflow for consistency, changing double quotes to single quotes in descriptions and configuration options.
- Added push and pull request triggers for the develop branch in package-android.yml to enhance CI automation.
- Standardized quote styles in the workflow configuration for consistency.
- Added support for caching node modules in the skills directory to improve build performance.
- Introduced steps to install and build skills dependencies within the Android CI workflow.
- Updated the package-and-publish.yml to improve macOS app re-signing by adding certificate handling and keychain management.
- Modified package-android.yml to transition from APK to AAB packaging, including updates to artifact handling and Google Play upload.
- Enhanced the bundle-tdlib-macos.sh script to fix binary rpaths, ensuring proper runtime behavior of bundled frameworks.
- Enhanced the version-bump.yml workflow to automatically update the version in package.json and Cargo.toml files.
- Implemented logic to compute the new minor version and create a single commit and tag for both npm and Cargo.
- Ensured the workflow prevents triggering itself by including [skip ci] in the commit message.
- Updated quote styles in package-and-publish.yml and package-android.yml for consistency.
- Introduced a new workflow to automatically update the changelog based on commits since the last version tag.
- Updated the package-and-publish.yml to support target-specific builds for macOS, including bundling and re-signing of TDLib.
- Added a new workflow for packaging and publishing Android APKs, triggered by version bumps and pull requests, ensuring independent build processes for Android and desktop platforms.
- Added a push trigger for the develop branch in the package-and-publish.yml file to enable automated workflows on code changes.
- Included the develop branch in the pull request trigger to ensure CI checks are performed for both main and develop branches.
- Updated the re-signing condition in the package-and-publish.yml file to always execute for macOS, regardless of the presence of a signing identity.
- Added a check to skip re-signing if no signing identity is provided, enhancing the robustness of the CI workflow.
- Modified the re-signing logic to iterate over all bundled dylibs, ensuring that all necessary files are signed correctly.
- Updated the condition for re-signing the macOS app in the package-and-publish.yml file to use the correct syntax for accessing secrets, ensuring proper functionality during the CI process.
- Added a new script to bundle TDLib dylib and its dependencies into the macOS app, addressing the "Library not loaded" crash.
- Updated package.json to include new build and dev commands that utilize the TDLib bundling script.
- Enhanced the CI workflow to include steps for bundling TDLib and re-signing the app after modifications, ensuring proper notarization.
- Updated package.json to include new scripts for bundling TDLib dylib during macOS builds.
- Enhanced CI workflow to automate the bundling and re-signing of the macOS app after TDLib integration, addressing "Library not loaded" issues.
- Introduced a new script for managing TDLib dependencies and ensuring proper installation paths within the app bundle.
- Added support for caching node modules in the skills directory to optimize build times.
- Included steps for installing and building skills dependencies within the CI workflow.
- Updated the MediaPipeLlmBridge.kt file to clarify supported parameters in the MediaPipe LLM Inference API, improving documentation and code clarity.
- Added a macOS deployment target of 10.15 in the package-and-publish.yml workflow to ensure compatibility with std::filesystem used by llama.cpp.
- Updated tauri.conf.json to set the minimum system version for macOS to 10.15, aligning with the new deployment requirements.
- Integrated the @tauri-apps/plugin-os to detect mobile platforms (Android and iOS) in both ModelDownloadProgress and SkillsGrid components.
- Updated rendering logic to display mobile-specific messages, indicating that certain features are available only on desktop.
- Enhanced package.json and yarn.lock to include the new plugin dependency for platform detection.
- Adjusted capabilities configuration to support the new plugin across desktop and mobile platforms.
- Updated the package-and-publish.yml file to use single quotes consistently for strings, enhancing readability and maintaining style consistency across the workflow configuration.
- Minor adjustments made to the args section for macOS and Ubuntu platforms to align with the new quoting style.