release: 0.60.0#110
Merged
Merged
Conversation
Telemetry is now a default direct-to-VM routing subresource. The
telemetry stream method path is changed from /browsers/{id}/telemetry to
/browsers/{id}/telemetry/stream so it mirrors the browser VM endpoint:
when the request is rewritten for direct routing it yields
{base_url}/telemetry/stream, which is the SSE stream on the VM (the VM's
/telemetry is a different, non-stream JSON endpoint).
"telemetry" is added to the default KERNEL_BROWSER_ROUTING_SUBRESOURCES
allowlist alongside "curl".
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The SSE decoder's empty-block guard included last_event_id, which is sticky across events per the SSE spec. Once any event carried an id, every subsequent comment-only block (e.g. the server's ":\n\n" keepalive, sent every 15s on an idle stream) fell through the guard and dispatched an empty-data event. The typed Stream wrapper then calls .json() on it unconditionally, raising JSONDecodeError and killing the stream. This made idle browser telemetry streams crash after ~15s. Drop last_event_id from the guard so dispatch depends only on the current block's event/data/retry fields. Event-typed empty-data frames still dispatch (unchanged). Adds a regression test for a keepalive comment following an id-bearing event. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: route browser telemetry directly to the VM by default
Contributor
Author
|
🧪 Testing To try out this version of the SDK: Expires at: Fri, 03 Jul 2026 19:41:55 GMT |
|
Created a monitoring plan for this PR. What this PR does: Ships kernel Python SDK v0.60.0, which routes browser telemetry streams directly to the browser VM by default (previously opt-in via env var) and fixes a bug where SSE keepalive frames would crash typed stream iterators with a JSONDecodeError after any event carrying an Intended effect:
Risks:
Status updates will be posted automatically on this PR as monitoring progresses. |
d14974b to
5aad9e9
Compare
d953cd2 to
cecaff2
Compare
Contributor
Author
|
🤖 Release is at https://github.com/kernel/kernel-python-sdk/releases/tag/v0.60.0 🌻 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated Release PR
0.60.0 (2026-06-03)
Full Changelog: v0.59.0...v0.60.0
Features
Bug Fixes
This pull request is managed by Stainless's GitHub App.
The semver version number is based on included commit messages. Alternatively, you can manually set the version number in the title of this pull request.
For a better experience, it is recommended to use either rebase-merge or squash-merge when merging this pull request.
🔗 Stainless website
📚 Read the docs
🙋 Reach out for help or questions
Note
Medium Risk
Default telemetry VM routing and SSE decoder behavior affect long-lived streams; optional pool
sizeis a breaking signature change for callers that relied on requiredsizeon update.Overview
Release 0.60.0 bumps package version metadata and refreshes the OpenAPI spec pointer; most substantive changes are in generated SDK code and client behavior.
API keys:
api_keys.listgains optionalquery,sort_by, andsort_directionfor search and ordering (sync and async).Browser pools:
browser_pools.updateno longer requiressize; it is optional so callers can patch other pool fields without sending pool capacity.Browser routing: Default direct-to-VM subresources now include
telemetryalongsidecurl, so telemetry streams can hit the browser VM without extra env config.SSE streaming:
SSEDecoderno longer emits empty events for comment-only keepalive blocks (:) after a prior event setlast_event_id, avoiding JSON decode failures on typed telemetry streams.Adds
examples/browser_telemetry.pyand tests for routing, streaming, API keys, and browser pools.Reviewed by Cursor Bugbot for commit cecaff2. Bugbot is set up for automated code reviews on this repo. Configure here.