Skip to content

Commit 8f47ee0

Browse files
andreasrongeclaude
andcommitted
chore: prepare release 0.10.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent fcd1979 commit 8f47ee0

9 files changed

Lines changed: 67 additions & 14 deletions

CHANGELOG.md

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,72 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [0.10.0] - 2026-03-26
99

10-
### Removed
10+
### Breaking Changes
11+
12+
- **MetaPlanner, PlanExecutor, PlanRunner, PlanTracer, PlanCritic removed** — The autonomous planning system with JSON task graphs, verification predicates, and replanning has been removed. Use [Composition Patterns](docs/guides/subagent-patterns.md) (`with` chains, `Task.async_stream`, subagents-as-tools) for orchestration instead.
13+
- Planning prompt templates removed (`planning-examples.md`, `verification-predicate-guide.md`, `verification-predicate-reminder.md`, `signature-guide.md`)
14+
- PlanExecutor telemetry events removed
15+
- Internal `llm_client` package removed — use `PtcRunner.LLM` behaviour directly
16+
- **`plan:` no longer auto-enables `journaling: true`** — Plans are now display-only labels for progress visibility. To use journaled task caching, set `journaling: true` explicitly.
17+
18+
### Added
19+
20+
**Model String Shorthand**
21+
22+
- Accept model strings directly in `SubAgent.run` — e.g., `llm: "haiku"` instead of building an LLM struct
23+
24+
**Clojure Conformance Expansion (~30 new functions/forms)**
25+
26+
- Control flow: `case`, `condp`
27+
- HOF combinators: `comp`, `partial`, `complement`, `constantly`, `every-pred`, `some-fn`
28+
- Collection operations: `cons`, `disj`, `empty`, `merge-with`, `reduce-kv`, `zipmap`, `filterv`, `update-keys`, `peek`, `pop`, `subvec`
29+
- Sequence operations: `split-at`, `split-with`, `partition-by`, `dedupe`, `keep`, `keep-indexed`
30+
- String/coercion: `format`, `name`, `keyword`, `hash-map`
31+
- Type predicates: `int?`, `integer?`, `double?`, `float?`, `fn?`, `false?`, `true?`, `symbol?`, `decimal?`, `ratio?`, `rational?`, `nat-int?`, `neg-int?`, `pos-int?`, `infinite?`, `NaN?`
32+
- Collection capability predicates (`sequential?`, `associative?`, `counted?`, etc.)
33+
- Named fn for self-recursion (`(fn name [x] ...)`)
34+
- `%&` rest args in `#()` short function syntax
35+
- Keyword args via rest destructuring (`[& {:keys [a]}]`)
36+
- `:strs` map destructuring for string-keyed maps
37+
- `def`/`defn`/`defonce` can shadow builtins (Clojure-compatible)
1138

12-
- **MetaPlanner, PlanExecutor, PlanRunner, PlanTracer, PlanCritic** — The autonomous planning system with JSON task graphs, verification predicates, and replanning has been removed. Use [Composition Patterns](docs/guides/subagent-patterns.md) (`with` chains, `Task.async_stream`, subagents-as-tools) for orchestration instead.
13-
- Planning prompt templates (`planning-examples.md`, `verification-predicate-guide.md`, `verification-predicate-reminder.md`, `signature-guide.md`)
14-
- PlanExecutor telemetry events
39+
**Java Interop Methods**
40+
41+
- String: `.startsWith`, `.endsWith`, `.toLowerCase`, `.toUpperCase`, `.contains`
42+
- Date/DateTime: `.isBefore`, `.isAfter`
43+
44+
**Prompt System**
45+
46+
- 2-axis composable prompt architecture for flexible prompt composition
47+
- Language reference included in default prompt compositions
48+
- Pluggable `progress_fn` for custom turn feedback rendering
49+
50+
**Tracing**
51+
52+
- JSONL trace format v2 with flat event envelope
53+
- Typed trace headers (`trace_kind`, `producer`, `query`, `model`, `trace_label`)
54+
- Trace analyzer agent for investigating execution traces
55+
- Streaming `query_events` and `aggregate_events` tools
56+
57+
### Fixed
58+
59+
- `keys`/`vals` nil-tolerant (like other collection helpers)
60+
- `concat` type error diagnostics for non-collection args
61+
- Hyphen/underscore normalization in flex_access lookups
62+
- `and` returns last truthy value instead of boolean (Clojure conformance)
63+
- `some` with keyword pred returns extracted value, not boolean
64+
- `defn` inside `let` now visible across program expressions
65+
- Code fence parsing uses line-by-line parser instead of regex
66+
- Runtime exceptions classified as `:runtime_error` not `:tool_error`
67+
- Sandbox-safe `list_traces` with bounded head/tail reads
1568

1669
### Changed
1770

18-
- **`plan:` no longer auto-enables `journaling: true`** — Plans are now display-only labels for progress visibility. To use journaled task caching, set `journaling: true` explicitly.
1971
- Progress checklist renders for any agent with a `plan:`, regardless of `journaling:` setting
2072
- `step-done` instruction text updated to reflect it is optional
73+
- Bumped `req_llm` to `~> 1.8`
2174

2275
## [0.9.0] - 2026-02-27
2376

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ See [Signature Syntax](docs/signature-syntax.md) for the full type reference.
189189
```elixir
190190
def deps do
191191
[
192-
{:ptc_runner, "~> 0.9.0"},
192+
{:ptc_runner, "~> 0.10.0"},
193193
{:req_llm, "~> 1.8"} # optional — enables built-in LLM adapter
194194
]
195195
end

docs/guides/subagent-llm-setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Add the dependencies:
99
```elixir
1010
def deps do
1111
[
12-
{:ptc_runner, "~> 0.9.0"},
12+
{:ptc_runner, "~> 0.10.0"},
1313
{:req_llm, "~> 1.8"} # enables the built-in adapter
1414
]
1515
end

livebooks/joke_workflow.livemd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ deps =
1111
if File.exists?(Path.join(repo_root, "mix.exs")) do
1212
[{:ptc_runner, path: repo_root}]
1313
else
14-
[{:ptc_runner, "~> 0.9.0"}]
14+
[{:ptc_runner, "~> 0.10.0"}]
1515
end
1616

1717
Mix.install(deps ++ [{:req_llm, "~> 1.8"}, {:kino, "~> 0.14"}], consolidate_protocols: false)

livebooks/observability_and_tracing.livemd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ deps =
1313
if File.exists?(Path.join(repo_root, "mix.exs")) do
1414
[{:ptc_runner, path: repo_root}]
1515
else
16-
[{:ptc_runner, "~> 0.9.0"}]
16+
[{:ptc_runner, "~> 0.10.0"}]
1717
end
1818

1919
Mix.install(deps ++ [{:req_llm, "~> 1.8"}, {:kino, "~> 0.14"}], consolidate_protocols: false)

livebooks/prompt_caching.livemd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ deps =
77
if File.exists?(Path.join(repo_root, "mix.exs")) do
88
[{:ptc_runner, path: repo_root}]
99
else
10-
[{:ptc_runner, "~> 0.9.0"}]
10+
[{:ptc_runner, "~> 0.10.0"}]
1111
end
1212

1313
Mix.install(deps ++ [{:req_llm, "~> 1.8"}, {:kino, "~> 0.14"}], consolidate_protocols: false)

livebooks/ptc_runner_llm_agent.livemd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ deps =
77
if File.exists?(Path.join(repo_root, "mix.exs")) do
88
[{:ptc_runner, path: repo_root}]
99
else
10-
[{:ptc_runner, "~> 0.9.0"}]
10+
[{:ptc_runner, "~> 0.10.0"}]
1111
end
1212

1313
Mix.install(deps ++ [{:req_llm, "~> 1.8"}, {:kino, "~> 0.14"}], consolidate_protocols: false)

livebooks/ptc_runner_playground.livemd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ deps =
88
if File.exists?(Path.join(repo_root, "mix.exs")) do
99
[{:ptc_runner, path: repo_root}]
1010
else
11-
[{:ptc_runner, "~> 0.9.0"}]
11+
[{:ptc_runner, "~> 0.10.0"}]
1212
end
1313

1414
Mix.install(deps, consolidate_protocols: false)

mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule PtcRunner.MixProject do
44
def project do
55
[
66
app: :ptc_runner,
7-
version: "0.9.0",
7+
version: "0.10.0",
88
elixir: "~> 1.15",
99
start_permanent: Mix.env() == :prod,
1010
elixirc_paths: elixirc_paths(Mix.env()),

0 commit comments

Comments
 (0)