Skip to content

Commit 3698ddb

Browse files
chore: release 0.4.26.2 (#77)
Parity catch-up release for upstream chat@4.26.0. Bundles 8 PRs (#64 #65 #66 #67 #73 #74 #75 #76) + small followup cleanups. See CHANGELOG.md for details.
1 parent 57de87f commit 3698ddb

4 files changed

Lines changed: 11 additions & 16 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
# Changelog
22

3-
## Unreleased
3+
## 0.4.26.2 (2026-04-24)
44

5-
<<<<<<< HEAD
65
Parity catch-up with upstream `4.26.0`. No upstream version change.
76

87
### New public APIs
@@ -78,7 +77,7 @@ Parity catch-up with upstream `4.26.0`. No upstream version change.
7877

7978
### Fixes
8079

81-
- **`Plan.update_task(input)` / `StreamingPlan.update_task(input)` now honor `input.id`** — previously only worked on the last in-progress task; with `id` set, targets that specific task and returns `None` for unknown IDs. Matches upstream `UpdateTaskInput` semantics.
80+
- **`Plan.update_task(input)` now honors `input.id`** — previously only worked on the last in-progress task; with `id` set, targets that specific task and returns `None` for unknown IDs. Matches upstream `UpdateTaskInput` semantics.
8281
- **`Plan.add_task()` / `update_task()` now propagate `adapter.edit_object` errors** — previously swallowed and logged; upstream returns the chained promise so callers see failures.
8382
- **Plan edit queue is now actually sequential under concurrency** — previously racy under `asyncio.gather`; rewrote `_enqueue_edit` to build the chain synchronously before awaiting, matching upstream TS's `.then`-based chain. Fixes out-of-order edits when multiple `add_task`/`update_task` calls interleave.
8483
- **`StreamingPlan` options now wired through `Thread.post()`** — the Python

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "chat-sdk"
3-
version = "0.4.26.1"
3+
version = "0.4.26.2"
44
description = "Multi-platform async chat SDK for Python — port of Vercel Chat"
55
readme = "README.md"
66
license = {text = "MIT"}

src/chat_sdk/adapters/slack/adapter.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,9 @@ async def _handle_block_suggestion(
10551055
# Use asyncio.shield so the orphaned task still runs (and logs errors)
10561056
# if we time out. `wait_for` cancels the awaitable on timeout; shielding
10571057
# prevents that cancellation from propagating into the handler task.
1058+
# Use asyncio.ensure_future — process_options_load is typed as returning
1059+
# Awaitable (matching sibling process_* methods on the ChatInstance
1060+
# Protocol); create_task() would require narrowing to Coroutine.
10581061
load_task = asyncio.ensure_future(self._chat.process_options_load(event, options))
10591062

10601063
try:

tests/test_thread_faithful.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1747,18 +1747,11 @@ class TestPostWithPlan:
17471747
17481748
Ported from TS thread.test.ts to close the fidelity gap tracked in #55.
17491749
1750-
Note: a few tests in this block expose known behavior gaps between the
1751-
current Python ``Plan`` implementation and the upstream TS version:
1752-
1753-
* ``UpdateTaskInput`` in ``plan.py`` has no ``id`` field, so looking up
1754-
a task by id via ``update_task({"id": ...})`` is not supported.
1755-
* ``_enqueue_edit`` swallows adapter errors instead of propagating them
1756-
to the caller (upstream returns the chained promise, which rejects).
1757-
* The edit chain is rebuilt post-await rather than synchronously, which
1758-
does not preserve strict ordering under ``asyncio.gather``.
1759-
1760-
Those tests are skipped with a pointer back here so the gaps remain
1761-
visible for a follow-up fix rather than silently drifting.
1750+
All 20 tests port their upstream ``thread.test.ts`` counterparts
1751+
1:1. The three behavior gaps that originally surfaced during the
1752+
port — ``UpdateTaskInput.id``, ``_enqueue_edit`` error propagation,
1753+
and synchronous chain registration under ``asyncio.gather`` — have
1754+
all been fixed in ``plan.py`` as part of this PR (#75).
17621755
"""
17631756

17641757
# it("should post fallback text when adapter does not support plans")

0 commit comments

Comments
 (0)