Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.69.0"
".": "0.70.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 120
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-cde481b2f320ce48f83db84ae96226b0e7568146c9387c4fefebf286ecb0dd0a.yml
openapi_spec_hash: 6bd86d767290fcd7e2a6aae26dff5417
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel/kernel-ab4e7c50c41fefd891648fa84ba0258986f192ba1bde9f42cbdf487f64c4cc27.yml
openapi_spec_hash: b4bcd6557f7045ecff30b01e02d28ac5
config_hash: 03c7e57f268c750e2415831662e95969
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.70.0 (2026-06-22)

Full Changelog: [v0.69.0...v0.70.0](https://github.com/kernel/kernel-go-sdk/compare/v0.69.0...v0.70.0)

### Features

* Align browser-pool timeout/viewport/fill-rate contract with implementation; reject save_changes on update ([86fd2d4](https://github.com/kernel/kernel-go-sdk/commit/86fd2d44854ed0bfebdc83f848d2546fc64b84b4))

## 0.69.0 (2026-06-18)

Full Changelog: [v0.68.0...v0.69.0](https://github.com/kernel/kernel-go-sdk/compare/v0.68.0...v0.69.0)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Or to pin the version:
<!-- x-release-please-start-version -->

```sh
go get -u 'github.com/kernel/kernel-go-sdk@v0.69.0'
go get -u 'github.com/kernel/kernel-go-sdk@v0.70.0'
```

<!-- x-release-please-end -->
Expand Down
18 changes: 12 additions & 6 deletions browserpool.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,9 @@ type BrowserPoolBrowserPoolConfig struct {
ChromePolicy map[string]any `json:"chrome_policy"`
// List of browser extensions to load into the session. Provide each by id or name.
Extensions []shared.BrowserExtension `json:"extensions"`
// Percentage of the pool to fill per minute. Defaults to 10%.
// Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
// most organizations but can be raised per-organization, so only the lower bound
// is enforced here.
FillRatePerMinute int64 `json:"fill_rate_per_minute"`
// If true, launches the browser using a headless image. Defaults to false.
Headless bool `json:"headless"`
Expand All @@ -224,7 +226,7 @@ type BrowserPoolBrowserPoolConfig struct {
// mechanisms.
Stealth bool `json:"stealth"`
// Default idle timeout in seconds for browsers acquired from this pool before they
// are destroyed. Defaults to 600 seconds if not specified
// are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).
TimeoutSeconds int64 `json:"timeout_seconds"`
// Initial browser window size in pixels with optional refresh rate. If omitted,
// image defaults apply (1920x1080@25). For GPU images, the default is
Expand Down Expand Up @@ -370,7 +372,9 @@ type BrowserPoolNewParams struct {
// your organization's pooled sessions limit (the sum of all pool sizes cannot
// exceed your limit).
Size int64 `json:"size" api:"required"`
// Percentage of the pool to fill per minute. Defaults to 10%.
// Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
// most organizations but can be raised per-organization, so only the lower bound
// is enforced here.
FillRatePerMinute param.Opt[int64] `json:"fill_rate_per_minute,omitzero"`
// If true, launches the browser using a headless image. Defaults to false.
Headless param.Opt[bool] `json:"headless,omitzero"`
Expand All @@ -392,7 +396,7 @@ type BrowserPoolNewParams struct {
// mechanisms.
Stealth param.Opt[bool] `json:"stealth,omitzero"`
// Default idle timeout in seconds for browsers acquired from this pool before they
// are destroyed. Defaults to 600 seconds if not specified
// are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).
TimeoutSeconds param.Opt[int64] `json:"timeout_seconds,omitzero"`
// Custom Chrome enterprise policy overrides applied to all browsers in this pool.
// Keys are Chrome enterprise policy names; values must match their expected types.
Expand Down Expand Up @@ -433,7 +437,9 @@ type BrowserPoolUpdateParams struct {
// Whether to discard all idle browsers and rebuild the pool immediately. Defaults
// to false.
DiscardAllIdle param.Opt[bool] `json:"discard_all_idle,omitzero"`
// Percentage of the pool to fill per minute. Defaults to 10%.
// Percentage of the pool to fill per minute. Defaults to 10. The cap is 25 for
// most organizations but can be raised per-organization, so only the lower bound
// is enforced here.
FillRatePerMinute param.Opt[int64] `json:"fill_rate_per_minute,omitzero"`
// If true, launches the browser using a headless image. Defaults to false.
Headless param.Opt[bool] `json:"headless,omitzero"`
Expand All @@ -459,7 +465,7 @@ type BrowserPoolUpdateParams struct {
// mechanisms.
Stealth param.Opt[bool] `json:"stealth,omitzero"`
// Default idle timeout in seconds for browsers acquired from this pool before they
// are destroyed. Defaults to 600 seconds if not specified
// are destroyed. Defaults to 600 seconds. Minimum 10, maximum 259200 (72 hours).
TimeoutSeconds param.Opt[int64] `json:"timeout_seconds,omitzero"`
// Custom Chrome enterprise policy overrides applied to all browsers in this pool.
// Keys are Chrome enterprise policy names; values must match their expected types.
Expand Down
4 changes: 2 additions & 2 deletions browserpool_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func TestBrowserPoolNewWithOptionalParams(t *testing.T) {
ProxyID: kernel.String("proxy_id"),
StartURL: kernel.String("https://example.com"),
Stealth: kernel.Bool(true),
TimeoutSeconds: kernel.Int(60),
TimeoutSeconds: kernel.Int(10),
Viewport: shared.BrowserViewportParam{
Height: 800,
Width: 1280,
Expand Down Expand Up @@ -125,7 +125,7 @@ func TestBrowserPoolUpdateWithOptionalParams(t *testing.T) {
Size: kernel.Int(10),
StartURL: kernel.String("https://example.com"),
Stealth: kernel.Bool(true),
TimeoutSeconds: kernel.Int(60),
TimeoutSeconds: kernel.Int(10),
Viewport: shared.BrowserViewportParam{
Height: 800,
Width: 1280,
Expand Down
2 changes: 1 addition & 1 deletion internal/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

package internal

const PackageVersion = "0.69.0" // x-release-please-version
const PackageVersion = "0.70.0" // x-release-please-version
16 changes: 8 additions & 8 deletions shared/shared.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,12 +168,12 @@ func (r *BrowserProfileParam) UnmarshalJSON(data []byte) error {
// based on the resolution (higher resolutions use lower refresh rates to keep
// bandwidth reasonable).
type BrowserViewport struct {
// Browser window height in pixels.
// Browser window height in pixels. Any positive integer is accepted.
Height int64 `json:"height" api:"required"`
// Browser window width in pixels.
// Browser window width in pixels. Any positive integer is accepted.
Width int64 `json:"width" api:"required"`
// Display refresh rate in Hz. If omitted, automatically determined from width and
// height.
// Display refresh rate in Hz. Any positive integer is accepted; if omitted,
// automatically determined from width and height.
RefreshRate int64 `json:"refresh_rate"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Expand Down Expand Up @@ -215,12 +215,12 @@ func (r BrowserViewport) ToParam() BrowserViewportParam {
//
// The properties Height, Width are required.
type BrowserViewportParam struct {
// Browser window height in pixels.
// Browser window height in pixels. Any positive integer is accepted.
Height int64 `json:"height" api:"required"`
// Browser window width in pixels.
// Browser window width in pixels. Any positive integer is accepted.
Width int64 `json:"width" api:"required"`
// Display refresh rate in Hz. If omitted, automatically determined from width and
// height.
// Display refresh rate in Hz. Any positive integer is accepted; if omitted,
// automatically determined from width and height.
RefreshRate param.Opt[int64] `json:"refresh_rate,omitzero"`
paramObj
}
Expand Down
Loading