Skip to content

Commit 2ac20f0

Browse files
Add changelog for v0.2.1 (#1001)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
1 parent 0388b9d commit 2ac20f0

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

CHANGELOG.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,77 @@ All notable changes to the Copilot SDK are documented in this file.
55
This changelog is automatically generated by an AI agent when stable releases are published.
66
See [GitHub Releases](https://github.com/github/copilot-sdk/releases) for the full list.
77

8+
## [v0.2.1](https://github.com/github/copilot-sdk/releases/tag/v0.2.1) (2026-04-03)
9+
10+
### Feature: commands and UI elicitation across all four SDKs
11+
12+
Register slash commands that CLI users can invoke and drive interactive input dialogs from any SDK language. This feature was previously Node.js-only; it now ships in Python, Go, and .NET as well. ([#906](https://github.com/github/copilot-sdk/pull/906), [#908](https://github.com/github/copilot-sdk/pull/908), [#960](https://github.com/github/copilot-sdk/pull/960))
13+
14+
```ts
15+
const session = await client.createSession({
16+
onPermissionRequest: approveAll,
17+
commands: [{
18+
name: "summarize",
19+
description: "Summarize the conversation",
20+
handler: async (context) => { /* ... */ },
21+
}],
22+
onElicitationRequest: async (context) => {
23+
if (context.type === "confirm") return { action: "confirm" };
24+
},
25+
});
26+
27+
// Drive dialogs from the session
28+
const confirmed = await session.ui.confirm({ message: "Proceed?" });
29+
const choice = await session.ui.select({ message: "Pick one", options: ["A", "B"] });
30+
```
31+
32+
```cs
33+
var session = await client.CreateSessionAsync(new SessionConfig {
34+
OnPermissionRequest = PermissionHandler.ApproveAll,
35+
Commands = [
36+
new CommandDefinition {
37+
Name = "summarize",
38+
Description = "Summarize the conversation",
39+
Handler = async (context) => { /* ... */ },
40+
}
41+
],
42+
});
43+
44+
// Drive dialogs from the session
45+
var confirmed = await session.Ui.ConfirmAsync(new ConfirmOptions { Message = "Proceed?" });
46+
```
47+
48+
> **⚠️ Breaking change (Node.js):** The `onElicitationRequest` handler signature changed from two arguments (`request, invocation`) to a single `ElicitationContext` that combines both. Update callers to use `context.sessionId` and `context.message` directly.
49+
50+
### Feature: `session.getMetadata` across all SDKs
51+
52+
Efficiently fetch metadata for a single session by ID without listing all sessions. Returns `undefined`/`null` (not an error) when the session is not found. ([#899](https://github.com/github/copilot-sdk/pull/899))
53+
54+
- TypeScript: `const meta = await client.getSessionMetadata(sessionId);`
55+
- C#: `var meta = await client.GetSessionMetadataAsync(sessionId);`
56+
- Python: `meta = await client.get_session_metadata(session_id)`
57+
- Go: `meta, err := client.GetSessionMetadata(ctx, sessionID)`
58+
59+
### Feature: `sessionFs` for virtualizing per-session storage (Node SDK)
60+
61+
Supply a custom `sessionFs` adapter in Node SDK session config to redirect the runtime's per-session storage (event log, large output files) to any backing store — useful for serverless deployments or custom persistence layers. ([#917](https://github.com/github/copilot-sdk/pull/917))
62+
63+
### Other changes
64+
65+
- bugfix: structured tool results (with `toolTelemetry`, `resultType`, etc.) now sent via RPC as objects instead of being stringified, preserving metadata for Node, Go, and Python SDKs ([#970](https://github.com/github/copilot-sdk/pull/970))
66+
- feature: **[Python]** `CopilotClient` and `CopilotSession` now support `async with` for automatic resource cleanup ([#475](https://github.com/github/copilot-sdk/pull/475))
67+
- improvement: **[Python]** `copilot.types` module removed; import types directly from `copilot` ([#871](https://github.com/github/copilot-sdk/pull/871))
68+
- improvement: **[Python]** `workspace_path` now accepts any `os.PathLike` and `session.workspace_path` returns a `pathlib.Path` ([#901](https://github.com/github/copilot-sdk/pull/901))
69+
- improvement: **[Go]** simplified `rpc` package API: renamed structs drop the redundant `Rpc` infix (e.g. `ModelRpcApi``ModelApi`) ([#905](https://github.com/github/copilot-sdk/pull/905))
70+
- fix: **[Go]** `Session.SetModel` now takes a pointer for optional options instead of a variadic argument ([#904](https://github.com/github/copilot-sdk/pull/904))
71+
72+
### New contributors
73+
74+
- @Sumanth007 made their first contribution in [#475](https://github.com/github/copilot-sdk/pull/475)
75+
- @jongalloway made their first contribution in [#957](https://github.com/github/copilot-sdk/pull/957)
76+
- @Morabbin made their first contribution in [#970](https://github.com/github/copilot-sdk/pull/970)
77+
- @schneidafunk made their first contribution in [#998](https://github.com/github/copilot-sdk/pull/998)
78+
879
## [v0.2.0](https://github.com/github/copilot-sdk/releases/tag/v0.2.0) (2026-03-20)
980

1081
This is a big update with a broad round of API refinements, new capabilities, and cross-SDK consistency improvements that have shipped incrementally through preview releases since v0.1.32.

0 commit comments

Comments
 (0)