diff --git a/mateclaw-ui/src/views/Memory/components/FactList.vue b/mateclaw-ui/src/views/Memory/components/FactList.vue index 9ec3cc26..dba00c2a 100644 --- a/mateclaw-ui/src/views/Memory/components/FactList.vue +++ b/mateclaw-ui/src/views/Memory/components/FactList.vue @@ -39,7 +39,11 @@
-
📦
+ + + + +

{{ t('memory.facts.empty') }}

@@ -58,9 +62,22 @@ {{ t('memory.facts.used', { n: fact.useCount }) }}
- - - + + +
@@ -187,11 +204,13 @@ async function resolve(contradictionId: number, resolution: string) { .fact-card:hover .fact-actions { opacity: 1; } .action-btn { width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; - border: none; border-radius: 6px; background: transparent; font-size: 13px; - cursor: pointer; transition: background 0.12s; + border: none; border-radius: 6px; background: transparent; + color: var(--mc-text-tertiary); cursor: pointer; transition: all 0.12s; } -.action-btn:hover { background: var(--mc-bg-elevated); } -.action-btn.forget:hover { background: rgba(255,59,48,0.1); } +.action-btn:hover { background: var(--mc-bg-elevated); color: var(--mc-text-secondary); } +.action-btn.helpful:hover { color: #34c759; } +.action-btn.unhelpful:hover { color: #ff9f0a; } +.action-btn.forget:hover { background: rgba(255,59,48,0.1); color: #ff3b30; } /* States */ .fact-loading { padding: 8px 0; } @@ -199,7 +218,7 @@ async function resolve(contradictionId: number, resolution: string) { .skeleton-line { height: 10px; border-radius: 4px; background: var(--mc-border-light); margin-bottom: 8px; } .skeleton-line.short { width: 60%; } .fact-empty { display: flex; flex-direction: column; align-items: center; padding: 40px 0; color: var(--mc-text-tertiary); } -.empty-icon { font-size: 28px; margin-bottom: 8px; } +.empty-icon { width: 32px; height: 32px; margin-bottom: 10px; opacity: 0.7; } .slide-down-enter-active, .slide-down-leave-active { transition: all 0.2s ease; } .slide-down-enter-from, .slide-down-leave-to { opacity: 0; transform: translateY(-8px); } diff --git a/mateclaw-ui/src/views/Memory/components/MemoryBrowser.vue b/mateclaw-ui/src/views/Memory/components/MemoryBrowser.vue index 278122fb..0d1e4ac7 100644 --- a/mateclaw-ui/src/views/Memory/components/MemoryBrowser.vue +++ b/mateclaw-ui/src/views/Memory/components/MemoryBrowser.vue @@ -6,7 +6,7 @@ class="file-nav-btn" :class="{ active: currentFile === f.filename }" :title="f.filename" @click="loadFile(f.filename)"> - {{ fileIcon(f.filename) }} + {{ fileLabel(f.filename) }} @@ -54,7 +54,12 @@
-
📝
+ + + + + +

{{ t('memory.memoryBrowser.empty') }}

@@ -203,14 +208,24 @@ function renderMd(body: string): string { .join('') } +// Inline line-art icons (Feather style, 14px) keep the file tabs visually +// consistent with the sidebar nav and the rest of the admin UI. +function svgIcon(inner: string): string { + return `${inner}` +} + function fileIcon(filename: string): string { - if (filename === 'MEMORY.md') return '🧠' - if (filename === 'PROFILE.md') return '👤' - if (filename === 'SOUL.md') return '💫' - if (filename === 'structured/user.md') return '📋' - if (filename === 'structured/reference.md') return '🔗' - if (filename.startsWith('structured/')) return '📋' - return '📄' + if (filename === 'MEMORY.md') + return svgIcon('') + if (filename === 'PROFILE.md') + return svgIcon('') + if (filename === 'SOUL.md') + return svgIcon('') + if (filename === 'structured/reference.md') + return svgIcon('') + if (filename.startsWith('structured/')) + return svgIcon('') + return svgIcon('') } // Rank for display order: 0 = primary brain, 1 = persona, 2 = extracted facts. @@ -258,7 +273,7 @@ function fileLabel(filename: string): string { border-color: var(--mc-primary); color: var(--mc-text-primary); } -.file-nav-icon { font-size: 14px; line-height: 1; } +.file-nav-icon { display: inline-flex; align-items: center; } .file-nav-name { letter-spacing: 0.1px; } /* Section cards */ @@ -327,5 +342,5 @@ function fileLabel(filename: string): string { .skeleton-line { height: 10px; border-radius: 4px; background: var(--mc-border-light); margin-bottom: 8px; } .skeleton-line.short { width: 60%; } .browser-empty { display: flex; flex-direction: column; align-items: center; padding: 40px 0; color: var(--mc-text-tertiary); } -.empty-icon { font-size: 28px; margin-bottom: 8px; } +.empty-icon { width: 32px; height: 32px; margin-bottom: 10px; color: var(--mc-text-tertiary); opacity: 0.7; } diff --git a/mateclaw-ui/src/views/Memory/components/MorningCard.vue b/mateclaw-ui/src/views/Memory/components/MorningCard.vue index 05b3216a..9cd0541d 100644 --- a/mateclaw-ui/src/views/Memory/components/MorningCard.vue +++ b/mateclaw-ui/src/views/Memory/components/MorningCard.vue @@ -2,7 +2,14 @@
- 🌅 + + + + + + + + {{ t('memory.morningCard.title') }}
@@ -54,7 +61,7 @@ async function dismiss() { align-items: center; gap: 6px; } -.morning-card__icon { font-size: 16px; } +.morning-card__icon { display: inline-flex; align-items: center; color: var(--mc-primary); } .morning-card__title { flex: 1; font-size: 13px; font-weight: 600; color: var(--mc-text-primary); } .morning-card__close { background: none; border: none; font-size: 16px; color: var(--mc-text-tertiary); diff --git a/mateclaw-ui/src/views/Memory/index.vue b/mateclaw-ui/src/views/Memory/index.vue index b841400c..23a9fc32 100644 --- a/mateclaw-ui/src/views/Memory/index.vue +++ b/mateclaw-ui/src/views/Memory/index.vue @@ -44,14 +44,19 @@ @@ -145,7 +150,11 @@ @@ -361,7 +370,7 @@ function fmtTime(iso: string) { .skeleton-line.short { width: 60%; } .empty-state { display: flex; flex-direction: column; align-items: center; padding: 40px 0; color: var(--mc-text-tertiary); } -.empty-icon { font-size: 28px; margin-bottom: 8px; } +.empty-icon { width: 30px; height: 30px; margin-bottom: 10px; opacity: 0.7; } .empty-state p { font-size: 13px; } .error-state p { color: var(--mc-text-secondary); } .retry-btn { @@ -447,7 +456,7 @@ function fmtTime(iso: string) { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: var(--mc-text-tertiary); text-align: center; } -.detail-empty-icon { font-size: 36px; margin-bottom: 12px; } +.detail-empty-icon { width: 40px; height: 40px; margin-bottom: 14px; opacity: 0.6; } .detail-empty p { font-size: 14px; max-width: 260px; line-height: 1.5; } /* ========== Transitions ========== */