gui: fix agent state dot colors and parentPaused propagation

- Update parentPaused on agents during incremental session updates
- Set parentPaused and parentExpanded when inserting new agents
- Update session paused property during updates
- Use explicit === true check for parentPaused
This commit is contained in:
Levi Neely 2026-08-04 16:15:40 +02:00
parent 3d739a9560
commit 9e5352f700
1 changed files with 8 additions and 2 deletions

View File

@ -284,6 +284,8 @@ ApplicationWindow {
var agents = sess.agents || []
var agentCount = agents.length
var displayLabel = agentCount > 0 ? sessionName + " (" + agentCount + ")" : sessionName
var isPaused = sess.paused || false
var wasExpanded = sessionExpandedCache[sessionId] !== undefined ? sessionExpandedCache[sessionId] : true
// Update session properties (use QML-computed color, avoids C++ call)
sessionTreeModel.setProperty(sessionIdx, "displayName", displayLabel)
@ -291,6 +293,7 @@ ApplicationWindow {
sessionTreeModel.setProperty(sessionIdx, "state", sess.state || "")
sessionTreeModel.setProperty(sessionIdx, "model", sess.model || "")
sessionTreeModel.setProperty(sessionIdx, "connectionColor", computeConnectionColor(sess))
sessionTreeModel.setProperty(sessionIdx, "paused", isPaused)
// Build agent lookup
var newAgentIds = {}
@ -310,6 +313,7 @@ ApplicationWindow {
sessionTreeModel.setProperty(idx, "state", agent.state || "idle")
sessionTreeModel.setProperty(idx, "connected", agent.connected)
sessionTreeModel.setProperty(idx, "displayName", agent.name)
sessionTreeModel.setProperty(idx, "parentPaused", isPaused)
} else {
// Remove agent
sessionTreeModel.remove(idx)
@ -343,7 +347,9 @@ ApplicationWindow {
level: 1,
state: ag.state || "idle",
connected: ag.connected,
displayName: ag.name
displayName: ag.name,
parentExpanded: wasExpanded,
parentPaused: isPaused
})
}
}
@ -1129,7 +1135,7 @@ ApplicationWindow {
return "#9e9e9e"
}
// Agent: gray if parent session is paused
if (parentPaused) return "#9e9e9e"
if (parentPaused === true) return "#9e9e9e"
// Agent: use state role from model
var s = state || "idle"
if (s === "idle") return "#4caf50"