Skip to content

release: 0.4.27 — synced to upstream vercel/chat@4.27.0#106

Merged
patrick-chinchill merged 2 commits into
mainfrom
claude/release-0.4.27
May 28, 2026
Merged

release: 0.4.27 — synced to upstream vercel/chat@4.27.0#106
patrick-chinchill merged 2 commits into
mainfrom
claude/release-0.4.27

Conversation

@patrick-chinchill
Copy link
Copy Markdown
Collaborator

@patrick-chinchill patrick-chinchill commented May 28, 2026

Summary

Release prep for 0.4.27 — synced to upstream vercel/chat@4.27.0 (release commit f55378a). Draft — held per user request: tag/publish only after any further patches in flight have landed.

Bumps pyproject.toml from 0.4.27a1 to 0.4.27, rewrites the CHANGELOG entry from sync-plan checklist to user-facing release notes covering all 14 commits since v0.4.26.3, folds in the review-loop discipline docs captured during the wave, and fixes the long-standing test_throws_when_no_auth failure (test bug — duplicate forgot to clear GITHUB_TOKEN env, see commit fee58ac).

What ships

Upstream parity ports (vercel/chat 4.27.0)

Python-only improvements

Sync-process docs

  • docs/UPSTREAM_SYNC.md: new "Review-Loop Discipline" section + SDK-preference sub-rule
  • docs/SELF_REVIEW.md: explicit "before opening the PR" timing + economics

Test cleanup

  • test_throws_when_no_auth in TestGitHubAdapterConstructor now clears GITHUB_TOKEN env before the assertion. The duplicate test at line 827 already had the cleanup; the line-190 copy was missing it, so the suite was reporting "1 failed" wherever the env var was set.

Validation

  • uv run ruff check src/ tests/ scripts/ — clean
  • uv run ruff format --check src/ tests/ scripts/ — 197/197 formatted
  • uv run python scripts/audit_test_quality.py — 0 hard failures
  • uv run pytest tests/ --tb=short -q4036 passed, 3 skipped, 0 failed

Upstream tagging note

Upstream cut versions on Apr 30 2026 (commit f55378a) but did NOT publish a chat@4.27.0 tag — only @chat-adapter/shared@4.27.0 got a git tag. The fidelity workflow stays pinned to chat@4.26.0 for this release; will move to a 4.27 SHA pin (or a real tag if upstream publishes one) in the next sync.

Why draft

Per user note: additional patches may bundle into 0.4.27 before tagging. Hold this PR until those land; CHANGELOG can be amended in place.


Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Released v0.4.27 stable with cross-adapter parity improvements including Chat.get_user and ExternalSelect enhancements.
    • Enhanced adapter support for Slack, Teams, Telegram, and Discord with streaming, messaging, and rendering improvements.
    • Improved concurrency handling across adapters.
  • Documentation

    • Updated project status from alpha to stable v0.4.27.
    • Expanded upstream sync and self-review documentation.
  • Tests

    • Strengthened GitHub webhook authentication test reliability.

Review Change Stack

Version bump from 0.4.27a1 to 0.4.27. Rewrites the CHANGELOG entry for
this release from a sync-plan checklist to user-facing release notes
covering all 14 commits since v0.4.26.3 — the upstream parity ports
(#84-#92) and the Python-only bugfixes (#92, #99, #101, #103, #104, #105).

Folds in the review-loop discipline documentation captured during this
wave (formerly on claude/improve-sync-process-docs, commit a7587ab):
docs/UPSTREAM_SYNC.md gains a "Review-Loop Discipline" section and a
sub-rule on preferring official SDKs over hand-rolls; docs/SELF_REVIEW.md
header rewritten to "before opening the PR" with a "Timing" subsection
making the bot-round economics explicit.

Updates README and CLAUDE.md to drop the "alpha / in-flight" wording.
docs/UPSTREAM_SYNC.md versions table grows the 0.4.27 row.

Fidelity workflow stays pinned to chat@4.26.0 — upstream did not publish
a chat@4.27.0 tag for the Apr 30 monorepo cut (only @chat-adapter/shared
got tagged); will move to a 4.27 SHA pin in the next sync.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 28, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5b257db6-fe5a-42f0-8a59-a0e13fd2e23e

📥 Commits

Reviewing files that changed from the base of the PR and between ff27651 and fee58ac.

📒 Files selected for processing (7)
  • CHANGELOG.md
  • CLAUDE.md
  • README.md
  • docs/SELF_REVIEW.md
  • docs/UPSTREAM_SYNC.md
  • pyproject.toml
  • tests/test_github_webhook.py

📝 Walkthrough

Walkthrough

This PR finalizes the v4.27.0 upstream sync by bumping the package version from alpha to release status, updating project metadata and release notes, enhancing development process documentation with improved upstream-sync guidance and review discipline, and hardening a GitHub adapter test for cleaner CI behavior.

Changes

Release 0.4.27 Finalization

Layer / File(s) Summary
Version Metadata and Status Update
pyproject.toml, README.md, CLAUDE.md
Package version bumped from 0.4.27a1 to 0.4.27. README status changed from alpha/porting to finalized 0.4.27 with upstream commit reference. CLAUDE.md sync status and version mapping clarified to reflect Python-only fixes on top of v4.26.0 for the prior release.
Release Notes and Changelog
CHANGELOG.md
Main 0.4.27 release section documents upstream parity ports (Chat.get_user, ExternalSelect features, concurrency handling) across Slack, Teams, Telegram, and Discord adapters, Python-only improvements (markdown parser, streaming, Google Chat rendering, error logging), sync-process documentation, upstream items not ported, and upstream tagging notes.

Development Process and Test Improvements

Layer / File(s) Summary
Upstream Sync and Self-Review Guidance
docs/UPSTREAM_SYNC.md, docs/SELF_REVIEW.md
Version mapping table extended for 0.4.26.3. New porting-hazard rule emphasizes using official maintained SDKs over hand-rolled formats. Review checklist timing shifted to before-PR-open. New "Review-loop economics" and "Review-Loop Discipline" sections detail correctness review, triage rubric, and bot-finding escalation rules. SELF_REVIEW.md adds explicit timing (run before PR open) and cost/benefit comparison.
GitHub Adapter Test Environment Isolation
tests/test_github_webhook.py
test_throws_when_no_auth now explicitly clears and restores GITHUB_TOKEN, GITHUB_APP_ID, and GITHUB_PRIVATE_KEY environment variables to prevent CI/dev credentials from masking authentication validation failures.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • Chinchill-AI/chat-sdk-python#83: This PR finalizes the same upstream v4.27.0 sync started in PR #83 by updating the shared version/mapping docs and pyproject.toml (transitioning 0.4.27a10.4.27, with corresponding README/CLAUDE/CHANGELOG/UPSTREAM_SYNC updates).

Poem

🐰 hops with release cheer

The alpha fades, the version's bright,
Four-twenty-seven sees the light!
Docs dance with wisdom, tests now wise—
A polished release before our eyes! 🎉

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

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.

Copy link
Copy Markdown
Contributor

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

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 finalizes the sync to upstream vercel/chat@4.27.0 by bumping the version to 0.4.27 across pyproject.toml, README.md, CLAUDE.md, and CHANGELOG.md. It also updates documentation in docs/SELF_REVIEW.md and docs/UPSTREAM_SYNC.md to establish guidelines on review-loop discipline, self-review timing, and a preference for official SDKs over hand-rolled implementations. A review comment identified a minor Markdown formatting issue with backticks in the newly added documentation.

Comment thread docs/UPSTREAM_SYNC.md
echoes (the system sometimes re-broadcasts a comment you just
posted). A silent acknowledgment is sufficient.

10. **Parallelize multi-PR triage on day one.** When several PRs are
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

There is an unclosed backtick before git worktree add. It should be closed to ensure correct Markdown rendering.

Suggested change
10. **Parallelize multi-PR triage on day one.** When several PRs are
10. **Parallelize multi-PR triage on day one.** When several PRs are in the same review state, dispatch parallel agents (one per PR, each with its own `git worktree add`) immediately. The 4.27 wave converged 6 PRs in ~1 hour of wall time once parallelized; running them sequentially would have taken days.

TestGitHubAdapterConstructor.test_throws_when_no_auth expected
ValidationError on auth-less construction, but the GitHubAdapter
constructor's env-fallback path silently satisfied auth from a
GITHUB_TOKEN set by CI / dev shell — so the test failed wherever
GITHUB_TOKEN was set in the environment.

The duplicate test at line 827 in this same file already does the
env-var cleanup correctly. Apply the same pattern to line 190 so the
suite is fully green for the 0.4.27 release: pop GITHUB_TOKEN /
GITHUB_APP_ID / GITHUB_PRIVATE_KEY before the assert, restore them in
finally.
@patrick-chinchill patrick-chinchill marked this pull request as ready for review May 28, 2026 22:14
@patrick-chinchill patrick-chinchill merged commit c43ea05 into main May 28, 2026
10 of 11 checks passed
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fee58ac6af

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CHANGELOG.md
- Bumps lint.yml's pinned upstream ref to commit `f55378a` (or a later SHA if upstream cuts a `chat@4.27.0` tag in the meantime).
- Adds an entry under the next `CHANGELOG` heading (`0.4.27a2`, `0.4.27a3`, …).
3. Once all 22 items are ported (or explicitly documented as divergence in `docs/UPSTREAM_SYNC.md`), the final PR cuts `0.4.27` and switches CI back to strict fidelity at the upstream tag.
Upstream cut versions for the entire monorepo on Apr 30 2026 (commit `f55378a`), but only `@chat-adapter/shared@4.27.0` got a git tag — no `chat@4.27.0` tag was published. The fidelity workflow (`scripts/verify_test_fidelity.py`, `.github/workflows/lint.yml`) stays pinned to `chat@4.26.0` for this release; it'll move to a 4.27 SHA pin (or a real tag if upstream publishes one) in the next sync.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Pin fidelity checks to the released upstream commit

This releases the package as synced to UPSTREAM_PARITY = "4.27.0", but the note explicitly leaves the fidelity workflow pinned to chat@4.26.0; .github/workflows/lint.yml clones that tag before running scripts/verify_test_fidelity.py --strict, so CI will compare the Python core tests against the previous upstream release and cannot catch mapped tests added or changed in the 4.27 release. Since the chat@4.27.0 tag is missing, the workflow should check out the release SHA (f55378a) or another 4.27 pin before this is shipped as 0.4.27.

Useful? React with 👍 / 👎.

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.

Slack adapter: add Socket Mode transport (webhook-only today)

2 participants