Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mistral-vibe for openSUSE:Factory 
checked in at 2026-09-10 15:40:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mistral-vibe (Old)
 and      /work/SRC/openSUSE:Factory/.mistral-vibe.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mistral-vibe"

Thu Sep 10 15:40:14 2026 rev:18 rq:1376854 version:2.25.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/mistral-vibe/mistral-vibe.changes        
2026-09-09 16:22:14.740762374 +0200
+++ /work/SRC/openSUSE:Factory/.mistral-vibe.new.1265/mistral-vibe.changes      
2026-09-10 15:40:16.482201840 +0200
@@ -1,0 +2,34 @@
+Thu Sep 10 05:45:04 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to 2.25.1:
+  * Background process tools show the command or PID with a typed
+    result widget; tool call groups fold into one summary line
+    (Ctrl+O toggles all groups and result bodies)
+  * New built-in worktree plugin; Desktop keeps 15 recent managed
+    Code worktrees, skipping active, dirty, untracked or unpushed ones
+  * Risky calls go back to the model to self-correct, escalating to
+    an approval prompt only after a streak
+  * Remove unauthenticated debugpy listener on localhost:5678
+    activated by DEBUG_MODE=true under vibe-acp
+  * Smart approve classifies on the fast Mistral model regardless of
+    session model; content-dumping git commands no longer
+    fast-approved
+  * Invalid API key error names the key origin; rejected keys no
+    longer offer a doomed /retry
+  * Built-in vibe plugin no longer dropped from sessions; user-scope
+    plugins keep their scope instead of showing as project
+  * GrowthBook default-value rollouts and boolean flags take effect;
+    cached experiment variants survive cold start and resume
+  * Bump harness to 0.4.3 (mistralai-vibe-local-harness stays
+    an unpackaged optional extra)
+- Rebase no_terminal.patch, fix_ui_tests.patch and
+  history_properties_timeout.patch for upstream test reshuffles
+- Extend obs-test-synchronization.patch to the chat autocompletion
+  UI tests: poll for the completed state instead of fixed pauses
+- Add harness_importorskip.patch: skip the unified-harness adapter
+  test module when the optional local harness is absent, like the
+  other harness test modules do
+- Add test-only BuildRequires on python3-setproctitle, newly
+  imported by tests/test_pytest_vibe.py
+
+-------------------------------------------------------------------

Old:
----
  mistral-vibe-2.25.0.tar.gz

New:
----
  harness_importorskip.patch
  mistral-vibe-2.25.1.tar.gz

----------(New B)----------
  New:  UI tests: poll for the completed state instead of fixed pauses
- Add harness_importorskip.patch: skip the unified-harness adapter
  test module when the optional local harness is absent, like the
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mistral-vibe.spec ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:18.370281059 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:18.373281185 +0200
@@ -28,7 +28,7 @@
 %endif
 %define origname mistral-vibe
 Name:           %{origname}%{psuffix}
-Version:        2.25.0
+Version:        2.25.1
 Release:        0
 Summary:        Minimal CLI coding agent by Mistral
 License:        Apache-2.0
@@ -59,6 +59,10 @@
 # a same-length config rewrite inside one filesystem timestamp tick was
 # invisible to the file fingerprint; hash the contents too
 Patch7:         fingerprint_file_contents.patch
+# PATCH-FIX-UPSTREAM harness_importorskip.patch [email protected]
+# the harness is an optional extra: skip the module when it is missing
+# instead of failing collection, same as the other harness test modules
+Patch8:         harness_importorskip.patch
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 BuildRequires:  python3-base >= 3.12
@@ -254,6 +258,7 @@
 BuildRequires:  python3-rich >= 15.0.0
 BuildRequires:  python3-rpds-py >= 0.30.0
 BuildRequires:  python3-sentry-sdk >= 2.64.0
+BuildRequires:  python3-setproctitle >= 1.3.7
 BuildRequires:  python3-sounddevice >= 0.5.5
 BuildRequires:  python3-soupsieve >= 2.8.4
 BuildRequires:  python3-sse-starlette >= 3.4.1

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:18.535287982 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:18.545288402 +0200
@@ -1,5 +1,5 @@
-mtime: 1788715116
-commit: c1044986e1fe5d923f2f53f27f3f11e52f0660460b483b82f505a2b9a26b9d6f
+mtime: 1789025131
+commit: f6e6054c54e838f254565f3521d9f8aaef6e0d7492ef79e56ccb824b3229fa92
 url: https://src.opensuse.org/AI/mistral-vibe.git
 revision: factory
 

++++++ build.specials.obscpio ++++++

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-09-10 09:25:31.000000000 +0200
@@ -0,0 +1,9 @@
+.assets
+_build.*
+*.obscpio
+*.obsinfo
+*.osc
+.pbuild
+_service:*
+mistral-vibe-*-build/
+.aider*

++++++ fix_ui_tests.patch ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:18.985306864 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:18.993307200 +0200
@@ -7,10 +7,10 @@
  tests/test_ui_rewind.py                           |    2 ++
  6 files changed, 20 insertions(+), 2 deletions(-)
 
-Index: mistral-vibe-2.25.0/tests/app_server/test_vibe_code.py
+Index: mistral-vibe-2.25.1/tests/app_server/test_vibe_code.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/app_server/test_vibe_code.py
-+++ mistral-vibe-2.25.0/tests/app_server/test_vibe_code.py
+--- mistral-vibe-2.25.1.orig/tests/app_server/test_vibe_code.py
++++ mistral-vibe-2.25.1/tests/app_server/test_vibe_code.py
 @@ -68,7 +68,7 @@ def test_app_server_import_does_not_requ
          capture_output=True,
          env=env,
@@ -20,10 +20,10 @@
      )
  
      assert result.returncode == 0, result.stderr
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_config_and_model_picker.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_config_and_model_picker.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_config_and_model_picker.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_config_and_model_picker.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_config_and_model_picker.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_config_and_model_picker.py
 @@ -1,5 +1,6 @@
  from __future__ import annotations
  
@@ -56,10 +56,10 @@
  
          assert app.config.active_model.alias == "alpha"
          assert app._current_bottom_app == BottomApp.Input
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_session_incremental_renderer.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_session_incremental_renderer.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_session_incremental_renderer.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_session_incremental_renderer.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_session_incremental_renderer.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_session_incremental_renderer.py
 @@ -5,6 +5,8 @@ from pathlib import Path
  import time
  
@@ -69,10 +69,10 @@
  from textual.widgets import Button
  
  from tests.conftest import build_test_agent_loop
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_skill_dispatch.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_skill_dispatch.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_skill_dispatch.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_skill_dispatch.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_skill_dispatch.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_skill_dispatch.py
 @@ -8,6 +8,8 @@ from weakref import WeakKeyDictionary
  
  import pytest
@@ -82,10 +82,10 @@
  from tests.conftest import (
      build_test_agent_loop,
      build_test_vibe_app,
-Index: mistral-vibe-2.25.0/tests/cli/textual_ui/test_app_server_requests.py
+Index: mistral-vibe-2.25.1/tests/cli/textual_ui/test_app_server_requests.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/textual_ui/test_app_server_requests.py
-+++ mistral-vibe-2.25.0/tests/cli/textual_ui/test_app_server_requests.py
+--- mistral-vibe-2.25.1.orig/tests/cli/textual_ui/test_app_server_requests.py
++++ mistral-vibe-2.25.1/tests/cli/textual_ui/test_app_server_requests.py
 @@ -8,6 +8,8 @@ from unittest.mock import AsyncMock, Mag
  
  import pytest
@@ -95,17 +95,17 @@
  from tests.conftest import (
      build_test_agent_loop,
      build_test_vibe_app,
-Index: mistral-vibe-2.25.0/tests/test_ui_rewind.py
+Index: mistral-vibe-2.25.1/tests/test_ui_rewind.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/test_ui_rewind.py
-+++ mistral-vibe-2.25.0/tests/test_ui_rewind.py
-@@ -6,6 +6,8 @@ import time
- 
+--- mistral-vibe-2.25.1.orig/tests/test_ui_rewind.py
++++ mistral-vibe-2.25.1/tests/test_ui_rewind.py
+@@ -4,6 +4,8 @@ from contextlib import suppress
+
  import pytest
- 
+
 +pytestmark = pytest.mark.terminal
 +
- from tests.conftest import build_test_agent_loop, build_test_vibe_app
+ from tests.conftest import build_test_agent_loop, build_test_vibe_app, 
wait_until
  from tests.mock.utils import mock_llm_chunk
  from tests.stubs.fake_backend import FakeBackend
 

++++++ harness_importorskip.patch ++++++
---
 tests/app_server/test_unified_harness_backend_adapter.py |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Index: 
mistral-vibe-2.25.1/tests/app_server/test_unified_harness_backend_adapter.py
===================================================================
--- 
mistral-vibe-2.25.1.orig/tests/app_server/test_unified_harness_backend_adapter.py
+++ mistral-vibe-2.25.1/tests/app_server/test_unified_harness_backend_adapter.py
@@ -12,8 +12,11 @@ from types import SimpleNamespace
 from typing import TYPE_CHECKING, Any, Literal, cast
 
-import mistralai_vibe_local_harness.session_protocol as 
harness_session_protocol
 import pytest
 import tomli_w
+
+# mistralai-vibe-local-harness is an optional extra: skip this module when
+# it is missing instead of failing collection, like the other harness tests
+harness_session_protocol = 
pytest.importorskip("mistralai_vibe_local_harness.session_protocol")
 
 from tests.conftest import build_test_agent_loop, build_test_vibe_config
 from tests.mock.utils import mock_llm_chunk

++++++ history_properties_timeout.patch ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:19.065310221 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:19.075310640 +0200
@@ -14,7 +14,7 @@
 +SEEDS = range(5)
  
  
- @pytest.mark.parametrize("seed", SEEDS)
+ def test_anchors_and_fixed_point() -> None:
 @@ -236,7 +236,7 @@
      manual edit survives projection, never silently dropped nor conflated 
with the
      decisions already baked into disk. Reverting every hunk then bottoms out 
at v0.

++++++ mistral-vibe-2.25.0.tar.gz -> mistral-vibe-2.25.1.tar.gz ++++++
++++ 26687 lines of diff (skipped)

++++++ no_terminal.patch ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:20.617375341 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:20.628375803 +0200
@@ -21,10 +21,10 @@
  tests/tools/test_ui_bash_execution.py                          |    2 ++
  tests/vscode_extension_promo/test_ui_vscode_extension_promo.py |    2 ++
  19 files changed, 39 insertions(+)
-Index: mistral-vibe-2.25.0/pyproject.toml
+Index: mistral-vibe-2.25.1/pyproject.toml
 ===================================================================
---- mistral-vibe-2.25.0.orig/pyproject.toml
-+++ mistral-vibe-2.25.0/pyproject.toml
+--- mistral-vibe-2.25.1.orig/pyproject.toml
++++ mistral-vibe-2.25.1/pyproject.toml
 @@ -273,6 +273,7 @@ timeout = 10
  markers = [
      "unified_supported: backend contract behavior implemented by the Unified 
Harness",
@@ -33,10 +33,10 @@
  ]
  filterwarnings = [
      # (e2e) streaming mock server is started in a thread; and the cli is 
spawn in a fork
-Index: mistral-vibe-2.25.0/tests/cli/test_switching_mode.py
+Index: mistral-vibe-2.25.1/tests/cli/test_switching_mode.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_switching_mode.py
-+++ mistral-vibe-2.25.0/tests/cli/test_switching_mode.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_switching_mode.py
++++ mistral-vibe-2.25.1/tests/cli/test_switching_mode.py
 @@ -5,6 +5,8 @@ from unittest.mock import patch
  
  import pytest
@@ -46,10 +46,10 @@
  from tests.conftest import build_test_agent_loop, build_test_vibe_app
  from tests.mock.utils import mock_llm_chunk
  from tests.stubs.fake_backend import FakeBackend
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_clipboard_notifications.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_clipboard_notifications.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_clipboard_notifications.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_clipboard_notifications.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_clipboard_notifications.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_clipboard_notifications.py
 @@ -3,6 +3,8 @@ from __future__ import annotations
  from unittest.mock import patch
  
@@ -59,10 +59,10 @@
  from textual.selection import Selection
  from textual.widget import Widget
  
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_config_and_model_picker.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_config_and_model_picker.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_config_and_model_picker.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_config_and_model_picker.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_config_and_model_picker.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_config_and_model_picker.py
 @@ -3,6 +3,9 @@ from __future__ import annotations
  from unittest.mock import AsyncMock, patch
  
@@ -73,10 +73,10 @@
  from textual.widgets import OptionList
  
  from tests.conftest import build_test_vibe_app, build_test_vibe_config, 
wait_until
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_config_screen.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_config_screen.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_config_screen.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_config_screen.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_config_screen.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_config_screen.py
 @@ -4,6 +4,9 @@ from pathlib import Path
  import tomllib
  
@@ -87,10 +87,10 @@
  from textual.pilot import Pilot
  import tomli_w
  
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_exit_command.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_exit_command.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_exit_command.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_exit_command.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_exit_command.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_exit_command.py
 @@ -4,6 +4,8 @@ from typing import Any
  
  import pytest
@@ -100,10 +100,10 @@
  from tests.conftest import build_test_vibe_app
  from vibe.cli.textual_ui.widgets.chat_input.container import 
ChatInputContainer
  from vibe.cli.textual_ui.widgets.messages import SlashCommandMessage, 
UserMessage
-Index: mistral-vibe-2.25.0/tests/cli/test_ui_theme_picker.py
+Index: mistral-vibe-2.25.1/tests/cli/test_ui_theme_picker.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_ui_theme_picker.py
-+++ mistral-vibe-2.25.0/tests/cli/test_ui_theme_picker.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_ui_theme_picker.py
++++ mistral-vibe-2.25.1/tests/cli/test_ui_theme_picker.py
 @@ -7,6 +7,8 @@ from unittest.mock import AsyncMock, Moc
  
  import pytest
@@ -113,10 +113,10 @@
  from tests.conftest import build_test_vibe_app, build_test_vibe_config
  from vibe.cli.textual_ui.app import BottomApp
  from vibe.cli.textual_ui.widgets.theme_picker import ThemePickerApp
-Index: mistral-vibe-2.25.0/tests/cli/test_whoami_command.py
+Index: mistral-vibe-2.25.1/tests/cli/test_whoami_command.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_whoami_command.py
-+++ mistral-vibe-2.25.0/tests/cli/test_whoami_command.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_whoami_command.py
++++ mistral-vibe-2.25.1/tests/cli/test_whoami_command.py
 @@ -4,6 +4,8 @@ import asyncio
  
  import pytest
@@ -126,10 +126,10 @@
  from tests.conftest import build_test_vibe_app
  from tests.stubs.fake_account_gateway import FakeAccountGateway
  from tests.stubs.fake_identity_gateway import FakeIdentityGateway
-Index: mistral-vibe-2.25.0/tests/cli/test_word_selection.py
+Index: mistral-vibe-2.25.1/tests/cli/test_word_selection.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/test_word_selection.py
-+++ mistral-vibe-2.25.0/tests/cli/test_word_selection.py
+--- mistral-vibe-2.25.1.orig/tests/cli/test_word_selection.py
++++ mistral-vibe-2.25.1/tests/cli/test_word_selection.py
 @@ -3,6 +3,8 @@ from __future__ import annotations
  from typing import Any, ClassVar, cast
  
@@ -139,10 +139,10 @@
  from textual import events
  from textual.geometry import Offset, Region
  from textual.screen import Screen
-Index: mistral-vibe-2.25.0/tests/cli/textual_ui/test_chat_input_word_drag.py
+Index: mistral-vibe-2.25.1/tests/cli/textual_ui/test_chat_input_word_drag.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/textual_ui/test_chat_input_word_drag.py
-+++ mistral-vibe-2.25.0/tests/cli/textual_ui/test_chat_input_word_drag.py
+--- mistral-vibe-2.25.1.orig/tests/cli/textual_ui/test_chat_input_word_drag.py
++++ mistral-vibe-2.25.1/tests/cli/textual_ui/test_chat_input_word_drag.py
 @@ -1,6 +1,8 @@
  from __future__ import annotations
  
@@ -152,23 +152,23 @@
  from textual import events
  from textual.widgets.text_area import Selection
  
-Index: mistral-vibe-2.25.0/tests/cli/textual_ui/test_message_queue_ui.py
+Index: mistral-vibe-2.25.1/tests/cli/textual_ui/test_message_queue_ui.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/cli/textual_ui/test_message_queue_ui.py
-+++ mistral-vibe-2.25.0/tests/cli/textual_ui/test_message_queue_ui.py
-@@ -6,6 +6,8 @@ import time
- 
+--- mistral-vibe-2.25.1.orig/tests/cli/textual_ui/test_message_queue_ui.py
++++ mistral-vibe-2.25.1/tests/cli/textual_ui/test_message_queue_ui.py
+@@ -4,6 +4,8 @@ from collections.abc import Iterator
+
  import pytest
- 
+
 +pytestmark = pytest.mark.terminal
 +
- from tests.conftest import build_test_agent_loop, build_test_vibe_app
- from tests.mock.utils import mock_llm_chunk
- from tests.stubs.fake_backend import FakeBackend
-Index: mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_resume.py
+ from tests.conftest import (
+     build_test_agent_loop,
+     build_test_vibe_app,
+ Index: 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_resume.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/e2e/agent_loop_characterization/test_resume.py
-+++ mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_resume.py
+--- 
mistral-vibe-2.25.1.orig/tests/e2e/agent_loop_characterization/test_resume.py
++++ mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_resume.py
 @@ -8,6 +8,8 @@ import time
  import pexpect
  import pytest
@@ -178,10 +178,10 @@
  from tests.e2e.agent_loop_characterization.support import (
      assert_assistant_tool_call_present,
      assert_message_content_present,
-Index: 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_subagents.py
+Index: 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_subagents.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/e2e/agent_loop_characterization/test_subagents.py
-+++ mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_subagents.py
+--- 
mistral-vibe-2.25.1.orig/tests/e2e/agent_loop_characterization/test_subagents.py
++++ mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_subagents.py
 @@ -5,6 +5,8 @@ from pathlib import Path
  import pexpect
  import pytest
@@ -191,10 +191,10 @@
  from tests.e2e.agent_loop_characterization.support import (
      assert_message_content_present,
      assert_tool_result_contains,
-Index: 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_tool_execution.py
+Index: 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_tool_execution.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/e2e/agent_loop_characterization/test_tool_execution.py
-+++ 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_tool_execution.py
+--- 
mistral-vibe-2.25.1.orig/tests/e2e/agent_loop_characterization/test_tool_execution.py
++++ 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_tool_execution.py
 @@ -6,6 +6,8 @@ from pathlib import Path
  import pexpect
  import pytest
@@ -204,10 +204,10 @@
  from tests.e2e.agent_loop_characterization.support import (
      answer_approval,
      assert_assistant_tool_call_present,
-Index: 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_tool_permissions.py
+Index: 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_tool_permissions.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/e2e/agent_loop_characterization/test_tool_permissions.py
-+++ 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_tool_permissions.py
+--- 
mistral-vibe-2.25.1.orig/tests/e2e/agent_loop_characterization/test_tool_permissions.py
++++ 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_tool_permissions.py
 @@ -6,6 +6,8 @@ from pathlib import Path
  import pexpect
  import pytest
@@ -217,10 +217,10 @@
  from tests.e2e.agent_loop_characterization.support import (
      answer_approval,
      assert_tool_result_contains,
-Index: 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_user_interaction.py
+Index: 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_user_interaction.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/e2e/agent_loop_characterization/test_user_interaction.py
-+++ 
mistral-vibe-2.25.0/tests/e2e/agent_loop_characterization/test_user_interaction.py
+--- 
mistral-vibe-2.25.1.orig/tests/e2e/agent_loop_characterization/test_user_interaction.py
++++ 
mistral-vibe-2.25.1/tests/e2e/agent_loop_characterization/test_user_interaction.py
 @@ -7,6 +7,8 @@ import time
  import pexpect
  import pytest
@@ -230,10 +230,10 @@
  from tests.e2e.agent_loop_characterization.support import (
      APPROVAL_INPUT_GRACE_PERIOD_S,
      assert_tool_result_contains,
-Index: mistral-vibe-2.25.0/tests/onboarding/test_ui_onboarding.py
+Index: mistral-vibe-2.25.1/tests/onboarding/test_ui_onboarding.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/onboarding/test_ui_onboarding.py
-+++ mistral-vibe-2.25.0/tests/onboarding/test_ui_onboarding.py
+--- mistral-vibe-2.25.1.orig/tests/onboarding/test_ui_onboarding.py
++++ mistral-vibe-2.25.1/tests/onboarding/test_ui_onboarding.py
 @@ -10,6 +10,8 @@ from unittest.mock import MagicMock, pat
  import keyring
  from keyring.errors import KeyringError
@@ -243,10 +243,10 @@
  from textual.content import Content
  from textual.events import Resize
  from textual.geometry import Size
-Index: mistral-vibe-2.25.0/tests/tools/test_ui_bash_execution.py
+Index: mistral-vibe-2.25.1/tests/tools/test_ui_bash_execution.py
 ===================================================================
---- mistral-vibe-2.25.0.orig/tests/tools/test_ui_bash_execution.py
-+++ mistral-vibe-2.25.0/tests/tools/test_ui_bash_execution.py
+--- mistral-vibe-2.25.1.orig/tests/tools/test_ui_bash_execution.py
++++ mistral-vibe-2.25.1/tests/tools/test_ui_bash_execution.py
 @@ -5,6 +5,8 @@ import time
  from pydantic import JsonValue
  import pytest
@@ -256,10 +256,10 @@
  from tests.conftest import build_test_agent_loop, build_test_vibe_app
  from tests.mock.utils import mock_llm_chunk
  from tests.stubs.fake_backend import FakeBackend
-Index: 
mistral-vibe-2.25.0/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
+Index: 
mistral-vibe-2.25.1/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
 ===================================================================
---- 
mistral-vibe-2.25.0.orig/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
-+++ 
mistral-vibe-2.25.0/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
+--- 
mistral-vibe-2.25.1.orig/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
++++ 
mistral-vibe-2.25.1/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py
 @@ -8,6 +8,8 @@ from unittest.mock import patch
  
  import pytest

++++++ obs-test-synchronization.patch ++++++
--- /var/tmp/diff_new_pack.QYGfmi/_old  2026-09-10 15:40:20.651376768 +0200
+++ /var/tmp/diff_new_pack.QYGfmi/_new  2026-09-10 15:40:20.674377733 +0200
@@ -73,4 +73,88 @@
          await _assert_no_notifications(app, pilot, timeout=0.3)
      assert notifier.fetch_update_calls == 1
  
+Index: mistral-vibe-2.25.1/tests/autocompletion/test_ui_chat_autocompletion.py
+===================================================================
+--- 
mistral-vibe-2.25.1.orig/tests/autocompletion/test_ui_chat_autocompletion.py
++++ mistral-vibe-2.25.1/tests/autocompletion/test_ui_chat_autocompletion.py
+@@ -2,6 +2,7 @@
+ 
+ from pathlib import Path
+ 
++import asyncio
+ import pytest
+ from textual.widgets import Markdown
+ 
+@@ -12,6 +13,14 @@
+     _CompletionRow,
+ )
+ from vibe.cli.textual_ui.widgets.chat_input.container import 
ChatInputContainer
++
++async def _wait_until(pilot, predicate, timeout: float = 6.0) -> bool:
++    deadline = asyncio.get_running_loop().time() + timeout
++    while asyncio.get_running_loop().time() < deadline:
++        if predicate():
++            return True
++        await pilot.pause(0.05)
++    return predicate()
+ 
+ 
+ @pytest.mark.asyncio
+@@ -183,6 +192,21 @@
+ 
+         await pilot.press(*"@src/core/extra/")
+ 
++        expected = (
++            "src/core/extra/extra_file_1.py",
++            "src/core/extra/extra_file_10.py",
++            "src/core/extra/extra_file_11.py",
++            "src/core/extra/extra_file_12.py",
++            "src/core/extra/extra_file_2.py",
++            "src/core/extra/extra_file_3.py",
++            "src/core/extra/extra_file_4.py",
++            "src/core/extra/extra_file_5.py",
++            "src/core/extra/extra_file_6.py",
++            "src/core/extra/extra_file_7.py",
++        )
++        assert await _wait_until(
++            pilot, lambda: all(e in popup.content_text for e in expected)
++        )
+         popup_content = popup.content_text
+         assert "src/core/extra/extra_file_1.py" in popup_content
+         assert "src/core/extra/extra_file_10.py" in popup_content
+@@ -225,9 +249,8 @@
+ 
+         await pilot.press(*"Print @REA")
+         await pilot.press("tab")
+-        await pilot.pause(0.2)
+-
+-        assert chat_input.value == "Print @README.md "
++
++        assert await _wait_until(pilot, lambda: chat_input.value == "Print 
@README.md ")
+         assert popup.styles.display == "none"
+ 
+ 
+@@ -242,7 +265,7 @@
+         await pilot.press(*"Print @src/m")
+         await pilot.press("enter")
+ 
+-        assert chat_input.value == "Print @src/main.py "
++        assert await _wait_until(pilot, lambda: chat_input.value == "Print 
@src/main.py ")
+         assert popup.styles.display == "none"
+ 
+ 
+@@ -317,7 +340,7 @@
+         await pilot.press(*message_to_fill_history)
+         await pilot.press("enter")
+         await pilot.press("up", "up")
+-        assert chat_input.value == "Check @src/main.py"
++        assert await _wait_until(pilot, lambda: chat_input.value == "Check 
@src/main.py")
+         await pilot.pause(0.2)
+         # ensure popup is hidden - user was navigating history: we don't want 
to interrupt
+         assert popup.styles.display == "none"
+@@ -329,3 +353,3 @@
+         await pilot.pause(0.1)
+-        assert chat_input.value == "Check @src/main.py"
++        assert await _wait_until(pilot, lambda: chat_input.value == "Check 
@src/main.py")
+         await pilot.pause(0.2)
 

Reply via email to