Tab-Review-Fixes: toter Gedaechtnis-Knopf, Konsole-Restart, Cockpit-Dopplung
- Gedaechtnis: 'Im Terminal starten' navigierte zu nicht existenter View 'terminal'
-> 'konsole'; interne Duplikate (AUTO-Set, CAT_LABEL_MAP) entfernt
- Konsole: box-console jetzt in Dienste-Liste + Restart-Allowlist; Offline-Overlay
bekommt Ein-Klick-'Dienst neu starten' statt SSH-Anweisung
- Cockpit Werkzeuge: Doppel-Eintrag ('Box-Shell' + 'Interaktives Terminal', beide
-> Konsole) zu EINEM Eintrag 'Konsole (Box-Shell)' zusammengelegt
- Auftragsbuch: 'Nichts zu entscheiden'-Banner beruecksichtigt blockierte
Ideen-Karten; Abschnitt heisst neutral 'Patch-Vorschlaege'
- Hermes-Diagnose: Klickweg (Dienste-Schublade oeffnen) statt veraltetem
Drawer-Namen + systemctl-Kommandos
- Entdecken: Upgrade-Knopf uebernimmt fremde Quant nicht mehr blind
- Skills: Status-Badge zeigt Klartext (abgeschaltet/defekt/...) statt rohem State
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -31,6 +31,12 @@ const BORDER_CLASSES: Record<string, string> = {
|
||||
rules: "border-l-violet-500/80", events: "border-l-amber-500/80",
|
||||
}
|
||||
|
||||
// Hex-Farben für Inline-Styles (Graph-Punkte, Detail-Panel) — Tailwind-Klassen aus
|
||||
// CAT_CONFIG greifen dort nicht.
|
||||
const CAT_COLOR_MAP: Record<string, string> = {
|
||||
identity: "#00f5ff", knowledge: "#3b82f6", rules: "#d946ef", events: "#fbbf24",
|
||||
}
|
||||
|
||||
// Onboarding-Prompt: der Nutzer startet damit ein Gespräch mit Hermes (Terminal/Telegram).
|
||||
const ONBOARDING_PROMPT = `Hi Hermes! Lass uns ein kurzes Onboarding machen, damit du dich künftig an mich erinnerst. Stell mir nacheinander ein paar kurze Fragen zu:
|
||||
1) wer ich bin und woran ich gerade arbeite,
|
||||
@@ -142,7 +148,8 @@ export function MemoryView() {
|
||||
|
||||
function goTerminal() {
|
||||
copyPrompt()
|
||||
window.dispatchEvent(new CustomEvent("mc-navigate", { detail: { view: "terminal" } }))
|
||||
// "konsole" ist die echte View-Id (nav.ts) — "terminal" existierte nie, der Knopf lief ins Leere.
|
||||
window.dispatchEvent(new CustomEvent("mc-navigate", { detail: { view: "konsole" } }))
|
||||
}
|
||||
|
||||
async function cleanup() {
|
||||
@@ -179,16 +186,6 @@ export function MemoryView() {
|
||||
return allItems.filter((m) => connectedIds.has(m.id))
|
||||
}, [sel, graph, allItems])
|
||||
|
||||
const CAT_COLOR_MAP: Record<string, string> = {
|
||||
identity: "#00f5ff", knowledge: "#3b82f6", rules: "#d946ef", events: "#fbbf24",
|
||||
}
|
||||
|
||||
const CAT_LABEL_MAP: Record<string, string> = {
|
||||
identity: "Identität", knowledge: "Wissen", rules: "Regeln", events: "Ereignisse",
|
||||
}
|
||||
|
||||
const AUTO = new Set(["auto", "agent", "hermes"])
|
||||
|
||||
return (
|
||||
<div className="space-y-6">
|
||||
{empty ? (
|
||||
@@ -437,10 +434,10 @@ export function MemoryView() {
|
||||
<div className="flex items-center gap-2 mb-3 shrink-0">
|
||||
<span className="w-2.5 h-2.5 rounded-full" style={{ background: CAT_COLOR_MAP[sel.category] }} />
|
||||
<span className="text-[9px] font-bold uppercase tracking-wider" style={{ color: CAT_COLOR_MAP[sel.category] }}>
|
||||
{CAT_LABEL_MAP[sel.category] || sel.category}
|
||||
{CAT_CONFIG[sel.category]?.label ?? sel.category}
|
||||
</span>
|
||||
<span className={`ml-auto text-[9px] font-mono flex items-center gap-1 ${AUTO.has(sel.source) ? "text-emerald-400" : "text-muted-foreground/70"}`}>
|
||||
{AUTO.has(sel.source) && <Sparkles className="h-2.5 w-2.5" />}
|
||||
<span className={`ml-auto text-[9px] font-mono flex items-center gap-1 ${AUTO_SOURCES.has(sel.source) ? "text-emerald-400" : "text-muted-foreground/70"}`}>
|
||||
{AUTO_SOURCES.has(sel.source) && <Sparkles className="h-2.5 w-2.5" />}
|
||||
{sel.source}
|
||||
</span>
|
||||
<button onClick={() => setSelected(null)} className="text-muted-foreground hover:text-foreground ml-1.5 cursor-pointer"><X className="h-4 w-4" /></button>
|
||||
|
||||
Reference in New Issue
Block a user