diff --git a/content/docs/changelog/changelog-039.mdx b/content/docs/changelog/changelog-039.mdx new file mode 100644 index 00000000..f9912eff --- /dev/null +++ b/content/docs/changelog/changelog-039.mdx @@ -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'; + +Announcing Changelog #039 +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. diff --git a/content/docs/changelog/meta.json b/content/docs/changelog/meta.json index 1504d692..2754795d 100644 --- a/content/docs/changelog/meta.json +++ b/content/docs/changelog/meta.json @@ -3,6 +3,7 @@ "root": true, "pages": [ "---Changelog---", + "changelog-039", "changelog-038", "changelog-037", "changelog-036", diff --git a/public/images/changelog/39.png b/public/images/changelog/39.png new file mode 100644 index 00000000..302484c2 Binary files /dev/null and b/public/images/changelog/39.png differ diff --git a/scripts/changelog/audit/039.json b/scripts/changelog/audit/039.json new file mode 100644 index 00000000..a1d93b94 --- /dev/null +++ b/scripts/changelog/audit/039.json @@ -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" + } + ] + } + ] +} diff --git a/scripts/changelog/state.json b/scripts/changelog/state.json index b8565a6c..1ac6a3b6 100644 --- a/scripts/changelog/state.json +++ b/scripts/changelog/state.json @@ -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" }