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:
Cyrus Gray
2026-04-06 22:02:54 +05:30
committed by GitHub
co-authored by Claude Opus 4.6
parent a2dff715f0
commit 48d937cf6b
5 changed files with 54 additions and 4 deletions
@@ -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;
+1 -4
View File
@@ -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"
+2
View File
@@ -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>