Skip to content

chore(release): cut 0.4.30 — Teams SDK migration + 4.30.0 parity (#93 PR 4/4)#146

Merged
patrick-chinchill merged 5 commits into
mainfrom
feat/teams-sdk-pr4-version-cut
Jun 19, 2026
Merged

chore(release): cut 0.4.30 — Teams SDK migration + 4.30.0 parity (#93 PR 4/4)#146
patrick-chinchill merged 5 commits into
mainfrom
feat/teams-sdk-pr4-version-cut

Conversation

@patrick-chinchill

@patrick-chinchill patrick-chinchill commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

What

Final PR (4/4) of the Teams SDK migration (issue #93) — cuts the 0.4.30 release. PRs 1 (inbound+auth, #143), 2 (outbound, #144), and 3 (native streaming, #145) are merged to main; this PR bumps the version, re-pins fidelity to chat@4.30.0, refreshes the docs, and normalizes the Teams version label.

Draft — does not tag or publish. The release itself is a separate maintainer-gated step (a live Teams 429 streaming check + explicit PyPI authorization).

Changes

Version bump

  • pyproject.toml: 0.4.290.4.30
  • src/chat_sdk/__init__.py: UPSTREAM_PARITY = "4.29.0""4.30.0"

Fidelity re-pin chat@4.29.0chat@4.30.0

  • .github/workflows/lint.yml: clone tag
  • scripts/verify_test_fidelity.py: docstring, default ts_parity fallback, clone hint (the MAPPING dict, test-detection logic, and _current_parity_tag parse helper are untouched)
  • scripts/fidelity_baseline.json: regenerated — ts_paritychat@4.30.0

packages/chat/src is byte-for-byte identical between chat@4.29.0 and chat@4.30.0, so this is a content-neutral re-pin with zero new test ports. Strict fidelity stays 732/732 matched, 0 missing (100%) against chat@4.30.0, exit 0.

Note: the baseline's recorded total_ts_tests literal moved 731732. This is not caused by the re-pin — running the script against both chat@4.29.0 and chat@4.30.0 yields an identical 732/732. The old committed 731 literal was stale relative to the current main tree (a local test added during the merged adapter waves); the regen corrects it. The fidelity result (0 missing, 100%) is unchanged by the re-pin.

Docs

  • CLAUDE.md: version map (0.4.30 = synced to 4.30.0), top-of-file parity note, fidelity pin + clone command
  • README.md: status line → 0.4.30 / 4.30.0
  • CHANGELOG.md: 0.4.30 entry derived from the actual merged commits in v0.4.29..origin/main
  • docs/UPSTREAM_SYNC.md: version-map row, fidelity header → 4.30.0; the Teams "deferred to 0.4.30" gap row flipped to delivered (Teams divergence rows kept)

Version-label normalization (deferred PR-3 nit, comment/doc-only)

  • Malformed adapter-teams@chat@4.30.0 and loose adapter-teams@4.30.0@chat-adapter/teams@4.30.0
  • src/chat_sdk/adapters/teams/adapter.py (5 sites), src/chat_sdk/adapters/teams/bridge.py (1 site), docs/UPSTREAM_SYNC.md (4 sites)

Gauntlet (run from the worktree)

check result
ruff check src/ tests/ scripts/ All checks passed
ruff format --check src/ tests/ scripts/ 257 files already formatted
audit_test_quality.py 0 hard failures (39 pre-existing dup warnings)
verify_test_fidelity.py --strict (TS_ROOT=4.30) 732/732, 0 missing, exit 0
pyrefly check 0 errors
pytest tests/ 4773 passed, 3 skipped

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes – Version 0.4.30

  • New Features

    • Twilio adapter added.
    • Teams adapter migrated to official SDK.
    • Telegram and Slack adapter ports.
  • Bug Fixes

    • Resolved compatibility issues in WhatsApp, Slack, and Google Chat.
  • Documentation

    • Updated to reflect upstream sync with version 4.30.0.

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@patrick-chinchill, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 55 minutes and 33 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9fc067c3-c9c3-43c3-9551-186371faf0d3

📥 Commits

Reviewing files that changed from the base of the PR and between f77fc78 and 1b442bc.

📒 Files selected for processing (1)
  • CHANGELOG.md
📝 Walkthrough

Walkthrough

Version bump from 0.4.29 to 0.4.30, re-pinning all upstream references from chat@4.29.0 to chat@4.30.0 across CI workflow, fidelity tooling, package metadata, source constant, and documentation. Also corrects a malformed Teams adapter package identifier in comments from adapter-teams@chat@4.30.0 to @chat-adapter/teams@4.30.0.

Changes

v0.4.30 Release

Layer / File(s) Summary
Version constant and package metadata
pyproject.toml, src/chat_sdk/__init__.py
Version bumped to 0.4.30 in pyproject.toml and UPSTREAM_PARITY constant updated to "4.30.0" in __init__.py.
CI and fidelity tooling re-pin
.github/workflows/lint.yml, scripts/fidelity_baseline.json, scripts/verify_test_fidelity.py
lint.yml clones upstream at chat@4.30.0; fidelity_baseline.json advances ts_parity and increments total_ts_tests to 732; verify_test_fidelity.py updates its docstring contract, write_baseline fallback, and git clone guidance to chat@4.30.0.
Teams adapter package identifier correction
src/chat_sdk/adapters/teams/adapter.py, src/chat_sdk/adapters/teams/bridge.py, tests/test_teams_extended.py, tests/test_teams_native_streaming.py
Docstrings and inline comments corrected from malformed adapter-teams@chat@4.30.0 to canonical @chat-adapter/teams@4.30.0. No runtime logic changed.
Docs, changelog, and reference updates
README.md, CHANGELOG.md, CLAUDE.md, docs/UPSTREAM_SYNC.md
README badge advances to 0.4.30/4.30.0; CHANGELOG adds full 0.4.30 release notes and corrects two historical PR references; CLAUDE.md adds version-mapping entry and updates all version pins; UPSTREAM_SYNC.md adds 0.4.30 row, updates strict-mode CI pin, adds state-ioredis/state-pg module mappings, expands Teams non-parity documentation, and marks the Teams SDK migration as delivered.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~4 minutes

Possibly related issues

Possibly related PRs

  • Chinchill-AI/chat-sdk-python#72: Updates the same CI fidelity surface—lint.yml, verify_test_fidelity.py, and fidelity_baseline.json—to ratchet the upstream vercel/chat baseline, directly analogous to this PR's changes.
  • Chinchill-AI/chat-sdk-python#83: Also updates src/chat_sdk/__init__.py's UPSTREAM_PARITY and related version pins to target a newer vercel/chat release.

Poem

🐇 Hop, hop, the version leaps ahead,
From 4.29 to 4.30 instead!
The Teams package name is fixed with care,
No more malformed identifiers there.
The baseline ticks, the changelog grows —
Another parity sync and off it goes! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: cutting release 0.4.30 following Teams SDK migration, which is the central objective of the PR and reflected throughout all file changes.
Docstring Coverage ✅ Passed Docstring coverage is 87.50% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the chat-sdk package to version 0.4.30, syncing it with upstream vercel/chat@4.30.0. The changes include updating documentation, changelogs, test fidelity scripts, and configuration files to reflect the new version and upstream parity. Additionally, docstrings in the Teams adapter are updated to use the normalized @chat-adapter/teams@4.30.0 package label. The review feedback suggests adding a clarifying note in docs/UPSTREAM_SYNC.md regarding the versioning scheme to explicitly state that the local patch slot is reserved for Python-only fixes.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread docs/UPSTREAM_SYNC.md
| `0.4.27` | `4.27.0` | Synced to upstream 4.27.0 |
| `0.4.27.1` | `4.27.0` | Python-only fix on top of 4.27.0 (Slack upload confirmation backport) |
| `0.4.29` | `4.29.0` | Synced to upstream 4.29.0 (upstream never tagged `chat@4.27.0`/`chat@4.28.0`) |
| `0.4.30` | `4.30.0` | Synced to upstream 4.30.0 (Teams adapter migrated to the `microsoft-teams-apps` SDK, issue #93) |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When defining a versioning scheme that embeds an upstream version, it is important to clearly differentiate between upstream patch releases and local (Python-only) fixes to avoid ambiguity and potential collisions in version numbers. Since upstream patch releases are handled by bumping to the next minor version, we should explicitly document this here to clarify that the local patch slot is reserved for local fixes.

Suggested change
| `0.4.30` | `4.30.0` | Synced to upstream 4.30.0 (Teams adapter migrated to the `microsoft-teams-apps` SDK, issue #93) |
| 0.4.30 | 4.30.0 | Synced to upstream 4.30.0 (Teams adapter migrated to the microsoft-teams-apps SDK, issue #93) |
Note: Upstream patch releases are handled by bumping to the next minor version (e.g., 4.30.0), meaning the local patch slot (the fourth digit, as in 0.4.27.1) is reserved exclusively for local, Python-only fixes.
References
  1. When defining a versioning scheme that embeds an upstream version, ensure that the scheme clearly differentiates between upstream patch releases and local (Python-only) fixes to avoid ambiguity and potential collisions in version numbers. If upstream patch releases are handled by bumping to the next minor version, explicitly document this to clarify that the local patch slot is reserved for local fixes.

@patrick-chinchill patrick-chinchill marked this pull request as ready for review June 18, 2026 22:57
…PR 4/4)

Final PR of the Teams SDK migration (issue #93). PRs 1-3 (inbound+auth,
outbound, native streaming) are merged; this cuts the 0.4.30 release.

- Version bump: pyproject 0.4.29 -> 0.4.30; UPSTREAM_PARITY "4.29.0" -> "4.30.0".
- Fidelity re-pin chat@4.29.0 -> chat@4.30.0 in lint.yml +
  verify_test_fidelity.py (docstring, default parity fallback, clone hint).
  packages/chat/src is byte-for-byte identical between the two tags, so zero
  new test ports: strict fidelity stays 100% (732/732, 0 missing) against
  chat@4.30.0. Baseline regenerated (ts_parity -> chat@4.30.0; the recorded
  total_ts_tests literal 731 -> 732 corrects a stale count from the merged
  adapter waves, not the re-pin — the count is identical against both tags).
- Docs: project-instructions version map + fidelity pin; README status line;
  CHANGELOG 0.4.30 entry (Twilio adapter, Telegram streaming, Slack subpaths,
  WhatsApp/Slack/gchat fixes, Teams #93 PRs 1-4); UPSTREAM_SYNC.md parity
  header + the Teams deferral row flipped to delivered.
- Version-label normalization: malformed `adapter-teams@chat@4.30.0` and loose
  `adapter-teams@4.30.0` -> `@chat-adapter/teams@4.30.0` in adapter.py (5),
  bridge.py (1), UPSTREAM_SYNC.md (4). Comment/doc-only.

Does NOT tag/publish — the release is a separate maintainer-gated step (live
Teams 429 streaming check + PyPI authorization).
…alization

Review fast-follow for PR 4. The CHANGELOG now states the mapped core is
content-identical *between the chat@4.29.0 and chat@4.30.0 upstream tags*
(verified: thread.ts/types.ts/thread.test.ts and the full packages/chat/src
tree are byte-identical) — the prior 'unchanged from 4.29.0' phrasing was
accurate but misread as a claim about our code. Also sweeps the two
remaining old-style `adapter-teams@chat@4.30.0` labels in the Teams test
docstrings to the canonical `@chat-adapter/teams@4.30.0` npm tag,
completing the normalization the PR's scope called for. No logic change.
@patrick-chinchill patrick-chinchill force-pushed the feat/teams-sdk-pr4-version-cut branch from 6666c91 to 0008f42 Compare June 19, 2026 00:04
CHANGELOG: add 'Pre-existing parity gaps closed (4.30 audit)' subsection
covering the 7 ported fixes (PRs #147-#150) and a documented-exceptions
note (Linear agent-sessions #151 deferred to 4.31 / #152; adapter-web and
the GitHub/Linear native-client + message.subject halves stay Known
Non-Parity).

UPSTREAM_SYNC:
- file-mapping table: add state-ioredis -> redis.py (IoRedisStateAdapter)
  and state-pg -> postgres.py rows (both ported + tested, were missing).
- Known Non-Parity (platform gaps): add Linear agent-sessions row (#151)
  and an adapter-web row that splits the portable server-side WebAdapter
  (deferred) from the genuinely browser-only client subpaths, correcting
  the earlier over-broad 'browser-only; no Python runtime' note.
- Correct the Google Chat file-uploads row: inbound attachment parsing is
  fully implemented (_create_attachment), so the gap is outbound file
  delivery only (post_message still logs 'not yet supported').
CHANGELOG:
- Drop false gchat file-delivery bullet (PR #112 never merged; upstream
  itself does not implement gchat outbound file delivery)
- Fix Slack DM block-action citation to merged PR #137 (supersedes #133)
- Re-point 0.4.27.1 vehicle from unmerged #120 to tag v0.4.27.1 + #117
- Drop numberless Twilio 'scaffolding PR' (only #142 exists)

UPSTREAM_SYNC:
- Reframe Google Chat outbound file delivery as parity (upstream also
  logs 'not yet supported' + media.upload TODO, index.ts:1282-1289)
- Correct Teams cert-auth row: TS is not 'Supported' — config throws at
  startup in both SDKs (types.ts:31, config.ts:13); parity, issue #58
- Add Messenger get_user row: upstream has no getUser; raising stub is
  parity, Graph-API impl tracked as #132
@patrick-chinchill patrick-chinchill merged commit 34314dd into main Jun 19, 2026
8 checks passed
@patrick-chinchill patrick-chinchill deleted the feat/teams-sdk-pr4-version-cut branch June 19, 2026 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant