Releases: github/copilot-sdk
GitHub Copilot SDK for Java 1.0.0-beta-10-java.5
Installation
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
📦 [View on Maven Central]((central.sonatype.com/redacted)
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.5</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.5")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.5'Changes since java/v1.0.0-beta-10-java.4
- improvement: add reflection-based Jackson round-trip test coverage for all generated event/type classes (#1509)
- improvement: fix JaCoCo coverage badge script to use correct generated-types package name (#1499)
- improvement: Java release pipeline improvements (#1514)
New contributors
@examonmade their first contribution in #1323
Full Changelog: java/v1.0.0-beta-10-java.4...java/v1.0.0-beta-10-java.5
Generated by Release Changelog Generator · ● 2.9M
v1.0.0-beta.10
Fix: [C#] Coordinate Copilot CLI stderr pump cleanup
Fixes a race condition in the .NET CopilotClient where the stderr reader could outlive the CLI process during shutdown, causing TaskScheduler.UnobservedTaskException errors. The stderr pump now has its own cancellation token and connection cleanup properly coordinates pump shutdown before disposing the process. (#1136)
Feature: [Rust] Expose install_bundled_cli and HAS_BUNDLED_CLI
Two new public APIs make it easier to access the bundled CLI path before a Client exists, eliminating the need for consumers to duplicate the cache-path resolution logic. (#1489)
// Check if a bundled CLI is available at compile time
if copilot_sdk::HAS_BUNDLED_CLI {
// Extract and get the path to the bundled CLI
if let Some(path) = copilot_sdk::install_bundled_cli() {
println!("Bundled CLI at: {}", path.display());
}
}Note
🔒 Integrity filter blocked 2 items
The following items were blocked because they don't meet the GitHub integrity level.
- #1136
search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved". - #868
search_pull_requests: has lower integrity than agent requires. The agent cannot read data with integrity below "approved".
To allow these resources, lower min-integrity in your GitHub frontmatter:
tools:
github:
min-integrity: approved # merged | approved | unapproved | noneGenerated by Release Changelog Generator · ● 2.4M
rust/v1.0.0-beta.10
What's Changed
- Use jsoncreator for AgentMode ctor, per review comments. by @edburns in #1465
- Update @github/copilot to 1.0.55-6 by @github-actions[bot] in #1471
- Port copilot-sdk-java PR #232: reference-impl-sync with EMPTY mode fixes by @edburns in #1473
- Move Java to monorepo: Phase 06: Cutover and Cleanup by @edburns in #1472
- Add from github/copilot-sdk-java#233 by @edburns in #1475
- Add displayPrompt support to session.send across all SDKs by @devm33 in #1470
- Update @github/copilot to 1.0.55-7 by @github-actions[bot] in #1476
- Defer sessionId to server for cloud sessions by @stephentoub in #1479
- Re-invalidate build.rs when extracted CLI cache is removed by @tclem in #1480
- Canvas SDK: post-merge review followups (PR #1401) by @jmoseley in #1420
- feat: add MCP Apps (SEP-1865) support by @mattdholloway in #1335
- Config parity across SDKs: add largeOutput, pluginDirectories, spell out Directory by @stephentoub in #1482
- feat: add mcpOAuthTokenStorage support across all SDKs by @MackinnonBuck in #1326
- Integrate Bruno's PR 1478 with Ed's desired CI/CD changes by @edburns in #1483
- Update @github/copilot to 1.0.55 by @github-actions[bot] in #1484
- Track live open canvas snapshots by @jmoseley in #1447
- Update @github/copilot to 1.0.56-0 by @github-actions[bot] in #1485
- feat: add granular per-session flags for multitenancy hardening by @MackinnonBuck in #1474
- Apply review comments from standalone backport. by @edburns in #1486
- Update @github/copilot to 1.0.56-1 by @github-actions[bot] in #1488
- Coordinate Copilot CLI stderr pump cleanup by @xoofx in #1136
- Skip JaCoCo (always fails on main) by @SteveSandersonMS in #1492
- Expose install_bundled_cli and HAS_BUNDLED_CLI in the Rust SDK by @tclem in #1489
New Contributors
- @mattdholloway made their first contribution in #1335
Full Changelog: rust/v1.0.0-beta.9...rust/v1.0.0-beta.10
GitHub Copilot SDK for Java 1.0.0-beta-10-java.4
Installation
i️ Public Preview: This is the official Java SDK for GitHub Copilot. This repository treats the official .NET and Node.js SDKs for GitHub Copilot as reference implementations. These SDKs are all officially supported as GitHub open source projects. The Java implementation follows the backward compatibility guarantees offered by the reference implementations.
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.4</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.4")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.4'Changes since java/v1.0.0-beta-10-java.3
- improvement: fix release pipeline token permissions to enable publishing to Maven Central
Full Changelog: java/v1.0.0-beta-10-java.3...java/v1.0.0-beta-10-java.4
Generated by Release Changelog Generator · ● 2.7M
GitHub Copilot SDK for Java 1.0.0-beta-10-java.3
Installation
ℹ️ Public Preview: This is the official Java SDK for GitHub Copilot. This repository treats the official .NET and Node.js SDKs for GitHub Copilot as reference implementations. These SDKs are all officially supported as GitHub open source projects. The Java implementation follows the backward compatibility guarantees offered by the reference implementations.
vMaj.Min.Micro. For example v0.1.32. The corresponding maven version for the release will be Maj.Min.Micro-java.N, where Maj, Min and Micro are the corresponding numbers for the reference implementation release, and N is a monotonically increasing sequence number starting with 0 for each release. See the corresponding architectural decision record for more information in the docs/adr directory of the source code.
Maven
<dependency>
<groupId>com.github</groupId>
<artifactId>copilot-sdk-java</artifactId>
<version>1.0.0-beta-10-java.3</version>
</dependency>Gradle (Kotlin DSL)
implementation("com.github:copilot-sdk-java:1.0.0-beta-10-java.3")Gradle (Groovy DSL)
implementation 'com.github:copilot-sdk-java:1.0.0-beta-10-java.3'Full Changelog: java/v1.0.0-beta-10-java.1...java/v1.0.0-beta-10-java.3
v1.0.0-beta.9
Feature: CopilotClientMode.Empty for multi-tenant apps
Multi-tenant applications can now opt into a hardened "empty" client mode that starts from a clean slate: no built-in tools, host integration disabled, system prompt sanitized, and storage explicitly required. This prevents user-specific state (plugins, custom agents, co-author trailers, etc.) from leaking across tenants. (#1428)
const client = new CopilotClient({
mode: "empty",
baseDirectory: "/tmp/per-tenant-state",
});
const session = await client.createSession({
onPermissionRequest: approveAll,
availableTools: new ToolSet()
.addBuiltIn(BuiltInTools.Isolated)
.addMcp("*"),
excludedTools: new ToolSet()
.addMcp("github-delete_repository"),
});using var client = new CopilotClient(new CopilotClientOptions
{
Mode = CopilotClientMode.Empty,
BaseDirectory = "/tmp/per-tenant-state",
});
await using var session = await client.CreateSessionAsync(new SessionConfig
{
OnPermissionRequest = PermissionHandler.ApproveAll,
AvailableTools = new ToolSet()
.AddBuiltIn(BuiltInTools.Isolated)
.AddMcp("*"),
ExcludedTools = new ToolSet()
.AddMcp("github-delete_repository"),
});Feature: post-tool-use failure hooks
A new postToolUseFailure / OnPostToolUseFailure hook lets SDK users observe failed tool executions and inject follow-up guidance, separate from the existing success-only postToolUse hook. Available across Node, Python, Go, .NET, and Rust. (#1421)
session.hooks.postToolUseFailure = async (event) => {
console.error(`Tool ${event.toolName} failed: ${event.error}`);
};session.OnPostToolUseFailure = async (e, ct) =>
{
Console.Error.WriteLine($"Tool {e.ToolName} failed: {e.Error}");
};Feature: agentMode on MessageOptions
All six SDKs now expose an agentMode field on MessageOptions to set the per-message UI mode (interactive, plan, autopilot, shell). Previously there was no correct way to request plan/autopilot mode from the SDK. (#1438)
- TypeScript:
session.send(message, { agentMode: "plan" }) - C#:
session.SendAsync(message, new MessageOptions { AgentMode = "plan" }) - Python:
session.send(message, agent_mode="plan") - Go:
session.Send(ctx, message, copilot.MessageOptions{AgentMode: "plan"})
Feature: [Rust] structured error types with kind() method
Rust SDK error types have been refactored from a flat #[non_exhaustive] enum to a struct-with-kind() pattern, aligning with the Azure SDK for Rust design. This is a breaking change for Rust callers matching on error variants — update match arms to call .kind() instead. (#1400)
Other changes
- bugfix: [C#] preserve JSON-RPC
error.datain the .NET client transport (#1425) - improvement: [Java] cross-cutting monorepo updates — phase 05 (#1441)
- bugfix: [Java] fix repackaging issue (#1437)
New contributors
@heathsmade their first contribution in #1400
Generated by Release Changelog Generator · ● 3.6M
rust/v1.0.0-beta.9
What's Changed
- Preserve JSON-RPC error data in .NET by @stephentoub in #1425
- Add post-tool-use failure hooks by @stephentoub in #1421
- Fixes #1434 Repackaging. by @edburns in #1437
- Update @github/copilot to 1.0.55-1 by @github-actions[bot] in #1432
- Add MessageOptions.agentMode and fix per-message mode misuse by @MRayermannMSFT in #1438
- Update @github/copilot to 1.0.55-4 by @github-actions[bot] in #1453
- Remove test/scenarios and scenario-builds CI by @patniko in #1448
- Add extract-to-cache build mode for the Copilot CLI by @tclem in #1450
- Move java to monorepo. Phase 05: Cross-Cutting Updates by @edburns in #1441
- Update @github/copilot to 1.0.55-5 by @github-actions[bot] in #1456
- Multitenancy hardening: Client Mode by @SteveSandersonMS in #1428
- Refactor Rust SDK errors to use structs with a
kind()method by @heaths in #1400
New Contributors
Full Changelog: rust/v1.0.0-beta.8...rust/v1.0.0-beta.9
v1.0.0-beta.8
To make it easier to keep track of what's changed during the beta period, these release notes cover all the updates since beta 1.
This release consolidates a major round of API review, adds new capabilities (remote sessions, MCP hook, mode handlers), and introduces the Rust SDK. Every SDK went through a thorough final API review, resulting in cleaner, more consistent, and more idiomatic APIs that we can support post-GA.
🚀 GA timeline: The 1.0.0 GA release is planned for approximately one week from now.
⚠️ Breaking changes: This release includes breaking changes from the API review. See the breaking changes summary below and the detailed migration doc that you can give as context to Copilot to help it update your app code quickly.
Highlights
Rust SDK
A new Rust SDK joins the family, bringing the same Copilot capabilities to Rust applications. It supports the full feature set — sessions, tools, hooks, streaming, MCP, permissions, telemetry, canvases, and remote sessions — with idiomatic Rust patterns throughout.
use github_copilot_sdk::{Client, ClientOptions, SessionConfig, permission::ApproveAllHandler};
let client = Client::new(ClientOptions::default());
client.start().await?;
let session = client.create_session(
SessionConfig::default()
.with_permission_handler(Arc::new(ApproveAllHandler))
).await?;
let reply = session.send_and_wait("Hello!").await?;The Rust SDK ships with the Copilot runtime bundled by default — just add the crate and go. The runtime is downloaded when your app builds and is embedded in your distributable binary. Opt out of bundling with default-features = false if you manage the CLI yourself.
Remote sessions and cloud sessions
Remote sessions connect a local Copilot session to GitHub's backend services, producing a shareable URL that lets users access the session from GitHub web or mobile — useful for monitoring a locally-running agent from your phone, or sharing a session with a teammate. Enable it globally or toggle it per-session with session.rpc.remote.enable().
const client = new CopilotClient({
enableRemoteSessions: true,
});
// Each session emits a remote URL via session.info events
session.on("session.info", (event) => {
if (event.data.infoType === "remote") {
console.log("Remote URL:", event.data.url); // Share this or render as QR code
}
});var client = new CopilotClient(new CopilotClientOptions {
EnableRemoteSessions = true,
});Requirements: the user must be authenticated (gitHubToken or useLoggedInUser), and the session's working directory must be a GitHub repository. The enableRemoteSessions option only applies when the SDK spawns the CLI process (ignored when connecting to an external server).
Cloud sessions go a step further — the session runs entirely in the cloud rather than on the local machine. Pass a cloud option with repository metadata when creating a session:
const session = await client.createSession({
onPermissionRequest: approveAll,
cloud: {
repository: { owner: "github", name: "my-repo", branch: "main" },
},
});Both features are available in all languages.
Pre-MCP tool call hook
A new preMcpToolCall hook fires before every MCP tool invocation, giving your application the chance to inspect, modify, or block MCP tool calls. This is useful for adding authorization, logging, or stripping sensitive metadata from tool call arguments.
const session = await client.createSession({
onPermissionRequest: approveAll,
preMcpToolCall: async (context) => {
console.log(
`MCP tool: ${context.toolName} on server: ${context.serverName}`,
);
// Return modified args, or throw to block the call
return context.arguments;
},
});var session = await client.CreateSessionAsync(new SessionConfig {
OnPermissionRequest = PermissionHandler.ApproveAll,
PreMcpToolCall = async (context) => {
Console.WriteLine($"MCP tool: {context.ToolName} on server: {context.ServerName}");
return context.Arguments;
},
});Available in all languages.
Cleaner, more consistent APIs across all SDKs
Every SDK went through a comprehensive API review to make the developer experience cleaner and more idiomatic. The highlights:
Simplified client connection config — Instead of scattering transport options (cliPath, cliUrl, port, tcpConnectionToken, useStdio) across client options, there's now a single connection property with typed factory methods:
// Connect to an external server
const client = new CopilotClient({
connection: RuntimeConnection.forUri("http://localhost:3000"),
});
// Or spawn a local CLI over stdio (the default if no connection is specified)
const client = new CopilotClient({
connection: RuntimeConnection.forStdio(),
});var client = new CopilotClient(new CopilotClientOptions {
Connection = RuntimeConnection.ForStdio(),
});- Python:
CopilotClient(connection=RuntimeConnection.for_uri("http://localhost:3000")) - Go:
copilot.NewClient(&copilot.ClientOptions{Connection: copilot.UriConnection{Uri: "http://localhost:3000"}}) - Rust:
Client::new(ClientOptions { connection: Some(RuntimeConnection::Uri { uri: "http://localhost:3000".into() }), ..Default::default() })
send() now accepts a plain string — The most common case just got simpler:
// Before
const reply = await session.send({ prompt: "Hello!" });
// After
const reply = await session.send("Hello!");
// Full options still available:
const reply = await session.send({ prompt: "Analyze this", attachments: [...] });Permission decisions are now typed factories instead of stringly-typed objects:
// Before
return new PermissionRequestResult { Kind = "approve-once" };
// After
return PermissionDecision.ApproveOnce();
// Also: PermissionDecision.Reject(), .UserNotAvailable(), .NoResult()getMessages() → getEvents() — The method name now accurately reflects what it returns (the full event stream, not just messages).
See the breaking changes guide for the complete list of API changes per language.
New features
- Mode handler APIs —
onExitPlanModeRequestandonAutoModeSwitchRequesthandlers let your app handle plan-approval flows and automatic mode switching (e.g., rate-limit recovery). Available in all languages. runtime_instructionssystem message section — A new section in the system message customization API for runtime-generated instructions, giving you another hook to inject or transform prompt content.enableSessionTelemetry— A per-session toggle to enable or disable telemetry collection, independent of the client-level telemetry config.- SDK tracing diagnostics — Built-in diagnostic tracing for troubleshooting SDK ↔ CLI communication issues.
- Provider model and token limit overrides —
ProviderConfignow supportsmodelId,wireModel,maxInputTokens, andmaxOutputTokens, letting BYOK users decouple the model ID visible to agents from the wire model sent to the provider. - Canvas extensions (experimental, GitHub Copilot App only) — Sessions can now declare canvases — interactive UI surfaces that the model can open, close, and invoke actions on. This is currently specific to the GitHub Copilot App and is not yet available in other environments.
Changes and improvements
- [.NET] Now compatible with .NET Framework (net472) in addition to .NET 8+, .NET 10, and .NET Standard 2.0 — broadening support for legacy applications.
- [.NET] Session event enums are now forward-compatible string-backed types, so unknown event values from newer CLI versions don't cause deserialization failures.
- [Go] Discriminated union types in generated RPC code are now proper typed interfaces instead of flattened structs.
- [Go] CLI stderr is now captured and surfaced in error messages, making it easier to diagnose startup failures.
- All SDKs — Generated RPC types have been streamlined with the latest schema. If you reference generated
rpc.*types by name, expect renames.
⚠️ Breaking changes
This release includes breaking changes from a comprehensive API review. The changes are mechanical — mostly renames and reshaping — and make the APIs cleaner and more consistent as we finalize the 1.0.0 shape.
💡 Migrating your app? Pass the breaking changes document to GitHub Copilot and ask it to update your code. The document is structured as a machine-readable migration guide with before/after examples for every change.
Summary of breaking changes
| Change | All SDKs |
|---|---|
Client transport config → RuntimeConnection |
✅ |
copilotHome → baseDirectory |
✅ |
getMessages() → getEvents() |
✅ |
Permission results → PermissionDecision factories |
✅ (C#, Python, Rust) |
Handler renames (onExitPlanMode → onExitPlanModeRequest) |
✅ |
| Generated RPC type renames | ✅ |
Each language also has its own idiomatic changes beyond the shared ones above. See the [det...
rust/v1.0.0-beta.8
What's Changed
- Update @github/copilot to 1.0.53 by @github-actions[bot] in #1410
- Update @github/copilot to 1.0.54 by @github-actions[bot] in #1411
- Update @github/copilot to 1.0.55-0 by @github-actions[bot] in #1412
- Bump brace-expansion from 5.0.5 to 5.0.6 in /scripts/docs-validation in the npm_and_yarn group across 1 directory by @dependabot[bot] in #1325
- C# codegen: add isOpaqueJson guard to resolveRpcType by @SteveSandersonMS in #1414
- Update vulnerable npm lockfile dependencies by @stephentoub in #1415
- Fix flaky SDK E2E tests by @stephentoub in #1418
- Change title from 'GitHub Copilot SDK documentation' to 'Copilot SDK' by @sunbrye in #1386
- Add cross-SDK RPC E2E coverage by @stephentoub in #1424
- SDK: Align canvas with codegen pipeline, add e2e tests by @SteveSandersonMS in #1413
Full Changelog: rust/v1.0.0-beta.7...rust/v1.0.0-beta.8
v1.0.0-beta.7
Feature: canvas runtime support
Applications can now declare and handle canvases — interactive UI surfaces hosted by the Copilot runtime. Register a single CanvasHandler on a session and receive routed canvas.open, canvas.close, and canvas.action.invoke events; call session.canvas.* for native host actions. (#1401)
session.setCanvasHandler({
onOpen: async (ctx) => { /* render canvas */ },
onAction: async (ctx) => { /* handle action */ },
onClose: async (ctx) => { /* cleanup */ },
});session.SetCanvasHandler(new MyCanvasHandler());Feature: remote session support
Applications can enable remote sessions either at the client level (all sessions in a GitHub repo get a remote URL) or on demand mid-session. (#1192)
// Always-on via client option:
const client = new CopilotClient({ remote: true });
// On-demand per session:
const result = await session.rpc.remote.enable();
console.log("Remote URL:", result.url);
await session.rpc.remote.disable();// Always-on:
var client = new CopilotClient(new CopilotClientOptions { Remote = true });
// On-demand:
var result = await session.Rpc.Remote.EnableAsync();
await session.Rpc.Remote.DisableAsync();Feature: preMcpToolCall hook
A new hook lets applications intercept MCP tool invocations before they execute — inspect, replace, or remove the _meta field sent to MCP servers. (#1366)
session.hooks.onPreMcpToolCall = async (input) => {
return { metaToUse: { ...input.meta, traceId: myTraceId } };
};session.Hooks.OnPreMcpToolCall = async (input) =>
new PreMcpToolCallHookOutput { MetaToUse = new { traceId = myTraceId } };Feature: cloud session config
Sessions can now be created with a cloud option to request cloud-backed remote sessions with repository metadata, without requiring a local CLI process. (#1306)
const session = await client.createSession({
cloud: { repository: { owner: "my-org", name: "my-repo" } },
});var session = await client.CreateSessionAsync(new SessionConfig {
Cloud = new CloudSessionConfig { Repository = new RepositoryConfig { Owner = "my-org", Name = "my-repo" } }
});Feature: [Rust] Copilot CLI bundled by default
The Rust SDK now bundles the Copilot CLI binary at publish time by default — no configuration needed to get a working binary. Opt out with default-features = false. (#1385)
# Default: CLI bundled automatically
copilot-sdk = "1.0.0-beta.7"
# Opt out of bundled CLI:
copilot-sdk = { version = "1.0.0-beta.7", default-features = false }Feature: Java SDK
The Java SDK is now part of the monorepo, providing full parity with the other language SDKs including session management, tool registration, hooks, and E2E test coverage. (#1348, #1369, #1389)
var client = new CopilotClient();
var session = client.createSession(new SessionConfig()).join();
session.send("Hello from Java!").join();Feature: SDK tracing diagnostics
The .NET, Python, and Rust SDKs now emit structured trace/log output covering CLI startup, JSON-RPC timing, session operations, and callback paths — making it easier to diagnose slow or failing connections. (#1217)
- C#: integrates with
ILoggervia structured fields andTimeSpanelapsed values - Python: uses stdlib
loggingwithelapsed_ms,session_id, and request identifiers - Rust: uses the
tracingcrate with structured fields
Feature: [C#] CopilotTool helper
CopilotTool.DefineTool is a typed wrapper around AIFunctionFactory.Create that applies Copilot-specific metadata (override flag, skip-permission behavior) without magic strings. (#1321)
var tool = CopilotTool.DefineTool("edit",
new CopilotToolOptions { IsOverride = true },
async (params) => { /* custom edit */ });
session.AddTool(tool);Feature: sessionId on hook inputs
All hook input types (PreToolUseHookInput, PostToolUseHookInput, SessionStartHookInput, etc.) now include a sessionId field, allowing applications to distinguish parent session hooks from sub-agent hooks. (#1290)
Other changes
- feature: add
enableSessionTelemetrysession option across all SDKs (#1224) - feature: add
modelfield toCustomAgentConfigacross all SDKs (#1309) - feature: add
remote_sessionfield toSessionConfigacross all SDKs (#1295) - feature: [Rust] support binary tool results (#1222)
- feature: restore mode handler APIs across SDKs (#1228)
- feature: add
runtime_instructionssystem message section across all SDKs (#1377) - feature: add
SessionFsSQLite support for runtime routing (#1299) - feature: make tool callbacks optional across SDKs (#1308)
- feature: make
MCPStdioServerConfig.argsoptional across all SDKs (#1347) - feature: [C#] add
netstandardandnet10targets (#1320) - feature: [C#] use string enums for session events (#1226)
- feature: [C#] seal generated session event types (#1330)
- feature: [C#] map
x-opaque-jsontoJsonElementat RPC params boundary (#1359) - feature: [Go] generate typed union interfaces (#1252)
- improvement: API review fixes for C# (#1343), TypeScript (#1357), Go (#1360), Rust (#1367), Python (#1376)
- improvement: share generated schema definitions across SDKs (#1289)
- improvement: hide deprecated APIs where supported (#1293)
- improvement: use 32-bit types for bounded schema integers (#1329)
- improvement: strip
Mssuffix for duration properties in generated types (#1339) - improvement: [C#] publish
.snupkgsymbols package to NuGet.org (#1345) - improvement: [Go] replace RPC quicktype generation with native Go types (#1234)
- bugfix: [Go] capture CLI stderr and fix
SetProcessDonerace condition (#863) - bugfix: [Python] fix
from_dict()round-trip for optional fields with schema defaults (#1313) - bugfix: [C#] honor preinstalled CLI path in MSBuild targets (#1318)
New contributors
@cschleidenmade their first contribution in #1222@claudiogodoy99made their first contribution in #863@tiagonbotelhomade their first contribution in #1306
Generated by Release Changelog Generator · ● 3.7M