Compare commits

..

2 Commits

Author SHA1 Message Date
42016cda27 fix(haivemind): start engine after MainScreen mounts
Some checks failed
CI / check (push) Has been cancelled
2026-08-20 10:35:03 +03:00
2c5e64039a fix(haivemind): start engine after MainScreen mounts to avoid NoMatches on #chat-log
Upstream haivemind_tui.py started the engine synchronously in HaivemindApp.on_mount while MainScreen mounts asynchronously, causing ProbeStart handler to query #chat-log on the default screen (NoMatches). Move the start_run trigger into MainScreen.on_mount so it runs only once the screen is active.
2026-08-20 10:33:57 +03:00
2 changed files with 30 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
--- a/haivemind_tui.py
+++ b/haivemind_tui.py
@@ -1195,6 +1195,14 @@
yield TheatrePanel(id="theatre-container")
yield Footer()
+ def on_mount(self) -> None:
+ app = self.app
+ if (
+ getattr(app, "_prompt", None) is not None
+ and getattr(app, "_config", None) is not None
+ ):
+ app.start_run(app._prompt, app._config)
+
class HaivemindApp(App):
CSS = CSS
@@ -1224,9 +1232,7 @@
def on_mount(self) -> None:
self.push_screen(MainScreen())
self.set_interval(0.15, self._tick_spinner)
- if self._prompt is not None and self._config is not None:
- self.start_run(self._prompt, self._config)
- else:
+ if self._prompt is None or self._config is None:
self.push_screen(ConfigScreen())
def start_run(self, prompt: str, config: HaivemindConfig) -> None:

View File

@@ -24,6 +24,8 @@ python3Packages.buildPythonApplication rec {
textual textual
]; ];
patches = [ ./fix-chat-log-race.patch ];
doCheck = false; doCheck = false;
pythonImportsCheck = [ pythonImportsCheck = [
"haivemind" "haivemind"