1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.1.0] — 2026-04-29
### Added
- OAuth (PKCE) login against `claude.ai` for Claude Pro / Max subscriptions,
including automatic token refresh and persistent storage at
`~/.config/dispatch/claude_oauth.json` (mode 0600).
- Streaming and non-streaming chat against `/v1/messages`, including the full
Claude Code header-cloaking set required by the Pro / Max entitlement.
- Tool use with automatic `proxy_` name prefixing / stripping (OAuth mode)
and built-in tool passthrough (`web_search`, `code_execution`, `text_editor`,
`computer`).
- Extended thinking: `enabled` mode for Sonnet/Opus 4.5, `adaptive` mode
with `display: "summarized"` for Opus 4.7+ and Sonnet 4.6+.
- Prompt caching with `cache_control` breakpoint placement (up to 4 per
request), automatic TTL ordering enforcement, and per-request
`cache_retention: :short | :long | :none` control.
- `usage_report` against `/api/oauth/usage` returning a `UsageReport` with
four `UsageLimitEntry` rows (5h, 7d, 7d-opus, 7d-sonnet) plus profile
metadata from `/api/oauth/profile`.
- Per-request usage cost computed from a bundled price table
(`Usage#cost` as a `UsageCost` struct).
- `list_models` with bundled pricing data and a runtime overlay from
`GET /v1/models`.
- `count_tokens` via `POST /v1/messages/count_tokens`.
- `RateLimiter` integration with configurable `min_request_interval` and
optional rolling-window quota.
- Strict-tool schema fallback: automatic retry without `strict: true` on
Anthropic 400 "compiled grammar too large" / "schema too complex" errors.
- Streaming retry logic: up to 3 exponential-backoff retries for transient
failures that occur before any consumer output has been emitted.
- `authenticate!`, `authenticated?`, `logout!` auth lifecycle hooks.
- `Dispatch::Adapter::Tester::Playbooks::Claude` smoke playbook in
`dispatch-adapter-tester` for recorded (CI) and live testing.
[Unreleased]: https://github.com/realtradam/dispatch-adapter-claude/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/realtradam/dispatch-adapter-claude/releases/tag/v0.1.0
|