mirror of
https://github.com/tinyhumansai/openhuman.git
synced 2026-07-27 21:08:00 +00:00
refactor(intelligence): move memory workspace to Settings > Developer Options (#364)
* fix(settings): normalize padding across all settings panels Remove max-w-md mx-auto constraints from BillingPanel, RecoveryPhrasePanel, TeamPanel, TeamMembersPanel, TeamInvitesPanel, and TeamManagementPanel so all panels use consistent p-4 padding matching ConnectionsPanel and the other baseline panels. * refactor(intelligence): move memory workspace to Settings > Developer Options Move Memory, Memory Graph, Intelligence Insights, Activity Heatmap, and File Management from the Intelligence page into a new "Memory Data" panel under Settings > Developer Options. The Intelligence page now shows only the search bar and actionable items, keeping it focused for end users. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(intelligence): move memory workspace to Settings > Developer Options Move Memory, Memory Graph, Intelligence Insights, Activity Heatmap, and File Management from the Intelligence page into a new "Memory Data" panel under Settings > Developer Options. The Intelligence page now shows only the search bar and actionable items, keeping it focused for end users. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
a2dff715f0
commit
48d937cf6b
@@ -23,6 +23,7 @@ export type SettingsRoute =
|
||||
| 'skills'
|
||||
| 'ai'
|
||||
| 'local-model'
|
||||
| 'memory-data'
|
||||
| 'memory-debug'
|
||||
| 'recovery-phrase'
|
||||
| 'webhooks-debug'
|
||||
@@ -80,6 +81,7 @@ export const useSettingsNavigation = (): SettingsNavigationHook => {
|
||||
if (path.includes('/settings/skills')) return 'skills';
|
||||
if (path.includes('/settings/ai')) return 'ai';
|
||||
if (path.includes('/settings/local-model')) return 'local-model';
|
||||
if (path.includes('/settings/memory-data')) return 'memory-data';
|
||||
if (path.includes('/settings/memory-debug')) return 'memory-debug';
|
||||
if (path.includes('/settings/webhooks-debug')) return 'webhooks-debug';
|
||||
if (path.includes('/settings/recovery-phrase')) return 'recovery-phrase';
|
||||
|
||||
@@ -51,6 +51,22 @@ const developerItems = [
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: 'memory-data',
|
||||
title: 'Memory Data',
|
||||
description: 'Knowledge graph, insights, activity heatmap, and file management',
|
||||
route: 'memory-data',
|
||||
icon: (
|
||||
<svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
strokeWidth={2}
|
||||
d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
|
||||
/>
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
{
|
||||
id: 'memory-debug',
|
||||
title: 'Memory Debug',
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
import { useState } from 'react';
|
||||
|
||||
import type { ToastNotification } from '../../../types/intelligence';
|
||||
import { MemoryWorkspace } from '../../intelligence/MemoryWorkspace';
|
||||
import { ToastContainer } from '../../intelligence/Toast';
|
||||
import SettingsHeader from '../components/SettingsHeader';
|
||||
import { useSettingsNavigation } from '../hooks/useSettingsNavigation';
|
||||
|
||||
const MemoryDataPanel = () => {
|
||||
const { navigateBack } = useSettingsNavigation();
|
||||
const [toasts, setToasts] = useState<ToastNotification[]>([]);
|
||||
|
||||
const addToast = (toast: Omit<ToastNotification, 'id'>) => {
|
||||
const newToast: ToastNotification = { ...toast, id: `toast-${Date.now()}-${Math.random()}` };
|
||||
setToasts(prev => [...prev, newToast]);
|
||||
};
|
||||
|
||||
const removeToast = (id: string) => {
|
||||
setToasts(prev => prev.filter(t => t.id !== id));
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="z-10 relative">
|
||||
<SettingsHeader title="Memory Data" showBackButton={true} onBack={navigateBack} />
|
||||
<div className="p-4">
|
||||
<MemoryWorkspace onToast={addToast} />
|
||||
</div>
|
||||
<ToastContainer notifications={toasts} onRemove={removeToast} />
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default MemoryDataPanel;
|
||||
@@ -2,7 +2,6 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
|
||||
import { ActionableCard } from '../components/intelligence/ActionableCard';
|
||||
import { ConfirmationModal } from '../components/intelligence/ConfirmationModal';
|
||||
import { MemoryWorkspace } from '../components/intelligence/MemoryWorkspace';
|
||||
import { ToastContainer } from '../components/intelligence/Toast';
|
||||
import { filterItems, getItemStats, groupItemsByTime } from '../components/intelligence/utils';
|
||||
import { useConsciousItems } from '../hooks/useConsciousItems';
|
||||
@@ -315,10 +314,8 @@ export default function Intelligence() {
|
||||
{/* Tab content */}
|
||||
{activeTab === 'memory' && (
|
||||
<>
|
||||
<MemoryWorkspace onToast={addToast} />
|
||||
|
||||
{/* Filters */}
|
||||
<div className="flex items-center gap-3 mt-6 mb-6 animate-fade-up">
|
||||
<div className="flex items-center gap-3 mb-6 animate-fade-up">
|
||||
<div className="flex-1">
|
||||
<input
|
||||
type="text"
|
||||
|
||||
@@ -10,6 +10,7 @@ import ConnectionsPanel from '../components/settings/panels/ConnectionsPanel';
|
||||
import CronJobsPanel from '../components/settings/panels/CronJobsPanel';
|
||||
import DeveloperOptionsPanel from '../components/settings/panels/DeveloperOptionsPanel';
|
||||
import LocalModelPanel from '../components/settings/panels/LocalModelPanel';
|
||||
import MemoryDataPanel from '../components/settings/panels/MemoryDataPanel';
|
||||
import MemoryDebugPanel from '../components/settings/panels/MemoryDebugPanel';
|
||||
import MessagingPanel from '../components/settings/panels/MessagingPanel';
|
||||
import PrivacyPanel from '../components/settings/panels/PrivacyPanel';
|
||||
@@ -284,6 +285,7 @@ const Settings = () => {
|
||||
<Route path="team/invites" element={<TeamInvitesPanel />} />
|
||||
<Route path="developer-options" element={<DeveloperOptionsPanel />} />
|
||||
<Route path="webhooks-debug" element={<WebhooksDebugPanel />} />
|
||||
<Route path="memory-data" element={<MemoryDataPanel />} />
|
||||
<Route path="memory-debug" element={<MemoryDebugPanel />} />
|
||||
<Route path="recovery-phrase" element={<RecoveryPhrasePanel />} />
|
||||
</Routes>
|
||||
|
||||
Reference in New Issue
Block a user