Changelog
What changed in each HookChat package, newest release first. Each package keeps its own changelog in the repository; this page is generated from them.
0.1.1 (2026-09-03)#
@hookchat/node#
Changed
- The README and the
baseUrloption describe the API origin (https://hookchat.devby default, a local or self-hosted gateway when testing) without naming any internal environment.
Full @hookchat/node changelog on GitHub
hookchat (Python)#
Changed
- Documentation only: the base URL is described as the API origin,
https://hookchat.devby default; no internal environment is named.
Full hookchat (Python) changelog on GitHub
hookchat-go#
Changed
WithBaseURLdocumentation and the README example use a local gateway as the alternative origin; no internal environment is named.
Full hookchat-go changelog on GitHub
hookchat CLI#
Changed
auth login,auth statusandauth logouthelp and the README show a second workspace profile (--profile acme) instead of an internal environment; the command reference is regenerated.
Full hookchat CLI changelog on GitHub
0.1.0 (2026-09-03)#
@hookchat/node#
Added
- Every
/v1operation is now a typed method:stats.get,keys.create,keys.list,keys.revoke,realtime.ticket,webhooks.deliveries.summaryandwebhooks.deliveries.replayAlljoin the existing resources. - Async iteration over every paginated list:
conversations.iterate,messages.iterate,audit.iterateandwebhooks.deliveries.iteratefollownext_cursoruntil exhausted, fetch lazily, and accept amaxItemsguard. Thepaginatehelper they are built on is exported. - Retries: a jittered exponential backoff (250 ms doubling to an 8 s ceiling, equal jitter) on 429 and 5xx and on timeouts and network errors for GETs; every other method is retried on 429 only, because a 429 was never processed while a 5xx on a send or a replay may have been.
Retry-After(seconds or an HTTP date) is honoured and capped. Defaults: 2 retries, overridable per client and per call. - Timeouts: every request runs under an
AbortControllerdeadline covering connect, headers and body. Default 30 s, overridable per client (timeoutMs) and per call. A caller-suppliedsignalcancels a request and is never retried. HookChatErrornow carriesrequestId(thex-correlation-idresponse header) andbody(the raw response text) alongsidecode,statusanddetail. Transport and non-envelope failures use the same class with the SDK codestimeout,network_error,aborted,server_errorandinvalid_response.- Per-call
RequestOptions(signal,timeoutMs,maxRetries) as the trailing argument on every method. - A client-level
tenantoption, applied as?tenantto every request that does not name one; the way to use an operator key without repeating the slug. messages.replyandmessages.sendAsHumanAgentacceptattachments(media sends, text optional when at least one attachment is present) andreply_to. The type still requires text or an attachment, still requiresactor_idon the human-agent route, and still rejectstagsand a genericsend.include_testonconversations.get,messages.listandmessages.getto opt a read into test-scope rows.ErrorCodegainscsrf_failed,key_not_found,oauth_state_invalidandpending_link_not_found, matching the API's closed vocabulary.- New resource types:
Stats,EndpointDeliveryCounts,ApiKey,CreatedApiKey,KeyScope,RealtimeTicket,SendAttachment,DeliveriesSummary,ReplayableDeliveryStatus,FailedDeliveryStatus. - An end-to-end suite (
npm run e2e) against a live gateway and a capture receiver, driven byHOOKCHAT_*environment variables and failing when any is missing. It exercises every resource, the full webhook lifecycle, signature verification on captured deliveries across a secret rotation, and the send policy on open and closed conversations. - Unit coverage for every method, pagination, retry scheduling, timeouts, aborts and error mapping (64 tests), plus type-level assertions for the send policy.
Changed
webhooks.deliveries.bulkReplayis renamedreplayAll; the old name stays as a deprecated alias for 1.x.ReplayResult.statusis narrowed to the literal'pending', matching the API.verifyWebhookis unchanged in contract; its documentation now spells out the 24-hour rotation overlap (twov1=signatures, either secret verifies) and the 300-second timestamp tolerance.- A non-JSON or non-envelope response now raises
HookChatError(invalid_response, or the status-mapped code for a 4xx/5xx) instead of a plainError.
Added, initial client (previously the unpublished, git-distributed 1.0.0)
- The initial client:
messages.reply,messages.sendAsHumanAgent,messages.list,messages.get,conversations.list,conversations.get,accounts.list,audit.list,webhooks.create/list/get/update/delete/rotate/test,webhooks.deliveries.list/replay/bulkReplayandping. verifyWebhook, scheme-compatible with the gateway's signer, accepting a multi-v1header for secret rotation.HookChatError(code, status, detail) andHookChatSignatureError.- The send policy enforced in the types: two send paths,
actor_idrequired on the human-agent path, no genericsend, notags.
Full @hookchat/node changelog on GitHub
hookchat (Python)#
Added
HookChatandAsyncHookChatclients sharing one transport, with bearer auth, a default tenant for operator keys,with_optionsfor per-call timeouts and retry budgets, and arequestescape hatch.- Resources:
messages(list, get, reply, send_as_human_agent),conversations(list, get),accounts(list),audit(list),stats(get),keys(create, list, revoke),webhooks(create, list, get, update, delete, rotate_secret, test) withwebhooks.deliveries(list, summary, replay, replay_all),realtime(ticket) andping. - Typed frozen dataclasses for every response, plus
Pageand cursor-followingiterategenerators withmax_items. - Jittered exponential retries on 429, 5xx, connection errors and timeouts for reads, 429 only for replay and test, honouring
Retry-After. HookChatErrorwithcode,status,message,detail,request_idandbody, and a subclass per error family includingWindowClosedError,NotFoundError,RateLimitError,ValidationError,ServerError,APIConnectionErrorandAPITimeoutError.verify_webhookforHookChat-Signatureverification, accepting either digest during a secret rotation and returning the typed event;SignatureVerificationErroron any failure.
Full hookchat (Python) changelog on GitHub
hookchat-go#
Added
hookchat.Newwith functional options:WithBaseURL,WithHTTPClient,WithTimeout,WithMaxRetries,WithUserAgent,WithTenant.- Services:
Messages(List, Get, Reply, SendAsHumanAgent),Conversations(List, Get),Accounts(List),Audit(List),Stats(Get),Keys(Create, List, Revoke),Webhooks(Create, List, Get, Update, Delete, RotateSecret, Test),Webhooks.Deliveries(List, Summary, Replay, ReplayAll),Realtime(Ticket) andPing. - Typed request and response structs for every endpoint, matching the OpenAPI document field for field.
- Cursor pagination with
Page[T], range-over-funcAlliterators,MaxItemsandCollect. - Retries with jittered exponential backoff on 429, 5xx and transport errors for reads, 429 only for replay and test, honouring
Retry-Afterand the caller's context deadline. *hookchat.ErrorwithCode,Status,Message,Detail,RequestIDandBody, plusIsWindowClosed,IsHumanAgentUnavailable,IsNotFound,IsRateLimited,IsAuth,IsInvalidRequest,IsReplayConflictandIsSendFailed.VerifyWebhookandParseEventwith typed event payload accessors, rotation-aware multi-v1verification, a 300 second tolerance andErrSignature.SignandSignatureHeaderValuefor signing fixtures.- Unit tests over httptest servers and a live end-to-end suite behind the
e2ebuild tag.
Full hookchat-go changelog on GitHub
hookchat CLI#
Added
- The
hookchatbinary, built on the hookchat-go SDK, with a command for every /v1 resource:ping,keys(create, list, revoke),webhooks(create, list, get, update, delete, rotate, test),webhooks deliveries(list, summary, replay, replay-all),conversations(list, get),messages(list, get, reply, human-agent),accounts list,audit list,statsandrealtime ticket. auth login,auth statusandauth logoutwith named profiles stored in$HOOKCHAT_CONFIG_DIR/config.jsonor the user config directory, written with mode 0600. Keys are read from--api-keyor standard input and are never printed in full.- Credential precedence: flags, then
HOOKCHAT_API_KEY,HOOKCHAT_BASE_URL,HOOKCHAT_TENANTandHOOKCHAT_PROFILE, then the profile. --output table|json|yaml,--quiet(ids only, or the secret forkeys create,webhooks createandwebhooks rotate),--no-colorandNO_COLOR, and--timeout.- Cursor pagination on every list:
--limit,--cursorand--all, withnext_cursoron stderr in table mode and in the JSON or YAML envelope otherwise. verify: offline signature verification of a captured delivery ({"headers": ..., "body": ...}from a file or stdin, or a raw body with--header), honouring rotation overlaps and--tolerance.- Stable exit codes (0 to 10) mapped from the API error vocabulary and documented in
hookchat --help; API errors print the code, message, detail, request id and a troubleshooting link. completionfor bash, zsh, fish and PowerShell;docs generateanddocs checkfor the single-file command reference atdocs/cli/reference.md, guarded by a test.version, reporting the release version (or the module version recorded bygo install), with Go, OS and architecture under--output json.- Unit tests over httptest servers for every command group and a live end-to-end suite behind the
e2ebuild tag, wired intoscripts/sdk-e2e.sh.