Releases: x2d7/interlude
Releases · x2d7/interlude
v0.3.1
v0.3.1
"If it happened, emit it."
Events improvement release — richer stream lifecycle, tool call visibility, and several bug fixes.
Deprecations
EventNew*aliases (EventNewToken,EventNewToolCall, etc.) — useEventToken,EventToolCall(#49) (removed in v0.4.0)StreamEvent.GetType— unexported, interface is now sealed (#49)
Bug Fixes
- Goroutine leak in
ApproveWaiter.Resolveon context cancellation —resolveSyncnow selects onctx.Done()(#48) EventToolCalldouble resolution when copied —answeredfield replaced with shared*atomic.Bool(#52)Resolve()on an already-resolved tool call silently did nothing — now returnsErrAlreadyResolved(#52, #45)
Features
- New stream events:
EventCompletionStarted,EventToolCallToken,EventToolCallResolved(#50, #41) - Tool execution results emitted to event stream as
EventToolMessage(#50, #46) EventCompletionEnded.ToolCalls— collects all tool calls from the current generation (#50, #47)- JSON serialization for stream events via
MarshalEvent/UnmarshalEvent(#49, #39) - Configurable
Chat.DeclinedToolMessagefield, default:"Tool call declined"(#52, #42)
Changes
v0.3.0
"The zero value is useful."
Minor release — contains one breaking API change.
Bug Fixes
Chat{}withoutToolsfield panicked on firstSession()call —ensureDefaults()now initializes nilMessagesandToolslazily (#31)
Breaking Changes
NewTools()now returns*Toolsinstead ofTools— callers that stored the result in a variable and passed&toolListmust drop the&(#32)
Other
- Examples and documentation updated to reflect new constructor signatures (#34)
v0.2.2
v0.2.2
"Minor version numbers are for when you're ashamed of the changes."
Patch release — no breaking API changes.
Bug Fixes
- Models losing memory —
Sessionwas appending assistant responses asEventNewTokeninstead ofEventNewAssistantMessage; sinceSyncInputis not required to sync streaming-only events, assistant turns were silently dropped from context on every subsequent request (#26)
v0.2.1
v0.2.1
Patch release — no breaking API changes.
Bug Fixes
- Partial tool call assembly — providers that stream tool call arguments in chunks no longer deliver broken JSON to callers;
Sessionnow assembles fragments into complete events before forwarding (#22) - Primitive tool input unmarshaling —
NewToolnow correctly handles primitive input types (string,int,bool,float64) via reflection; previously only structs worked reliably (#21) - Empty OpenAI streaming chunks — empty
choicesin OpenAI streaming responses no longer cause parse errors (#18)
Improvements
Stream.Next()now respects context cancellationSessioninternals refactored intosessionStatestruct for maintainability- Tool call events are dispatched as soon as fully assembled, not batched at end of generation
v0.2.0 — Tools refactor, schema & CI
- ci: enforce coverage threshold on PRs targeting main (e390c5d)
- fix(tests): fix non-deterministic session tests for CI (e543541)
- Merge pull request #15 from x2d7/3-tests (9566320)
- fix(chat): replace direct slice append with thread-safe AddEvent method (race condition fix) (2f038c4)
- chore: go fmt (2bf2b06)
- test(openai): add comprehensive unit tests for openai connector (b2fb526)
- refactor(connect/openai): extract sseStreamer interface for testability (6e955a5)
- test: add tests for chat generation and helpers (9fff5af)
- test(chat): relax race-condition assertion in InnerCtxDone test (f37fdd0)
- test(chat): add resolveSync helper and test ctx cancellation in inner select ctx.Done (6b8b0ec)
- test: add test for ApproveWaiter context cancellation during collection loop (0d63de9)
- test(chat): add unit tests for Messages and ApproveWaiter types (2cf2a60)
- test: add tests for auto-increment ID feature in Add and nextID (4f73574)
- fix: resolve auto-increment ID assignment for tools (d52942c)
- test: add GetSchema cache and panic recovery tests (5362e2f)
- chore: go fmt (73bd838)
- test(chat/tools): add edge case tests for tool execution and creation (877332a)
- fix: handle unsupported types in JSON schema generation (1360c0e)
- test: add tool schema generation and execution tests for NewTool (e317ad3)
- tests: add unit tests for tools package (644991c)
- fix: Tools.Add match tests according to testing plan (e0a85ad)
- fix gofmt command to check all files in the repository (c1ab3c4)
- revert "ci: use go 1.26" (8d460e4)
- fix: typo in workflow file path (6dca9cb)
- ci: add test and coverage workflow (0c34bc0)
- chore: add missing dependencies to go.sum (adf11e3)
- Merge pull request #9 from x2d7/8-refactoring-tools (be1c308)
- feat(tools): add support for primitive types in tools (d132721)
- refactor(tools): unexport GetInputStructType helper (62b1780)
- chore: go fmt (80e8de1)
- fix(chat/tools): skip duplicate ID check when auto-increment is enabled (5e8f0a3)
- feat(chat/tools): add functional options for tool ID customization (5c12d4e)
- fix(tools): populate tool ID in Snapshot method (9b51b52)
- refactor(tools): rename Name field to Id in tool struct (9c1cc94)
- refactor(tools): extract schema generation related code to schema.go (1f6cef3)
- fix(chat/tools): initialize tools map and correct slice allocation (a1771b3)
- refactor(chat/tools): replace slice storage with map and add Remove method (560eba6)
- refactor(chat/tools): unexport ToolFunction type (e4b17e3)
- refactor(chat/tools): unexport Func field to function (6890946)
- refactor(tools): unexport Tool type, enexport Tool.Schema and add GetSchema method instead (1237cf2)
- refactor(chat/tools): replace manual RLock with Snapshot in Execute (705e14b)
- refactor(chat/tools): change ToolFunction input type from any to string (8caa0b3)
- refactor(tools): simplify Execute signature (86d3731)
- chore(tools): add TODOs for primitive tool inputs and schema getter method (2a10efd)
- chore(chat/tools): add TODO for Tools refactoring plans (a531a87)
- refactor(tools): remove redundant InputType field from Tool struct (ad2d615)
- chore(gitignore): remove .old_code entry (3047545)
v0.1.0 – Major API refactor & provider abstraction
Major release with a full API refactor.
- Introduced provider-agnostic LLM Client interface
- Chat redesigned around abstract provider model
- OpenAI now used only inside a thin client wrapper implementation
- Reworked streaming, events, and tool flow