diff --git a/AGENTS.md b/AGENTS.md index 99a2a47..714072a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -320,9 +320,12 @@ release and after touching `src/wire.rs`, `src/negotiation.rs`, `BiStream`, `BidiStreamSource`, `AuthContext`, `Identity`, `IdentityProvider`, `AccessControl`, `OwnershipProvider`, `OwnershipStore`, `InMemoryOwnershipStore`, `HandlerError`, - `StreamError`) come from `alkcall::core`. alkcall is v0.8.x — - breaking changes are expected at this major-zero stage; this is the - first real consumer, so we find and fix issues upstream rather than - working around them. Pin `alkcall = "0.8.1"` (0.8.1 fixes the - duplicate adopt/open channel-state destruction found by alkcall's - fuzz campaign) and bump deliberately. \ No newline at end of file + `StreamError`) come from `alkcall::core`. alkcall is v0.9.x — + breaking changes are expected at this major-zero stage; this is the + first real consumer, so we find and fix issues upstream rather than + working around them. Pin `alkcall = "0.9.0"` (0.9.0 is the stub-sweep + release: the marked-pub open contract, `channel/control`, + `channel/resources/subscribe`, and `op/register` forward-through are + real implementations; `register_openable*` now refuses `Pub`-typed + specs — alktty's op is `Sub`-typed and unaffected) and bump + deliberately. \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0744fcd..a91e043 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,40 @@ All notable changes to this crate are documented here. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this crate adheres to [Semantic Versioning](https://semver.org/). +## [0.7.0] - 2026-10-14 + +The alkcall 0.9.0 adoption: a dependency bump only — no source change +in alktty. alkcall 0.9.0 is the stub-sweep release (the marked-pub open +contract, `channel/control`, `channel/resources/subscribe`, and +`op/register` forward-through are real implementations). All of +alkcall's semver-relevant changes (`ManagerError::InvalidAdopt`, the +`RelayError::PubTypedOpen` removal, the `register_imported` +`Result` return, `Establishment` losing `Debug`, the new +`register_openable*` refusal of `Pub`-typed specs) touch surfacing +alktty never uses — alktty's open op is `Sub`-typed and it only +constructs `Establishment` (whose `new` is unchanged). The wire format, +the direct-ALPN path, the `TtyBackend` trait, and alktty's public API +surface are unchanged. + +### Changed + +- **BREAKING (ecosystem-coordination) — `alkcall` bumped to 0.9.0.** + alkcall 0.9.0 changed no type that alktty touches: the open-op + machinery alktty registers through (`ChannelCore`/ + `register_openable_with_establisher`/`OpenEstablisher`/`OpenHandler` + /`Establishment`/`ChannelPlan`, `ChannelClient::open_channel`, + `ChannelOpenError::CallFailed`) is shape-identical to 0.8.1 — the + four stub implementations are net-new surfaces on ops alktty does + not exercise, the established-wrapper refusal of `Pub`-typed specs + does not apply to alktty's `Sub`-typed open op, and the removed + `RelayError::PubTypedOpen` was never referenced. alktty's public + signatures reference alkcall types, so downstream crates must now + unify on alkcall 0.9.0. Minor bump per the 0.x + ecosystem-coordination rule (raising the minimum requirement is + breaking — hence 0.7.0, not a patch release). +- **`alkcall` requirement updated to `0.9.0`; lockfile bumped from + 0.8.1 to 0.9.0.** + ## [0.6.0] - 2026-09-28 The fuzzing adoption: a cargo-fuzz workspace over the four wire-facing @@ -405,6 +439,7 @@ alknet mono-repo. the client→backend pump is aborted at session end instead of lingering until the client disconnects. +[0.7.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.7.0 [0.6.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.6.0 [0.5.0]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.5.0 [0.4.1]: https://git.alk.dev/alkdev/alktty/releases/tag/v0.4.1 diff --git a/Cargo.lock b/Cargo.lock index 9f22b1a..2e3a3da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -27,9 +27,9 @@ dependencies = [ [[package]] name = "alkcall" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b" +checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84" dependencies = [ "async-trait", "bytes", @@ -48,7 +48,7 @@ dependencies = [ [[package]] name = "alktty" -version = "0.6.0" +version = "0.7.0" dependencies = [ "alkcall", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 046c0bf..ac7d9ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "alktty" -version = "0.6.0" +version = "0.7.0" edition = "2021" rust-version = "1.88" license = "MIT OR Apache-2.0" @@ -29,7 +29,7 @@ default = [] local = ["dep:portable-pty", "dep:tokio-util", "tokio/process", "tokio/rt-multi-thread"] [dependencies] -alkcall = "0.8.1" +alkcall = "0.9.0" # Minimal, wasm-clean tokio features. `local` adds `process` + # `rt-multi-thread` (non-wasm). Do NOT use `features = ["full"]` — it # pulls in `signal`/`fs`/`net` which break `wasm32-unknown-unknown`. diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 00bab49..dc41c7d 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -27,9 +27,9 @@ dependencies = [ [[package]] name = "alkcall" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf6af1e4af1460480849adf959c972d65deeafc36f4101064ced1ce6d1adfd5b" +checksum = "a3562f1f7b348cdeb3d9181eaf57b0a2fb3f988d4280e8e225dadfd7f763cb84" dependencies = [ "async-trait", "bytes", @@ -48,7 +48,7 @@ dependencies = [ [[package]] name = "alktty" -version = "0.5.0" +version = "0.7.0" dependencies = [ "alkcall", "async-trait", diff --git a/src/channels.rs b/src/channels.rs index 21dbbde..aaefbfa 100644 --- a/src/channels.rs +++ b/src/channels.rs @@ -588,7 +588,9 @@ mod tests { json!({ "carriage": "raw", "backend": "mock", "cmd": ["true"] }), ) .await; - assert!(result.is_ok(), "valid params establish, got {result:?}"); + if let Err(e) = result { + panic!("valid params establish, got {e:?}"); + } } #[tokio::test]