diff --git a/Cargo.lock b/Cargo.lock
index 893358f54..4e4224f00 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4632,7 +4632,7 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381"
[[package]]
name = "openhuman"
-version = "0.52.4"
+version = "0.52.5"
dependencies = [
"aes-gcm",
"anyhow",
@@ -4687,7 +4687,6 @@ dependencies = [
"reqwest 0.12.28",
"ring",
"rppal",
- "rquickjs",
"rusqlite",
"rustls",
"rustls-pki-types",
@@ -5894,34 +5893,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "rquickjs"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5227859c4dfc83f428e58f9569bf439e628c8d139020e7faff437e6f5abaa0"
-dependencies = [
- "rquickjs-core",
-]
-
-[[package]]
-name = "rquickjs-core"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e82e0ca83028ad5b533b53b96c395bbaab905a5774de4aaf1004eeacafa3d85d"
-dependencies = [
- "async-lock",
- "rquickjs-sys",
-]
-
-[[package]]
-name = "rquickjs-sys"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fed0097b0b4fbb2a87f6dd3b995a7c64ca56de30007eb7e867dfdfc78324ba5"
-dependencies = [
- "cc",
-]
-
[[package]]
name = "ruma"
version = "0.14.1"
diff --git a/Cargo.toml b/Cargo.toml
index a4dc9b03f..441155bce 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -14,7 +14,6 @@ name = "openhuman_core"
crate-type = ["rlib"]
[dependencies]
-rquickjs = { version = "0.9", features = ["futures", "parallel"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
reqwest = { version = "0.12", default-features = false, features = ["json", "blocking", "rustls-tls", "native-tls", "stream", "http2", "multipart", "socks"] }
diff --git a/app/src-tauri/Cargo.lock b/app/src-tauri/Cargo.lock
index b91fb37eb..d60624975 100644
--- a/app/src-tauri/Cargo.lock
+++ b/app/src-tauri/Cargo.lock
@@ -4,7 +4,7 @@ version = 4
[[package]]
name = "OpenHuman"
-version = "0.52.4"
+version = "0.52.5"
dependencies = [
"env_logger",
"log",
diff --git a/app/src/components/ErrorReportNotification.tsx b/app/src/components/ErrorReportNotification.tsx
index 2c82055dd..7f84041c0 100644
--- a/app/src/components/ErrorReportNotification.tsx
+++ b/app/src/components/ErrorReportNotification.tsx
@@ -110,11 +110,6 @@ function NotificationCard({
DEV
)}
- {report.source === 'skill' && (
-
- SKILL
-
- )}
{report.message}
diff --git a/app/src/components/settings/SettingsHome.tsx b/app/src/components/settings/SettingsHome.tsx
index c7a1208c4..144bb10f1 100644
--- a/app/src/components/settings/SettingsHome.tsx
+++ b/app/src/components/settings/SettingsHome.tsx
@@ -1,6 +1,5 @@
import { useState } from 'react';
-import { skillManager } from '../../lib/skills/manager';
import { useCoreState } from '../../providers/CoreStateProvider';
import { persistor } from '../../store';
import { resetOpenHumanDataAndRestartCore } from '../../utils/tauriCommands';
@@ -43,14 +42,6 @@ const SettingsHome = () => {
throw err;
}
- // Best-effort cleanup for in-memory and browser-side caches that live outside the Rust core.
- try {
- await skillManager.clearAllSkillsData();
- } catch (error) {
- console.warn('Failed to clear skills data:', error);
- // Continue even if skill cleanup fails because the backend reset already completed.
- }
-
await persistor.purge();
window.localStorage.clear();
window.sessionStorage.clear();
@@ -247,7 +238,7 @@ const SettingsHome = () => {
This will sign you out and permanently delete local app data including:
- App settings and conversations
- - All skills data
+ - All local integration cache data
- Workspace data
- All other local data
diff --git a/app/src/components/settings/panels/ConnectionsPanel.tsx b/app/src/components/settings/panels/ConnectionsPanel.tsx
index 55e3b1e3e..66c5ecf51 100644
--- a/app/src/components/settings/panels/ConnectionsPanel.tsx
+++ b/app/src/components/settings/panels/ConnectionsPanel.tsx
@@ -1,11 +1,9 @@
-import { useState } from 'react';
+import type { ReactElement } from 'react';
import BinanceIcon from '../../../assets/icons/binance.svg';
import GoogleIcon from '../../../assets/icons/GoogleIcon';
import MetamaskIcon from '../../../assets/icons/metamask.svg';
import NotionIcon from '../../../assets/icons/notion.svg';
-import type { SkillConnectionStatus } from '../../../lib/skills/types';
-import SkillSetupModal from '../../skills/SkillSetupModal';
import SettingsHeader from '../components/SettingsHeader';
import { useSettingsNavigation } from '../hooks/useSettingsNavigation';
@@ -13,63 +11,11 @@ interface ConnectOption {
id: string;
name: string;
description: string;
- icon: React.ReactElement;
+ icon: ReactElement;
comingSoon?: boolean;
skillId?: string;
}
-// ---------------------------------------------------------------------------
-// Status badge mapping
-// ---------------------------------------------------------------------------
-
-const STATUS_BADGE_CONFIG: Record<
- SkillConnectionStatus,
- { label: string; bg: string; text: string; border: string }
-> = {
- connected: {
- label: 'Connected',
- bg: 'bg-sage-500/20',
- text: 'text-sage-400',
- border: 'border-sage-500/30',
- },
- connecting: {
- label: 'Connecting...',
- bg: 'bg-amber-500/20',
- text: 'text-amber-400',
- border: 'border-amber-500/30',
- },
- not_authenticated: {
- label: 'Not Authenticated',
- bg: 'bg-amber-500/20',
- text: 'text-amber-400',
- border: 'border-amber-500/30',
- },
- disconnected: {
- label: 'Disconnected',
- bg: 'bg-stone-500/20',
- text: 'text-stone-400',
- border: 'border-stone-500/30',
- },
- error: {
- label: 'Error',
- bg: 'bg-coral-500/20',
- text: 'text-coral-400',
- border: 'border-coral-500/30',
- },
- offline: {
- label: 'Offline',
- bg: 'bg-stone-500/20',
- text: 'text-stone-400',
- border: 'border-stone-500/30',
- },
- setup_required: {
- label: 'Setup Required',
- bg: 'bg-primary-500/20',
- text: 'text-primary-400',
- border: 'border-primary-500/30',
- },
-};
-
/**
* Renders a connection option row with its real-time status badge.
* Uses useSkillConnectionStatus hook for skill-backed connections.
@@ -85,31 +31,17 @@ function ConnectionOptionRow({
isLast: boolean;
onConnect: (option: ConnectOption) => void;
}) {
- const connectionStatus = 'setup_required' as SkillConnectionStatus;
const isDisabled = option.comingSoon;
- let badge: React.ReactElement;
- if (option.comingSoon) {
- badge = (
-
- Coming Soon
-
- );
- } else if (option.skillId) {
- const config = STATUS_BADGE_CONFIG[connectionStatus];
- badge = (
-
- {config.label}
-
- );
- } else {
- badge = (
-
- Connect
-
- );
- }
+ const badge = option.comingSoon ? (
+
+ Coming Soon
+
+ ) : (
+
+ Connect
+
+ );
return (