fix: handle bare {"stage":"name"} loading payload; harden watcher against parser errors
The stage-transition payload {"state":"loading","payload":{"stage":"mmproj_model"}}
lacks the stages/current/value keys — accessing them raised KeyError which crashed
the LogWatcher task, freezing the UI at the last good state indefinitely.
- log_parser: skip loading payloads missing stages/current/value (next message
has the full payload within milliseconds)
- log_watcher: wrap on_line calls in try/except so any future parser error
keeps the tail loop alive instead of killing the task
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -200,6 +200,10 @@ class LogParser:
|
||||
payload = data.get("payload")
|
||||
|
||||
if s == "loading" and payload:
|
||||
# Some transition messages only carry {"stage":"name"} with no
|
||||
# progress info — skip them; the next message has the full payload.
|
||||
if not all(k in payload for k in ("stages", "current", "value")):
|
||||
return None
|
||||
loading = LoadingInfo(
|
||||
stages=payload["stages"],
|
||||
current=payload["current"],
|
||||
|
||||
Reference in New Issue
Block a user