diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 417ffc5..3c3df7e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,5 +1,5 @@ { - "packages/krm-stream": "0.7.0", - "gateway": "0.7.0", - "gateway/kube": "0.7.0" + "packages/krm-stream": "0.8.0", + "gateway": "0.8.0", + "gateway/kube": "0.8.0" } diff --git a/gateway/CHANGELOG.md b/gateway/CHANGELOG.md index 5c9b9ad..60dac09 100644 --- a/gateway/CHANGELOG.md +++ b/gateway/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [0.8.0](https://github.com/ConfigButler/krm-stream/compare/gateway/v0.7.0...gateway/v0.8.0) (2026-10-05) + + +### ⚠ BREAKING CHANGES + +* **client:** setValue and removeKey on metadata.annotations as a whole are refused; edit each annotation key instead. isEditable on that map is now false. +* **gateway:** Options and Gateway embed StreamConfig, so composite literals set Authorizer, Clients, Projections, Ordering, Observer, Diagnostics, HeartbeatInterval, WriteTimeout and the reauthorization settings inside StreamConfig: gateway.StreamConfig{...}. Gateway.Auth is renamed Authorizer. The Projection field is removed: use Projections: gateway.StaticProjection(p), or leave it nil for ProjectionFull. ServeStream(w, r, principal, scope, requested) and Stream(ctx, principal, scope, requested, sink) replace ServeStreamProjection and StreamProjection; pass "" for the default view. NewSharedBackend(upstream, options) replaces NewSharedBackendWithOptions; pass gateway.SharedOptions{} for the defaults. + +### Features + +* **client:** native editing through the host proxy (slice 2) ([#61](https://github.com/ConfigButler/krm-stream/issues/61)) ([66f306b](https://github.com/ConfigButler/krm-stream/commit/66f306bbaa3f8b5c0fc4c990f8a793b287a69191)) +* **client:** native Kubernetes viewer over LIST/WATCH (slice 1) ([#60](https://github.com/ConfigButler/krm-stream/issues/60)) ([79fb86e](https://github.com/ConfigButler/krm-stream/commit/79fb86e29fb9543418b5594ab03805bae2c2ea5c)) +* **gateway:** share one stream configuration and move the test harness out of the gateway ([#54](https://github.com/ConfigButler/krm-stream/issues/54)) ([f39d365](https://github.com/ConfigButler/krm-stream/commit/f39d3650c89f322eae33884fe8fb614819b7c8a5)) + + +### Documentation + +* re-center on watch streams and a native watch direction ([#59](https://github.com/ConfigButler/krm-stream/issues/59)) ([523fd7a](https://github.com/ConfigButler/krm-stream/commit/523fd7a7fbd314472197d106426d6b1a418715e3)) + ## [0.7.0](https://github.com/ConfigButler/krm-stream/compare/gateway/v0.6.0...gateway/v0.7.0) (2026-10-04) diff --git a/gateway/kube/CHANGELOG.md b/gateway/kube/CHANGELOG.md index e7bba4d..83eca05 100644 --- a/gateway/kube/CHANGELOG.md +++ b/gateway/kube/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.8.0](https://github.com/ConfigButler/krm-stream/compare/gateway/kube/v0.7.0...gateway/kube/v0.8.0) (2026-10-05) + + +### ⚠ BREAKING CHANGES + +* **client:** setValue and removeKey on metadata.annotations as a whole are refused; edit each annotation key instead. isEditable on that map is now false. +* **gateway:** Options and Gateway embed StreamConfig, so composite literals set Authorizer, Clients, Projections, Ordering, Observer, Diagnostics, HeartbeatInterval, WriteTimeout and the reauthorization settings inside StreamConfig: gateway.StreamConfig{...}. Gateway.Auth is renamed Authorizer. The Projection field is removed: use Projections: gateway.StaticProjection(p), or leave it nil for ProjectionFull. ServeStream(w, r, principal, scope, requested) and Stream(ctx, principal, scope, requested, sink) replace ServeStreamProjection and StreamProjection; pass "" for the default view. NewSharedBackend(upstream, options) replaces NewSharedBackendWithOptions; pass gateway.SharedOptions{} for the defaults. + +### Features + +* **client:** native editing through the host proxy (slice 2) ([#61](https://github.com/ConfigButler/krm-stream/issues/61)) ([66f306b](https://github.com/ConfigButler/krm-stream/commit/66f306bbaa3f8b5c0fc4c990f8a793b287a69191)) +* **client:** native Kubernetes viewer over LIST/WATCH (slice 1) ([#60](https://github.com/ConfigButler/krm-stream/issues/60)) ([79fb86e](https://github.com/ConfigButler/krm-stream/commit/79fb86e29fb9543418b5594ab03805bae2c2ea5c)) +* **gateway:** share one stream configuration and move the test harness out of the gateway ([#54](https://github.com/ConfigButler/krm-stream/issues/54)) ([f39d365](https://github.com/ConfigButler/krm-stream/commit/f39d3650c89f322eae33884fe8fb614819b7c8a5)) + ## [0.7.0](https://github.com/ConfigButler/krm-stream/compare/gateway/kube/v0.6.0...gateway/kube/v0.7.0) (2026-10-04) diff --git a/gateway/kube/go.mod b/gateway/kube/go.mod index 326a047..39e8ba1 100644 --- a/gateway/kube/go.mod +++ b/gateway/kube/go.mod @@ -27,7 +27,7 @@ go 1.27.1 // unreleased adapter with the core from the same commit. The adapter relies on core behaviour, not // only API, so it must never resolve an older core than the one it was released with. require ( - github.com/ConfigButler/krm-stream/gateway v0.7.0 // x-release-please-version + github.com/ConfigButler/krm-stream/gateway v0.8.0 // x-release-please-version k8s.io/api v0.36.0 k8s.io/apimachinery v0.36.0 k8s.io/client-go v0.36.0 diff --git a/go.work b/go.work index 3542c73..bd4aca4 100644 --- a/go.work +++ b/go.work @@ -28,4 +28,4 @@ use ( // This points that exact version at the working tree. Go refuses an unversioned replace of a // workspace module, so the version is spelled out, and Release Please moves it together with // gateway/kube/go.mod; CI fails if the two disagree. -replace github.com/ConfigButler/krm-stream/gateway v0.7.0 => ./gateway // x-release-please-version +replace github.com/ConfigButler/krm-stream/gateway v0.8.0 => ./gateway // x-release-please-version diff --git a/packages/krm-stream/CHANGELOG.md b/packages/krm-stream/CHANGELOG.md index e041dd6..ae5a583 100644 --- a/packages/krm-stream/CHANGELOG.md +++ b/packages/krm-stream/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## [0.8.0](https://github.com/ConfigButler/krm-stream/compare/@configbutler/krm-stream-v0.7.0...@configbutler/krm-stream-v0.8.0) (2026-10-05) + + +### ⚠ BREAKING CHANGES + +* **client:** setValue and removeKey on metadata.annotations as a whole are refused; edit each annotation key instead. isEditable on that map is now false. +* **client:** stop the stream when any host callback throws +* **client:** an exception thrown by a subscribe callback or onError now stops the stream without retrying and rejects closed with that exception, as a consumer exception does. +* **client:** connectManagedResourceStream is renamed connectResourceStream(url, consume, options), and the old single-connection connectResourceStream and connectWithEventSource are removed without aliases. ManagedStreamOptions/StreamOptions become ResourceStreamOptions and ManagedStreamHandle/StreamHandle become ResourceStreamHandle; onOpen, onSynced, onGap, onStateChange and onChange are removed in favour of state, subscribe and the callback. applyStreamEvent takes a ResourceStateEvent, without seq or error events. closed now rejects with a callback's exception, and a mismatched X-KRM-Stream-Protocol header is terminal. + +### Features + +* **client:** deliver resource state events from one stream connector ([#53](https://github.com/ConfigButler/krm-stream/issues/53)) ([d054745](https://github.com/ConfigButler/krm-stream/commit/d0547459594f9c5025aac81c9c5734f7ebfc1f87)) +* **client:** native editing through the host proxy (slice 2) ([#61](https://github.com/ConfigButler/krm-stream/issues/61)) ([66f306b](https://github.com/ConfigButler/krm-stream/commit/66f306bbaa3f8b5c0fc4c990f8a793b287a69191)) +* **client:** native Kubernetes viewer over LIST/WATCH (slice 1) ([#60](https://github.com/ConfigButler/krm-stream/issues/60)) ([79fb86e](https://github.com/ConfigButler/krm-stream/commit/79fb86e29fb9543418b5594ab03805bae2c2ea5c)) + + +### Bug Fixes + +* **client:** never count an adopted save response as snapshot membership ([d7e0677](https://github.com/ConfigButler/krm-stream/commit/d7e0677066cd3433471e15a0d6bd2a5dc4699844)) +* **client:** stop the stream when any host callback throws ([d7e0677](https://github.com/ConfigButler/krm-stream/commit/d7e0677066cd3433471e15a0d6bd2a5dc4699844)) + + +### Documentation + +* add an upgrade guide from 0.7 ([d7e0677](https://github.com/ConfigButler/krm-stream/commit/d7e0677066cd3433471e15a0d6bd2a5dc4699844)) +* **examples:** add tested deletion-recovery and keep-local editor recipes ([#57](https://github.com/ConfigButler/krm-stream/issues/57)) ([939b262](https://github.com/ConfigButler/krm-stream/commit/939b2622e9a3905c364457c6d463508f119ab1a6)) +* re-center on watch streams and a native watch direction ([#59](https://github.com/ConfigButler/krm-stream/issues/59)) ([523fd7a](https://github.com/ConfigButler/krm-stream/commit/523fd7a7fbd314472197d106426d6b1a418715e3)) + ## [0.7.0](https://github.com/ConfigButler/krm-stream/compare/@configbutler/krm-stream-v0.6.0...@configbutler/krm-stream-v0.7.0) (2026-10-04) diff --git a/packages/krm-stream/package-lock.json b/packages/krm-stream/package-lock.json index 46fe9f4..2786997 100644 --- a/packages/krm-stream/package-lock.json +++ b/packages/krm-stream/package-lock.json @@ -1,12 +1,12 @@ { "name": "@configbutler/krm-stream", - "version": "0.7.0", + "version": "0.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@configbutler/krm-stream", - "version": "0.7.0", + "version": "0.8.0", "license": "Apache-2.0", "devDependencies": { "@biomejs/biome": "^2.5.13", diff --git a/packages/krm-stream/package.json b/packages/krm-stream/package.json index e7e8401..c1a506e 100644 --- a/packages/krm-stream/package.json +++ b/packages/krm-stream/package.json @@ -1,6 +1,6 @@ { "name": "@configbutler/krm-stream", - "version": "0.7.0", + "version": "0.8.0", "description": "Receive live Kubernetes resource updates in browser apps and three-way merge them with form edits.", "keywords": [ "kubernetes", diff --git a/packages/krm-stream/src/version.ts b/packages/krm-stream/src/version.ts index 7596bda..60c3b39 100644 --- a/packages/krm-stream/src/version.ts +++ b/packages/krm-stream/src/version.ts @@ -22,7 +22,7 @@ // line together, and version.test.ts fails if they ever disagree. /** The npm package version of this build. Assert it against the copy you vendored. */ -export const VERSION = "0.7.0"; // x-release-please-version +export const VERSION = "0.8.0"; // x-release-please-version /** The wire protocol this build speaks (spec/v1.md). The gateway sends it as `X-KRM-Stream-Protocol`; * connectResourceStream refuses a stream whose header names another version. */