All notable changes to this project will be documented in this file. Releases are automated by release-please; see Conventional Commits for commit guidelines.
5.3.0 (2026-08-17)
5.2.0 (2026-08-12)
5.1.1 (2026-07-27)
5.1.0 (2026-07-24)
- add opt-in retry for rate-limited and transport-failed requests (#129) (a851a68)
- emit structured log events and redact secrets from debug logs (#128) (85bffd0)
Withdrawn. These changes shipped in 5.1.0. See MIGRATION_v4_to_v5.md.
- add GetChannel endpoint (#123)
4.2.2 (2026-06-30)
4.2.1 (2026-06-30)
4.2.0 (2026-06-16)
4.1.2 (2026-06-15)
4.2.0 (2026-MM-DD)
-
Added segment management methods to
ChatClient:CreateSegment,UpdateSegment, andAddSegmentTargets. Segments targeted by a campaign can now be created and edited through the SDK, completing the campaign workflow without falling back to raw REST (CHA-3483). -
Standardized error handling per the Server-Side SDK Error Handling Spec (CHA-2958).
- Four sentinel error categories on the existing
*StreamError:ErrApiResponse,ErrRateLimited,ErrTransport,ErrTaskFailed. Useerrors.Is(err, ...)to branch anderrors.As(err, &streamErr)to extract typed fields.ErrRateLimitedalso satisfieserrors.Is(err, ErrApiResponse). - New fields on
StreamError:Unrecoverable,Details,RawResponseBody,RetryAfter,ErrorType,Task. No existing field accesses change. - Transport-layer failures (connection reset / refused, timeout, DNS, TLS, broken pipe) are now wrapped at the HTTP-client boundary into
*StreamErrorwithErrTransport; the original error is preserved viaerrors.Unwrap.ErrorTypeis one ofconnection_reset,timeout,dns_failure,tls_handshake_failed,unknown(matches the logging spec error.type enum). Retry-Afterresponse header is parsed on HTTP 429 (both RFC 7231 §7.1.3 integer-seconds and HTTP-date forms) and exposed asStreamError.RetryAfter. Auto-retry is not part of this SDK; callers compose their own retry strategy usingRetryAfterandUnrecoverable.- Unparseable error bodies (HTTP response received but JSON envelope malformed or absent) surface as
ErrApiResponsewithcode=0,Message="failed to parse error response", and the raw body preserved onRawResponseBody. The JSON parse error is reachable via the cause chain. - New public helper
WaitForTask(ctx, client, taskID, opts...)polls the task-status endpoint until terminal state. Onstatus="failed"returns*StreamErrorwithErrTaskFailedandTaskpopulated from the backend'sErrorResult. On timeout / context cancellation returns*StreamErrorwithErrTransportandErrorType="timeout". Defaults: 1s poll interval, 60s wait timeout — override withWithWaitForTaskPollInterval/WithWaitForTaskTimeout. - Internal
stack.Wraphelper (~30 lines,runtime.Caller-based, no external dependency) replacesfmt.Errorf("...: %w", err)in every user-facing path.fmt.Sprintf("%+v", err)now prints the captured wrap site for any error produced by the SDK.
- Four sentinel error categories on the existing
-
Explicit HTTP connection pool configuration (CHA-2956). Four new functional options:
WithMaxConnsPerHost(int): default5WithIdleTimeout(time.Duration): default55sWithConnectTimeout(time.Duration): default10sWithRequestTimeout(time.Duration): default30s(was6s; see Behavior changes) These tune the underlying*http.Transport.WithHTTPClientcontinues to act as an escape hatch; when set, none of the four new options apply.
-
INFO log on client construction lists the effective pool config.
- Default
RequestTimeoutis now30s(was6s). Aligns the Go SDK with the cross-SDK contract in CHA-2956. Existing callers usingWithTimeout(...)are unaffected. Callers relying on the 6s ceiling for fail-fast behavior should passWithRequestTimeout(6 * time.Second)(orWithTimeout(...), kept as an alias for backward compatibility). - Default HTTP transport now caps connections per host at
5and closes idle sockets after55s(vs. unlimited / unbounded previously). Behavior matches legacystream-chat-go(5 / 59s) modulo the 4s tighter idle window.
4.1.1 (2026-05-21)
4.1.0 (2026-05-01)
4.0.6 (2026-04-23)
- add bookmark for comments (#97) (7e41662)
- regenerate from latest OpenAPI spec, keep only retention runs test (5d543c4)
- update opnepai specs (3f28e35)
- skip retention tests when endpoints unavailable (404) (faff5e6)
4.0.4 (2026-03-31)
4.0.3 (2026-03-23)
4.0.2 (2026-03-19)
4.0.1 (2026-03-19)
4.0.0 (2026-03-05)
- Type names across all products now follow the OpenAPI spec naming convention: response types are suffixed with
Response, input types withRequest. See MIGRATION_v3_to_v4.md for the complete rename mapping. Event(WebSocket envelope type) renamed toWSEvent. Base event type renamed fromBaseEventtoEvent(with fieldtypeinstead ofT).- Event composition changed from monolithic
*Presetembeds to modularHas*types (HasChannel,HasMessage,HasUserCommonFields, etc.). Pagerrenamed toPagerResponseand migrated from offset-based to cursor-based pagination (next/prevtokens).- Module path changed from
github.com/GetStream/getstream-go/v5togithub.com/GetStream/getstream-go/v5.
- Full product coverage: Chat, Video, Moderation, and Feeds APIs are all supported in a single SDK.
- Feeds: activities, feeds, feed groups, follows, comments, reactions, collections, bookmarks, membership levels, feed views, and more.
- Video: calls, recordings, transcription, closed captions, SFU, call statistics, user feedback analytics, and more.
- Moderation: flags, review queue, moderation rules, config, appeals, moderation logs, and more.
- Push notification types, preferences, and templates.
- Webhook support:
WHEventenvelope type for receiving webhook payloads, utility functions for decoding and verifying webhook signatures, and a full set of individual typed event structs for every event across all products (Chat, Video, Moderation, Feeds) usable as discriminated event types. - Cursor-based pagination across all list endpoints.