Status (updated 2026-05-28)
0.4.27 shipped (release c43ea05 on main, tag v0.4.27). Wave 4.27 → 4.29 now in flight.
Background
Upstream has moved on while the 4.27 sync (PRs #83 , #85 , #86 , #87 , #88 , #89 , #90 ) was in flight:
chat@4.27.0 — NEVER got a chat@* tag (only @chat-adapter/shared@4.27.0)
chat@4.28.0 — NEVER got a chat@* tag
chat@4.29.0 — released 2026-05-18, now tagged
chat@4.29.0 is the next real upstream tag and the target for this sync.
What's between our 0.4.27 baseline and chat@4.29.0
37 substantive commits in packages/. Already-covered items (no work):
Sync scope (TODO)
Core (packages/chat)
All adapters
Slack
Discord
Telegram
Teams
New packages
Open questions
Cadence : one wave (4.27 → 4.29) or split (4.27 → 4.28, then 4.28 → 4.29)? Default in PR sync: upstream v4.29.0 (alpha 1) #108 : one wave.
Python floor bump to 3.12 (required for Teams SDK migration). Confirm chinchill-api compatibility.
Discord Gateway scope : ship Gateway support in this wave (issue Discord adapter: port native Gateway WebSocket support (HTTP-only today) #57 ) or keep #490 isolated?
adapter.client rename : deprecation shim for one release, or hard cutover?
Plus the chat/ai-specific and Messenger-specific questions in Design: chat/ai subpath port (vercel/chat#492) #109 and Design: Messenger (Meta) adapter port (vercel/chat#461) #110 .
Acceptance criteria (carried from original filing)
References
Alpha-bump PR: sync: upstream v4.29.0 (alpha 1) #108
Design issues: Design: chat/ai subpath port (vercel/chat#492) #109 (chat/ai), Design: Messenger (Meta) adapter port (vercel/chat#461) #110 (Messenger)
Teams SDK migration: Migrate Teams adapter to microsoft-teams-apps (official MS Python SDK) #93
Discord Gateway: Discord adapter: port native Gateway WebSocket support (HTTP-only today) #57
4.27 wave (prior sync): sync: upstream v4.27.0 (alpha 1) #83 (alpha) + fix(adapters): Slack streaming team_id + Teams DM Graph conversation IDs (vercel/chat#330, #403) #85 -fix(gchat): use full markdown parser for card text rendering #92 , fix(streaming-markdown): list-marker awareness + table chunk-boundary (issue #69) #99 , fix(markdown): chat-scoped completeness — escaped chars, task lists, math/escape in _remend #101 , fix(slack): use channel= kwarg for files_upload_v2 (closes #102) #103 , feat(adapters): log init for gchat + github, include registered adapters in not-found error #104 , fix(adapters): accept dict StreamChunks in slack/github/google_chat streams #105 (ports + fixes)
Status (updated 2026-05-28)
0.4.27 shipped (release
c43ea05on main, tagv0.4.27). Wave 4.27 → 4.29 now in flight.claude/sync-upstream-4.29)chat/aisubpath, ~7 days), Design: Messenger (Meta) adapter port (vercel/chat#461) #110 (Messenger adapter, ~5-6 days)Background
Upstream has moved on while the 4.27 sync (PRs #83, #85, #86, #87, #88, #89, #90) was in flight:
chat@*tag (only@chat-adapter/shared@4.27.0)chat@*tagchat@4.29.0is the next real upstream tag and the target for this sync.What's between our 0.4.27 baseline and chat@4.29.0
37 substantive commits in
packages/. Already-covered items (no work):_underscoreconvention already provides this; zero__name_mangledinternals across all 8 adaptersSync scope (TODO)
Core (
packages/chat)chat/aisubpath for AI SDK utilities (feat(chat): addchat/aisubpath for AI SDK utilities vercel/chat#492) — design: Design: chat/ai subpath port (vercel/chat#492) #109queue-debounceconcurrency strategy (feat(chat): add queue-debounce concurrency strategy vercel/chat#495)threadHistory(feat(chat): add Transcripts API + rename per-thread cache to threadHistory vercel/chat#448) — has chinchill-api blast radiuscallbackUrlon buttons and modals (feat(chat): add callbackUrl to buttons and modals vercel/chat#454)message.subject+ adapter client access (feat(chat): add message.subject and adapter client access vercel/chat#459)All adapters
adapter.clientrename →adapter.octokit/adapter.linearClient/adapter.webClient(feat: rename adapter.client to adapter.octokit / adapter.linearClient / adapter.webClient vercel/chat#478)Slack
markdown_textfor outgoing messages (feat(slack): use native markdown_text for outgoing messages vercel/chat#440) — deferred from 0.4.27webhook_verifier > signing_secretprecedence (fix(slack): prefer webhookVerifier over signingSecret vercel/chat#468) — our 0.4.27 went the opposite direction; upstream has since reversed itselfWebClientviaadapter.client(feat(slack): expose direct WebClient access via adapter.client vercel/chat#471, reapplied in #476)Discord
Telegram
video_noteround video messages (fix(adapter-telegram): handle video_note (round video messages) in extractAttachments vercel/chat#457)Teams
microsoft-teams-appsSDK (issue Migrate Teams adapter to microsoft-teams-apps (official MS Python SDK) #93) — replaces hand-rolled streaming, requires Python 3.12 floor bumpNew packages
@chat-adapter/web(feat: add @chat-adapter/web — browser chat UI for chat-sdk bots vercel/chat#444) — out of scope, no browser runtime@chat-adapter/teststest kit (feat(tests): add @chat-adapter/tests test kit vercel/chat#470) — evaluate vs our existing adapter-test patternOpen questions
adapter.clientrename: deprecation shim for one release, or hard cutover?Acceptance criteria (carried from original filing)
UPSTREAM_PARITY = "4.29.0"✅ (done in sync: upstream v4.29.0 (alpha 1) #108)chat@4.29.0scripts/fidelity_baseline.jsonregenerated against 4.29.0docs/UPSTREAM_SYNC.mdReferences
_remend#101, fix(slack): use channel= kwarg for files_upload_v2 (closes #102) #103, feat(adapters): log init for gchat + github, include registered adapters in not-found error #104, fix(adapters): accept dict StreamChunks in slack/github/google_chat streams #105 (ports + fixes)