* chore: add simulation function for deep link testing in development - Introduced a simulation function for deep links in the development environment to facilitate testing. - The function allows developers to simulate deep link URLs without affecting production behavior. * feat: implement QuickJS skill runtime integration - Added a new QuickJS skill runtime engine to manage skill execution within the application. - Introduced commands for skill management, including discovery, starting, stopping, and querying skill states. - Implemented a SQLite database bridge for each skill to handle data storage. - Enhanced the application structure with new modules for runtime management, skill instances, and manifest parsing. - Updated dependencies in Cargo.toml and Cargo.lock to support new features. * refactor: improve code readability and formatting in DownloadScreen and deviceDetection - Enhanced the button className formatting in DownloadScreen for better readability. - Reformatted the fetchLatestRelease and parseReleaseAssetsByArchitecture functions in deviceDetection for improved clarity and maintainability. - Utilized multiline formatting for complex conditions to enhance code structure. * feat: integrate Rust-native Socket.io client for persistent connections - Implemented a SocketManager in Rust to handle Socket.io connections, ensuring persistence across app backgrounding. - Updated SocketProvider to connect/disconnect using Rust-native methods in Tauri mode. - Enhanced Tauri event listeners for socket state changes and server events. - Refactored socket handling logic to differentiate between web and Tauri modes, improving maintainability and clarity. - Added new commands for connecting, disconnecting, and emitting events through the Rust socket. * refactor: remove Telegram login commands and related functionality - Deleted the startTelegramLogin and startTelegramLoginWithUrl functions from the Tauri commands. - Removed associated references in the Rust command module and utility file. - This cleanup simplifies the codebase by eliminating unused Telegram login features. * feat: add cron scheduling functionality for skills - Introduced a new CronScheduler to manage scheduled tasks for skills, allowing for cron expression parsing and execution. - Added a cron bridge to expose scheduling methods to skill contexts, enabling skills to register, unregister, and list cron schedules. - Updated the RuntimeEngine to initialize and manage the cron scheduler, ensuring it runs in the background. - Enhanced skill instances to support cron scheduling through a new BridgeDeps structure. - Updated dependencies in Cargo.toml and Cargo.lock to include the cron crate. * feat: add Android support and enhance dependencies - Introduced Android-specific build and run commands in package.json for Tauri. - Updated Cargo.toml to include OpenSSL for Android and adjusted reqwest for cross-platform TLS support. - Added new mobile capabilities configuration for Android and iOS. - Implemented a foreground service in the Android app to maintain the Rust backend process. - Added various Android resources including layouts, icons, and notification handling. - Updated Cargo.lock with new dependencies for improved functionality. * chore: update .gitignore and AndroidManifest.xml for deep link support - Added .kotlin and .cargo to .gitignore to exclude Kotlin and Cargo build artifacts. - Updated AndroidManifest.xml with comments for the deep link plugin, clarifying its auto-generated nature. * feat: enhance store configuration for development testing - Added functionality to auto-inject a JWT token from environment variables during development. - Implemented automatic onboarding for users once their profile is fetched, improving the testing experience. * feat: enhance socket connection handling and add Android logging support - Updated the Rust socket connection command to accept an optional URL parameter, allowing for dynamic backend URL configuration. - Integrated Android logging capabilities using the android_logger crate, ensuring logs are properly routed to logcat. - Improved error handling in the SocketManager to log connection errors and successful connections for better debugging. * feat: implement notification permission handling and enhance foreground service in Android - Added runtime permission request for POST_NOTIFICATIONS in MainActivity to comply with API 33+ requirements. - Updated RuntimeService to specify foreground service type for API 34+ compatibility. - Improved logging levels in the Rust backend for better debugging and monitoring of socket connections and skill discovery. * feat: integrate QuickJS skill management and service - Added QuickJS skill hooks for retrieving and managing QuickJS skills from Redux. - Implemented a QuickJS service to handle skill lifecycle, preferences, and IPC calls with the Rust backend. - Enhanced the skills state in Redux to include QuickJS skills, enabling better management and state tracking. - Updated the store configuration to persist QuickJS skills state across sessions. - Introduced new commands in the Rust backend for enabling/disabling skills and managing preferences. - Improved the SkillProvider to initialize the QuickJS service during app startup. * refactor: transition skill management to QuickJS runtime - Removed legacy skill catalog and loading logic, replacing it with QuickJS runtime integration for skill discovery and management. - Updated SkillProvider to utilize QuickJS for skill registration and lifecycle management. - Simplified skill data handling by directly invoking the Rust backend for skill operations. - Enhanced error handling and logging for skill loading processes. - Cleaned up unused interfaces and functions related to previous skill management methods. * refactor: remove unused skill commands and plugins - Deleted the skills command module and related functions to streamline the codebase. - Removed dependencies on the tauri-plugin-shell and other unused plugins from Cargo.toml and Cargo.lock. - Updated the authentication module by removing the exchange_token function and its associated structures. - Simplified the capabilities configuration by eliminating shell-related permissions. - Enhanced the runtime engine to support new JSON-RPC commands for skill data management. * feat: expose whitelisted environment values to skills - Added `platform.env(key)` function to retrieve whitelisted environment values for skills. - Implemented `get_skill_env` function to provide access to `BACKEND_URL` and `PLATFORM`. - Updated `get_backend_url` to check for `VITE_BACKEND_URL` before falling back to `BACKEND_URL`. - Enhanced the QuickJS runtime to support the new environment functionality. * feat: fix skills enable/disable flow, setup pipeline, and status derivation - Add SkillSetup struct to Rust manifest and include setup field in discovery response so the frontend knows which skills need setup - Map setup field in SkillProvider discoverSkills() - Fix SkillsGrid to use real hasSetup from manifest instead of hardcoding false - Add contextual Enable/Setup/Configure/Retry buttons in management modal - Add status indicator dots to compact skill table rows - Fix deriveConnectionStatus to return "connected" for ready skills with completed setup that don't push host state (e.g. cron-based skills) - Add select option renderer in SkillManagementPanel for non-boolean options - Add dotenvy crate to load .env file at Rust startup so env vars like VITE_BACKEND_URL are available to the runtime engine and skills Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add platform support for skills and enhance manifest handling - Introduced platform filtering for skills in the SkillManifest, allowing skills to specify supported platforms. - Updated QuickJSManifest and runtime engine to handle platform checks, ensuring skills are only loaded on compatible platforms. - Added new build and watch commands for skills in package.json to streamline development. - Enhanced the Rust backend to log unsupported skills based on platform restrictions. * feat: update skills submodule with TypeScript pipeline and test harness Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: transition from QuickJS to V8 runtime for skill management - Replaced QuickJS with V8 (via deno_core) for improved JavaScript execution and WASM support. - Updated skill management logic to utilize the new V8 runtime, including changes to the RuntimeEngine and skill instance handling. - Enhanced manifest handling to support the new runtime and added platform compatibility checks. - Introduced new dependencies and updated Cargo.toml to reflect changes in the skill execution environment. - Refactored related modules and commands to align with the V8 integration, ensuring a seamless transition for skill operations. * refactor: clean up dead code in IdbStorage and enhance ops module - Removed unused `#[allow(dead_code)]` annotations from the IdbStorage struct and its methods to improve code clarity. - Introduced new timer and WebSocket state management structures in the ops module, laying groundwork for future enhancements. - Added timer and WebSocket operation functions, including `op_timer_start`, `op_timer_cancel`, and WebSocket connection handling, to support asynchronous operations. * feat: implement high-level TDLib service with V8 integration - Introduced a new `TdlibV8Service` to manage TDLib client instances using the V8 runtime. - Added a `MockTdClient` for development and testing, simulating TDLib responses for various queries. - Enhanced the bootstrap script to initialize and manage TDLib clients, including methods for sending queries and retrieving authentication states. - Updated the `mod.rs` file to include the new service module and improved documentation for clarity. - Refactored existing code to support the new TDLib integration, ensuring a seamless experience for skill management. * refactor: update V8 runtime integration and platform handling - Updated the V8 runtime integration to ensure it is only available on desktop platforms, with appropriate error handling for mobile. - Refactored the `SocketManager` and command implementations to conditionally include desktop-only features, enhancing clarity and maintainability. - Cleaned up the `Cargo.toml` to reflect the changes in V8 runtime availability and added relevant documentation. - Removed dead code related to mobile platform handling in the TDLib integration, ensuring a streamlined codebase. * chore: update skills submodule to latest commit - Updated the skills submodule to the latest commit (19a18e8), ensuring alignment with recent changes and improvements in the codebase. * refactor: transition from QuickJS to V8 runtime for skill management - Updated the skills submodule to the latest commit, reflecting the transition from QuickJS to V8 for improved JavaScript execution. - Refactored skill management logic to utilize the V8 runtime, including changes to the RuntimeEngine and skill instance handling. - Enhanced manifest handling to support the new runtime and updated platform compatibility checks. - Removed dead code related to QuickJS, ensuring a streamlined codebase. - Updated comments and documentation to reflect the changes in runtime integration. * feat: enhance logging and update timer operations in V8 integration - Added logging for skill discovery and manifest processing in the V8 runtime, improving traceability during skill management. - Updated timer operation functions to use new prefixed names (`op_ah_timer_start` and `op_ah_timer_cancel`) to avoid conflicts with deno_core built-ins. - Implemented a mechanism to load .env files from various locations, ensuring environment variables are available for configuration. - Enhanced the `get_backend_url` function to include debug logging for better visibility of the backend URL resolution process. * chore: update skills submodule to latest commit and enhance logging - Updated the skills submodule to the latest commit (54c40a1), ensuring alignment with recent changes. - Added console logging for skill manifests during discovery in the SkillsGrid component to improve debugging and traceability. * refactor: clean up and format code in DownloadScreen and SkillsGrid components - Improved code readability by formatting multi-line statements in the DownloadScreen and SkillsGrid components. - Removed unnecessary type imports in DownloadScreen for clarity. - Enhanced the structure of the SkillsGrid component by adjusting the layout of JSX elements for better maintainability. - Updated socketService to ensure consistent import order and improved logging in TauriSocket utility functions. * chore: update development script in package.json - Replaced the existing setup-python-sidecar script with a new dev:app script to streamline the development process for Tauri applications, enabling better debugging with RUST_BACKTRACE and RUST_LOG settings. * refactor: update load method to accept additional parameters - Modified the load method in SkillRuntime to accept an optional additionalParams argument, enhancing flexibility for skill loading. - Ensured compatibility by using a fallback to an empty object when additionalParams is not provided. * refactor: improve JSX structure in SkillsGrid component - Enhanced the formatting of the connection status indicator in the SkillsGrid component for better readability. - Adjusted the indentation and spacing to maintain consistent code style and improve maintainability. * Refactor invoke_handler to consolidate command registration across platforms - Simplified the command registration process by merging desktop and mobile command handlers into a single `invoke_handler` call. - Improved code readability and maintainability by reducing duplication in command definitions. - Ensured that window commands remain desktop-only while maintaining common functionality for all platforms. * updated icon * Update skills submodule to latest commit and remove redundant logging statements in V8 engine skill discovery * Update skills submodule to reflect dirty state * feat: expose BACKEND_URL environment variable for skills - Added "BACKEND_URL" to the list of whitelisted environment variables accessible to skills, allowing for broader usage without the "VITE_" prefix. * Enhance V8 runtime with async event loop and timer management - Implemented an async event loop in the V8 skill instance to handle timers and messages efficiently. - Introduced a new TimerState structure for managing scheduled timers, allowing for better integration with the V8 event loop. - Updated the dotenv loading mechanism to check for environment variables in the current and parent directories. - Enhanced logging for timer operations and skill management processes to improve traceability. * Update skills submodule to latest commit and expose additional environment variables for skills - Updated the skills submodule to commit 3793fdc, ensuring alignment with recent changes. - Added "TELEGRAM_API_ID" and "TELEGRAM_API_HASH" to the list of whitelisted environment variables, allowing skills to access these without the "VITE_" prefix. * Integrate TDLib support for Telegram skill - Added TDLib commands for creating, sending, receiving, and destroying clients, enabling Telegram functionality. - Implemented a TdLibManager for managing TDLib client lifecycle and asynchronous operations on desktop platforms. - Introduced JNI bridge for Android to facilitate TDLib interactions. - Updated Cargo.toml and Cargo.lock to include tdlib-rs and related dependencies. - Enhanced the V8 runtime to support TDLib operations, ensuring compatibility across platforms. * Enhance TDLib manager with update queue and async polling - Introduced an update queue and notification channel in ClientState for managing TDLib updates. - Implemented a separate polling task for TDLib updates to improve responsiveness and prevent blocking the main event loop. - Updated lifecycle function handling in the V8 runtime to avoid waiting for the event loop, allowing for long-running async operations. - Improved error handling and logging for better traceability during TDLib operations. * Enhance documentation and improve code formatting - Updated CLAUDE.md to include new core commands and runtime management features for the Rust backend, as well as Android support and platform-specific details. - Refactored SettingsHeader component in SettingsHeader.tsx for improved readability by consolidating props and cleaning up JSX formatting. - Enhanced SkillProvider.tsx with better logging for skill loading errors, improving traceability in the development process. --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
22 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Summary
Cross-platform crypto community communication platform built with Tauri v2 (React 19 + Rust). Targets desktop (Windows, macOS) and mobile (Android, iOS). Features deep Telegram integration via MTProto, real-time Socket.io communication, V8-based skill execution engine, and an MCP (Model Context Protocol) tool system for AI-driven Telegram interactions.
App Theme & Design System
Design Philosophy: Premium, sophisticated crypto platform with calm, trustworthy aesthetic.
Color Palette
- Primary: Ocean blue (
#4A83DD) optimized for dark backgrounds - Sage: Success green (
#4DC46F) for growth indicators - Amber: Warning (
#E8A838) for attention states - Coral: Error (
#F56565) soft professional red - Canvas: Background layers (
#FAFAF9to#D4D4D1) with subtle warmth - Market Colors: Bullish green, bearish red, Bitcoin orange, Ethereum purple
Typography
- Primary: Inter (premium font stack)
- Display: Cabinet Grotesk for headings
- Mono: JetBrains Mono for code
- Scale: Sophisticated sizing with negative letter spacing for elegance
Component System
- Shadows: Glow effects, subtle to float depth levels
- Animations: Fade-in, slide-in, scale-in with cubic-bezier easing
- Border Radius: Smooth system from
xs(0.25rem) to5xl(2rem) - Spacing: Extended scale including custom values (4.5, 13, 15, etc.)
Current UI State
- Uses HashRouter (not BrowserRouter) as seen in
App.tsx:1 - 153 TypeScript files total in src/
- Sophisticated Tailwind config with custom color system and animations
Commands
# Frontend dev server only (port 1420)
yarn dev
# Desktop dev with hot-reload (starts Vite + Tauri)
yarn tauri dev
# Desktop dev with enhanced debugging (RUST_BACKTRACE and RUST_LOG enabled)
yarn dev:app
# Production build (TypeScript compile + Vite build + Tauri bundle)
yarn tauri build
# Debug build with .app bundle (required for deep link testing on macOS)
# On macOS, alphahuman:// only works when running the .app, not `tauri dev`
yarn tauri build --debug --bundles app
yarn macos:dev
# Android
yarn tauri android dev
yarn tauri android build
# iOS
yarn tauri ios dev
yarn tauri ios build
# Skills development
yarn skills:build # Build skills in development mode
yarn skills:watch # Watch skills for changes
# Rust checks
cargo check --manifest-path src-tauri/Cargo.toml
cargo clippy --manifest-path src-tauri/Cargo.toml
No test framework is currently configured. ESLint and Prettier are configured with Husky pre-commit/pre-push hooks for code quality enforcement.
Architecture
Provider Chain (App.tsx)
The app wraps in this order: Redux Provider → PersistGate → SocketProvider → TelegramProvider → HashRouter → AppRoutes. Note: Now uses HashRouter instead of BrowserRouter. This ordering matters because Socket.io and Telegram providers depend on Redux auth state.
State Management (Redux Toolkit + Persist)
State lives in src/store/ using Redux Toolkit slices:
- authSlice — JWT token, onboarding completion flag (persisted)
- userSlice — user profile
- socketSlice — connection status, socket ID
- telegramSlice — connection/auth status, chats, messages, threads (selectively persisted; loading/error states excluded)
- aiSlice — AI system state, memory management, session tracking
- skillsSlice — skills catalog, setup status, management state, V8 runtime integration
- teamSlice — team management, member invites, permissions
Redux Persist stores auth and telegram state (storage backend is configurable; default uses localStorage). The telegram slice has a complex nested structure in src/store/telegram/ with separate files for types, reducers, extraReducers, and thunks.
LocalStorage
- Do not use
localStorage(orsessionStorage) for app state or feature logic. Use Redux (and Redux Persist where needed) instead. - Remove any existing
localStorageusage when touching related code. User-scoped data (auth, onboarding, Telegram session, socket state) lives in Redux, keyed by user id where applicable. Telegram session is intelegram.byUser[userId].sessionString, not localStorage. - Exceptions: Redux-persist may use a localStorage-backed storage adapter by default; that is the persistence layer, not app logic. Any other remaining usage (e.g. deep-link
deepLinkHandledflag) should be migrated to Redux or similar when that code is modified. - General rule: Avoid adding new
localStorageorsessionStorageusage; prefer Redux and remove existing usage when you work on affected areas.
Service Layer (Singletons)
- mtprotoService (
src/services/mtprotoService.ts) — Telegram MTProto client viatelegramnpm package. Session stored in Redux (telegram.byUser[userId].sessionString), not localStorage. Auto-retries FLOOD_WAIT up to 60s. - socketService (
src/services/socketService.ts) — Socket.io client. Auth token passed in socketauthobject (not query string). Transports: polling first, then WebSocket. Enhanced with Rust-native Socket.io client for persistent connections. - apiClient (
src/services/apiClient.ts) — HTTP client for REST backend.
MCP System (src/lib/mcp/)
Model Context Protocol implementation for AI tool execution over Socket.io:
transport.ts— Socket.io JSON-RPC 2.0 transport with 30s timeouttelegram/server.ts— TelegramMCPServer manages 99 tool definitionstelegram/tools/— Individual tool files (one per Telegram API operation)- Tools use
big-integerlibrary for Telegram's large integer IDs
Routing (src/AppRoutes.tsx)
/ → Welcome (public)
/login → Login (public)
/onboarding → Onboarding (protected, requires auth, not yet onboarded)
/home → Home (protected, requires auth + onboarded)
* → DefaultRedirect (routes based on auth state)
PublicRoute redirects authenticated users away. ProtectedRoute enforces auth and optionally onboarding status.
Deep Link Auth Flow
Web-to-desktop handoff using alphahuman:// URL scheme:
- User authenticates in browser
- Browser redirects to
alphahuman://auth?token=<loginToken> - Tauri catches the deep link, Rust
exchange_tokencommand calls backend viareqwest(bypasses CORS) - Backend returns
sessionToken+ user object - App stores session in Redux, navigates to onboarding/home
Key file: src/utils/desktopDeepLinkListener.ts (lazy-loaded in main.tsx). Uses a deepLinkHandled flag to prevent infinite reload loops. Deep links do NOT work in tauri dev on macOS — must use built .app bundle.
Rust Backend (src-tauri/src/lib.rs)
Enhanced Rust backend with comprehensive skill execution and runtime management:
Core Commands:
greet— demo commandexchange_token— CORS-free HTTP POST to backend for token exchange (desktop only)
Runtime Management:
discover_skills— V8 skill discovery and manifest parsingenable_skill/disable_skill— skill lifecycle managementget_skill_preferences/set_skill_preferences— skill configurationconnect_to_socket— Rust-native Socket.io connectionget_socket_status— connection status monitoring
Android Support:
RuntimeService— background service for skill execution- Notification permissions and foreground service management
- Android logging integration with logcat
Deep link plugin registered at setup. register_all() called only on Windows/Linux (panics on macOS).
V8 Runtime System (src-tauri/src/runtime/)
Advanced JavaScript execution engine for skills using V8 (via deno_core):
Core Components:
v8_engine.rs— V8 JavaScript runtime initialization and managementv8_skill_instance.rs— Individual skill execution contexts and lifecycleskill_registry.rs— Skill discovery, registration, and state managementmanifest.rs— Skill manifest parsing with platform compatibility checkssocket_manager.rs— Persistent Socket.io connections with reconnection logiccron_scheduler.rs— Scheduled task execution for time-based skillspreferences.rs— Skill configuration and settings persistence
Bridge System (src-tauri/src/runtime/bridge/):
skills_bridge.rs— Skill-to-skill communication and state sharingtauri_bridge.rs— Frontend-backend IPC and environment accessnet.rs— HTTP/fetch operations for skillsdb.rs— Database operations and storage managementstore.rs— Key-value storage for skill datalog_bridge.rs— Structured logging from skillscron_bridge.rs— Cron job scheduling and management
TDLib Integration (src-tauri/src/services/tdlib_v8/):
service.rs— High-level TDLib client management with V8 integrationbootstrap.js— V8 JavaScript bootstrap environmentops/mod.rs— Native operations for WebSocket, timers, and async handlingstorage.rs— Persistent storage for TDLib sessions and data
Platform Support:
- Desktop platforms: Full V8 runtime with all features
- Mobile platforms: Error handling with feature availability checks
- Platform-specific skill filtering based on manifest declarations
Environment Variables
Set in .env (Vite exposes VITE_* prefixed vars):
| Variable | Purpose |
|---|---|
VITE_BACKEND_URL |
Backend API URL (default: http://localhost:5005) |
VITE_TELEGRAM_API_ID |
Telegram MTProto API ID |
VITE_TELEGRAM_API_HASH |
Telegram MTProto API hash |
VITE_TELEGRAM_BOT_USERNAME |
Telegram bot username |
VITE_TELEGRAM_BOT_ID |
Telegram bot numeric ID |
VITE_SENTRY_DSN |
Sentry DSN for error reporting (optional) |
VITE_DEBUG |
Debug mode flag |
Production defaults are in src/utils/config.ts.
Recent Changes
Key updates from recent commits (cd9ebcd to current):
Major Runtime Transition
- V8 Runtime Migration (
99c20ea,0f6a092): Complete transition from QuickJS to V8- Replaced QuickJS with V8 (via deno_core) for improved JavaScript execution and WASM support
- Enhanced skill management with V8 runtime including improved performance and compatibility
- New V8 skill instance handling with advanced execution contexts
- Updated dependencies and Cargo.toml to reflect V8 integration
- Platform compatibility checks and enhanced manifest handling
Android Platform Support
- Full Android Integration (
ce06cfc,a2578b9): Production-ready mobile platform support- Complete Android project generation with MainActivity and RuntimeService
- Background service for persistent skill execution on Android
- Notification permission handling and foreground service management
- Android logging integration with logcat for better debugging
- Deep link support configuration in AndroidManifest.xml
Enhanced Socket & Runtime Management
- Rust-Native Socket.io Client (
68d397e): Persistent connection infrastructure- Native Rust Socket.io implementation for improved reliability
- Enhanced socket connection handling with reconnection logic
- Dynamic backend URL configuration support
- Improved error handling and connection status monitoring
Skills System Improvements
- Advanced Skill Management (
e841c86,719e6e5): Enhanced skill lifecycle and configuration- Skill setup pipeline with contextual Enable/Setup/Configure/Retry buttons
- Platform filtering for skills with manifest-based compatibility checks
- Enhanced skill status derivation and connection indicators
- Environment variable exposure to skills (whitelisted values)
- Improved skill discovery and manifest processing with logging
Major Additions
- ESLint & Prettier Integration (
5896966): Complete code quality toolchain- ES module syntax for ESLint configuration with enhanced TypeScript support
- Husky pre-commit/pre-push hooks for automatic formatting and linting
- Type-only imports standardization across codebase
- Consolidated import statements and improved code organization
- GitHub workflows updated with Prettier and ESLint checks
- Advanced Skills System (
10ec1b3): Comprehensive skill management platform- Dynamic skills loading from local directory via Rust integration
- SkillSetupModal with conditional rendering (wizard vs management panel)
- Background GitHub sync for skills catalog updates
- Skills table with setup status indicators and management controls
- Enhanced skill metadata with setup hooks and descriptions
- Team Management Features (
10ec1b3): Multi-user collaboration system- TeamPanel, TeamMembersPanel, and TeamInvitesPanel components
- Redux state management for teams, members, and invites
- Team API integration with CRUD operations
- Settings modal routing for team management paths
- Role-based permissions and invitation system
- AI System Enhancements: Advanced memory and session management
- Hybrid search with encryption for AI memory
- Constitution-based AI behavior with GitHub integration
- Entity graph migration to Neo4j backend
- Session capture and transcript management
- Memory chunking and context formatting
- Enhanced CI/CD Pipeline (
b1d7bce): Production-ready deployment- XGH_TOKEN authentication for alphahumanxyz/alphahuman releases
- Python sidecar setup and caching for cross-platform builds
- Tauri configuration updates (com.alphahuman.app identifier)
- GitHub Pages deployment with optimized workflows
- Version tagging and environment variable management
- Device Detection & Download System (
9d74721,b5bccd2): Enhanced multi-architecture download support- Optimized asset parsing using Maps for unique architecture links per platform
- Enhanced DownloadScreen.tsx with architecture-specific download options
- Improved device detection for Windows, macOS, Linux, and Android platforms
- Added preference logic for more specific filenames in asset parsing
- Support for multiple architectures (x64, aarch64) with intelligent sorting
- Version Bump: Project updated to v0.20.0 (
891517c)
Design System Updates
- Settings Modal UI: Clean 520px white modal contrasting with glass morphism theme
- Animations: 200ms entry animations, 250ms panel transitions, chevron hover effects
- Lottie Animations: Integrated into onboarding flow (
334673e) - Connection Components: Added Telegram and Gmail connection indicators
- Routing: Switched to HashRouter for better desktop app compatibility
- Theme: Implemented sophisticated color system with premium crypto aesthetic
Component Structure
- 200+ TypeScript files across
src/directory with comprehensive tooling - AI System Architecture (
src/lib/ai/): Advanced artificial intelligence platform- Memory management with encryption, chunking, and hybrid search
- Constitution-based behavior with GitHub integration
- Entity graph with Neo4j backend integration
- Session capture, transcript management, and tool compression
- Provider system with OpenAI integration and custom providers
- Skills Management System: Dynamic skill platform with Rust integration
- SkillsGrid.tsx - Skills catalog with setup status and management
- SkillSetupModal.tsx - Conditional wizard/management panel rendering
- SkillProvider.tsx - GitHub sync and local directory integration
- Skills submodule integration with background updates
- Team Collaboration Features: Multi-user workspace management
- TeamPanel.tsx - Team overview with member management
- TeamMembersPanel.tsx - Member roles and permissions
- TeamInvitesPanel.tsx - Invitation system with role assignment
- Team API integration with Redux state management
- Settings Modal System: Comprehensive configuration interface
- SettingsModal.tsx - Main container with URL routing
- SettingsLayout.tsx - Modal wrapper with createPortal
- Enhanced panels: Billing, Team, Connections, Privacy, Profile
- Hooks: useSettingsNavigation.ts, useSettingsAnimation.ts
- Download System: Enhanced multi-platform distribution
- DownloadScreen.tsx - Platform detection with architecture support
- deviceDetection.ts - Comprehensive device/architecture utilities
- GitHub API integration for real-time release assets
- Code Quality Infrastructure: ESLint, Prettier, and Husky integration
- Pre-commit/pre-push hooks with TypeScript compilation checks
- Standardized type-only imports and consolidated statements
- GitHub workflow integration with automated quality checks
Git Workflow
- Push target: All pushes go to the user's private repo (your fork). Do not push directly to the org repository.
- PR target: All pull requests are opened from your fork against the org's private repo, targeting the
developbranch (notmain). - No direct pushes to org: The org repo does not allow direct pushes. All changes reach the org repo via PRs from your fork.
Key Patterns
- Code Quality: ESLint and Prettier enforce code standards with Husky hooks. Use type-only imports (
import type) and consolidate imports from same modules. - No localStorage: Avoid
localStorageandsessionStorage; use Redux (and persist) for app state. Remove any direct usage when working on affected code. - AI System Integration: Use
src/lib/ai/for memory management, constitution loading, entity queries, and session capture. AI providers abstracted through interface pattern. - V8 Skills Runtime: Skills execute in V8 JavaScript engine on desktop platforms. Use
SkillProviderfor GitHub sync,SkillsGridfor management interface, and Rust runtime commands for lifecycle management. Platform filtering ensures skills only run on supported platforms. - Team Collaboration: Team features in
src/components/settings/panels/Team*. Use ReduxteamSlicefor state management andteamApifor backend operations. - Device Detection: Use
deviceDetection.tsutilities for platform/architecture detection. Support multiple architectures per platform (x64, aarch64) with intelligent preference logic. - GitHub Integration: Fetch release assets via GitHub API (
fetchLatestRelease()) and parse by architecture (parseReleaseAssetsByArchitecture()). Use Maps for efficient unique architecture tracking. - Download System: Platform-specific file type support (.exe/.msi for Windows, .dmg for macOS, .AppImage/.deb/.rpm for Linux, .apk for Android) with fallback links.
- Modal System: Settings modal uses
createPortalpattern with URL-based routing. Clean white design (not glass morphism) for system settings. Navigate with/settingspaths for different panels. - Component Reuse: Connection management reuses
connectOptionsarray and components from onboarding flow. Maintains consistent UX patterns across features. - Redux Integration: Multiple slices (auth, user, telegram, ai, skills, team) with Redux Persist. Use typed hooks and selectors. State functions accept optional
userIdparam. - Node polyfills: Vite config (
vite.config.ts) polyfillsbuffer,process,util,os,crypto,streamfor thetelegrampackage which requires Node APIs. - Telegram IDs: Use
big-integerlibrary, not native JS numbers (Telegram IDs exceedNumber.MAX_SAFE_INTEGER). - MCP tool files: Each tool in
src/lib/mcp/telegram/tools/exports a handler conforming toTelegramMCPToolHandlerinterface. Tool names are typed insrc/lib/mcp/telegram/types.ts. - Tauri IPC: Frontend calls Rust via
invoke()from@tauri-apps/api/core. Rust commands are registered ingenerate_handler![]macro. Enhanced with runtime management commands for V8 skill execution and Socket.io integration. - CORS workaround: External HTTP requests from the WebView hit CORS. Use Rust
reqwestvia Tauri commands instead of browserfetch(). - Hash Routing: Uses HashRouter for desktop app compatibility and deep link handling.
- Integration Libraries: Each integration (Telegram, future Gmail, etc.) lives under
src/lib/<integration>/with its ownstate/,services/,api/subdirectories. Domain-specific services belong in the integration folder, not insrc/services/(which holds only cross-cutting services like socketService, apiClient). - Unit Tests: All unit tests live in
__tests__/folders co-located with the code they test. Use Jest with TypeScript support. - Runtime Platform Differences: V8 runtime is desktop-only. Mobile platforms use feature detection and graceful degradation. Skills with platform restrictions are filtered during discovery.
- Socket Management: Rust-native Socket.io client provides persistent connections with automatic reconnection. Use
connect_to_socketcommand instead of frontend-only socket connections for reliability.
Platform Gotchas
- macOS deep links: Require
.appbundle (nottauri dev). Clear WebKit caches when debugging stale content:rm -rf ~/Library/WebKit/com.alphahuman.app ~/Library/Caches/com.alphahuman.app - Cargo caching: May serve stale frontend assets on incremental builds. Run
cargo clean --manifest-path src-tauri/Cargo.tomlif the app shows outdated UI. window.__TAURI__: Not available at module load time. Use dynamicimport()and try/catch for Tauri plugin calls.- Android background services: RuntimeService requires notification permissions (API 33+) and foreground service type specification (API 34+). Use Android logging (
android_logger) for debug output in logcat. - V8 runtime limitations: V8 engine is desktop-only. Android skills should use lightweight alternatives or server-side execution patterns.
- Socket connections: Persistent Socket.io connections via Rust backend work better than WebView-based connections on mobile platforms.