Merge pull request #3350 from ultraworkers/lane/release-v0.1.5

release: v0.1.5
This commit is contained in:
Bellman authored and GitHub committed 2026-10-13 12:08:42 +09:00
commit 02c22b4211
5 files changed
+67 -18

No files matched your search

+40
View File
@@ -5,6 +5,46 @@ 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.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.1.5] - 2026-10-13
### Added
- CLI turn interruption: press Esc to interrupt running turns and cancel in-flight model requests
- Custom OpenAI provider namespace with separate environment variables for multi-tenant scenarios
- `/tools` and `/info` slash commands for command discovery and runtime information
- Team enhancements: subagentModel accessor chain and parallel tool execution support
- Configuration options for concurrent tool calls and parallel subagent execution (`maxParallelToolCalls`, `maxConcurrentAgents`)
- Per-team subagent concurrency control via AgentGate
- SDK operation registry with schema validation for extensible operation handling
- Bundled skills registry and skill chaining support for skill composition
- Per-session settings override with schema validation
- WebSocket client transport completion for SDK wire protocol support
### Fixed
- Turn interruption signal handling for graceful cancellation of in-flight requests
- Markdown streaming block spacing in CLI output
- Spinner restoration for proper is_terminal() check in run_turn
- Model token limit catch-all to return None for unknown models instead of panicking
- Parallel tool result ordering by call index with fan-out capping
- Workspace unsafe_code=forbid restoration across all crates
- TaskClaim TOCTOU (time-of-check-time-of-use) vulnerability
- TUI dependency removal and claw-rag-service compilation on non-Linux platforms
- Clippy lint violations in trident, compact, and claw-rag-service crates
- PermissionMode comparison to use explicit .covers() method instead of direct operators
- OPENAI_BASE_URL environment isolation in provider hint tests
### Changed
- Enhanced permission mode checking for consistency and clarity
- Improved team and concurrent agent configuration schema
- Refactored slash command processing for /tools and /info implementations
### Known Limitations
- ACP / Zed integration is not yet implemented (status stub available via `claw acp`)
- Python porting workspace is for reference only, not used in production
## [0.1.4] - 2026-10-13
### Added
+11 -11
View File
@@ -93,7 +93,7 @@ checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
[[package]]
name = "api"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"criterion",
"reqwest",
@@ -478,7 +478,7 @@ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
[[package]]
name = "claw-analog"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"api",
"clap",
@@ -498,7 +498,7 @@ dependencies = [
[[package]]
name = "claw-rag-service"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"axum 0.8.9",
"blake3",
@@ -531,7 +531,7 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "commands"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"plugins",
"runtime",
@@ -540,7 +540,7 @@ dependencies = [
[[package]]
name = "compat-harness"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"commands",
"runtime",
@@ -1568,7 +1568,7 @@ dependencies = [
[[package]]
name = "mock-anthropic-service"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"api",
"serde_json",
@@ -1761,7 +1761,7 @@ dependencies = [
[[package]]
name = "plugins"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"serde",
"serde_json",
@@ -2136,7 +2136,7 @@ dependencies = [
[[package]]
name = "runtime"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"glob",
"plugins",
@@ -2261,7 +2261,7 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "rusty-claude-cli"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"api",
"commands",
@@ -2619,7 +2619,7 @@ dependencies = [
[[package]]
name = "telemetry"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"serde",
"serde_json",
@@ -2899,7 +2899,7 @@ dependencies = [
[[package]]
name = "tools"
version = "0.1.4"
version = "0.1.5"
dependencies = [
"api",
"aspect-core",
+1 -1
View File
@@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "0.1.4"
version = "0.1.5"
edition = "2021"
license = "MIT"
publish = false
+1 -1
View File
@@ -82,7 +82,7 @@ async fn send_message_posts_json_and_parses_response() {
);
assert_eq!(
request.headers.get("user-agent").map(String::as_str),
Some("claude-code/0.1.4")
Some("claude-code/0.1.5")
);
assert_eq!(
request.headers.get("anthropic-beta").map(String::as_str),
@@ -453,7 +453,7 @@ fn direct_resume_safe_slash_commands_route_to_local_json_actions_831() {
for (command, expected_kind, expected_status) in [
("/version", "version", "ok"),
("/sandbox", "sandbox", "warn"),
("/sandbox", "sandbox", "ok"),
("/diff", "diff", "ok"),
("/status", "status", "ok"),
] {
@@ -470,10 +470,19 @@ fn direct_resume_safe_slash_commands_route_to_local_json_actions_831() {
.unwrap_or_else(|_| panic!("{command} must emit JSON (#831), got: {stdout:?}"));
assert_eq!(parsed["kind"], expected_kind, "{command} kind: {parsed}");
assert_eq!(
parsed["status"], expected_status,
"{command} status: {parsed}"
);
// /sandbox status varies by environment: "ok" when namespace isolation is available,
// "warn" when running in restricted environments (e.g., CI without unshare support)
if command == "/sandbox" {
assert!(
parsed["status"] == "ok" || parsed["status"] == "warn",
"{command} status should be 'ok' or 'warn' but got: {parsed}"
);
} else {
assert_eq!(
parsed["status"], expected_status,
"{command} status: {parsed}"
);
}
assert_ne!(
parsed["error_kind"], "interactive_only",
"{command} must not emit interactive_only (#831): {parsed}"