mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-28 05:12:33 +00:00
* 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. --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
284 lines
9.6 KiB
JavaScript
284 lines
9.6 KiB
JavaScript
/** @type {import('tailwindcss').Config} */
|
|
module.exports = {
|
|
darkMode: 'class',
|
|
content: [
|
|
"./index.html",
|
|
"./src/**/*.{js,ts,jsx,tsx}",
|
|
],
|
|
theme: {
|
|
extend: {
|
|
// Premium font stack optimized for crypto professionals
|
|
fontFamily: {
|
|
'sans': ['Inter', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Helvetica', 'Arial', 'sans-serif'],
|
|
'display': ['Cabinet Grotesk', 'Inter', '-apple-system', 'system-ui', 'sans-serif'],
|
|
'mono': ['JetBrains Mono', 'SF Mono', 'Consolas', 'Liberation Mono', 'Courier', 'monospace'],
|
|
'serif': ['Newsreader', 'Georgia', 'Cambria', 'Times New Roman', 'Times', 'serif'],
|
|
},
|
|
|
|
// Elevated color system - Calm, trustworthy, and sophisticated
|
|
colors: {
|
|
// Canvas - Background layers with subtle warmth
|
|
canvas: {
|
|
50: '#FAFAF9', // Base background
|
|
100: '#F5F5F4', // Secondary background
|
|
150: '#EDEDEC', // Tertiary background
|
|
200: '#E5E5E3', // Card background
|
|
300: '#D4D4D1', // Hover states
|
|
},
|
|
|
|
// Primary - Premium ocean blue with depth (optimized for dark backgrounds)
|
|
primary: {
|
|
50: '#F0F7FF',
|
|
100: '#E0EFFF',
|
|
200: '#C7E2FF',
|
|
300: '#A5D0FF',
|
|
400: '#7AB5FF',
|
|
500: '#4A83DD', // Main brand - darker blue for dark backgrounds
|
|
600: '#3D6DC4', // Hover state
|
|
700: '#345A9F', // Active state
|
|
800: '#2D4B7F',
|
|
900: '#1E3052',
|
|
950: '#0F1A2E',
|
|
},
|
|
|
|
// Sage - Success and growth (sophisticated green)
|
|
sage: {
|
|
50: '#F7FDF9',
|
|
100: '#ECFAEF',
|
|
200: '#D4F4DC',
|
|
300: '#AEEAC1',
|
|
400: '#72D892',
|
|
500: '#4DC46F', // Main success - refined green
|
|
600: '#3BA858',
|
|
700: '#318B48',
|
|
800: '#2B6F3C',
|
|
900: '#255933',
|
|
950: '#14371E',
|
|
},
|
|
|
|
// Amber - Attention and caution (warm, muted)
|
|
amber: {
|
|
50: '#FEFDF8',
|
|
100: '#FEF8E7',
|
|
200: '#FDEEC8',
|
|
300: '#FBDF9A',
|
|
400: '#F7C960',
|
|
500: '#E8A838', // Main warning - sophisticated amber
|
|
600: '#D18B1F',
|
|
700: '#B06F1A',
|
|
800: '#8D581B',
|
|
900: '#744919',
|
|
950: '#4A2B0B',
|
|
},
|
|
|
|
// Coral - Errors and dangers (soft, professional)
|
|
coral: {
|
|
50: '#FFF5F5',
|
|
100: '#FFEBEB',
|
|
200: '#FFD6D6',
|
|
300: '#FFB3B3',
|
|
400: '#FF8585',
|
|
500: '#F56565', // Main error - soft coral red
|
|
600: '#E84855',
|
|
700: '#D13742',
|
|
800: '#B02937',
|
|
900: '#922330',
|
|
950: '#5C1419',
|
|
},
|
|
|
|
// Stone - Neutral scale with subtle warmth
|
|
stone: {
|
|
50: '#FAFAF9',
|
|
100: '#F5F5F4',
|
|
200: '#E7E5E4',
|
|
300: '#D6D3D1',
|
|
400: '#A8A29E',
|
|
500: '#78716C',
|
|
600: '#57534E',
|
|
700: '#44403C',
|
|
800: '#292524',
|
|
900: '#1C1917',
|
|
950: '#0C0A09',
|
|
},
|
|
|
|
// Slate - Cool grays for data and charts
|
|
slate: {
|
|
50: '#F8FAFC',
|
|
100: '#F1F5F9',
|
|
200: '#E2E8F0',
|
|
300: '#CBD5E1',
|
|
400: '#94A3B8',
|
|
500: '#64748B',
|
|
600: '#475569',
|
|
700: '#334155',
|
|
800: '#1E293B',
|
|
900: '#0F172A',
|
|
950: '#020617',
|
|
},
|
|
|
|
// Market colors - For crypto specific UI
|
|
market: {
|
|
bullish: '#4DC46F', // Green for gains
|
|
bearish: '#F56565', // Red for losses
|
|
neutral: '#94A3B8', // Gray for no change
|
|
bitcoin: '#F7931A', // Bitcoin orange
|
|
ethereum: '#627EEA', // Ethereum purple
|
|
stablecoin: '#5B9BF3', // Blue for stables
|
|
},
|
|
|
|
// Accent colors for special elements
|
|
accent: {
|
|
lavender: '#9B8AFB', // Premium features
|
|
mint: '#6EE7B7', // Achievements
|
|
sky: '#7DD3FC', // Notifications
|
|
rose: '#FDA4AF', // Alerts
|
|
gold: '#FCD34D', // Rewards
|
|
}
|
|
},
|
|
|
|
// Refined spacing scale for elegant layouts
|
|
spacing: {
|
|
'4.5': '1.125rem',
|
|
'13': '3.25rem',
|
|
'15': '3.75rem',
|
|
'17': '4.25rem',
|
|
'18': '4.5rem',
|
|
'22': '5.5rem',
|
|
'30': '7.5rem',
|
|
'34': '8.5rem',
|
|
'42': '10.5rem',
|
|
'68': '17rem',
|
|
'76': '19rem',
|
|
'84': '21rem',
|
|
'88': '22rem',
|
|
'92': '23rem',
|
|
'128': '32rem',
|
|
'144': '36rem',
|
|
},
|
|
|
|
// Sophisticated typography scale
|
|
fontSize: {
|
|
'micro': ['0.625rem', { lineHeight: '0.75rem', letterSpacing: '0.02em' }],
|
|
'xs': ['0.75rem', { lineHeight: '1rem', letterSpacing: '0.01em' }],
|
|
'sm': ['0.875rem', { lineHeight: '1.25rem', letterSpacing: '0' }],
|
|
'base': ['1rem', { lineHeight: '1.5rem', letterSpacing: '-0.01em' }],
|
|
'lg': ['1.125rem', { lineHeight: '1.75rem', letterSpacing: '-0.01em' }],
|
|
'xl': ['1.25rem', { lineHeight: '1.875rem', letterSpacing: '-0.02em' }],
|
|
'2xl': ['1.5rem', { lineHeight: '2rem', letterSpacing: '-0.02em' }],
|
|
'3xl': ['1.875rem', { lineHeight: '2.25rem', letterSpacing: '-0.02em' }],
|
|
'4xl': ['2.25rem', { lineHeight: '2.5rem', letterSpacing: '-0.03em' }],
|
|
'5xl': ['3rem', { lineHeight: '3.5rem', letterSpacing: '-0.03em' }],
|
|
'6xl': ['3.75rem', { lineHeight: '4rem', letterSpacing: '-0.04em' }],
|
|
'7xl': ['4.5rem', { lineHeight: '4.75rem', letterSpacing: '-0.04em' }],
|
|
},
|
|
|
|
// Smooth border radius system
|
|
borderRadius: {
|
|
'xs': '0.25rem',
|
|
'sm': '0.375rem',
|
|
'md': '0.5rem',
|
|
'lg': '0.625rem',
|
|
'xl': '0.75rem',
|
|
'2xl': '1rem',
|
|
'3xl': '1.25rem',
|
|
'4xl': '1.5rem',
|
|
'5xl': '2rem',
|
|
},
|
|
|
|
// Sophisticated shadow system for depth
|
|
boxShadow: {
|
|
'glow': '0 0 20px rgba(91, 155, 243, 0.15)',
|
|
'glow-lg': '0 0 40px rgba(91, 155, 243, 0.2)',
|
|
'inner-glow': 'inset 0 0 20px rgba(91, 155, 243, 0.08)',
|
|
'subtle': '0 1px 2px 0 rgba(0, 0, 0, 0.03), 0 1px 3px 0 rgba(0, 0, 0, 0.04)',
|
|
'soft': '0 2px 8px -2px rgba(0, 0, 0, 0.08), 0 4px 12px -4px rgba(0, 0, 0, 0.08)',
|
|
'medium': '0 4px 12px -2px rgba(0, 0, 0, 0.08), 0 8px 16px -4px rgba(0, 0, 0, 0.08)',
|
|
'large': '0 8px 24px -4px rgba(0, 0, 0, 0.10), 0 16px 32px -8px rgba(0, 0, 0, 0.10)',
|
|
'float': '0 12px 32px -8px rgba(0, 0, 0, 0.12), 0 24px 48px -12px rgba(0, 0, 0, 0.12)',
|
|
'crisp': '0 0 0 1px rgba(0, 0, 0, 0.05), 0 2px 4px rgba(0, 0, 0, 0.08)',
|
|
},
|
|
|
|
// Premium animations for polished interactions
|
|
animation: {
|
|
'fade-in': 'fadeIn 0.5s cubic-bezier(0.4, 0, 0.2, 1)',
|
|
'fade-up': 'fadeUp 0.5s cubic-bezier(0.4, 0, 0.2, 1)',
|
|
'slide-in': 'slideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
|
|
'slide-right': 'slideRight 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94)',
|
|
'scale-in': 'scaleIn 0.3s cubic-bezier(0.4, 0, 0.2, 1)',
|
|
'shimmer': 'shimmer 2s linear infinite',
|
|
'glow-pulse': 'glowPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',
|
|
'float': 'float 3s ease-in-out infinite',
|
|
'ticker': 'ticker 30s linear infinite',
|
|
},
|
|
|
|
keyframes: {
|
|
fadeIn: {
|
|
'0%': { opacity: '0' },
|
|
'100%': { opacity: '1' },
|
|
},
|
|
fadeUp: {
|
|
'0%': { opacity: '0', transform: 'translateY(10px)' },
|
|
'100%': { opacity: '1', transform: 'translateY(0)' },
|
|
},
|
|
slideIn: {
|
|
'0%': { transform: 'translateX(-100%)' },
|
|
'100%': { transform: 'translateX(0)' },
|
|
},
|
|
slideRight: {
|
|
'0%': { opacity: '0', transform: 'translateX(100%)' },
|
|
'100%': { opacity: '1', transform: 'translateX(0)' },
|
|
},
|
|
scaleIn: {
|
|
'0%': { transform: 'scale(0.95)', opacity: '0' },
|
|
'100%': { transform: 'scale(1)', opacity: '1' },
|
|
},
|
|
shimmer: {
|
|
'0%': { backgroundPosition: '-200% 0' },
|
|
'100%': { backgroundPosition: '200% 0' },
|
|
},
|
|
glowPulse: {
|
|
'0%, 100%': { opacity: '1' },
|
|
'50%': { opacity: '0.5' },
|
|
},
|
|
float: {
|
|
'0%, 100%': { transform: 'translateY(0)' },
|
|
'50%': { transform: 'translateY(-10px)' },
|
|
},
|
|
ticker: {
|
|
'0%': { transform: 'translateX(0)' },
|
|
'100%': { transform: 'translateX(-50%)' },
|
|
},
|
|
},
|
|
|
|
// Backdrop blur for glass morphism
|
|
backdropBlur: {
|
|
'xs': '2px',
|
|
'sm': '4px',
|
|
'md': '8px',
|
|
'lg': '12px',
|
|
'xl': '16px',
|
|
'2xl': '24px',
|
|
'3xl': '40px',
|
|
},
|
|
|
|
// Background patterns and gradients
|
|
backgroundImage: {
|
|
'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
|
|
'gradient-conic': 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
|
|
'gradient-mesh': 'linear-gradient(to right, #5B9BF3 0%, #9B8AFB 25%, #6EE7B7 50%, #7DD3FC 75%, #5B9BF3 100%)',
|
|
'noise': "url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\"%3E%3Cfilter id=\"noise\"%3E%3CfeTurbulence type=\"fractalNoise\" baseFrequency=\"0.9\" numOctaves=\"4\" /%3E%3C/filter%3E%3Crect width=\"100\" height=\"100\" filter=\"url(%23noise)\" opacity=\"0.03\" /%3E%3C/svg%3E')",
|
|
},
|
|
|
|
// Extended transition duration for smooth animations
|
|
transitionDuration: {
|
|
'300': '300ms',
|
|
'400': '400ms',
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
require('@tailwindcss/forms'),
|
|
require('@tailwindcss/typography'),
|
|
],
|
|
};
|