# Changelog

## 1.1.6

- Fixed `CXXMCP_REFLECT` so reflected DTO specializations compile correctly
  across GCC, MinGW, and CodeQL analysis builds.
- Updated reflection examples and documentation to use namespace-scope/global
  registrations consistently.

## 1.1.5

- Prepared release metadata and package references.

## 1.1.4

- Prepared release metadata and package references.

## 1.1.3

- Prepared release metadata and package references.

## 1.1.2

- Fixed `mcp::core::Result` ABI stability by keeping `tl::expected` as the
  public backend across all supported C++ standards.
- Fixed C++23 HTTP SDK builds by making the server HTTP holder complete before
  `std::unique_ptr` cleanup is instantiated.
- Removed unused optional plugin/adapters extension targets and headers.
- Removed unused vendored `tcb/span.hpp`.
- Added an opt-in benchmark target and Streamable HTTP benchmark driver.
- Cleaned stale root Markdown docs and compressed the root TODO to active
  release evidence gates.

## 1.1.1

- Implemented SEP-1699 SSE retry/reconnection in the SDK client HTTP transport.
- Fixed SSEClient `last_event_id_` tracking for priming events with empty data.
- Updated conformance status: server 109/1, client 447/0 (OpenSSL).

## 1.1.0

- Separated HTTP transport behind the `CXXMCP_ENABLE_HTTP` compile-time flag
  (default OFF) so that the core SDK builds without cpp-httplib.
- Added `CXXMCP_ENABLE_AUTH` flag to the release-blocking CI matrix.
- Fixed CMake export set to include cpp_httplib when HTTP is enabled.
- Fixed CI validation scripts for VERSION-file variable references and
  updated vcpkg overlay port path to `cxxmcp-sdk`.
- Added MinGW provisional compatibility policy documentation.

## 1.0.0

- Added explicit protocol-version coverage for the `2025-11-25` MCP snapshot
  and closed the P1 protocol model evidence gaps for required-field,
  type-constraint, and object-presence capability behavior.
- Added a lightweight default `WWW-Authenticate` parser to the optional
  `cxxmcp::auth` public surface, including support for quoted parameters,
  escaped strings, token68 payloads, case-insensitive parameter lookup, and
  focused auth tests.
- Changed the default in-memory token store to keep entries separated by the
  complete resource/issuer/client token key instead of overwriting unrelated
  credentials.
- Documented the external `cxxmcp-examples` auth-lite coverage and kept the
  examples path aligned with `Peer` / `Service` as the canonical SDK entry.

## 1.0.0 (pre-release)

- Reframed the public SDK around `Peer` / `Service` entry points.
- Kept `client` / `server` as compatibility and convenience wrappers.
- Added HTTP URI support and auth header support for client transport setup.
- Added HTTP auth-lite server behavior: authentication failures are reported as
  auth-category JSON-RPC errors and Streamable HTTP maps them to
  `401 Unauthorized` with configurable `WWW-Authenticate`.
- Added the optional `cxxmcp::auth` scaffold target for OAuth 2.1 / DPoP
  contracts and public header smoke coverage.
- Applied client HTTP bearer-token helpers consistently to Streamable HTTP POST,
  SSE GET, and session DELETE requests.
- Added `ClientPeer` and `ServerPeer` examples.
- Aligned `process_stdio_client` with the peer/service path.
- Routed native `ClientPeer` initialize, synchronous helpers, paginated helpers,
  outbound notifications, and service shutdown through Peer-owned transport
  paths.
- Added `ClientPeer` handler registration helpers so normal client callbacks no
  longer require accessing the underlying `client::Client`.
- Added `ServerPeer` handler registration helpers so normal server callbacks no
  longer require accessing the underlying `server::Server`.
- Marked `ClientPeer::client()` and `ServerPeer::server()` as deprecated
  compatibility escape hatches.
- Tightened process stdio response-id validation with stable transport errors.
- Covered process stdio server-to-client handler-error round trips on both
  concrete and role-generic transports.
- Covered stdio malformed-input and role-generic server close failure paths.
- Reject mismatched JSON response ids on the legacy HTTP client transport.
- Covered native Streamable HTTP client mismatched response ids and duplicate
  in-flight request ids with stable transport errors.
- Covered native process-stdio client mismatched response ids and duplicate
  in-flight request ids with stable transport errors.
- Return HTTP 400 for malformed Streamable HTTP POST bodies and cover the
  direct server transport path.
- Documented why concrete stdio transports do not own duplicate in-flight
  request-id validation.
- Moved native `ClientPeer` inbound request and notification dispatch onto
  Peer-owned roots and handler state.
- Moved native `ServerPeer` notification dispatch for Peer-registered
  notification handlers onto Peer-owned state.
- Routed `ServerPeer` ping request handling through the Peer boundary before
  falling back to the concrete server dispatcher.
- Routed `ServerPeer` initialize request validation and response construction
  through the Peer boundary before falling back to the concrete server
  dispatcher.
- Routed `ServerPeer` raw request override state plus `tools/list` and
  `tools/get` discovery handling through the Peer boundary.
- Routed non-task `tools/call` handling through the `ServerPeer` boundary with
  Peer-owned cancellation token propagation.
- Routed task-aware `tools/call` handling through the `ServerPeer` boundary by
  invoking the configured task manager directly.
- Routed `ServerPeer` prompt/resource discovery and read handling through the
  Peer boundary while preserving session context for handlers.
- Routed resource subscribe/unsubscribe handling through `ServerPeer`, using the
  native transport's compatibility adapter as the subscription identity.
- Routed Peer-registered completion, sampling, and logging request handlers
  through the `ServerPeer` boundary.
- Routed Peer-registered task lifecycle request handlers through the
  `ServerPeer` boundary.
- Added cancellation-aware client inbound handler overloads for roots,
  sampling, elicitation, and custom server-to-client requests on both
  `Client` and `ClientPeer`.
- Added `ServerBuilder::with_handler()` so aggregate and contract-style server
  handlers can be installed during construction instead of through a long
  mutable setter sequence.
- Added a dedicated SDK umbrella test for `cxxmcp/sdk.hpp`.
