Update 8 - LowPowerMode + Bugfixes
release-tag / release-image (push) Successful in 2m25s

This commit is contained in:
2026-08-05 06:34:02 +02:00
parent 8dc4de3eae
commit 18255e4b98
18 changed files with 1271 additions and 290 deletions
+9 -1
View File
@@ -1457,7 +1457,15 @@ func metadataString(metadata map[string]any, key string) string {
if metadata == nil {
return ""
}
return strings.TrimSpace(fmt.Sprint(metadata[key]))
value, ok := metadata[key]
if !ok || value == nil {
return ""
}
text := strings.TrimSpace(fmt.Sprint(value))
if text == "" || strings.EqualFold(text, "<nil>") || strings.EqualFold(text, "null") {
return ""
}
return text
}
func metadataStringSlice(metadata map[string]any, key string) []string {
@@ -89,3 +89,21 @@ func TestLoadResearchEvidenceCanReuseInMemoryQueuedRecord(t *testing.T) {
t.Fatalf("unexpected cached evidence: %+v", loaded)
}
}
func TestMetadataStringTreatsMissingAndNilAsEmpty(t *testing.T) {
cases := []map[string]any{
nil,
{},
{"evidence_path": nil},
{"evidence_path": "<nil>"},
{"evidence_path": "null"},
}
for _, metadata := range cases {
if got := metadataString(metadata, "evidence_path"); got != "" {
t.Fatalf("expected empty metadata string, got %q from %#v", got, metadata)
}
}
if got := metadataString(map[string]any{"evidence_path": " research-evidence/x.json "}, "evidence_path"); got != "research-evidence/x.json" {
t.Fatalf("unexpected normalized metadata string %q", got)
}
}
+4 -3
View File
@@ -392,13 +392,14 @@ func TestRuntimeSettingsDisableThinkingAndPersist(t *testing.T) {
LearningCategories: []string{"Netzwerk"},
DisplayCategories: []string{"GLPI KB"},
ThinkingCategories: []string{"Netzwerk"},
ViewMode: "honeycomb",
ViewMode: "constellation",
MaxDisplayNodes: 4321,
LowPowerMode: true,
})
if err != nil {
t.Fatal(err)
}
if updated.LearningEnabled || updated.ThinkingEnabled || updated.ViewMode != "honeycomb" || updated.MaxDisplayNodes != 4321 {
if updated.LearningEnabled || updated.ThinkingEnabled || updated.ViewMode != "constellation" || updated.MaxDisplayNodes != 4321 || !updated.LowPowerMode {
t.Fatalf("unexpected runtime settings: %+v", updated)
}
if e.RequestEnrich("manual") {
@@ -417,7 +418,7 @@ func TestRuntimeSettingsDisableThinkingAndPersist(t *testing.T) {
}
e2 := New(cfg, g2, activity.New(20))
loaded := e2.RuntimeSettings()
if loaded.LearningEnabled || loaded.ThinkingEnabled || loaded.ViewMode != "honeycomb" || loaded.MaxDisplayNodes != 4321 || len(loaded.DisplayCategories) != 1 {
if loaded.LearningEnabled || loaded.ThinkingEnabled || loaded.ViewMode != "constellation" || loaded.MaxDisplayNodes != 4321 || !loaded.LowPowerMode || len(loaded.DisplayCategories) != 1 {
t.Fatalf("runtime settings were not restored: %+v", loaded)
}
}
+4 -1
View File
@@ -20,6 +20,7 @@ type RuntimeSettings struct {
ThinkingCategories []string `json:"thinking_categories"`
ViewMode string `json:"view_mode"`
MaxDisplayNodes int `json:"max_display_nodes"`
LowPowerMode bool `json:"low_power_mode"`
}
type CategoryInfo struct {
@@ -36,6 +37,7 @@ func (e *Engine) defaultRuntimeSettings() RuntimeSettings {
ThinkingCategories: append([]string(nil), e.Cfg.ThinkingCategories...),
ViewMode: e.Cfg.DefaultView,
MaxDisplayNodes: e.Cfg.MaxDisplayNodes,
LowPowerMode: e.Cfg.LowPowerMode,
})
}
@@ -47,7 +49,7 @@ func normalizeRuntimeSettings(in RuntimeSettings) RuntimeSettings {
if in.ViewMode == "" {
in.ViewMode = "neural"
}
if in.ViewMode != "neural" && in.ViewMode != "honeycomb" {
if in.ViewMode != "neural" && in.ViewMode != "honeycomb" && in.ViewMode != "constellation" {
in.ViewMode = "neural"
}
if in.MaxDisplayNodes < 0 {
@@ -149,6 +151,7 @@ func (e *Engine) SetRuntimeSettings(settings RuntimeSettings) (RuntimeSettings,
"thinking_categories": len(settings.ThinkingCategories),
"view_mode": settings.ViewMode,
"max_display_nodes": settings.MaxDisplayNodes,
"low_power_mode": settings.LowPowerMode,
},
})
return settings, nil