From a717cee2d81b40c58c446ad7a878367791b127ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Fri, 28 Aug 2026 11:24:01 +0800 Subject: [PATCH 1/4] chore: bump version to 0.14.0 --- desktop/helpers/Cargo.lock | 2 +- desktop/helpers/Cargo.toml | 2 +- desktop/package-lock.json | 4 ++-- desktop/package.json | 2 +- desktop/src-tauri/Cargo.lock | 4 ++-- desktop/src-tauri/Cargo.toml | 2 +- desktop/src-tauri/tauri.conf.json | 2 +- src/iac_code/__init__.py | 2 +- src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po | 2 +- src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po | 2 +- 14 files changed, 16 insertions(+), 16 deletions(-) diff --git a/desktop/helpers/Cargo.lock b/desktop/helpers/Cargo.lock index 95ab2470..84befddc 100644 --- a/desktop/helpers/Cargo.lock +++ b/desktop/helpers/Cargo.lock @@ -183,7 +183,7 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "iac-code-desktop-helpers" -version = "0.13.1" +version = "0.14.0" dependencies = [ "anyhow", "hex", diff --git a/desktop/helpers/Cargo.toml b/desktop/helpers/Cargo.toml index 7fc9c681..11f81bed 100644 --- a/desktop/helpers/Cargo.toml +++ b/desktop/helpers/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iac-code-desktop-helpers" -version = "0.13.1" +version = "0.14.0" license = "Apache-2.0" edition = "2021" rust-version = "1.77.2" diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 5ad16736..735ab7de 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -1,12 +1,12 @@ { "name": "iac-code-desktop", - "version": "0.13.1", + "version": "0.14.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "iac-code-desktop", - "version": "0.13.1", + "version": "0.14.0", "devDependencies": { "@tauri-apps/cli": "2.11.2" } diff --git a/desktop/package.json b/desktop/package.json index b7ca2418..ce20b3f1 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,7 +1,7 @@ { "name": "iac-code-desktop", "private": true, - "version": "0.13.1", + "version": "0.14.0", "scripts": { "tauri": "tauri", "dev": "tauri dev --features updater", diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 330c73aa..f6e833f9 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -1577,7 +1577,7 @@ dependencies = [ [[package]] name = "iac-code-desktop" -version = "0.13.1" +version = "0.14.0" dependencies = [ "anyhow", "fs2", @@ -1605,7 +1605,7 @@ dependencies = [ [[package]] name = "iac-code-desktop-helpers" -version = "0.13.1" +version = "0.14.0" dependencies = [ "anyhow", "hex", diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index 18b413c9..3d7be8c9 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iac-code-desktop" -version = "0.13.1" +version = "0.14.0" description = "iac-code" authors = ["iac-code contributors"] license = "Apache-2.0" diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 9b93ae41..57ce694f 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "iac-code", - "version": "0.13.1", + "version": "0.14.0", "identifier": "com.alibaba.cloud.iaccode.desktop", "build": { "frontendDist": "../bootstrap" diff --git a/src/iac_code/__init__.py b/src/iac_code/__init__.py index 7fa9420e..d26f4118 100644 --- a/src/iac_code/__init__.py +++ b/src/iac_code/__init__.py @@ -1,2 +1,2 @@ -__version__ = "0.13.1" +__version__ = "0.14.0" __release_date__ = "" diff --git a/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po index 5584ff1e..4e7d4b12 100644 --- a/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/de/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po index be8feacb..ef637b5f 100644 --- a/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/es/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po index 4fc68842..6c98d7a9 100644 --- a/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/fr/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po index dd3bb41e..70ce2f79 100644 --- a/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/ja/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po index 41f5123f..9f015576 100644 --- a/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/pt/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-05-13 00:00+0000\n" diff --git a/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po b/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po index f5cdd033..0849f3ac 100644 --- a/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po +++ b/src/iac_code/i18n/locales/zh/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: iac-code 0.13.1\n" +"Project-Id-Version: iac-code 0.14.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-06-04 15:58+0800\n" "PO-Revision-Date: 2026-04-02 00:00+0000\n" From 8d8b4ef9c6bc5eaf9f9d27906342bdb688bc7169 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Fri, 28 Aug 2026 12:01:10 +0800 Subject: [PATCH 2/4] test: stabilize Windows CI concurrency --- .github/workflows/test.yml | 5 ++++- tests/a2a/test_app.py | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9c3e32a6..72d4accd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -164,4 +164,7 @@ jobs: run: uv sync --all-extras - name: Run tests - run: uv run pytest tests/ -v --no-header -n auto + # Windows runners execute many subprocess-heavy Node, A2A, and Desktop + # tests. Keep the suite parallel without exhausting process/thread + # capacity and turning scheduling-sensitive tests into random failures. + run: uv run pytest tests/ -v --no-header -n 2 diff --git a/tests/a2a/test_app.py b/tests/a2a/test_app.py index 943e8048..08750832 100644 --- a/tests/a2a/test_app.py +++ b/tests/a2a/test_app.py @@ -2799,14 +2799,16 @@ async def run_streaming(self, prompt: str): stream = components.handler.on_subscribe_to_task(SubscribeToTaskRequest(id=result.id), call_context) first_event = await asyncio.wait_for(anext(stream), timeout=1) - release.set() remaining_events = [] async def collect_remaining_events() -> None: async for event in stream: remaining_events.append(event) - await asyncio.wait_for(collect_remaining_events(), timeout=1) + collector = asyncio.create_task(collect_remaining_events()) + await asyncio.sleep(0) + release.set() + await asyncio.wait_for(collector, timeout=3) assert isinstance(first_event, Task) assert first_event.id == result.id From 6d373cca7ecaae3cf2b286d48d25f1e68c995f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Fri, 28 Aug 2026 12:06:10 +0800 Subject: [PATCH 3/4] Revert "test: stabilize Windows CI concurrency" This reverts commit 8d8b4ef9c6bc5eaf9f9d27906342bdb688bc7169. --- .github/workflows/test.yml | 5 +---- tests/a2a/test_app.py | 6 ++---- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 72d4accd..9c3e32a6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -164,7 +164,4 @@ jobs: run: uv sync --all-extras - name: Run tests - # Windows runners execute many subprocess-heavy Node, A2A, and Desktop - # tests. Keep the suite parallel without exhausting process/thread - # capacity and turning scheduling-sensitive tests into random failures. - run: uv run pytest tests/ -v --no-header -n 2 + run: uv run pytest tests/ -v --no-header -n auto diff --git a/tests/a2a/test_app.py b/tests/a2a/test_app.py index 08750832..943e8048 100644 --- a/tests/a2a/test_app.py +++ b/tests/a2a/test_app.py @@ -2799,16 +2799,14 @@ async def run_streaming(self, prompt: str): stream = components.handler.on_subscribe_to_task(SubscribeToTaskRequest(id=result.id), call_context) first_event = await asyncio.wait_for(anext(stream), timeout=1) + release.set() remaining_events = [] async def collect_remaining_events() -> None: async for event in stream: remaining_events.append(event) - collector = asyncio.create_task(collect_remaining_events()) - await asyncio.sleep(0) - release.set() - await asyncio.wait_for(collector, timeout=3) + await asyncio.wait_for(collect_remaining_events(), timeout=1) assert isinstance(first_event, Task) assert first_event.id == result.id From 6a55d28b97863a7d10f0f3978bb0f031794c3d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A1=82=E9=A9=AC?= Date: Fri, 28 Aug 2026 12:23:50 +0800 Subject: [PATCH 4/4] fix: avoid stale OAuth token reads --- src/iac_code/mcp/oauth.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/iac_code/mcp/oauth.py b/src/iac_code/mcp/oauth.py index 8e0ab8f4..a74dd40e 100644 --- a/src/iac_code/mcp/oauth.py +++ b/src/iac_code/mcp/oauth.py @@ -1713,7 +1713,8 @@ def get_oauth_access_token( now=clock, refresh_margin_seconds=refresh_margin_seconds, ) - return access_token + # Another storage instance may have refreshed between the blob reads above. + return get_oauth_storage_secret(config, storage, "access_token", scope=scope) async def get_oauth_access_token_async( @@ -1735,7 +1736,8 @@ async def get_oauth_access_token_async( refresh_marker = get_oauth_storage_secret(config, storage, "refresh_marker", scope=scope) clock = now or time.time if not refresh_token or expires_at is None or expires_at > clock() + refresh_margin_seconds: - return access_token + # Another storage instance may have refreshed between the blob reads above. + return get_oauth_storage_secret(config, storage, "access_token", scope=scope) coordinator = refresh_coordinator or _DEFAULT_REFRESH_COORDINATOR