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-08-09 21:43:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mistral-vibe (Old) and /work/SRC/openSUSE:Factory/.mistral-vibe.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mistral-vibe" Sun Aug 9 21:43:54 2026 rev:13 rq:1370290 version:2.24.0 Changes: -------- --- /work/SRC/openSUSE:Factory/mistral-vibe/mistral-vibe.changes 2026-07-10 17:50:26.679879231 +0200 +++ /work/SRC/openSUSE:Factory/.mistral-vibe.new.16738/mistral-vibe.changes 2026-08-09 21:45:59.324061473 +0200 @@ -1,0 +2,234 @@ +Thu Aug 6 21:29:00 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 2.24.0: + - Added + - Admin config layer for shared/enforced config that applies + over user config + - "Default" (unpinned) model option in /model and /config to + track the recommended model without pinning a specific + alias + - Server-side default model routing via experiment, never + overriding explicit pins + - LLM retries surfaced in ACP/VS Code conversations via + _session/retrying notification + - Explore subagent can load skills + - Local sessions start in the selected worktree + - User and project config layers compose; trusted project + config overlays user config instead of replacing it + - Startup duration telemetry (vibe.startup) + - Changed + - Experiment variants routed through the config schema; + TOML/env/overrides now take precedence over GrowthBook + assignments + - Autocopy: keyboard copy shortcuts give feedback, + double/triple-click drag improved, and + autocopy_to_clipboard documented + - Fixed + - Drag-and-drop of files into the terminal when unfocused + (iTerm2, Ghostty) + - Subagent session handoff after compaction + - Stale devstral-small thinking setting migrated to off + - Noisy non-Vibe events dropped from Sentry + - ACP returns max_turn_requests stop reason instead of + erroring on turn limit + - /resume listing speed no longer scales with total session + count (persistent index) + +------------------------------------------------------------------- +Thu Aug 6 21:03:19 UTC 2026 - Matej Cepl <[email protected]> + +- Add warning_cleanup.patch suppressing warnings caused by + build-environment and dependency compatibility + +------------------------------------------------------------------- +Wed Aug 5 13:29:03 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 2.23.3: + - Added + - /retry command to retry an interrupted response + - /rewind now lets you choose between forking and rewinding + in place + - LLM retries surfaced in the UI and logs + - Read the config catalogue without an attached session + - Changed + - /status shows provider prompt-cache usage and discounts + cached tokens from the session cost + - Native copy hint on the clipboard notice + - Fixed + - Refused config change no longer wipes the picker + - Git fsmonitor hook disabled in project context + - Signed reasoning blocks preserved + - Tab hint colored in config edit modal + - UPX disabled in the PyInstaller specs + - List formatting preserved when copying a selection from the + TUI + - Duplicate approval widget prevented when callbacks overlap + - ACP usage update sent on session resume, fork, and new + - Context token display updated on session resume + - More frequent context window updates in ACP + - Removed + - Unreachable chat mode +- Update to 2.23.2: + - Added + - Skill-creator built-in skill: a guided flow to author, + update, and delete your own skills + - Browser sign-in can target a custom login domain for + self-hosted or private-gateway deployments + - Session stats now track provider cache-hit (cached) tokens + - Changed + - Redesigned /config as a searchable, full-screen settings + browser with typed edit modals and per-layer origin display + - App-server protocol extended and packaged as a standalone + vibe-app-server binary for desktop integration + - Fixed + - Cached-token counts now reported in session stats instead + of always zero + - Zed ACP packaging preserves symlinks by shipping .tar.gz + archives + - grep result chips open the correct file and no longer leak + absolute host paths into context (ACP) + - ACP /rewind truncates in place instead of forking + - Extra fields in the whoami response no longer rejected + - ACP session history sorted by recency + - Blank permission prompt and duplicated user message in the + ACP/VS Code webview + - WhoAmI result again tolerates extra fields +- Update to 2.23.1: + - Fixed + - Crash when @-mentioning a file, which aborted the turn +- Update to 2.23.0: + - Added + - [A/B testing] OS-native managed shell tools + - vibe mcp add and vibe mcp remove commands to add and remove + remote MCP servers without editing TOML + - Auto theme that follows terminal/OS appearance + - ACP project links surface for desktop integration + - Dense, grouped tool-call rendering in the TUI + - Changed + - Trust dialog now defaults to "Trust folder" and is + simplified + - Tool descriptions compressed to reduce context bloat + - Smoother, faster scrolling in long conversations + - Fixed unnecessary textual relayout computation on + constant-size animation frames, removing lag spikes + - Major internal refactor introducing a JSON-RPC 2.0 app + server as the single runtime owner between delivery + surfaces (TUI, -p, ACP) and the core engine, replacing + direct AgentLoop/callback coupling with a typed, projected + protocol + - Fixed + - Option+Left/Right word navigation in the chat input + - Unsigned thinking blocks dropped on backend replay + - SGR mouse protocol renegotiated when the emulator sends x10 + bytes + - Crash on /resume delete confirmation + - Empty mapping treated as absent in CONCAT/UNION config + merge + - LC_CTYPE used instead of LC_ALL in the bash tool + environment + - Chunk text emitted before its tool call in the streaming + loop + - Text selection guarded against detached widgets + - OSError on over-long @-mention autocompletion candidates + - MCP registry created when the first server is added via + /mcp add + - CLI conversation ID preserved after teleport + - Data-retention link accessible to non-admins + +------------------------------------------------------------------- +Mon Jul 27 15:51:43 UTC 2026 - Matej Cepl <[email protected]> + +- Add history_properties_timeout.patch to decrease number of + seeds for testing to avoid timeouting on the test. +- Add fix_ui_tests.patch to adjust UI tests to match user input + prefixing logic (gh#mistralai/mistral-vibe!976) + +------------------------------------------------------------------- +Mon Jul 27 12:56:20 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 2.22.0: + - Added + - /new command as an alias for /clear + - ACP review support: approve or revert agent changes from + ACP clients, with live refresh + - Changed + - Full migration to ConfigOrchestrator for configuration + handling + - Defaults now filled at merge time via DefaultConfigLayer; + config.toml stores only user-set values + - Fixed + - read_file no longer prompts for approval on plan files in + plan mode + - Benign Sentry noise suppressed (EIO, clean exits, broken + pipe, transcription 401) + - Exception on unsafe configuration read + - Removed + - Teleport context summary flag + +------------------------------------------------------------------- +Mon Jul 20 11:25:06 UTC 2026 - Matej Cepl <[email protected]> + +- Update to 2.21.0: + - Added + - Registry skills content store and manifest for skill + discovery + - Config schema exposed through ACP + - Checkpointer engine state model, owner union, and pending + hunks + - Changed + - [Breaking — hooks] Hooks graduated from experimental; + hooks.toml is now stable. Every hook type is renamed: + post_agent_turn → post_agent, before_tool → pre_tool, + after_tool → post_tool (the hook_event_name payload field + is renamed to match). Update existing hooks.toml files + accordingly. + - @file mentions now inject as read_file tool calls + - Telemetry routed through client-side redaction + - Models field migration from list to dict + - VibeConfig cutover prep with persisted-config read and + orchestrator SSL parity + - Reduced feedback survey frequency for users who already + responded + - Fixed + - Duplicate model aliases deduplicated instead of failing + config load + - UTF-8 BOM stripped in decode_safe + - UTF-8 BOM stripped from SKILL.md before parsing frontmatter + - MCP server connection errors now surface in the TUI + - MCP discovery failures now surface in ACP sessions + - stdin content no longer discarded when /dev/tty is + unavailable + - GitPython import deferred off the ACP startup path + - @file mention suggestions stretched to full width + - Blank line removed between approval options + - Connector tool permission content scrolls instead of + cropping + - ConfigOrchestrator gained an explicit copy() for forking + - Removed + - enable_experimental_hooks config flag (and + VIBE_ENABLE_EXPERIMENTAL_HOOKS env var); hooks now load + unconditionally when declared +- Update to 2.20.0: + - Added + - Warning when the Narrator is enabled without working audio + output + - Changed + - Windows command prompt is now shell-aware + - Hardened bash tool permissions and cross-platform shell + handling + - Rewind now triggers on a double Esc when the input is + empty, with improved keybindings + - Teleports now include summarized context + - Renamed user plan labels (Teams → Team, Education + → Student) + - ask_user_question selection now works via mouse and + supports free-text entry + - Fixed + - More robust SSE streaming in the generic backend + - NoneType crash when stopping voice recording during + a drain-timeout race + - Windows ProactorEventLoop teardown tracebacks on /exit + - MCP OAuth tokens are no longer dropped on transient refresh + errors + +------------------------------------------------------------------- Old: ---- mistral-vibe-2.19.1.tar.gz New: ---- fix_ui_tests.patch history_properties_timeout.patch mistral-vibe-2.24.0.tar.gz warning_cleanup.patch ----------(New B)---------- New: seeds for testing to avoid timeouting on the test. - Add fix_ui_tests.patch to adjust UI tests to match user input prefixing logic (gh#mistralai/mistral-vibe!976) New: - Add history_properties_timeout.patch to decrease number of seeds for testing to avoid timeouting on the test. New: - Add warning_cleanup.patch suppressing warnings caused by build-environment and dependency compatibility ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mistral-vibe.spec ++++++ --- /var/tmp/diff_new_pack.pvAwbo/_old 2026-08-09 21:45:59.932082227 +0200 +++ /var/tmp/diff_new_pack.pvAwbo/_new 2026-08-09 21:45:59.936082364 +0200 @@ -16,7 +16,7 @@ # Name: mistral-vibe -Version: 2.19.1 +Version: 2.24.0 Release: 0 Summary: Minimal CLI coding agent by Mistral License: Apache-2.0 @@ -31,6 +31,15 @@ # PATCH-FIX-UPSTREAM no_terminal.patch gh#mistralai/mistral-vibe!884 [email protected] # Stabilize the tests to work on slow build environments Patch2: no_terminal.patch +# PATCH-FIX-OPENSUSE history_properties_timeout.patch [email protected] +# decrease number of seeds to tests, to make it less likely timeout happens +Patch3: history_properties_timeout.patch +# PATCH-FIX-UPSTREAM fix_ui_tests.patch gh#mistralai/mistral-vibe!976 [email protected] +# adjust UI tests to match user input prefixing logic +Patch4: fix_ui_tests.patch +# PATCH-FIX-OPENSUSE warning_cleanup.patch [email protected] +# suppress warnings caused by build-environment and dependency compatibility +Patch5: warning_cleanup.patch BuildRequires: fdupes BuildRequires: python-rpm-macros BuildRequires: python3-base >= 3.12 @@ -38,18 +47,17 @@ BuildRequires: python3-hatch-vcs BuildRequires: python3-hatchling BuildRequires: python3-pip -Requires: python3-GitPython >= 3.1.50 -Requires: python3-Jinja2 +Requires: python3-GitPython >= 3.1.57 Requires: python3-PyJWT >= 2.13.0 Requires: python3-PyYAML >= 6.0.3 Requires: python3-SecretStorage >= 3.5.0 -Requires: python3-agent-client-protocol >= 0.10.1 +Requires: python3-agent-client-protocol >= 0.11.0 Requires: python3-annotated-types >= 0.7.0 +Requires: python3-anyio >= 4.14.1 Requires: python3-attrs >= 26.1.0 Requires: python3-beautifulsoup4 >= 4.14.3 Requires: python3-cachetools >= 7.0.6 -# Requires: python3-certifi >= 2026.6.17 -Requires: python3-certifi >= 2026.5.20 +Requires: python3-certifi >= 2026.7.22 Requires: python3-cffi >= 2.0.0 Requires: python3-charset-normalizer >= 3.4.7 Requires: python3-click >= 8.3.3 @@ -63,8 +71,7 @@ Requires: python3-httpcore >= 1.0.9 Requires: python3-httpx >= 0.28.1 Requires: python3-httpx-sse >= 0.4.3 -# Requires: python3-humanize >= 4.16.0 -Requires: python3-humanize >= 4.15.0 +Requires: python3-humanize >= 4.16.0 Requires: python3-idna >= 3.18 Requires: python3-importlib-metadata >= 8.7.1 Requires: python3-jaraco.classes >= 3.4.0 @@ -79,13 +86,14 @@ Requires: python3-keyring >= 25.7.0 Requires: python3-linkify-it-py >= 2.1.0 Requires: python3-markdown-it-py >= 4.0.0 -Requires: python3-markdownify >= 1.2.2 +Requires: python3-markdownify >= 1.2.3 Requires: python3-mcp >= 1.28.1 Requires: python3-mdit-py-plugins >= 0.5.0 Requires: python3-mdurl >= 0.1.2 -Requires: python3-mistralai >= 2.5.0 +Requires: python3-mistralai >= 2.6.0 Requires: python3-more-itertools >= 11.0.2 Requires: python3-opentelemetry-api >= 1.39.1 +Requires: python3-opentelemetry-exporter-otlp-proto-common >= 1.39.1 Requires: python3-opentelemetry-exporter-otlp-proto-http >= 1.39.1 Requires: python3-opentelemetry-proto >= 1.39.1 Requires: python3-opentelemetry-sdk >= 1.39.1 @@ -95,10 +103,11 @@ Requires: python3-platformdirs >= 4.9.6 Requires: python3-protobuf >= 6.33.6 Requires: python3-ptyprocess >= 0.7.0 -Requires: python3-pyasn1 >= 0.6.3 +Requires: python3-pyasn1 >= 0.6.4 Requires: python3-pyasn1-modules >= 0.4.2 Requires: python3-pycparser >= 3.0 Requires: python3-pydantic >= 2.13.4 +Requires: python3-pydantic-core >= 2.46.4 Requires: python3-pydantic-settings >= 2.14.2 Requires: python3-pygments >= 2.20.0 Requires: python3-pyperclip >= 1.11.0 @@ -109,31 +118,25 @@ Requires: python3-requests >= 2.34.2 Requires: python3-rich >= 15.0.0 Requires: python3-rpds-py >= 0.30.0 -# Requires: python3-sentry-sdk >= 2.64.0 -Requires: python3-sentry-sdk >= 2.63.0 +Requires: python3-sentry-sdk >= 2.64.0 Requires: python3-six >= 1.17.0 Requires: python3-smmap >= 5.0.3 Requires: python3-sounddevice >= 0.5.5 -Requires: python3-soupsieve >= 2.8.3 +Requires: python3-soupsieve >= 2.8.4 Requires: python3-sse-starlette >= 3.4.1 -Requires: python3-starlette >= 1.0.0 -Requires: python3-syrupy -# Requires: python3-textual >= 8.2.8 -Requires: python3-textual >= 8.2.7 +Requires: python3-starlette >= 1.3.1 +Requires: python3-textual >= 8.2.8 Requires: python3-textual-speedups >= 0.2.1 Requires: python3-tomli-w >= 1.2.0 -Requires: python3-tomlkit -Requires: python3-tree-sitter >= 0.25.2 +Requires: python3-tree-sitter >= 0.26.0 Requires: python3-tree-sitter-bash >= 0.25.1 Requires: python3-truststore >= 0.10.4 Requires: python3-typing-extensions >= 4.15.0 Requires: python3-typing-inspection >= 0.4.2 Requires: python3-uc-micro-py >= 2.0.0 Requires: python3-urllib3 >= 2.7.0 -# Requires: python3-uvicorn >= 0.46.0 -Requires: python3-uvicorn >= 0.41.0 -# Requires: python3-watchfiles >= 1.2.0 -Requires: python3-watchfiles >= 1.1.1 +Requires: python3-uvicorn >= 0.46.0 +Requires: python3-watchfiles >= 1.2.0 Requires: python3-websockets >= 16.0 Requires: python3-zipp >= 3.23.1 Requires: python3-zstandard >= 0.25.0 @@ -147,18 +150,18 @@ # SECTION test requirements BuildRequires: ca-certificates BuildRequires: ca-certificates-mozilla -BuildRequires: python3-GitPython >= 3.1.50 +BuildRequires: python3-GitPython >= 3.1.57 BuildRequires: python3-Jinja2 BuildRequires: python3-PyJWT >= 2.13.0 BuildRequires: python3-PyYAML >= 6.0.3 BuildRequires: python3-SecretStorage >= 3.5.0 -BuildRequires: python3-agent-client-protocol >= 0.10.1 +BuildRequires: python3-agent-client-protocol >= 0.11.0 BuildRequires: python3-annotated-types >= 0.7.0 +BuildRequires: python3-anyio >= 4.14.1 BuildRequires: python3-attrs >= 26.1.0 BuildRequires: python3-beautifulsoup4 >= 4.14.3 BuildRequires: python3-cachetools >= 7.0.6 -# BuildRequires: python3-certifi >= 2026.6.17 -BuildRequires: python3-certifi >= 2026.5.20 +BuildRequires: python3-certifi >= 2026.7.22 BuildRequires: python3-cffi >= 2.0.0 BuildRequires: python3-charset-normalizer >= 3.4.7 BuildRequires: python3-click >= 8.3.3 @@ -172,8 +175,7 @@ BuildRequires: python3-httpcore >= 1.0.9 BuildRequires: python3-httpx >= 0.28.1 BuildRequires: python3-httpx-sse >= 0.4.3 -# BuildRequires: python3-humanize >= 4.16.0 -BuildRequires: python3-humanize >= 4.15.0 +BuildRequires: python3-humanize >= 4.16.0 BuildRequires: python3-idna >= 3.18 BuildRequires: python3-importlib-metadata >= 8.7.1 BuildRequires: python3-jaraco.classes >= 3.4.0 @@ -188,13 +190,14 @@ BuildRequires: python3-keyring >= 25.7.0 BuildRequires: python3-linkify-it-py >= 2.1.0 BuildRequires: python3-markdown-it-py >= 4.0.0 -BuildRequires: python3-markdownify >= 1.2.2 +BuildRequires: python3-markdownify >= 1.2.3 BuildRequires: python3-mcp >= 1.28.1 BuildRequires: python3-mdit-py-plugins >= 0.5.0 BuildRequires: python3-mdurl >= 0.1.2 -BuildRequires: python3-mistralai >= 2.5.0 +BuildRequires: python3-mistralai >= 2.6.0 BuildRequires: python3-more-itertools >= 11.0.2 BuildRequires: python3-opentelemetry-api >= 1.39.1 +BuildRequires: python3-opentelemetry-exporter-otlp-proto-common >= 1.39.1 BuildRequires: python3-opentelemetry-exporter-otlp-proto-http >= 1.39.1 BuildRequires: python3-opentelemetry-proto >= 1.39.1 BuildRequires: python3-opentelemetry-sdk >= 1.39.1 @@ -204,10 +207,11 @@ BuildRequires: python3-platformdirs >= 4.9.6 BuildRequires: python3-protobuf >= 6.33.6 BuildRequires: python3-ptyprocess >= 0.7.0 -BuildRequires: python3-pyasn1 >= 0.6.3 +BuildRequires: python3-pyasn1 >= 0.6.4 BuildRequires: python3-pyasn1-modules >= 0.4.2 BuildRequires: python3-pycparser >= 3.0 BuildRequires: python3-pydantic >= 2.13.4 +BuildRequires: python3-pydantic-core >= 2.46.4 BuildRequires: python3-pydantic-settings >= 2.14.2 BuildRequires: python3-pygments >= 2.20.0 BuildRequires: python3-pyperclip >= 1.11.0 @@ -223,19 +227,17 @@ BuildRequires: python3-respx >= 0.22.0 BuildRequires: python3-rich >= 15.0.0 BuildRequires: python3-rpds-py >= 0.30.0 -# BuildRequires: python3-sentry-sdk >= 2.64.0 -BuildRequires: python3-sentry-sdk >= 2.63.0 +BuildRequires: python3-sentry-sdk >= 2.64.0 BuildRequires: python3-sounddevice >= 0.5.5 -BuildRequires: python3-soupsieve >= 2.8.3 +BuildRequires: python3-soupsieve >= 2.8.4 BuildRequires: python3-sse-starlette >= 3.4.1 -BuildRequires: python3-starlette >= 1.0.0 +BuildRequires: python3-starlette >= 1.3.1 BuildRequires: python3-syrupy -# BuildRequires: python3-textual >= 8.2.8 -BuildRequires: python3-textual >= 8.2.7 +BuildRequires: python3-textual >= 8.2.8 BuildRequires: python3-textual-speedups >= 0.2.1 BuildRequires: python3-tomli-w >= 1.2.0 -BuildRequires: python3-tomlkit -BuildRequires: python3-tree-sitter >= 0.25.2 +BuildRequires: python3-tomlkit >= 0.13.0 +BuildRequires: python3-tree-sitter >= 0.26.0 BuildRequires: python3-tree-sitter-bash >= 0.25.1 BuildRequires: python3-truststore >= 0.10.4 BuildRequires: python3-typing-extensions >= 4.15.0 @@ -243,10 +245,8 @@ BuildRequires: python3-uc-micro-py >= 2.0.0 BuildRequires: python3-urllib3 >= 2.7.0 BuildRequires: python3-uv -# BuildRequires: python3-uvicorn >= 0.46.0 -BuildRequires: python3-uvicorn >= 0.41.0 -# BuildRequires: python3-watchfiles >= 1.2.0 -BuildRequires: python3-watchfiles >= 1.1.1 +BuildRequires: python3-uvicorn >= 0.46.0 +BuildRequires: python3-watchfiles >= 1.2.0 BuildRequires: python3-websockets >= 16.0 BuildRequires: python3-zipp >= 3.23.1 BuildRequires: python3-zstandard >= 0.25.0 @@ -279,6 +279,7 @@ %license LICENSE %{_bindir}/vibe %{_bindir}/vibe-acp +%{_bindir}/vibe-app-server %{python3_sitelib}/vibe %{python3_sitelib}/mistral_vibe-%{version}.dist-info ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.pvAwbo/_old 2026-08-09 21:45:59.980083866 +0200 +++ /var/tmp/diff_new_pack.pvAwbo/_new 2026-08-09 21:45:59.984084003 +0200 @@ -1,5 +1,5 @@ -mtime: 1783675318 -commit: e16ad830549d7230e9735526de1c183065400f063785cfc56528353e327881d7 +mtime: 1786131126 +commit: c8b4dfd0dd01f2d8ffbb61726e70ed8fcf2e807e7bd348423f428da6e72703d4 url: https://src.opensuse.org/AI/mistral-vibe.git revision: factory ++++++ build.specials.obscpio ++++++ --- old/.gitignore 2026-07-10 11:21:58.000000000 +0200 +++ new/.gitignore 2026-08-07 21:32:06.000000000 +0200 @@ -6,3 +6,4 @@ .pbuild _service:* mistral-vibe-*-build/ +.aider* ++++++ 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-08-07 21:32:06.000000000 +0200 @@ -0,0 +1,9 @@ +.assets +_build.* +*.obscpio +*.obsinfo +*.osc +.pbuild +_service:* +mistral-vibe-*-build/ +.aider* ++++++ fix_tests.patch ++++++ --- /var/tmp/diff_new_pack.pvAwbo/_old 2026-08-09 21:46:00.168090284 +0200 +++ /var/tmp/diff_new_pack.pvAwbo/_new 2026-08-09 21:46:00.172090420 +0200 @@ -1,25 +1,12 @@ --- - tests/core/test_build_ssl_context.py | 1 + - vibe/core/tools/builtins/grep.py | 4 ++-- - 2 files changed, 3 insertions(+), 2 deletions(-) + vibe/core/tools/builtins/grep.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) -Index: mistral-vibe-2.19.1/tests/core/test_build_ssl_context.py +Index: mistral-vibe-2.23.3/vibe/core/tools/builtins/grep.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/core/test_build_ssl_context.py 2026-07-10 10:51:57.894515544 +0200 -+++ mistral-vibe-2.19.1/tests/core/test_build_ssl_context.py 2026-07-10 11:08:30.677026067 +0200 -@@ -28,6 +28,7 @@ - - mock_ctx = MagicMock(spec=ssl.SSLContext) - with ( -+ patch("vibe.core.utils.http.os.path.exists", return_value=True), - patch("vibe.core.utils.http.certifi.where", return_value="/certifi.pem"), - patch( - "vibe.core.utils.http.ssl.create_default_context", return_value=mock_ctx -Index: mistral-vibe-2.19.1/vibe/core/tools/builtins/grep.py -=================================================================== ---- mistral-vibe-2.19.1.orig/vibe/core/tools/builtins/grep.py 2026-07-10 10:51:57.894515544 +0200 -+++ mistral-vibe-2.19.1/vibe/core/tools/builtins/grep.py 2026-07-10 11:08:30.678069433 +0200 -@@ -239,7 +239,7 @@ +--- mistral-vibe-2.23.3.orig/vibe/core/tools/builtins/grep.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/vibe/core/tools/builtins/grep.py 2026-08-05 16:38:09.218266522 +0200 +@@ -270,7 +270,7 @@ "--no-heading", "--with-filename", "--smart-case", @@ -28,7 +15,7 @@ # Request one extra to detect truncation "--max-count", str(max_matches + 1), -@@ -260,7 +260,7 @@ +@@ -291,7 +291,7 @@ ) -> list[str]: max_matches = args.max_matches or self.config.default_max_matches ++++++ fix_ui_tests.patch ++++++ --- tests/cli/test_ui_exit_command.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: mistral-vibe-2.24.0/tests/app_server/test_vibe_code.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/app_server/test_vibe_code.py 2026-08-06 23:21:16.834620172 +0200 +++ mistral-vibe-2.24.0/tests/app_server/test_vibe_code.py 2026-08-06 23:21:17.302801215 +0200 @@ -68,7 +68,7 @@ capture_output=True, env=env, text=True, - timeout=10, + timeout=60, ) assert result.returncode == 0, result.stderr Index: mistral-vibe-2.24.0/tests/cli/textual_ui/test_app_server_requests.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/cli/textual_ui/test_app_server_requests.py 2026-08-06 23:21:16.834620172 +0200 +++ mistral-vibe-2.24.0/tests/cli/textual_ui/test_app_server_requests.py 2026-08-06 23:21:17.303280949 +0200 @@ -8,6 +8,8 @@ import pytest +pytestmark = pytest.mark.terminal + from tests.conftest import ( build_test_agent_loop, build_test_vibe_app, Index: mistral-vibe-2.24.0/tests/core/test_worktree.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/core/test_worktree.py 2026-08-06 23:21:16.834620172 +0200 +++ mistral-vibe-2.24.0/tests/core/test_worktree.py 2026-08-06 23:21:17.303575324 +0200 @@ -20,7 +20,12 @@ def _init_repo(root: Path, *, separate_git_dir: Path | None = None) -> Repo: - repo = Repo.init(root, initial_branch="main", separate_git_dir=separate_git_dir) + repo = Repo.init( + root, + initial_branch="main", + separate_git_dir=separate_git_dir, + allow_unsafe_options=True, + ) repo.config_writer().set_value("user", "name", "Tester").release() repo.config_writer().set_value("user", "email", "[email protected]").release() (root / "file.txt").write_text("hello\n") Index: mistral-vibe-2.24.0/tests/test_ui_rewind.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/test_ui_rewind.py 2026-08-06 23:21:16.834620172 +0200 +++ mistral-vibe-2.24.0/tests/test_ui_rewind.py 2026-08-06 23:21:17.303847197 +0200 @@ -6,6 +6,8 @@ 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.24.0/tests/cli/test_ui_session_incremental_renderer.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/cli/test_ui_session_incremental_renderer.py 2026-08-06 23:21:17.262168221 +0200 +++ mistral-vibe-2.24.0/tests/cli/test_ui_session_incremental_renderer.py 2026-08-06 23:21:17.304077842 +0200 @@ -5,6 +5,8 @@ import time import pytest + +pytestmark = pytest.mark.terminal from textual.widgets import Button from tests.conftest import build_test_agent_loop Index: mistral-vibe-2.24.0/tests/cli/test_ui_skill_dispatch.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/cli/test_ui_skill_dispatch.py 2026-08-06 23:21:17.262386413 +0200 +++ mistral-vibe-2.24.0/tests/cli/test_ui_skill_dispatch.py 2026-08-06 23:21:17.304296674 +0200 @@ -7,6 +7,8 @@ import pytest +pytestmark = pytest.mark.terminal + from tests.conftest import build_test_vibe_app, build_test_vibe_config from tests.skills.conftest import create_skill from vibe.app_server.models import CompletedEffectState, PublicEffectEntry ++++++ history_properties_timeout.patch ++++++ --- tests/core/test_history_properties.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: mistral-vibe-2.23.3/tests/core/test_history_properties.py =================================================================== --- mistral-vibe-2.23.3.orig/tests/core/test_history_properties.py 2026-08-03 14:57:51.000000000 +0200 +++ mistral-vibe-2.23.3/tests/core/test_history_properties.py 2026-08-05 16:38:25.740805859 +0200 @@ -118,7 +118,7 @@ # -- core invariants over random text chains --------------------------------- -SEEDS = range(400) +SEEDS = range(5) @pytest.mark.parametrize("seed", SEEDS) @@ -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. """ - for seed in range(400): + for seed in range(5): rng = random.Random(seed) v0, current, chain = gen_chain(rng, rng.randint(2, 6)) cp = build(chain) ++++++ mistral-vibe-2.19.1.tar.gz -> mistral-vibe-2.24.0.tar.gz ++++++ ++++ 194449 lines of diff (skipped) ++++++ no_network.patch ++++++ --- /var/tmp/diff_new_pack.pvAwbo/_old 2026-08-09 21:46:01.204125648 +0200 +++ /var/tmp/diff_new_pack.pvAwbo/_new 2026-08-09 21:46:01.208125784 +0200 @@ -1,6 +1,5 @@ --- pyproject.toml | 3 +++ - tests/acp/test_acp.py | 1 + tests/acp/test_acp_entrypoint_smoke.py | 2 ++ tests/e2e/test_cli_tui_fresh_install.py | 1 + tests/e2e/test_cli_tui_hooks.py | 2 ++ @@ -9,13 +8,13 @@ tests/e2e/test_cli_tui_streaming.py | 2 ++ tests/e2e/test_cli_tui_tool_approval.py | 2 ++ tests/test_install_script.py | 3 +++ - 10 files changed, 20 insertions(+) + 9 files changed, 19 insertions(+) -Index: mistral-vibe-2.19.1/pyproject.toml +Index: mistral-vibe-2.23.3/pyproject.toml =================================================================== ---- mistral-vibe-2.19.1.orig/pyproject.toml 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/pyproject.toml 2026-07-10 11:01:08.002266091 +0200 -@@ -256,6 +256,9 @@ +--- mistral-vibe-2.23.3.orig/pyproject.toml 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/pyproject.toml 2026-08-05 16:37:57.369355543 +0200 +@@ -260,6 +260,9 @@ [tool.pytest.ini_options] addopts = "-vvvv -q -n auto --durations=10 --import-mode=importlib --maxschedchunk=1" timeout = 10 @@ -25,23 +24,11 @@ filterwarnings = [ # (e2e) streaming mock server is started in a thread; and the cli is spawn in a fork "ignore:This process \\(pid=.*\\) is multi-threaded, use of forkpty\\(\\) may lead to deadlocks in the child\\.:DeprecationWarning", -Index: mistral-vibe-2.19.1/tests/acp/test_acp.py +Index: mistral-vibe-2.23.3/tests/acp/test_acp_entrypoint_smoke.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/acp/test_acp.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/acp/test_acp.py 2026-07-10 11:01:08.002682103 +0200 -@@ -39,6 +39,7 @@ - RESPONSE_TIMEOUT = 2.0 - MOCK_ENTRYPOINT_PATH = "tests/mock/mock_entrypoint.py" - PLAYGROUND_DIR = TESTS_ROOT / "playground" -+pytestmark = pytest.mark.network - - - def deep_merge(target: dict, source: dict) -> None: -Index: mistral-vibe-2.19.1/tests/acp/test_acp_entrypoint_smoke.py -=================================================================== ---- mistral-vibe-2.19.1.orig/tests/acp/test_acp_entrypoint_smoke.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/acp/test_acp_entrypoint_smoke.py 2026-07-10 11:01:08.003064061 +0200 -@@ -21,6 +21,8 @@ +--- mistral-vibe-2.23.3.orig/tests/acp/test_acp_entrypoint_smoke.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/acp/test_acp_entrypoint_smoke.py 2026-08-05 16:37:57.369762110 +0200 +@@ -29,6 +29,8 @@ "Sign into Mistral Vibe through your Mistral AI Studio account." ) @@ -50,10 +37,10 @@ class _AcpSmokeClient(Client): def on_connect(self, conn: Any) -> None: -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_fresh_install.py +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_fresh_install.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_fresh_install.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_fresh_install.py 2026-07-10 11:01:08.003302930 +0200 +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_fresh_install.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_fresh_install.py 2026-08-05 16:37:57.370054282 +0200 @@ -62,6 +62,7 @@ return _venv_executable(venv_path, "vibe") @@ -62,23 +49,23 @@ @pytest.mark.timeout(90) def test_fresh_wheel_install_can_spawn_cli_and_complete_happy_path( streaming_mock_server: StreamingMockServer, -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_hooks.py +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_hooks.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_hooks.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_hooks.py 2026-07-10 11:01:08.003529235 +0200 -@@ -19,6 +19,8 @@ +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_hooks.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_hooks.py 2026-08-05 16:37:57.370280969 +0200 +@@ -18,6 +18,8 @@ ) from tests.e2e.mock_server import StreamingMockServer +pytestmark = pytest.mark.network + - def _enable_hooks(vibe_home: Path, invocation_path: Path) -> None: - config_path = vibe_home / "config.toml" -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_onboarding.py + def _setup_recording_hook(vibe_home: Path, invocation_path: Path) -> None: + script = vibe_home / "_record_hook.py" +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_onboarding.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_onboarding.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_onboarding.py 2026-07-10 11:01:08.003718882 +0200 +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_onboarding.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_onboarding.py 2026-08-05 16:37:57.370458103 +0200 @@ -7,6 +7,8 @@ from tests.e2e.common import SpawnedVibeProcessFixture, ansi_tolerant_pattern @@ -88,23 +75,23 @@ @pytest.mark.timeout(15) def test_spawn_cli_shows_onboarding_when_api_key_missing( -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_session_exit.py +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_session_exit.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_session_exit.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_session_exit.py 2026-07-10 11:01:08.004215636 +0200 +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_session_exit.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_session_exit.py 2026-08-05 16:37:57.370644184 +0200 @@ -23,6 +23,8 @@ from tests.e2e.mock_server import StreamingMockServer - from vibe.core.utils.io import read_safe + from vibe.utils.io import read_safe +pytestmark = pytest.mark.network + def _usage_by_run_factory( request_index: int, _payload: object -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_streaming.py +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_streaming.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_streaming.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_streaming.py 2026-07-10 11:01:08.004683576 +0200 +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_streaming.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_streaming.py 2026-08-05 16:37:57.370822861 +0200 @@ -14,6 +14,8 @@ ) from tests.e2e.mock_server import StreamingMockServer @@ -114,10 +101,10 @@ @pytest.mark.timeout(15) def test_spawn_cli_to_send_and_receive_message( -Index: mistral-vibe-2.19.1/tests/e2e/test_cli_tui_tool_approval.py +Index: mistral-vibe-2.23.3/tests/e2e/test_cli_tui_tool_approval.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/e2e/test_cli_tui_tool_approval.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/e2e/test_cli_tui_tool_approval.py 2026-07-10 11:01:08.005107553 +0200 +--- mistral-vibe-2.23.3.orig/tests/e2e/test_cli_tui_tool_approval.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/e2e/test_cli_tui_tool_approval.py 2026-08-05 16:37:57.370994816 +0200 @@ -14,6 +14,8 @@ ) from tests.e2e.mock_server import ChatCompletionsRequestPayload, StreamingMockServer @@ -127,10 +114,10 @@ PREDICTABLE_OUTPUT = "__E2E_BASH_OK__" TOOL_ARGUMENTS = f'{{"command":"printf \\"{PREDICTABLE_OUTPUT}\\\\n\\""}}' -Index: mistral-vibe-2.19.1/tests/test_install_script.py +Index: mistral-vibe-2.23.3/tests/test_install_script.py =================================================================== ---- mistral-vibe-2.19.1.orig/tests/test_install_script.py 2026-07-10 11:00:30.903033305 +0200 -+++ mistral-vibe-2.19.1/tests/test_install_script.py 2026-07-10 11:01:08.005417756 +0200 +--- mistral-vibe-2.23.3.orig/tests/test_install_script.py 2026-08-03 14:57:51.000000000 +0200 ++++ mistral-vibe-2.23.3/tests/test_install_script.py 2026-08-05 16:37:57.371193400 +0200 @@ -7,6 +7,8 @@ import subprocess from textwrap import dedent ++++++ no_terminal.patch ++++++ ++++ 601 lines (skipped) ++++ between /work/SRC/openSUSE:Factory/mistral-vibe/no_terminal.patch ++++ and /work/SRC/openSUSE:Factory/.mistral-vibe.new.16738/no_terminal.patch ++++++ warning_cleanup.patch ++++++ Index: mistral-vibe-2.24.0/tests/cli/test_connector_auth_app.py =================================================================== --- mistral-vibe-2.24.0.orig/tests/cli/test_connector_auth_app.py 2026-08-06 23:21:42.407878128 +0200 +++ mistral-vibe-2.24.0/tests/cli/test_connector_auth_app.py 2026-08-06 23:21:42.749881578 +0200 @@ -259,7 +259,7 @@ assert app._status_message == "Refreshing connector..." app.run_worker.assert_called_once() - _, kwargs = app.run_worker.call_args + args, kwargs = app.run_worker.call_args assert kwargs["group"] == "connector_refresh" Index: mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/connector_auth_app.py =================================================================== --- mistral-vibe-2.24.0.orig/vibe/cli/textual_ui/widgets/connector_auth_app.py 2026-08-06 23:21:42.407878128 +0200 +++ mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/connector_auth_app.py 2026-08-06 23:21:42.750432704 +0200 @@ -98,7 +98,7 @@ self._status_message = "Refreshing connector..." self._set_help_text(_HELP) self.run_worker( - self._refresh_connector(), exclusive=True, group="connector_refresh" + self._refresh_connector, exclusive=True, group="connector_refresh" ) # ── workers ────────────────────────────────────────────────────── Index: mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/mcp_app.py =================================================================== --- mistral-vibe-2.24.0.orig/vibe/cli/textual_ui/widgets/mcp_app.py 2026-08-06 23:21:42.407878128 +0200 +++ mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/mcp_app.py 2026-08-06 23:21:42.750728732 +0200 @@ -160,7 +160,7 @@ if self._refresh_callback is None or self._refreshing: return self._refreshing = True - self.run_worker(self._run_refresh(), exclusive=True, group="refresh") + self.run_worker(self._run_refresh, exclusive=True, group="refresh") async def _run_refresh(self) -> None: if self._refresh_callback is not None: Index: mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/question_app.py =================================================================== --- mistral-vibe-2.24.0.orig/vibe/cli/textual_ui/widgets/question_app.py 2026-08-06 23:21:42.407878128 +0200 +++ mistral-vibe-2.24.0/vibe/cli/textual_ui/widgets/question_app.py 2026-08-06 23:21:42.750919141 +0200 @@ -1,6 +1,5 @@ from __future__ import annotations -import itertools import time from typing import TYPE_CHECKING, ClassVar @@ -424,10 +423,10 @@ else: new_idx = next( i - for i in itertools.chain( - range(self.current_question_idx + 1, len(self.questions)), - range(self.current_question_idx), - ) + for i in [ + *range(self.current_question_idx + 1, len(self.questions)), + *range(self.current_question_idx), + ] if i not in self.answers ) self._switch_question(new_idx) Index: mistral-vibe-2.24.0/vibe/core/config/event_bus.py =================================================================== --- mistral-vibe-2.24.0.orig/vibe/core/config/event_bus.py 2026-08-06 23:21:42.407878128 +0200 +++ mistral-vibe-2.24.0/vibe/core/config/event_bus.py 2026-08-06 23:21:42.751133806 +0200 @@ -2,8 +2,6 @@ from collections.abc import Callable from dataclasses import dataclass -from itertools import count - from vibe.core.config.types import ConfigChangeCallback, ConfigChangeEvent @@ -18,7 +16,7 @@ class EventBus: def __init__(self) -> None: self._subscribers: dict[int, Subscription] = {} - self._subscription_ids = count() + self._next_subscription_id = 0 def subscribe( self, callback: ConfigChangeCallback, *, keys: set[str] | None = None @@ -28,7 +26,8 @@ keys filters delivery to slash-separated config paths (ancestor and descendant paths match); None subscribes to every change (wildcard). """ - subscription_id = next(self._subscription_ids) + subscription_id = self._next_subscription_id + self._next_subscription_id += 1 frozen_keys = frozenset(keys) if keys is not None else None self._subscribers[subscription_id] = Subscription( callback=callback, keys=frozen_keys
