Skip to content
Draft
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
47 changes: 47 additions & 0 deletions content/docs/changelog/changelog-039.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
title: "Changelog #039"
sidebarTitle: "Changelog #039"
llm: true
image: "/images/changelog/39.png"
imageAlt: "Announcing Changelog #039"
publishedAt: "2026-10-09"
---
import Image from 'next/image';

<Image
src="/images/changelog/39.png"
alt="Announcing Changelog #039"
width={800}
height={400}
/>
Hey everyone. This release adds global API keys for working across projects, improves managed browser and billing behavior, and fixes sign-in, usage reporting, session recordings, and API reliability.

### ⭐ New

#### Global API keys

Global API keys can access any project in an organization by passing `projectId` with each request, while requests without one use the key's fallback project; Computers continue to require project-scoped keys.

### 🔧 Improvements

* Billing notifications in Discord now cover Metronome plan renewals and payment failures, distinguish overdue payments from cancellations, and include amounts, invoice links, and updated balances where available.

* API key rotation now uses the same dialog as key creation, with confirmation, progress, copy controls, and a one-time reveal of the rotated key.

* Managed browsers now include Widevine support and use Google Chrome brand values across user-agent properties and headers.

### 🐛 Bug Fixes

* Fixed sign-in for accounts with two-step verification by adding TOTP and backup-code flows for email links and OAuth, with clear errors for invalid or expired links.

* Fixed sessions created with `recordings: false` still allocating a recording.

* Fixed hourly usage data failing to load for Metronome-billed organizations on the Last 24h and Last 3d views.

* Fixed included usage credits starting on a plan's upgrade anniversary instead of the first of the month; mid-month plan attachments now receive a full credit grant through the next monthly boundary.

* Fixed recurring API pauses and memory growth caused by unbounded telemetry labels, duplicate logging workers, and DuckDB's external file cache.

* Fixed proxied browser actions on Box infrastructure using the wrong proxy provider instead of the organization's configured provider and overrides.

* Fixed managed browser pool rollouts draining available capacity while a new browser template was still starting or failed to register.
1 change: 1 addition & 0 deletions content/docs/changelog/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"root": true,
"pages": [
"---Changelog---",
"changelog-039",
"changelog-038",
"changelog-037",
"changelog-036",
Expand Down
Binary file added public/images/changelog/39.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
204 changes: 204 additions & 0 deletions scripts/changelog/audit/039.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
{
"changelogNumber": 39,
"window": {
"since": "2026-10-02T13:19:47.276Z",
"until": "2026-10-09T13:22:00.256Z",
"source": "state"
},
"reconciliation": {
"commitsCollected": 31,
"authorSkippedCommits": 3,
"logicalChanges": 31,
"eligible": 27,
"excluded": 4,
"unaccounted": 0
},
"exclusions": [
{
"reason": "ignored_files_only",
"confidence": "structural",
"key": "0xnenlabs/steel#2155",
"repo": "0xnenlabs/steel",
"visibility": "private",
"redacted": true,
"pullRequest": {
"number": 2155,
"url": "https://github.com/0xnenlabs/steel/pull/2155",
"title": null
},
"commits": [
{
"shortSha": "e50c4a6",
"url": "https://github.com/0xnenlabs/steel/commit/e50c4a6ed1662cfe538038afe910c9cf7a43d8f3",
"subject": null
}
],
"changedFileCount": 1,
"changedFiles": null
},
{
"reason": "submodule_pointer_only",
"confidence": "structural",
"key": "0xnenlabs/steel#2164",
"repo": "0xnenlabs/steel",
"visibility": "private",
"redacted": true,
"pullRequest": {
"number": 2164,
"url": "https://github.com/0xnenlabs/steel/pull/2164",
"title": null
},
"commits": [
{
"shortSha": "8a7ff27",
"url": "https://github.com/0xnenlabs/steel/commit/8a7ff27d52630819b69e087bd248ef81d1f3c19c",
"subject": null
}
],
"changedFileCount": 1,
"changedFiles": null
},
{
"reason": "self_generated",
"confidence": "structural",
"key": "steel-dev/docs#139",
"repo": "steel-dev/docs",
"visibility": "public",
"redacted": false,
"pullRequest": {
"number": 139,
"url": "https://github.com/steel-dev/docs/pull/139",
"title": "docs: draft changelog #038"
},
"commits": [
{
"shortSha": "fed1ac4",
"url": "https://github.com/steel-dev/docs/commit/fed1ac451c37c014a299f1160cde5f9416b709f0",
"subject": "docs: draft changelog #038 (#139)"
}
],
"changedFileCount": 5,
"changedFiles": [
"content/docs/changelog/changelog-038.mdx",
"content/docs/changelog/meta.json",
"public/images/changelog/38.png",
"scripts/changelog/audit/038.json",
"scripts/changelog/state.json"
]
},
{
"reason": "non_material_docs",
"confidence": "heuristic",
"key": "steel-dev/docs#142",
"repo": "steel-dev/docs",
"visibility": "public",
"redacted": false,
"pullRequest": {
"number": 142,
"url": "https://github.com/steel-dev/docs/pull/142",
"title": "feat(brand): replace Steel logo with the new mark"
},
"commits": [
{
"shortSha": "322ad57",
"url": "https://github.com/steel-dev/docs/commit/322ad57545a1669c53cab1d05a363746bc43ccb9",
"subject": "feat(brand): replace Steel logo with the new mark (#142)"
}
],
"changedFileCount": 10,
"changedFiles": [
"app/(home)/_pages/page.en.tsx",
"app/favicon.ico",
"app/og/[...slug]/route.tsx",
"components/callout.tsx",
"components/ui/icon.tsx",
"lib/design-md.ts",
"public/images/logo.png",
"public/images/steel-mark.png",
"scripts/changelog/imagegen/assets/steel-logo.svg",
"scripts/changelog/imagegen/template.ts"
]
}
],
"authorSkipped": [
{
"repo": "0xnenlabs/steel",
"sha": "992cd6d2d8230b7d6bac7884a0ed2ba50a40af95",
"url": "https://github.com/0xnenlabs/steel/commit/992cd6d2d8230b7d6bac7884a0ed2ba50a40af95",
"author": "dependabot[bot]"
},
{
"repo": "0xnenlabs/steel",
"sha": "436b4e3bdcf604d11bfc9cc48096ea4df0a70e21",
"url": "https://github.com/0xnenlabs/steel/commit/436b4e3bdcf604d11bfc9cc48096ea4df0a70e21",
"author": "dependabot[bot]"
},
{
"repo": "0xnenlabs/steel",
"sha": "8e2af8a686be41f4b0a89cd4ab551b8b318de411",
"url": "https://github.com/0xnenlabs/steel/commit/8e2af8a686be41f4b0a89cd4ab551b8b318de411",
"author": "dependabot[bot]"
}
],
"modelDiscarded": [
{
"text": null,
"reason": "This is a major internal infrastructure change, but the source describes a staged rollout rather than a distinct user-facing capability.",
"redacted": true,
"references": [
{
"label": "0xnenlabs/steel 223c49b",
"url": "https://github.com/0xnenlabs/steel/commit/223c49b39d1596b423de75487904dab9f76912f4"
}
]
},
{
"text": null,
"reason": "This is internal identity data plumbing for a later authentication migration and does not change current user-facing authorization behavior.",
"redacted": true,
"references": [
{
"label": "0xnenlabs/steel 71b3787",
"url": "https://github.com/0xnenlabs/steel/commit/71b3787ef623d3573c878a46f03e7851635d909d"
}
]
},
{
"text": null,
"reason": "The migration was intended to preserve existing visuals, and the regressions were corrected within the same release.",
"redacted": true,
"references": [
{
"label": "0xnenlabs/steel c8b2c34",
"url": "https://github.com/0xnenlabs/steel/commit/c8b2c34d8624d988cad2b573532167f137d518a2"
},
{
"label": "0xnenlabs/steel b397f67",
"url": "https://github.com/0xnenlabs/steel/commit/b397f67c0205f930bef63c55917b20b3a0cc923a"
}
]
},
{
"text": null,
"reason": "This is a visual identity update without a functional product change.",
"redacted": true,
"references": [
{
"label": "0xnenlabs/steel 45d056c",
"url": "https://github.com/0xnenlabs/steel/commit/45d056cae738e5a9d1ea10d9faf496afe909109b"
}
]
},
{
"text": "Updated the Sessions API quickstart to match the pricing page's free credit amount.",
"reason": "This is a small documentation correction rather than a product change.",
"redacted": false,
"references": [
{
"label": "steel-dev/docs fa1e027",
"url": "https://github.com/steel-dev/docs/commit/fa1e02769a0c25666c1127d6495b06b964babd42"
}
]
}
]
}
6 changes: 3 additions & 3 deletions scripts/changelog/state.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"changelogNumber": 38,
"until": "2026-10-02T13:19:47.276Z",
"applicationReleaseSha": "52ac1b9ca29a8318b79c0d63443825526ed22659"
"changelogNumber": 39,
"until": "2026-10-09T13:22:00.256Z",
"applicationReleaseSha": "45d056cae738e5a9d1ea10d9faf496afe909109b"
}
Loading