From cc902db4ab3175444cd77f4fd489c23636ba668d Mon Sep 17 00:00:00 2001 From: oyi77 Date: Thu, 2 Apr 2026 23:44:11 +0700 Subject: [PATCH] fix(dashboard): add Memory/Skills sidebar navigation and i18n keys - Add "memory" and "skills" entries to HIDEABLE_SIDEBAR_ITEM_IDS and PRIMARY_SIDEBAR_ITEMS - Add sidebar translation keys for memory and skills pages - Add complete "memory" and "skills" i18n sections to en.json with all UI labels - Replace all hardcoded English text in memory/page.tsx with useTranslations() calls Memory and Skills pages now appear in the sidebar and render with proper i18n support. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- src/app/(dashboard)/dashboard/memory/page.tsx | 40 +++++++------- src/i18n/messages/en.json | 55 ++++++++++++++++++- src/shared/constants/sidebarVisibility.ts | 4 ++ 3 files changed, 78 insertions(+), 21 deletions(-) diff --git a/src/app/(dashboard)/dashboard/memory/page.tsx b/src/app/(dashboard)/dashboard/memory/page.tsx index 813b4c2a3a..43d02b0e1b 100644 --- a/src/app/(dashboard)/dashboard/memory/page.tsx +++ b/src/app/(dashboard)/dashboard/memory/page.tsx @@ -108,32 +108,32 @@ export default function MemoryPage() { return (
-

Memory Management

+

{t("title")}

- - + +
-
Total Entries
+
{t("totalEntries")}
{stats.totalEntries}
-
Tokens Used
+
{t("tokensUsed")}
{stats.tokensUsed.toLocaleString()}
-
Hit Rate
+
{t("hitRate")}
{(stats.hitRate * 100).toFixed(1)}%
@@ -142,20 +142,20 @@ export default function MemoryPage() {
-

Memories

+

{t("memories")}

setSearchQuery(e.target.value)} className="w-64" />
@@ -164,11 +164,11 @@ export default function MemoryPage() { - - - - - + + + + + @@ -182,7 +182,7 @@ export default function MemoryPage() { diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 1e0ffaeaca..f8d4783064 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -151,6 +151,8 @@ "limits": "Limits & Quotas", "cliTools": "CLI Tools", "media": "Media", + "memory": "Memory", + "skills": "Skills", "settings": "Settings", "translator": "Translator", "playground": "Playground", @@ -1266,6 +1268,57 @@ "events": "Events", "artifacts": "Artifacts" }, + "memory": { + "title": "Memory Management", + "description": "View and manage stored memory entries", + "memories": "Memories", + "totalEntries": "Total Entries", + "tokensUsed": "Tokens Used", + "hitRate": "Hit Rate", + "loading": "Loading memories...", + "noMemories": "No memories found", + "search": "Search memories...", + "allTypes": "All Types", + "export": "Export", + "import": "Import", + "addMemory": "Add Memory", + "type": "Type", + "key": "Key", + "content": "Content", + "created": "Created", + "actions": "Actions", + "factual": "Factual", + "episodic": "Episodic", + "procedural": "Procedural", + "semantic": "Semantic" + }, + "skills": { + "title": "Skills", + "description": "Manage and monitor AI skills", + "skillsTab": "Skills", + "executionsTab": "Executions", + "sandboxTab": "Sandbox", + "loading": "Loading skills...", + "noSkills": "No skills found", + "noExecutions": "No executions found", + "enabled": "Enabled", + "disabled": "Disabled", + "version": "Version", + "description": "Description", + "skill": "Skill", + "status": "Status", + "duration": "Duration", + "time": "Time", + "sandboxConfig": "Sandbox Configuration", + "cpuLimit": "CPU Limit", + "cpuLimitDesc": "Maximum execution time per skill", + "memoryLimit": "Memory Limit", + "memoryLimitDesc": "Maximum memory allocation", + "timeout": "Timeout", + "timeoutDesc": "Maximum wait time for response", + "networkAccess": "Network Access", + "networkAccessDesc": "Allow outbound network requests" + }, "health": { "title": "System Health", "description": "Real-time monitoring of your OmniRoute instance", @@ -3028,4 +3081,4 @@ "expires": "Expires", "actions": "Actions" } -} \ No newline at end of file +} diff --git a/src/shared/constants/sidebarVisibility.ts b/src/shared/constants/sidebarVisibility.ts index 1b31878424..ad6015aa73 100644 --- a/src/shared/constants/sidebarVisibility.ts +++ b/src/shared/constants/sidebarVisibility.ts @@ -11,6 +11,8 @@ export const HIDEABLE_SIDEBAR_ITEM_IDS = [ "cache", "cli-tools", "agents", + "memory", + "skills", "translator", "playground", "media", @@ -55,6 +57,8 @@ const PRIMARY_SIDEBAR_ITEMS: readonly SidebarItemDefinition[] = [ { id: "analytics", href: "/dashboard/analytics", i18nKey: "analytics", icon: "analytics" }, { id: "limits", href: "/dashboard/limits", i18nKey: "limits", icon: "tune" }, { id: "cache", href: "/dashboard/cache", i18nKey: "cache", icon: "cached" }, + { id: "memory", href: "/dashboard/memory", i18nKey: "memory", icon: "psychology" }, + { id: "skills", href: "/dashboard/skills", i18nKey: "skills", icon: "auto_awesome" }, ]; const CLI_SIDEBAR_ITEMS: readonly SidebarItemDefinition[] = [
TypeKeyContentCreatedActions{t("type")}{t("key")}{t("content")}{t("created")}{t("actions")}
{new Date(memory.createdAt).toLocaleDateString()}