mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-30 06:32:24 +00:00
Handling the status of skills (#23)
* chore: bump version to 0.20.0 [skip ci] * revert: remove automatic skill dependency installation system - Removed dependency installation loading state from SkillSetupWizard - Reverted SkillRuntime dependency checking and installation methods - Cleaned up dependency-related imports and event listeners - Documented complete implementation in skills/todo.md for future work The dependency installation system was causing unwanted loading states when configuring skills. All functionality has been properly reverted while preserving implementation details for future development. * Refactor SkillManagementPanel to conditionally show action buttons based on connection status - Added offline and setup-required states with informative messages - Updated SkillSetupModal to use connection status for setup vs. manage mode - Simplified mode logic for better UX and error handling in setup scenarios * Update CLAUDE.md with new features, state slices, and code quality tools - Document additions: Redux aiSlice, skillsSlice, teamSlice, and architecture updates - Add ESLint, Prettier integrations with Husky hooks and GitHub workflows - Update development commands from npm to yarn for consistency - Expand key user groups and revise target audiences - Include enhanced project structure, build outputs, and CI/CD updates * fix: resolve TypeScript compilation error and enhance skill session synchronization - Fix unused parameter error in SkillManager.getSkillLoadParams() by prefixing with underscore - Add support for session parameter passing in SkillRuntime.load() method - Implement skill reloading capability for post-authentication updates - Ensure proper connection status synchronization between skill setup and UI display 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: change skill button text from 'Configure' to 'Manage' for connected skills - Update SkillsGrid button text to dynamically show based on connection status - Connected skills now show 'Manage' button instead of 'Configure' - Provides clearer user indication of skill state - Improves UX for authenticated skills like Telegram 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: update documentation, download system and code formatting improvements - Update Claude rules with improved project overview and command documentation - Enhance download screen with better architecture detection and formatting - Improve device detection utilities with multi-architecture support - Add skills system troubleshooting documentation - Code formatting improvements with better line breaks and spacing - Optimize GitHub release asset parsing for platform-specific downloads 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
Steven Enamakel
github-actions[bot] <github-actions[bot]@users.noreply.github.com>
parent
9d7472131f
commit
9b3dfd0c2d
@@ -141,7 +141,9 @@ export function detectPlatform(): PlatformInfo {
|
||||
* Fetch the latest release from GitHub
|
||||
*/
|
||||
export async function fetchLatestRelease(): Promise<GitHubRelease> {
|
||||
const response = await fetch('https://api.github.com/repos/alphahumanxyz/alphahuman/releases/latest');
|
||||
const response = await fetch(
|
||||
'https://api.github.com/repos/alphahumanxyz/alphahuman/releases/latest'
|
||||
);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Failed to fetch release: ${response.statusText}`);
|
||||
}
|
||||
@@ -185,7 +187,9 @@ export function getArchitectureDisplayName(arch: Architecture): string {
|
||||
/**
|
||||
* Parse GitHub release assets and map them to platforms with architecture support
|
||||
*/
|
||||
export function parseReleaseAssetsByArchitecture(assets: GitHubReleaseAsset[]): PlatformArchitectureLinks {
|
||||
export function parseReleaseAssetsByArchitecture(
|
||||
assets: GitHubReleaseAsset[]
|
||||
): PlatformArchitectureLinks {
|
||||
const links: PlatformArchitectureLinks = {};
|
||||
|
||||
// Use Maps to track unique architectures per platform
|
||||
@@ -212,21 +216,39 @@ export function parseReleaseAssetsByArchitecture(assets: GitHubReleaseAsset[]):
|
||||
};
|
||||
|
||||
// Windows: .exe, .msi, .zip (Windows)
|
||||
if (name.includes('windows') || name.includes('.exe') || name.includes('.msi') || (name.includes('.zip') && !name.includes('macos'))) {
|
||||
if (
|
||||
name.includes('windows') ||
|
||||
name.includes('.exe') ||
|
||||
name.includes('.msi') ||
|
||||
(name.includes('.zip') && !name.includes('macos'))
|
||||
) {
|
||||
// Only add if this architecture doesn't exist yet, or prefer more specific filenames
|
||||
if (!windowsMap.has(architecture) || (name.includes('windows') && !windowsMap.get(architecture)?.fileName.toLowerCase().includes('windows'))) {
|
||||
if (
|
||||
!windowsMap.has(architecture) ||
|
||||
(name.includes('windows') &&
|
||||
!windowsMap.get(architecture)?.fileName.toLowerCase().includes('windows'))
|
||||
) {
|
||||
windowsMap.set(architecture, link);
|
||||
}
|
||||
}
|
||||
// macOS: .dmg
|
||||
else if (name.includes('macos') || name.includes('.dmg') || name.includes('darwin')) {
|
||||
// Only add if this architecture doesn't exist yet, or prefer more specific filenames
|
||||
if (!macosMap.has(architecture) || (name.includes('macos') && !macosMap.get(architecture)?.fileName.toLowerCase().includes('macos'))) {
|
||||
if (
|
||||
!macosMap.has(architecture) ||
|
||||
(name.includes('macos') &&
|
||||
!macosMap.get(architecture)?.fileName.toLowerCase().includes('macos'))
|
||||
) {
|
||||
macosMap.set(architecture, link);
|
||||
}
|
||||
}
|
||||
// Linux: .AppImage, .deb, .rpm
|
||||
else if (name.includes('linux') || name.includes('.appimage') || name.includes('.deb') || name.includes('.rpm')) {
|
||||
else if (
|
||||
name.includes('linux') ||
|
||||
name.includes('.appimage') ||
|
||||
name.includes('.deb') ||
|
||||
name.includes('.rpm')
|
||||
) {
|
||||
// Prefer AppImage, then deb, then rpm for the same architecture
|
||||
const existing = linuxMap.get(architecture);
|
||||
if (!existing) {
|
||||
@@ -267,7 +289,10 @@ export function parseReleaseAssetsByArchitecture(assets: GitHubReleaseAsset[]):
|
||||
}
|
||||
|
||||
// Sort architectures: prefer detected architecture, then x64, then aarch64
|
||||
const sortArchitectures = (archLinks: ArchitectureDownloadLink[], preferredArch?: Architecture) => {
|
||||
const sortArchitectures = (
|
||||
archLinks: ArchitectureDownloadLink[],
|
||||
preferredArch?: Architecture
|
||||
) => {
|
||||
return archLinks.sort((a, b) => {
|
||||
if (preferredArch && a.architecture === preferredArch) return -1;
|
||||
if (preferredArch && b.architecture === preferredArch) return 1;
|
||||
|
||||
Reference in New Issue
Block a user