Skip to content

Address PR #906 review findings in google-translate plugin - #924

Open
pedrobonamin with Copilot wants to merge 3934 commits into
mainfrom
copilot/fix-code-comments-review-thread
Open

Address PR #906 review findings in google-translate plugin#924
pedrobonamin with Copilot wants to merge 3934 commits into
mainfrom
copilot/fix-code-comments-review-thread

Conversation

Copilot AI commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

This updates the sanity-plugin-google-translate port to resolve all comments in review thread #pullrequestreview-4378573434. The fixes target translation flow correctness, locale normalization, schema typing ergonomics, and README usage accuracy.

  • Translation flow/state handling (GoogleTranslateInput.tsx)

    • Prevents isTranslating from getting stuck on early return when source and target resolve to the same language.
    • Moves same-language validation ahead of async translation execution.
  • Locale normalization for API targets (GoogleTranslateInput.tsx)

    • Normalizes each destination field language with extractLanguageFromCode(...) before:
      • source/target comparison
      • target query param sent to Google Translate
      • UI success messaging
  • Sanity schema option typing (types.ts)

    • Adds module augmentation so plugin options are recognized on object schema options:
      • translate?: boolean
      • apiKey?: string
    • Removes the need for local @ts-expect-error in test-studio usage.
  • Docs correctness (README.md)

    • Fixes invalid config snippet by switching to valid defineConfig + export default usage.
  • Focused type coverage (types.test.ts)

    • Adds a small type test asserting ObjectOptions extends plugin-specific options.
declare module 'sanity' {
  interface ObjectOptions extends GoogleTranslateSchemaOptions {}
}

Note

Medium Risk
CI and GitHub Actions changes (e2e deploy, secrets, sharded tests, Renovate bot tokens) can break merges or leak misconfigured jobs; product runtime risk is low because this diff is mostly docs, skills, and workflows rather than published plugin logic.

Overview
Large monorepo hygiene and tooling PR—not the google-translate plugin fixes described in the PR metadata (those paths are absent from this diff).

Agent / contributor guidance: New skills for styled-components → vanilla-extract migration, plugin test coverage (Vitest + Playwright), and sanity-plugin-best-practices (styling, refs). plugin-transfer is expanded (README cleanup, knip/lint, changeset author: credits, no styling migration during transfer). test-studio-script-runner now documents the home workspace and folder-based script layout.

CI & quality: Vitest runs in four shards with blob coverage merge on PRs; new E2E workflow (ephemeral datasets, Vercel preview deploy, chromium/firefox matrix, PR comments, periodic cleanup). Adds zizmor workflow audit, changeset release npmdiff PR comments, bumps actions/checkout and related bot-token permissions, and refreshes Renovate scheduling/config. pnpm knip is now part of the documented pre-PR suite.

Dev experience: New dev/e2e-studio bare-bones studio for plugin e2e wiring; AGENTS.md / README / CONTRIBUTING updated (pnpm v11, catalog peers, Vite DevTools, e2e auth, plugin table). Root .oxlintrc.json / .oxfmtrc.json removed in favor of @sanity/plugin-kit shared configs; CODEOWNERS adds SFCC, personalization, and mux-input.

Reviewed by Cursor Bugbot for commit 9f6978a. Bugbot is set up for automated code reviews on this repo. Configure here.

@changeset-bot

changeset-bot Bot commented Jun 5, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: 9f6978a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercel Bot commented Jun 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
plugins-studio Ready Ready Preview Aug 6, 2026 1:18pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
plugins-e2e-test-studio Ignored Ignored Aug 6, 2026 1:18pm

Request Review

Copilot Bot changed the title [WIP] Fix code based on review comments Address PR #906 review findings in google-translate plugin Jun 5, 2026
Copilot Bot requested a review from pedrobonamin June 5, 2026 08:35
Base automatically changed from copilot/move-google-translate-plugin to main June 5, 2026 08:46
@pedrobonamin
pedrobonamin marked this pull request as ready for review June 5, 2026 08:58
@pedrobonamin
pedrobonamin requested a review from a team as a code owner June 5, 2026 08:58
Copilot Bot review requested due to automatic review settings June 5, 2026 08:58
@pedrobonamin
pedrobonamin requested review from a team and juice49 and removed request for a team June 5, 2026 08:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the sanity-plugin-google-translate port to address prior review feedback by improving translation flow behavior, normalizing locale codes for API/UI consistency, extending Sanity schema option typings for better TS ergonomics, and correcting README usage examples.

Changes:

  • Fixes translation state handling and normalizes target locales in GoogleTranslateInput to avoid same-language translation attempts and improve messaging.
  • Adds TypeScript module augmentation so translate / apiKey are recognized on Sanity object schema options, plus a small type-level test.
  • Updates README config example to use valid defineConfig + export default, and removes an unnecessary @ts-expect-error from the test studio.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
plugins/sanity-plugin-google-translate/src/types.ts Adds module augmentation to extend Sanity ObjectOptions with plugin schema options.
plugins/sanity-plugin-google-translate/src/types.test.ts Adds a Vitest type test asserting the ObjectOptions augmentation is applied.
plugins/sanity-plugin-google-translate/src/GoogleTranslateInput.tsx Refines translation flow/state handling and normalizes locale codes for target comparison/API params/UI messaging.
plugins/sanity-plugin-google-translate/README.md Fixes the Sanity config usage snippet to valid defineConfig + default export.
dev/test-studio/src/google-translate/index.tsx Removes a now-unnecessary @ts-expect-error thanks to improved schema option typings.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +65 to +81
const source = extractLanguageFromCode(config.baseLanguage)

if (allLanguageFields.length === 1) {
const singleField = allLanguageFields[0]!
const target = extractLanguageFromCode(singleField.fieldLang)
if (target !== source) {
setIsTranslating(true)
} else {
return toast.push({
title: `Bad language pair`,
status: `warning`,
description: `Cannot translate from "${source.toLocaleUpperCase()}" to "${target.toLocaleUpperCase()}"`,
})
}
} else {
setIsTranslating(true)
}
juice49
juice49 previously approved these changes Jun 22, 2026
squiggler-app Bot and others added 9 commits July 14, 2026 01:50
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
* fix(deps): update dependency @tanstack/react-virtual to ^3.14.6

* chore(deps): changeset for dependency update

---------

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
* Remove redundant dts option from tsdown configs

Since typescript v7 (tsgo) landed, tsdown enables dts generation
automatically (packages declare types, or the resolved tsconfig sets
declaration: true) and rolldown-plugin-dts picks the tsgo generator
whenever the installed typescript major is >= 7. The explicit
dts: {tsgo: true} / dts: true options are therefore no-ops.

Verified: dist output across all 50 packages is byte-identical
before/after this change.

Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>

* Mention tsconfig declaration fallback in AGENTS.md dts note

Not all packages declare a types field (@repo/generators,
@sanity/form-toolkit); for those, tsdown enables dts generation via
declaration: true inherited from the @sanity/tsconfig presets.

Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
squiggler-app Bot and others added 15 commits August 3, 2026 17:37
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@sanity/client](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/client)) | [`^7.25.0` →
`^7.26.0`](https://renovatebot.com/diffs/npm/@sanity%2fclient/7.25.0/7.26.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fclient/7.26.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fclient/7.25.0/7.26.0?slim=true)
|

---

### Release Notes

<details>
<summary>sanity-io/client (@&#8203;sanity/client)</summary>

###
[`v7.26.0`](https://redirect.github.com/sanity-io/client/blob/HEAD/CHANGELOG.md#7260-2026-07-29)

[Compare
Source](https://redirect.github.com/sanity-io/client/compare/v7.25.0...v7.26.0)

##### Features

- support querying by multiple variant conditions
([#&#8203;1239](https://redirect.github.com/sanity-io/client/issues/1239))
([e5e7980](https://redirect.github.com/sanity-io/client/commit/e5e7980d344a1389fb53bb8d8053b5c4613986cf))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQ0LjguMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Routine patch/minor dependency bump with lockfile-only changes; no
repo code changes, though API behavior may shift slightly via the new
client release.
> 
> **Overview**
> Bumps the shared **`@sanity/client`** catalog entry from **`^7.25.0`**
to **`^7.26.0`** and refreshes **`pnpm-lock.yaml`** so the monorepo
resolves a single **7.26.0** instance everywhere (including workspace
overrides and packages that depend on **`catalog:`**).
> 
> Upstream **7.26.0** adds support for querying by multiple variant
conditions; this repo change is version alignment only—no application or
plugin source edits.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
01e5fcf. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @sanity/sanity-plugin-async-list@3.0.0

### Major Changes

- [#1087](#1087)
[`f4e7fcc`](f4e7fcc)
Thanks [@stipsan](https://github.com/stipsan)! - Refactor the input into
a real React component and fix the `async-list-undefined` namespace/id

- **Breaking:** `AsyncList` is now a regular React component that takes
a single `props` argument (the standard Sanity input props plus an
`options` field), instead of being called as `AsyncList(props,
options)`. For the `components.input` slot, use the new
`createAsyncListInput(options)` factory: `input:
createAsyncListInput({loader})`. This makes the input safe under the
Rules of Hooks and lets the React Compiler optimize it.
- **Breaking:** the secrets namespace and DOM `id` are no longer derived
as `async-list-${schemaType}` (which became the literal
`async-list-undefined` for component usage). The DOM `id` now uses
Sanity's stable per-field id, and the secrets namespace falls back to
`async-list` (instead of `async-list-undefined`) when no
`schemaType`/`secrets.namespace` is available. When using the component
with `secrets`, set an explicit `secrets.namespace`; a dev warning is
logged if it is missing.
- Fix: the debounced search handler is stable and is cancelled on
unmount, so it no longer drops queued calls or updates state on an
unmounted tree.
- Fix: the value-change handler no longer depends on the whole `props`
object, avoiding unnecessary `Autocomplete` re-renders.
- Fix: loader results are validated to ensure each option's `value` is a
string.

### Patch Changes

- Updated dependencies
[[`c61bb44`](c61bb44)]:
  - @sanity/studio-secrets@4.0.15
## @sanity/personalization-plugin@3.1.0

### Minor Changes

- [#1226](#1226)
[`1143bd6`](1143bd6)
Thanks [@jjburbridge](https://github.com/jjburbridge)! - Add
`fieldLevelPersonalization` export for segment-based field
personalization. Segments can be defined statically, fetched from an
external API, or stored in your Sanity dataset. `FieldPluginConfig` is
renamed to `ExperimentFieldPluginConfig` (a deprecated type alias is
kept for compatibility).

### Patch Changes

- [#1208](#1208)
[`51317b2`](51317b2)
Thanks [@stipsan](https://github.com/stipsan)! - Address review feedback
from the migration into the monorepo:

- Fix LaunchDarkly experiment pagination so `offset` advances between
pages, preventing duplicate results and a possible infinite loop
- Correct misspelled plugin names (`personalistaion` →
`personalization`) and stop the LaunchDarkly entry point from
identifying itself as the GrowthBook plugin
- Fix an operator-precedence bug in the experiment field preview that
could set the title to the entire field object
- Walk reference preview paths with optional chaining to avoid throwing
on missing intermediate fields
- Move the experiment item activation patch out of render and into an
effect
  - Remove unused `Select` props
- Fix the GrowthBook (`project` config key) and LaunchDarkly
(`fieldLevelExperiments` usage) docs and drop the stale standalone-repo
Studio version / tooling references

- Updated dependencies
[[`c61bb44`](c61bb44)]:
  - @sanity/studio-secrets@4.0.15
## sanity-plugin-cloudinary@2.1.0

### Minor Changes

- [#1233](#1233)
[`36f3fe2`](36f3fe2)
Thanks [@ChrisLaRocque](https://github.com/ChrisLaRocque)! - Add
performant preview images

Asset previews and diffs now build an optimized, scaled-down preview URL
with `@cloudinary/url-gen` (a 400px-wide transformation) when a cloud
name is configured, instead of loading the full-size original. This
keeps the Studio fast when previewing large Cloudinary assets, and falls
back to the stored asset URL when no cloud name is available.

- [#1227](#1227)
[`3b02635`](3b02635)
Thanks [@pgurley](https://github.com/pgurley),
[@atlvis](https://github.com/atlvis)! - Add `cloudinaryReferencePlugin`
for storing Cloudinary assets as reusable document references

- New `cloudinaryReferencePlugin` registers the schema types needed to
reference Cloudinary assets as documents
- New `cloudinaryAssetDocument` type stores a Cloudinary asset as a
standalone document
- New `cloudinaryAssetReference` type references those asset documents,
with a custom input for selecting and managing assets through the
Cloudinary Media Library
- `openMediaSelector` now supports a `showHandler` callback and a
`folder` option, so the select button can show a loading state and scope
the library to a folder
- Fixed the internal name of `cloudinaryAssetSourcePlugin`
(`cloudinart-asset-source` → `cloudinary-asset-source`)

### Patch Changes

- [#1236](#1236)
[`7ec89b6`](7ec89b6)
Thanks [@stipsan](https://github.com/stipsan)! - - Fix the
`cloudinaryAssetSourcePlugin` name, which was mistakenly registered as
`cloudinart-asset-source`
- Wait for the Cloudinary Media Library script to finish loading before
opening it, avoiding runtime errors when several inputs mount at once
- Fix a user-facing typo in the asset source loading message ("Media
Libary" → "Media Library")
- Remove an invalid `src`-less `<track>` element from the video preview
- Correct the README usage examples (`defineConfg` → `defineConfig`) and
drop stale standalone-repo "Develop & test" / "Release new version"
instructions
- Updated dependencies
[[`c61bb44`](c61bb44)]:
  - @sanity/studio-secrets@4.0.15
## sanity-plugin-media@6.1.0

### Minor Changes

- [#1119](#1119)
[`ab39674`](ab39674)
Thanks [@lud-hu](https://github.com/lud-hu)! - Add an "Edit Media" asset
source so media details (alt text, title, tags, etc.) can be edited
directly from an image or file field on a document, without opening the
full Media tool.

- [#1117](#1117)
[`6f4316d`](6f4316d)
Thanks [@nickeforsberg](https://github.com/nickeforsberg)! - Add an
`excludeTags` option that hides assets referencing the listed
`media.tag` slugs (`name.current` values). Excluded assets are omitted
from the Media browser grid and asset-picker queries, and the matching
tags are hidden from the tag sidebar and tag search facet. The asset
edit dialog still lists all tags so you can assign or remove them on an
open asset.

- [#1121](#1121)
[`30fa7e2`](30fa7e2)
Thanks [@bobbygeo](https://github.com/bobbygeo),
[@pedrobonamin](https://github.com/pedrobonamin)! - Add folder
management to the media browser

- Organise assets into nested folders, backed by a new `media.folder`
document type (a `name` plus a weak `parent` reference) and a single
weak `opt.media.folder` reference on each asset (mirroring how tags
work). Renaming a folder is a one-field document write regardless of how
many assets it contains.
- Browse folders in a dedicated sidebar tree, with breadcrumb
navigation, create / rename / delete flows, a bulk "Move to folder"
dialog, and per-asset folder controls in the asset details dialog. The
default "All assets" view lists every asset; opening a folder filters
the list to that folder.
- Deleting a folder removes only the folder document — its assets stay
in the library with their folder assignment cleared, and nested folders
move up one level.
- Support multi-select insert when the media plugin is used as an asset
source for array (multiple) fields.

- [#1115](#1115)
[`e7ec6e6`](e7ec6e6)
Thanks [@am0wa](https://github.com/am0wa)! - Extract `image`
(`sanity.imageExifTags`) metadata on asset upload and include it in
asset queries. The asset edit dialog now pre-fills the Description field
from the image's `ImageDescription` EXIF tag as a fallback for image
assets.

- [#1118](#1118)
[`186e29c`](186e29c)
Thanks [@Polleke007](https://github.com/Polleke007),
[@joepvandepol](https://github.com/joepvandepol)! - Add the ability to
replace a selected asset with another one and update all of its
references across documents

When a single asset is selected, a new **Replace** action opens an
overview where you can pick a replacement asset. Every document that
references the original asset (including deeply nested image fields) is
re-pointed to the chosen asset. Ported from
sanity-io/sanity-plugin-media#236.

### Patch Changes

- [#1108](#1108)
[`1dc3a7b`](1dc3a7b)
Thanks [@oxygensmith](https://github.com/oxygensmith)! - Add
`crossOrigin="anonymous"` to the image thumbnail component so thumbnails
load in Firefox. Firefox's Opaque Response Blocking would otherwise
block Sanity CDN asset responses (which send `Vary: Origin`) when
requested without an `Origin` header.
## @sanity/plugin-kit@10.0.3

### Patch Changes

- [#1698](#1698)
[`d3dedd3`](d3dedd3)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency oxlint to ^1.76.0

- [#1779](#1779)
[`5555795`](5555795)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency oxfmt to ^0.61.0

- [#1799](#1799)
[`93858fc`](93858fc)
Thanks [@stipsan](https://github.com/stipsan)! - Prefer function
components via `react/prefer-function-component` (with
`allowErrorBoundary`) instead of banning `Component`/`PureComponent`
imports
## @sanity/cross-dataset-duplicator@2.0.13

### Patch Changes

- [#1228](#1228)
[`71d77d5`](71d77d5)
Thanks [@rohanvachheta](https://github.com/rohanvachheta)! - Handle
reference errors during duplication by fetching missing referenced
documents (including transitive refs, respecting `filter`), re-uploading
any recovered assets, and retrying the transaction, with a one-by-one
commit fallback

- Updated dependencies
[[`c61bb44`](c61bb44)]:
  - @sanity/studio-secrets@4.0.15
## @sanity/embeddings-index-ui@4.0.13

### Patch Changes

- [#1792](#1792)
[`c61bb44`](c61bb44)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency react-rx to ^4.2.5
## @sanity/form-toolkit@3.0.13

### Patch Changes

- [#1234](#1234)
[`1dd36c8`](1dd36c8)
Thanks [@stipsan](https://github.com/stipsan)! - Address post-migration
review feedback:

- `FormRenderer` now renders interactive (uncontrolled) inputs when no
`getFieldState` is provided, so the documented native HTML form usage
works out of the box
- Uncontrolled text and textarea fields honor `options.defaultValue`
(controlled fields keep form-library state only, so UI and submit values
stay in sync)
- `FormRenderer` falls back to `field.name` for the React key when a
field has no `_key`
- The shared HubSpot/Mailchimp request handler defaults to the
Next.js-compatible handler instead of throwing when no framework
environment variable is detected, and short-circuits CORS preflight
(`OPTIONS`) requests
- Corrected the `formSchema`, `formiumInput`, and `mailchimpInput` usage
examples (import paths and required options), README typos, and
example/dev-workflow references

- Updated dependencies
[[`f4e7fcc`](f4e7fcc)]:
  - @sanity/sanity-plugin-async-list@3.0.0
## @sanity/language-filter@5.0.14

### Patch Changes

- [#1792](#1792)
[`c61bb44`](c61bb44)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency react-rx to ^4.2.5
## @sanity/studio-secrets@4.0.15

### Patch Changes

- [#1792](#1792)
[`c61bb44`](c61bb44)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency react-rx to ^4.2.5
## sanity-plugin-hotspot-array@5.0.12

### Patch Changes

- [#1789](#1789)
[`9628df4`](9628df4)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency motion to ^12.43.0
## sanity-plugin-iframe-pane@5.0.30

### Patch Changes

- [#1789](#1789)
[`9628df4`](9628df4)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency motion to ^12.43.0
## sanity-plugin-internationalized-array@5.1.25

### Patch Changes

- [#1765](#1765)
[`97937c4`](97937c4)
Thanks [@pedrobonamin](https://github.com/pedrobonamin)! - Add a stable
`data-testid` on the document-level add-translations panel for e2e
coverage
## sanity-plugin-mux-input@5.0.8

### Patch Changes

- [#1792](#1792)
[`c61bb44`](c61bb44)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency react-rx to ^4.2.5
## sanity-plugin-studio-smartling@5.0.14

### Patch Changes

- [#1216](#1216)
[`d4dd45b`](d4dd45b)
Thanks [@stipsan](https://github.com/stipsan)! - Harden the Smartling
adapter and fix docs:

- Send the secret credentials JSON verbatim during authentication
instead of double-encoding it, which could break auth with proxies that
forward the request body as-is
- Throw a clear error (surfacing Smartling's message) when
authentication does not return an access token, instead of a cryptic
`TypeError`
- Avoid throwing when no existing job is found or when a
translation/progress response is missing its expected payload
- Guard the progress calculation against a zero total word count so
empty documents no longer report `NaN`/`Infinity`
- Fix the `additionalDeserializers` option name in the advanced
configuration docs (was `additonalDeserializers`) and update the README
development/release instructions for the monorepo
## sanity-plugin-workflow@3.0.39

### Patch Changes

- [#1789](#1789)
[`9628df4`](9628df4)
Thanks [@squiggler-app](https://github.com/apps/squiggler-app)! -
fix(deps): update dependency motion to ^12.43.0
## @sanity/document-internationalization@6.2.28


## @sanity/sfcc@1.0.25

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> <sup>[Cursor Bugbot](https://cursor.com/bugbot) is generating a
summary for commit 9246b02. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
Draft PR to exercise plugins against `sanity@next` and
`@sanity/vision@next` (currently `6.9.0-next.19`).

### Changes
- `pnpm-workspace.yaml` overrides: `sanity`, `@sanity/vision` → `next`
- Also pins `@sanity/mutator`, `@sanity/schema`, `@sanity/types`,
`@sanity/util`, and `groq` to `next` so they stay in lockstep with
`sanity` (required to avoid duplicate Studio package versions / dts emit
failures)
- Lockfile regenerated; `minimumReleaseAgeExclude` updated for
`react-rx@5.1.1` (pulled in by `sanity@next`)
- Catalog entries left on `^6.7.0` — only overrides force the next
dist-tag

### Compatibility fix
- `@sanity/color-input`: make preview `prepare` selected fields optional
so the schema type is assignable under `sanity@next`'s `Record<string,
any>` prepare typing (TS2322)

### Verification
- `pnpm format` ✅
- `pnpm lint` ✅
- `pnpm knip` ✅
- `pnpm build` ✅
- `pnpm test run` ✅ (211 files / 1280 tests)

### Notes
- Changeset only for the color-input typing fix; the override pin itself
is a compatibility test, not a release
- Intent: verify plugins against the next Studio line before it ships

### Intent
Compatibility test only — do not merge until ready to adopt the next
channel.
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-5154b38b-9983-414d-866b-14b6a4428d3c?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-5154b38b-9983-414d-866b-14b6a4428d3c&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@sanity/mutator](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/mutator))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/@sanity%2fmutator/6.7.0/6.8.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fmutator/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fmutator/6.7.0/6.8.0?slim=true)
|
| [@sanity/schema](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/schema))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/@sanity%2fschema/6.7.0/6.8.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fschema/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fschema/6.7.0/6.8.0?slim=true)
|
| [@sanity/types](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/types))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/@sanity%2ftypes/6.7.0/6.8.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2ftypes/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2ftypes/6.7.0/6.8.0?slim=true)
|
| [@sanity/util](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/util))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/@sanity%2futil/6.7.0/6.8.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2futil/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2futil/6.7.0/6.8.0?slim=true)
|
| [@sanity/vision](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/vision))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/@sanity%2fvision/6.7.0/6.8.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fvision/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fvision/6.7.0/6.8.0?slim=true)
|
| [groq](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/groq))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/groq/6.7.0/6.8.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/groq/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/groq/6.7.0/6.8.0?slim=true)
|
| [sanity](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/sanity))
| [`^6.7.0` →
`^6.8.0`](https://renovatebot.com/diffs/npm/sanity/6.7.0/6.8.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/sanity/6.8.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sanity/6.7.0/6.8.0?slim=true)
|

---

### Release Notes

<details>
<summary>sanity-io/sanity (@&#8203;sanity/mutator)</summary>

###
[`v6.8.0`](https://redirect.github.com/sanity-io/sanity/releases/tag/v6.8.0)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.7.0...v6.8.0)

##### Sanity Studio v6.8.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:

[www.sanity.io/changelog/studio-Ni43LjA](https://www.sanity.io/changelog/studio-Ni43LjA)

##### Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading,
please refer to our comprehensive guide on [Installing and Upgrading
Sanity Studio](https://www.sanity.io/docs/upgrade).

##### 📓 Full changelog

| Author | Message | Commit |
| ------------------------------------------------ |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(core): enable clear button when perspective is the non default one
([#&#8203;13819](https://redirect.github.com/sanity-io/sanity/issues/13819))
|
[`1938e37`](https://redirect.github.com/sanity-io/sanity/commit/1938e375862ad99379958736e8c7b2b2139b8ee7)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(core): copy to drafts using transaction, prepare for variants
([#&#8203;13815](https://redirect.github.com/sanity-io/sanity/issues/13815))
|
[`f283b1e`](https://redirect.github.com/sanity-io/sanity/commit/f283b1e58518888d9f6afbf095666784a4e1dfd9)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
chore(structure): useCopyToDrafts changes
([#&#8203;13806](https://redirect.github.com/sanity-io/sanity/issues/13806))
|
[`e65a38a`](https://redirect.github.com/sanity-io/sanity/commit/e65a38aa6311fa1a95dd67009a6992fdd0aed6bc)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sanity/workbench](https://redirect.github.com/sanity/workbench)
to v0.1.0-alpha.36
([#&#8203;13808](https://redirect.github.com/sanity-io/sanity/issues/13808))
|
[`ebc1904`](https://redirect.github.com/sanity-io/sanity/commit/ebc1904292c45d3b15b3fb9dd075d4308705596d)
|
| squiggler-app\[bot] | fix(deps): update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.15.1
([#&#8203;13813](https://redirect.github.com/sanity-io/sanity/issues/13813))
|
[`f57fff2`](https://redirect.github.com/sanity-io/sanity/commit/f57fff2ad2680e0c523d33bb543ffdc4dc5b12cd)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sentry/react](https://redirect.github.com/sentry/react) to
^10.68.0
([#&#8203;13812](https://redirect.github.com/sanity-io/sanity/issues/13812))
|
[`391db94`](https://redirect.github.com/sanity-io/sanity/commit/391db9438a9740aa5108717d0189dd2a139ea40d)
|
| squiggler-app\[bot] | chore(deps): update dependency turbo to ^2.10.7
([#&#8203;13809](https://redirect.github.com/sanity-io/sanity/issues/13809))
|
[`b341cd1`](https://redirect.github.com/sanity-io/sanity/commit/b341cd173f79a607904957a1580e4c6d8bdbaa12)
|
| squiggler-app\[bot] | fix(deps): update dev-non-major
([#&#8203;13810](https://redirect.github.com/sanity-io/sanity/issues/13810))
|
[`bd9cee7`](https://redirect.github.com/sanity-io/sanity/commit/bd9cee7083d7233954d93f72a54ad58afe264fe5)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sanity/ailf](https://redirect.github.com/sanity/ailf) to
^7.33.0
([#&#8203;13811](https://redirect.github.com/sanity-io/sanity/issues/13811))
|
[`4c72095`](https://redirect.github.com/sanity-io/sanity/commit/4c7209502f827613b8e4c4d534fdd0cd820544b1)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sanity/vanilla-extract-vite-plugin](https://redirect.github.com/sanity/vanilla-extract-vite-plugin)
to ^0.2.8
([#&#8203;13807](https://redirect.github.com/sanity-io/sanity/issues/13807))
|
[`733f618`](https://redirect.github.com/sanity-io/sanity/commit/733f6186e1a0d02569be09b0f0ebbc439a59a4a6)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
chore(oxlint): allow side-effect css imports without suppressions
([#&#8203;13796](https://redirect.github.com/sanity-io/sanity/issues/13796))
|
[`ef50a8f`](https://redirect.github.com/sanity-io/sanity/commit/ef50a8f2499f6770fb34983eff6723f521e218c9)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
fix(releases): throttle published archived history batches
([#&#8203;13805](https://redirect.github.com/sanity-io/sanity/issues/13805))
|
[`afb3074`](https://redirect.github.com/sanity-io/sanity/commit/afb3074b035efe4297aa1e9b7ac48cbc9fa82ea9)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | chore(deps):
upgrade to typescript 7
([#&#8203;13759](https://redirect.github.com/sanity-io/sanity/issues/13759))
|
[`fe0cd99`](https://redirect.github.com/sanity-io/sanity/commit/fe0cd997dd0e489371d05b2c90738e6e8f668418)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | fix(deps):
bump react-rx to 4.2.5
([#&#8203;13797](https://redirect.github.com/sanity-io/sanity/issues/13797))
|
[`d820ba1`](https://redirect.github.com/sanity-io/sanity/commit/d820ba12450f8872aec5aebc690cc1ac44010035)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) | fix(sanity):
virtualised item dimensions in hidden `CommandList`
([#&#8203;13792](https://redirect.github.com/sanity-io/sanity/issues/13792))
|
[`2052523`](https://redirect.github.com/sanity-io/sanity/commit/20525238d6599f5d956535c5a80df2cf37d8a23c)
|
| squiggler-app\[bot] | chore(deps): dedupe pnpm-lock.yaml
([#&#8203;13766](https://redirect.github.com/sanity-io/sanity/issues/13766))
|
[`015f924`](https://redirect.github.com/sanity-io/sanity/commit/015f924830a17aba21042e54f4b03f0f2e4de586)
|
| squiggler-app\[bot] | chore(tests): generate dts tests 🤖 ✨
([#&#8203;13801](https://redirect.github.com/sanity-io/sanity/issues/13801))
|
[`6ab5f7d`](https://redirect.github.com/sanity-io/sanity/commit/6ab5f7d655d2015e9eb75713e385c7e8231f844d)
|
| [@&#8203;colepeters](https://redirect.github.com/colepeters) |
feat(sanity): install ui-poc for Studio, migrate 2 Boxes
([#&#8203;13776](https://redirect.github.com/sanity-io/sanity/issues/13776))
|
[`e157f63`](https://redirect.github.com/sanity-io/sanity/commit/e157f63fb2cc7b38436cbdf1f029c539bd30559d)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
chore(codeowners): assign presentation tool to studio team
([#&#8203;13769](https://redirect.github.com/sanity-io/sanity/issues/13769))
|
[`cad24ea`](https://redirect.github.com/sanity-io/sanity/commit/cad24eaf6156758b7bbce26848445b48a23a54b4)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(structure): allow creating variant documents with no base doc
([#&#8203;13789](https://redirect.github.com/sanity-io/sanity/issues/13789))
|
[`d1db5e9`](https://redirect.github.com/sanity-io/sanity/commit/d1db5e9f026334d43ee6e7cd8b63886565534b33)
|
| squiggler-app\[bot] | fix(deps): update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.14.0
([#&#8203;13777](https://redirect.github.com/sanity-io/sanity/issues/13777))
|
[`8cb42ad`](https://redirect.github.com/sanity-io/sanity/commit/8cb42add66968eacd0c3bc4ccabcdcee0097cc4a)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
docs(telemetry): define standard location, position and path property
value sets
([#&#8203;13770](https://redirect.github.com/sanity-io/sanity/issues/13770))
|
[`258e6b0`](https://redirect.github.com/sanity-io/sanity/commit/258e6b00ca713f9fb338fe061d395e8a6bfa6271)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) |
chore(sanity): move `Delay` component to `core`
([#&#8203;13690](https://redirect.github.com/sanity-io/sanity/issues/13690))
|
[`da8f541`](https://redirect.github.com/sanity-io/sanity/commit/da8f541d744e6307ab972cbb63f504c23b23e193)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) |
chore(sanity): return `SingleActionResult` from `createVariantDocument`
([#&#8203;13690](https://redirect.github.com/sanity-io/sanity/issues/13690))
|
[`aec0ddf`](https://redirect.github.com/sanity-io/sanity/commit/aec0ddf1c872cb3b3623df77e056c2d3cb94575c)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) |
refactor(sanity): expand `createVariantScopedDocument` to explicitly
handle `baseId` or `document` source
([#&#8203;13690](https://redirect.github.com/sanity-io/sanity/issues/13690))
|
[`633dbd1`](https://redirect.github.com/sanity-io/sanity/commit/633dbd1517fd0da5c7f18a7bcfb7a6e6cb8d3392)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) |
chore(sanity): variant creation in document group inventory
([#&#8203;13690](https://redirect.github.com/sanity-io/sanity/issues/13690))
|
[`c15ea83`](https://redirect.github.com/sanity-io/sanity/commit/c15ea83babf67ca9bc01d25eb2c39aeb01ecb9b3)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
fix(test-config): pin locale to en-US for deterministic test runs
([#&#8203;13779](https://redirect.github.com/sanity-io/sanity/issues/13779))
|
[`8dc3d96`](https://redirect.github.com/sanity-io/sanity/commit/8dc3d96f8e853a91ff71a45601bbbabc46fcb056)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
perf(presentation): cache container rect during panel resize drags
([#&#8203;13762](https://redirect.github.com/sanity-io/sanity/issues/13762))
|
[`640cbb9`](https://redirect.github.com/sanity-io/sanity/commit/640cbb9758238ca64496bd7fd5dd751e6b096dd6)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
perf(core): memoize document presence observable in useDocumentPresence
([#&#8203;13761](https://redirect.github.com/sanity-io/sanity/issues/13761))
|
[`9479332`](https://redirect.github.com/sanity-io/sanity/commit/9479332b9e78b3e71473911c01ab111ee3903ca2)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
refactor(structure): rename document pane telemetry events to active
voice
([#&#8203;13774](https://redirect.github.com/sanity-io/sanity/issues/13774))
|
[`8546b73`](https://redirect.github.com/sanity-io/sanity/commit/8546b7377ef92770212cec9bdf42a936bec2b41b)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
perf(core): defer global search results rendering
([#&#8203;13554](https://redirect.github.com/sanity-io/sanity/issues/13554))
|
[`6e51b5c`](https://redirect.github.com/sanity-io/sanity/commit/6e51b5c11fda71dfb23e0f8843fdb55f6656229c)
|
| [@&#8203;juice49](https://redirect.github.com/juice49) | fix(sanity):
download asset in new browsing context
([#&#8203;13768](https://redirect.github.com/sanity-io/sanity/issues/13768))
|
[`851b049`](https://redirect.github.com/sanity-io/sanity/commit/851b049a43df83931064dc078a2d80cf5a926b54)
|
| sieve-sanity\[bot] | fix(sanity): set referrerPolicy on grid thumbnail
in image select dialog
([#&#8203;13664](https://redirect.github.com/sanity-io/sanity/issues/13664))
([#&#8203;13665](https://redirect.github.com/sanity-io/sanity/issues/13665))
|
[`3051e64`](https://redirect.github.com/sanity-io/sanity/commit/3051e642d7b722c80288cd4c6f672f3d7d85e02c)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
feat(core): add telemetry events for scheduled drafts
([#&#8203;13689](https://redirect.github.com/sanity-io/sanity/issues/13689))
|
[`6ae94fd`](https://redirect.github.com/sanity-io/sanity/commit/6ae94fddcbb66056d42c4391169c907e79acfc3c)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(variants): wire ifPublishedVariantRevisionId on variant publish
([#&#8203;13765](https://redirect.github.com/sanity-io/sanity/issues/13765))
|
[`d370b25`](https://redirect.github.com/sanity-io/sanity/commit/d370b254bec039b004246065d064b12237a87422)
|

</details>

<details>
<summary>sanity-io/sanity (@&#8203;sanity/vision)</summary>

###
[`v6.8.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/@&#8203;sanity/vision/CHANGELOG.md#680-2026-07-30)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.7.0...v6.8.0)

##### Bug Fixes

- **deps:** bump react-rx to 4.2.5
([#&#8203;13797](https://redirect.github.com/sanity-io/sanity/issues/13797))
([d820ba1](https://redirect.github.com/sanity-io/sanity/commit/d820ba12450f8872aec5aebc690cc1ac44010035))

</details>

<details>
<summary>sanity-io/sanity (sanity)</summary>

###
[`v6.8.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/sanity/CHANGELOG.md#680-2026-07-30)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.7.0...v6.8.0)

##### Features

- **core:** add telemetry events for scheduled drafts
([#&#8203;13689](https://redirect.github.com/sanity-io/sanity/issues/13689))
([6ae94fd](https://redirect.github.com/sanity-io/sanity/commit/6ae94fddcbb66056d42c4391169c907e79acfc3c))
- **sanity:** install ui-poc for Studio, migrate 2 Boxes
([#&#8203;13776](https://redirect.github.com/sanity-io/sanity/issues/13776))
([e157f63](https://redirect.github.com/sanity-io/sanity/commit/e157f63fb2cc7b38436cbdf1f029c539bd30559d))

##### Bug Fixes

- **core:** copy to drafts using transaction, prepare for variants
([#&#8203;13815](https://redirect.github.com/sanity-io/sanity/issues/13815))
([f283b1e](https://redirect.github.com/sanity-io/sanity/commit/f283b1e58518888d9f6afbf095666784a4e1dfd9))
- **core:** enable clear button when perspective is the non default one
([#&#8203;13819](https://redirect.github.com/sanity-io/sanity/issues/13819))
([1938e37](https://redirect.github.com/sanity-io/sanity/commit/1938e375862ad99379958736e8c7b2b2139b8ee7))
- **deps:** bump react-rx to 4.2.5
([#&#8203;13797](https://redirect.github.com/sanity-io/sanity/issues/13797))
([d820ba1](https://redirect.github.com/sanity-io/sanity/commit/d820ba12450f8872aec5aebc690cc1ac44010035))
- **deps:** update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.14.0
([#&#8203;13777](https://redirect.github.com/sanity-io/sanity/issues/13777))
([8cb42ad](https://redirect.github.com/sanity-io/sanity/commit/8cb42add66968eacd0c3bc4ccabcdcee0097cc4a))
- **deps:** update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.15.1
([#&#8203;13813](https://redirect.github.com/sanity-io/sanity/issues/13813))
([f57fff2](https://redirect.github.com/sanity-io/sanity/commit/f57fff2ad2680e0c523d33bb543ffdc4dc5b12cd))
- **releases:** throttle published archived history batches
([#&#8203;13805](https://redirect.github.com/sanity-io/sanity/issues/13805))
([afb3074](https://redirect.github.com/sanity-io/sanity/commit/afb3074b035efe4297aa1e9b7ac48cbc9fa82ea9))
- **sanity:** download asset in new browsing context
([851b049](https://redirect.github.com/sanity-io/sanity/commit/851b049a43df83931064dc078a2d80cf5a926b54))
- **sanity:** set referrerPolicy on grid thumbnail in image select
dialog
([#&#8203;13664](https://redirect.github.com/sanity-io/sanity/issues/13664))
([#&#8203;13665](https://redirect.github.com/sanity-io/sanity/issues/13665))
([3051e64](https://redirect.github.com/sanity-io/sanity/commit/3051e642d7b722c80288cd4c6f672f3d7d85e02c))
- **sanity:** virtualised item dimensions in hidden `CommandList`
([#&#8203;13792](https://redirect.github.com/sanity-io/sanity/issues/13792))
([2052523](https://redirect.github.com/sanity-io/sanity/commit/20525238d6599f5d956535c5a80df2cf37d8a23c))
- **structure:** allow creating variant documents with no base doc
([#&#8203;13789](https://redirect.github.com/sanity-io/sanity/issues/13789))
([d1db5e9](https://redirect.github.com/sanity-io/sanity/commit/d1db5e9f026334d43ee6e7cd8b63886565534b33))
- **variants:** wire ifPublishedVariantRevisionId on variant publish
([#&#8203;13765](https://redirect.github.com/sanity-io/sanity/issues/13765))
([d370b25](https://redirect.github.com/sanity-io/sanity/commit/d370b254bec039b004246065d064b12237a87422))

##### Performance Improvements

- **core:** defer global search results rendering
([#&#8203;13554](https://redirect.github.com/sanity-io/sanity/issues/13554))
([6e51b5c](https://redirect.github.com/sanity-io/sanity/commit/6e51b5c11fda71dfb23e0f8843fdb55f6656229c))
- **core:** memoize document presence observable in useDocumentPresence
([#&#8203;13761](https://redirect.github.com/sanity-io/sanity/issues/13761))
([9479332](https://redirect.github.com/sanity-io/sanity/commit/9479332b9e78b3e71473911c01ab111ee3903ca2))
- **presentation:** cache container rect during panel resize drags
([#&#8203;13762](https://redirect.github.com/sanity-io/sanity/issues/13762))
([640cbb9](https://redirect.github.com/sanity-io/sanity/commit/640cbb9758238ca64496bd7fd5dd751e6b096dd6))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQ0LjkuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[renovatebot/github-action](https://redirect.github.com/renovatebot/github-action)
| action | patch | `v46.2.0` → `v46.2.1` |

---

### Release Notes

<details>
<summary>renovatebot/github-action (renovatebot/github-action)</summary>

###
[`v46.2.1`](https://redirect.github.com/renovatebot/github-action/releases/tag/v46.2.1)

[Compare
Source](https://redirect.github.com/renovatebot/github-action/compare/v46.2.0...v46.2.1)

##### Documentation

- update references to renovatebot/github-action to v46.2.0
([b48aa6c](https://redirect.github.com/renovatebot/github-action/commit/b48aa6c21875ffa00dc6215bc4453262b81eaf73))

##### Miscellaneous Chores

- **deps:** update dependency globals to v17.8.0
([3e46bd7](https://redirect.github.com/renovatebot/github-action/commit/3e46bd72790497e1894cc90581626a83e91932c3))
- **deps:** update dependency lint-staged to v17.2.0
([9c685f2](https://redirect.github.com/renovatebot/github-action/commit/9c685f2a9881f67e357e60b4b46e30576efcb139))
- **deps:** update node.js to v24.18.1
([f525256](https://redirect.github.com/renovatebot/github-action/commit/f52525626d00279a6ce548e44d82c015c2be2f79))

##### Build System

- **deps:** lock file maintenance
([3d8211a](https://redirect.github.com/renovatebot/github-action/commit/3d8211a3c37e5b20e4d27ece75eadc95d43356c7))

##### Continuous Integration

- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.0.1
([d471d52](https://redirect.github.com/renovatebot/github-action/commit/d471d52edecc92151b1deffeb3d01a4b80b59fa1))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.2.1
([5cb64df](https://redirect.github.com/renovatebot/github-action/commit/5cb64df2a3bfd25b911705834f55758002b90753))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.2.2
([a6b5808](https://redirect.github.com/renovatebot/github-action/commit/a6b5808d7b51494262c60fa1689b3d8f4a816e4e))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.2.3
([ab4d1eb](https://redirect.github.com/renovatebot/github-action/commit/ab4d1eb1a432926c1bf6b4255c01787ae00df16c))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.3.0
([a427843](https://redirect.github.com/renovatebot/github-action/commit/a427843f2d41af326ec66d7506b1a2513b511af9))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.3.3
([2ac8329](https://redirect.github.com/renovatebot/github-action/commit/2ac8329d950b26e8aa6f8ee6b1b686b3babd64a2))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.4.0
([7665449](https://redirect.github.com/renovatebot/github-action/commit/7665449ea26ebce5a6c734bda989ec3b42849d71))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.4.2
([0166c9f](https://redirect.github.com/renovatebot/github-action/commit/0166c9f78c5ec89ce686465bc5442d5dbdee3940))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.4.3
([8662b55](https://redirect.github.com/renovatebot/github-action/commit/8662b55bbc8cf88000457c38636441458d358c33))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.4.5
([1e71262](https://redirect.github.com/renovatebot/github-action/commit/1e71262fc6711a19c74ce965b485f4aa64bde81d))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.4.6
([7bec40c](https://redirect.github.com/renovatebot/github-action/commit/7bec40cad622ea16aab5758dee8ab4ba5d2ab9fa))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.5.0
([d146e8b](https://redirect.github.com/renovatebot/github-action/commit/d146e8b14e30ae18a8c05b8db970466d7882c240))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.5.1
([ddd5dca](https://redirect.github.com/renovatebot/github-action/commit/ddd5dcaccd40a1bc93ec009e31caefb2c82aea61))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.5.2
([0731dab](https://redirect.github.com/renovatebot/github-action/commit/0731dab41dcfb74c0fe073fbe697d39b35602e53))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.5.3
([700f3b5](https://redirect.github.com/renovatebot/github-action/commit/700f3b59b9d0fc6dffce45b564ee1f58869973b1))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.6.0
([7edb80e](https://redirect.github.com/renovatebot/github-action/commit/7edb80eba67c17f75cebdf7b4259f1902b75032e))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.7.0
([127e8ef](https://redirect.github.com/renovatebot/github-action/commit/127e8ef2a0d7b2fdd66445b332d46a93fe1310b3))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.7.1
([f7532d1](https://redirect.github.com/renovatebot/github-action/commit/f7532d19871b25335df440d8029eba8f9c5e41f0))
- **deps:** update ghcr.io/renovatebot/renovate docker tag to v44.7.2
([0fcd35b](https://redirect.github.com/renovatebot/github-action/commit/0fcd35be09a6f0873d63680d8123a868788a1245))
- **deps:** update ghcr.io/zizmorcore/zizmor docker tag to v1.29.0
([#&#8203;1068](https://redirect.github.com/renovatebot/github-action/issues/1068))
([581f6ac](https://redirect.github.com/renovatebot/github-action/commit/581f6ac0a630038ab49d600de079abcbcee26c06))
- **deps:** update zizmorcore/zizmor-action action to v0.6.2
([e36e81c](https://redirect.github.com/renovatebot/github-action/commit/e36e81c4ca010c6d7f888593b62de0cf6c2b0162))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMS4wIiwidXBkYXRlZEluVmVyIjoiNDQuMTEuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
This PR contains the following updates:

| Update | Change |
|---|---|
| lockFileMaintenance | All locks refreshed |

🔧 This Pull Request updates lock files to use the latest dependency
versions.

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - On day 1 of the month, every 12 months (`* * 1 */12 *`)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMS4xIiwidXBkYXRlZEluVmVyIjoiNDQuMTEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [oxlint](https://oxc.rs/docs/guide/usage/linter)
([source](https://redirect.github.com/oxc-project/oxc/tree/HEAD/npm/oxlint))
| [`^1.76.0` →
`^1.77.0`](https://renovatebot.com/diffs/npm/oxlint/1.77.0/1.77.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/oxlint/1.77.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/oxlint/1.77.0/1.77.0?slim=true)
|

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMS4zIiwidXBkYXRlZEluVmVyIjoiNDQuMTEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Dev-only linter version bump with lockfile churn; no runtime or
product code changes.
> 
> **Overview**
> Bumps the workspace **oxlint** catalog range from `^1.76.0` to
`^1.77.0` and refreshes `pnpm-lock.yaml` so the monorepo lint toolchain
uses oxlint **1.77.0**.
> 
> Adds a **@sanity/plugin-kit** patch changeset for the dependency
update. The lockfile also moves pinned `sanity` **next** packages from
`6.9.0-next.38` to `6.9.0-next.39` as part of the same install
resolution—no application source changes.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
92d8475. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [tsx](https://tsx.hirok.io)
([source](https://redirect.github.com/privatenumber/tsx)) | [`^4.23.1` →
`^4.23.5`](https://renovatebot.com/diffs/npm/tsx/4.23.5/4.23.5) |
![age](https://developer.mend.io/api/mc/badges/age/npm/tsx/4.23.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tsx/4.23.5/4.23.5?slim=true)
|

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMS4zIiwidXBkYXRlZEluVmVyIjoiNDQuMTEuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Temporary disables react compiler for the media plugin edit form, looking into how to enable it back in another session.
This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@sanity/mutator](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/mutator))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/@sanity%2fmutator/6.8.0/6.9.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fmutator/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fmutator/6.8.0/6.9.0?slim=true)
|
| [@sanity/schema](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/schema))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/@sanity%2fschema/6.8.0/6.9.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fschema/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fschema/6.8.0/6.9.0?slim=true)
|
| [@sanity/types](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/types))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/@sanity%2ftypes/6.8.0/6.9.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2ftypes/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2ftypes/6.8.0/6.9.0?slim=true)
|
| [@sanity/util](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/util))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/@sanity%2futil/6.8.0/6.9.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2futil/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2futil/6.8.0/6.9.0?slim=true)
|
| [@sanity/vision](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/@sanity/vision))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/@sanity%2fvision/6.8.0/6.9.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@sanity%2fvision/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@sanity%2fvision/6.8.0/6.9.0?slim=true)
|
| [groq](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/groq))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/groq/6.8.0/6.9.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/groq/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/groq/6.8.0/6.9.0?slim=true)
|
| [sanity](https://www.sanity.io/)
([source](https://redirect.github.com/sanity-io/sanity/tree/HEAD/packages/sanity))
| [`^6.8.0` →
`^6.9.0`](https://renovatebot.com/diffs/npm/sanity/6.8.0/6.9.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/sanity/6.9.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/sanity/6.8.0/6.9.0?slim=true)
|

---

### Release Notes

<details>
<summary>sanity-io/sanity (@&#8203;sanity/mutator)</summary>

###
[`v6.9.0`](https://redirect.github.com/sanity-io/sanity/releases/tag/v6.9.0)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.8.0...v6.9.0)

##### Sanity Studio v6.9.0

This release includes various improvements and bug fixes.

For the complete changelog with all details, please visit:

[www.sanity.io/changelog/studio-Ni44LjA](https://www.sanity.io/changelog/studio-Ni44LjA)

##### Install or upgrade Sanity Studio

To upgrade to this version, run:

```bash
npm install sanity@latest
```

To initiate a new Sanity Studio project or learn more about upgrading,
please refer to our comprehensive guide on [Installing and Upgrading
Sanity Studio](https://www.sanity.io/docs/upgrade).

##### 📓 Full changelog

| Author | Message | Commit |
| -------------------------------------------------- |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | refactor(ui):
migrate Stack and Button space prop to gap
([#&#8203;13867](https://redirect.github.com/sanity-io/sanity/issues/13867))
|
[`8343de2`](https://redirect.github.com/sanity-io/sanity/commit/8343de27072ac81a5db413eebe451a8abfee4e31)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
feat(core): query documents in the selected variant alongside the
perspective stack
([#&#8203;13791](https://redirect.github.com/sanity-io/sanity/issues/13791))
|
[`8989fe7`](https://redirect.github.com/sanity-io/sanity/commit/8989fe72ebe5c0b4173fa7f356235fa403639711)
|
| [@&#8203;shapirodaniel](https://redirect.github.com/shapirodaniel) |
feat(core): unclaimed project claim intake and nudge
([#&#8203;13705](https://redirect.github.com/sanity-io/sanity/issues/13705))
|
[`41dd4bf`](https://redirect.github.com/sanity-io/sanity/commit/41dd4bfaf1049146e38938e39f008f7fa5f1c95b)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
chore(structure): render doc badges even if the doc is missing
([#&#8203;13743](https://redirect.github.com/sanity-io/sanity/issues/13743))
|
[`f03b8af`](https://redirect.github.com/sanity-io/sanity/commit/f03b8afff06bc614a2908c077fb3412c33201220)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
test(e2e): add tasks e2e tests for create, release scoping and resolve
([#&#8203;13754](https://redirect.github.com/sanity-io/sanity/issues/13754))
|
[`de8fb79`](https://redirect.github.com/sanity-io/sanity/commit/de8fb79553b107fb3fffb2a79acdc27627fefa2e)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | fix(core):
avoid native useEffectEvent in forwardRef and memo
([#&#8203;13821](https://redirect.github.com/sanity-io/sanity/issues/13821))
|
[`8f84cf4`](https://redirect.github.com/sanity-io/sanity/commit/8f84cf4b0628e3b9bc8c4752f67ec793153aaaf6)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
fix(core): stop permission loading-flag churn on every document change
([#&#8203;13771](https://redirect.github.com/sanity-io/sanity/issues/13771))
|
[`96f5819`](https://redirect.github.com/sanity-io/sanity/commit/96f5819eba54f1723adf6e29f9491ada56543643)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
refactor(core): consolidate array list object telemetry events
([#&#8203;13772](https://redirect.github.com/sanity-io/sanity/issues/13772))
|
[`1a9dffc`](https://redirect.github.com/sanity-io/sanity/commit/1a9dffcefdec8db5e73b902dbdc2b0db6e73e3b2)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | chore(lint):
prefer function components via oxlint rule
([#&#8203;13826](https://redirect.github.com/sanity-io/sanity/issues/13826))
|
[`a6b0627`](https://redirect.github.com/sanity-io/sanity/commit/a6b0627a7c3d4caa992e37eb1d658b6844ba72ce)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
chore(structure): drop redundant incoming references comments
([#&#8203;13852](https://redirect.github.com/sanity-io/sanity/issues/13852))
|
[`1542aa0`](https://redirect.github.com/sanity-io/sanity/commit/1542aa03a0fdd76af071b34a248cb444a77943e7)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | fix(dev):
migrate profiling minify options from esbuild to vite
([#&#8203;13859](https://redirect.github.com/sanity-io/sanity/issues/13859))
|
[`d25a51c`](https://redirect.github.com/sanity-io/sanity/commit/d25a51cbebe8fd6f309938305c202218c9db27af)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
chore(test-dts-exports): remove ui-poc styles.css TS2882 workaround
([#&#8203;13863](https://redirect.github.com/sanity-io/sanity/issues/13863))
|
[`623e18f`](https://redirect.github.com/sanity-io/sanity/commit/623e18f19a6d43f3dcf8964a788e3334f1d5a6c3)
|
| squiggler-app\[bot] | fix(deps): update dependency get-it to ^8.8.2
([#&#8203;13865](https://redirect.github.com/sanity-io/sanity/issues/13865))
|
[`7ea95c3`](https://redirect.github.com/sanity-io/sanity/commit/7ea95c3ff2b75203e9d83ec2a80fa2af39a19cdd)
|
| squiggler-app\[bot] | chore(deps): dedupe pnpm-lock.yaml
([#&#8203;13864](https://redirect.github.com/sanity-io/sanity/issues/13864))
|
[`5d36c67`](https://redirect.github.com/sanity-io/sanity/commit/5d36c67b4def9768a7c1a018a4cd542606f50537)
|
| [@&#8203;jordanl17](https://redirect.github.com/jordanl17) |
perf(sanity): batch connector geometry updates with rAF and bail on
unchanged connectors
([#&#8203;13763](https://redirect.github.com/sanity-io/sanity/issues/13763))
|
[`24a033e`](https://redirect.github.com/sanity-io/sanity/commit/24a033eacb13ce373f844ec77cfc6e0209741118)
|
| squiggler-app\[bot] | fix(deps): update playwright monorepo to v1.62.1
([#&#8203;13855](https://redirect.github.com/sanity-io/sanity/issues/13855))
|
[`40c0ab5`](https://redirect.github.com/sanity-io/sanity/commit/40c0ab538d70e95153794d1b23298f24be5538f4)
|
| squiggler-app\[bot] | chore(deps): update dependency oxlint to ^1.76.0
([#&#8203;13844](https://redirect.github.com/sanity-io/sanity/issues/13844))
|
[`9eb219e`](https://redirect.github.com/sanity-io/sanity/commit/9eb219e749339cf8846ba8bb2103880a33caab14)
|
| squiggler-app\[bot] | fix(deps): update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.16.0
([#&#8203;13858](https://redirect.github.com/sanity-io/sanity/issues/13858))
|
[`1c690fd`](https://redirect.github.com/sanity-io/sanity/commit/1c690fd165eadff4b187d4247059bf450cb4fec9)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
chore(test-studio): add vitejs devtools integration packages
([#&#8203;13850](https://redirect.github.com/sanity-io/sanity/issues/13850))
|
[`027245f`](https://redirect.github.com/sanity-io/sanity/commit/027245f04b370b81b956ecc20711d300c8c6dd47)
|
| squiggler-app\[bot] | fix(deps): update dependency
[@&#8203;sanity/client](https://redirect.github.com/sanity/client) to
^7.26.0
([#&#8203;13848](https://redirect.github.com/sanity-io/sanity/issues/13848))
|
[`8458e48`](https://redirect.github.com/sanity-io/sanity/commit/8458e48d62fb079d4340ce29325b44312f128b41)
|
| squiggler-app\[bot] | chore(deps): dedupe pnpm-lock.yaml
([#&#8203;13853](https://redirect.github.com/sanity-io/sanity/issues/13853))
|
[`be95af4`](https://redirect.github.com/sanity-io/sanity/commit/be95af4917c498fefe0fdffde1f9c814da32567b)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sanity/tsdown-config](https://redirect.github.com/sanity/tsdown-config)
to ^0.21.3
([#&#8203;13862](https://redirect.github.com/sanity-io/sanity/issues/13862))
|
[`f7d1c45`](https://redirect.github.com/sanity-io/sanity/commit/f7d1c45f9bcc74e643516a49c96185f772952c46)
|
| squiggler-app\[bot] | chore(lint): fix linter issues 🤖 ✨
([#&#8203;13860](https://redirect.github.com/sanity-io/sanity/issues/13860))
|
[`32c9c66`](https://redirect.github.com/sanity-io/sanity/commit/32c9c66394721fa228318acfe5a151f7d2978b3b)
|
| squiggler-app\[bot] | fix(deps): update portabletext
([#&#8203;13842](https://redirect.github.com/sanity-io/sanity/issues/13842))
|
[`9320439`](https://redirect.github.com/sanity-io/sanity/commit/9320439714fefd700256787b4529798411eb19e6)
|
| squiggler-app\[bot] | fix(deps): update dev-non-major
([#&#8203;13834](https://redirect.github.com/sanity-io/sanity/issues/13834))
|
[`cfd0b3b`](https://redirect.github.com/sanity-io/sanity/commit/cfd0b3ba26c60d82aee9a7907374c2322f28f330)
|
| squiggler-app\[bot] | fix(deps): update dependency motion to ^12.43.0
([#&#8203;13849](https://redirect.github.com/sanity-io/sanity/issues/13849))
|
[`64f1aa1`](https://redirect.github.com/sanity-io/sanity/commit/64f1aa177218ad125c33567630c2d30dcde0910f)
|
| squiggler-app\[bot] | chore(deps): update dependency knip to ^6.31.0
([#&#8203;13843](https://redirect.github.com/sanity-io/sanity/issues/13843))
|
[`853e4a1`](https://redirect.github.com/sanity-io/sanity/commit/853e4a13ca6b67081c138b0b2ee39d0b41434724)
|
| squiggler-app\[bot] | fix(deps): update dependency get-it to ^8.8.1
([#&#8203;13841](https://redirect.github.com/sanity-io/sanity/issues/13841))
|
[`a4d8244`](https://redirect.github.com/sanity-io/sanity/commit/a4d82442b3f74beb5004d557bf8b9f17ca14ccf9)
|
| squiggler-app\[bot] | fix(deps): update react monorepo
([#&#8203;13856](https://redirect.github.com/sanity-io/sanity/issues/13856))
|
[`cdd01d3`](https://redirect.github.com/sanity-io/sanity/commit/cdd01d305e70a66a563d95d3f30ef01398be0ec0)
|
| squiggler-app\[bot] | chore(deps): update dependency oxfmt to ^0.62.0
([#&#8203;13857](https://redirect.github.com/sanity-io/sanity/issues/13857))
|
[`e386003`](https://redirect.github.com/sanity-io/sanity/commit/e3860036325d5090eb99df4a5924bddf0fc4cd77)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;sanity/ui](https://redirect.github.com/sanity/ui) to ^3.5.1
([#&#8203;13818](https://redirect.github.com/sanity-io/sanity/issues/13818))
|
[`ed699ed`](https://redirect.github.com/sanity-io/sanity/commit/ed699edfc11578625ce214ae805a77e212315690)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;vanilla-extract/css](https://redirect.github.com/vanilla-extract/css)
to ^1.21.2
([#&#8203;13854](https://redirect.github.com/sanity-io/sanity/issues/13854))
|
[`41d79dd`](https://redirect.github.com/sanity-io/sanity/commit/41d79dd45355c278ba3ad469a4dd725d84c505ef)
|
| squiggler-app\[bot] | chore(deps): update dependency vite to ^8.2.0
([#&#8203;13846](https://redirect.github.com/sanity-io/sanity/issues/13846))
|
[`f88be20`](https://redirect.github.com/sanity-io/sanity/commit/f88be20f8358c0d9c3ff33edca60b5ec9f200331)
|
| squiggler-app\[bot] | chore(deps): update dependency
[@&#8203;vitejs/plugin-react](https://redirect.github.com/vitejs/plugin-react)
to ^6.0.5
([#&#8203;13840](https://redirect.github.com/sanity-io/sanity/issues/13840))
|
[`204dc7d`](https://redirect.github.com/sanity-io/sanity/commit/204dc7dfa4b04ea160e45b53b9aa1a8eba019629)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(structure): incoming references shouldn't self refer
([#&#8203;13851](https://redirect.github.com/sanity-io/sanity/issues/13851))
|
[`367be3f`](https://redirect.github.com/sanity-io/sanity/commit/367be3f9a4fc0bb999278f77944209b3aa2bc48f)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
fix(structure): keep inspector crashes inside the inspector panel
([#&#8203;13845](https://redirect.github.com/sanity-io/sanity/issues/13845))
|
[`cba5181`](https://redirect.github.com/sanity-io/sanity/commit/cba51818c90f87311031fdc9ae03bb071ca30f77)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | perf(sanity):
defer non-controlled useObservable subscriptions
([#&#8203;13799](https://redirect.github.com/sanity-io/sanity/issues/13799))
|
[`2958d75`](https://redirect.github.com/sanity-io/sanity/commit/2958d75de93601e987f640b0ff02f3827db3d4ec)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | chore(deps):
bump react-rx to v5 and adopt useSyncObservable
([#&#8203;13814](https://redirect.github.com/sanity-io/sanity/issues/13814))
|
[`d66f505`](https://redirect.github.com/sanity-io/sanity/commit/d66f50562917e1d8ebf4d0ed01104332814d84bc)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
refactor(sanity): adopt useObservablePromise for data loading states
([#&#8203;13828](https://redirect.github.com/sanity-io/sanity/issues/13828))
|
[`2d7be6a`](https://redirect.github.com/sanity-io/sanity/commit/2d7be6accd75ebf874894de43253efbaf0b1f2f5)
|
| squiggler-app\[bot] | chore(tests): generate dts tests 🤖 ✨
([#&#8203;13839](https://redirect.github.com/sanity-io/sanity/issues/13839))
|
[`01339c4`](https://redirect.github.com/sanity-io/sanity/commit/01339c43f7703e3929b5ffe18741401c0211dd90)
|
| [@&#8203;codythatsme](https://redirect.github.com/codythatsme) |
fix(types): preserve supplied schema helper properties
([#&#8203;13237](https://redirect.github.com/sanity-io/sanity/issues/13237))
|
[`38002e4`](https://redirect.github.com/sanity-io/sanity/commit/38002e4432aff0f917eee7461897c23bba35886e)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | chore(lint):
migrate eslint-plugin-boundaries config to v7
([#&#8203;13710](https://redirect.github.com/sanity-io/sanity/issues/13710))
|
[`f8fa390`](https://redirect.github.com/sanity-io/sanity/commit/f8fa3907e6a649027d32423761b12ae2185c1e31)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(core): allow creating draft variants from published variant sibling
([#&#8203;13741](https://redirect.github.com/sanity-io/sanity/issues/13741))
|
[`cf5a7da`](https://redirect.github.com/sanity-io/sanity/commit/cf5a7da78f0f4d42a7c21106749b439a007efdf3)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
fix(core): update copying variants to different releases from context
menu.
([#&#8203;13800](https://redirect.github.com/sanity-io/sanity/issues/13800))
|
[`3086936`](https://redirect.github.com/sanity-io/sanity/commit/3086936c9a450730e9ea2cd59ce86c007ccd4578)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) | docs(agents):
adopt useful patterns from plugins AGENTS.md
([#&#8203;13764](https://redirect.github.com/sanity-io/sanity/issues/13764))
|
[`4794716`](https://redirect.github.com/sanity-io/sanity/commit/4794716394e5d210f23b1c8ab556630b24341f4e)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
chore(structure): useDocumentTitle, use document pane provider value
([#&#8203;13742](https://redirect.github.com/sanity-io/sanity/issues/13742))
|
[`6f46b8d`](https://redirect.github.com/sanity-io/sanity/commit/6f46b8d6421c54d87e60d90eab1423e79d849992)
|
| [@&#8203;joshuaellis](https://redirect.github.com/joshuaellis) |
feat(workbench): export AssetSource types from sanity/workbench
([#&#8203;13827](https://redirect.github.com/sanity-io/sanity/issues/13827))
|
[`458ca4a`](https://redirect.github.com/sanity-io/sanity/commit/458ca4a6cb0863db236a695d15b295974c2162a2)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
chore(oxlint): add typescript/no-deprecated rule
([#&#8203;13829](https://redirect.github.com/sanity-io/sanity/issues/13829))
|
[`bd7b4b1`](https://redirect.github.com/sanity-io/sanity/commit/bd7b4b1b610d561ff51c996594bfdf72c9e91366)
|
| claude\[bot] | fix(ci): wait for published packages to be installable
before post-publish steps
([#&#8203;13823](https://redirect.github.com/sanity-io/sanity/issues/13823))
|
[`5307277`](https://redirect.github.com/sanity-io/sanity/commit/53072772f79e41e488d2ea4f21d714362c65ffc3)
|
| [@&#8203;stipsan](https://redirect.github.com/stipsan) |
refactor(sanity): replace useState useEffect observable subscriptions
with useObservable
([#&#8203;13788](https://redirect.github.com/sanity-io/sanity/issues/13788))
|
[`ae2fb78`](https://redirect.github.com/sanity-io/sanity/commit/ae2fb782c12834c907e4af1477f642fc323ea9fb)
|
| [@&#8203;laurenashpole](https://redirect.github.com/laurenashpole) |
chore(core): updates
[@&#8203;sanity-labs/ui-poc](https://redirect.github.com/sanity-labs/ui-poc)
to 0.0.1-alpha.25
([#&#8203;13832](https://redirect.github.com/sanity-io/sanity/issues/13832))
|
[`30ec805`](https://redirect.github.com/sanity-io/sanity/commit/30ec805b59156e53c729b231ab6c77dad3122145)
|
| [@&#8203;pedrobonamin](https://redirect.github.com/pedrobonamin) |
chore(core): versions context menu use documentGroupId and versionId
([#&#8203;13820](https://redirect.github.com/sanity-io/sanity/issues/13820))
|
[`950c5a5`](https://redirect.github.com/sanity-io/sanity/commit/950c5a5e502dcb8e66eb36ec7535cd8badb87c03)
|

</details>

<details>
<summary>sanity-io/sanity (@&#8203;sanity/schema)</summary>

###
[`v6.9.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/@&#8203;sanity/schema/CHANGELOG.md#690-2026-08-04)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.8.0...v6.9.0)

##### Bug Fixes

- **deps:** update dependency get-it to ^8.8.1
([#&#8203;13841](https://redirect.github.com/sanity-io/sanity/issues/13841))
([a4d8244](https://redirect.github.com/sanity-io/sanity/commit/a4d82442b3f74beb5004d557bf8b9f17ca14ccf9))
- **deps:** update dependency get-it to ^8.8.2
([#&#8203;13865](https://redirect.github.com/sanity-io/sanity/issues/13865))
([7ea95c3](https://redirect.github.com/sanity-io/sanity/commit/7ea95c3ff2b75203e9d83ec2a80fa2af39a19cdd))

</details>

<details>
<summary>sanity-io/sanity (@&#8203;sanity/types)</summary>

###
[`v6.9.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/@&#8203;sanity/types/CHANGELOG.md#690-2026-08-04)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.8.0...v6.9.0)

##### Bug Fixes

- **core:** allow creating draft variants from published variant sibling
([#&#8203;13741](https://redirect.github.com/sanity-io/sanity/issues/13741))
([cf5a7da](https://redirect.github.com/sanity-io/sanity/commit/cf5a7da78f0f4d42a7c21106749b439a007efdf3))
- **types:** preserve supplied schema helper properties
([#&#8203;13237](https://redirect.github.com/sanity-io/sanity/issues/13237))
([38002e4](https://redirect.github.com/sanity-io/sanity/commit/38002e4432aff0f917eee7461897c23bba35886e))

</details>

<details>
<summary>sanity-io/sanity (@&#8203;sanity/vision)</summary>

###
[`v6.9.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/@&#8203;sanity/vision/CHANGELOG.md#690-2026-08-04)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.8.0...v6.9.0)

##### Bug Fixes

- **core:** avoid native useEffectEvent in forwardRef and memo
([#&#8203;13821](https://redirect.github.com/sanity-io/sanity/issues/13821))
([8f84cf4](https://redirect.github.com/sanity-io/sanity/commit/8f84cf4b0628e3b9bc8c4752f67ec793153aaaf6))

##### Performance Improvements

- **sanity:** defer non-controlled useObservable subscriptions
([#&#8203;13799](https://redirect.github.com/sanity-io/sanity/issues/13799))
([2958d75](https://redirect.github.com/sanity-io/sanity/commit/2958d75de93601e987f640b0ff02f3827db3d4ec))

</details>

<details>
<summary>sanity-io/sanity (sanity)</summary>

###
[`v6.9.0`](https://redirect.github.com/sanity-io/sanity/blob/HEAD/packages/sanity/CHANGELOG.md#690-2026-08-04)

[Compare
Source](https://redirect.github.com/sanity-io/sanity/compare/v6.8.0...v6.9.0)

##### Features

- **core:** query documents in the selected variant alongside the
perspective stack
([#&#8203;13791](https://redirect.github.com/sanity-io/sanity/issues/13791))
([8989fe7](https://redirect.github.com/sanity-io/sanity/commit/8989fe72ebe5c0b4173fa7f356235fa403639711))
- **core:** unclaimed project claim intake and nudge
([#&#8203;13705](https://redirect.github.com/sanity-io/sanity/issues/13705))
([41dd4bf](https://redirect.github.com/sanity-io/sanity/commit/41dd4bfaf1049146e38938e39f008f7fa5f1c95b))
- **workbench:** export AssetSource types from sanity/workbench
([#&#8203;13827](https://redirect.github.com/sanity-io/sanity/issues/13827))
([458ca4a](https://redirect.github.com/sanity-io/sanity/commit/458ca4a6cb0863db236a695d15b295974c2162a2))

##### Bug Fixes

- **core:** allow creating draft variants from published variant sibling
([#&#8203;13741](https://redirect.github.com/sanity-io/sanity/issues/13741))
([cf5a7da](https://redirect.github.com/sanity-io/sanity/commit/cf5a7da78f0f4d42a7c21106749b439a007efdf3))
- **core:** avoid native useEffectEvent in forwardRef and memo
([#&#8203;13821](https://redirect.github.com/sanity-io/sanity/issues/13821))
([8f84cf4](https://redirect.github.com/sanity-io/sanity/commit/8f84cf4b0628e3b9bc8c4752f67ec793153aaaf6))
- **core:** stop permission loading-flag churn on every document change
([#&#8203;13771](https://redirect.github.com/sanity-io/sanity/issues/13771))
([96f5819](https://redirect.github.com/sanity-io/sanity/commit/96f5819eba54f1723adf6e29f9491ada56543643))
- **core:** update copying variants to different releases from context
menu.
([#&#8203;13800](https://redirect.github.com/sanity-io/sanity/issues/13800))
([3086936](https://redirect.github.com/sanity-io/sanity/commit/3086936c9a450730e9ea2cd59ce86c007ccd4578))
- **deps:** update dependency
[@&#8203;sanity/cli](https://redirect.github.com/sanity/cli) to ^7.16.0
([#&#8203;13858](https://redirect.github.com/sanity-io/sanity/issues/13858))
([1c690fd](https://redirect.github.com/sanity-io/sanity/commit/1c690fd165eadff4b187d4247059bf450cb4fec9))
- **deps:** update dependency motion to ^12.43.0
([#&#8203;13849](https://redirect.github.com/sanity-io/sanity/issues/13849))
([64f1aa1](https://redirect.github.com/sanity-io/sanity/commit/64f1aa177218ad125c33567630c2d30dcde0910f))
- **deps:** update portabletext
([#&#8203;13842](https://redirect.github.com/sanity-io/sanity/issues/13842))
([9320439](https://redirect.github.com/sanity-io/sanity/commit/9320439714fefd700256787b4529798411eb19e6))
- **structure:** incoming references shouldn't self refer
([#&#8203;13851](https://redirect.github.com/sanity-io/sanity/issues/13851))
([367be3f](https://redirect.github.com/sanity-io/sanity/commit/367be3f9a4fc0bb999278f77944209b3aa2bc48f))
- **structure:** keep inspector crashes inside the inspector panel
([#&#8203;13845](https://redirect.github.com/sanity-io/sanity/issues/13845))
([cba5181](https://redirect.github.com/sanity-io/sanity/commit/cba51818c90f87311031fdc9ae03bb071ca30f77))
- **types:** preserve supplied schema helper properties
([#&#8203;13237](https://redirect.github.com/sanity-io/sanity/issues/13237))
([38002e4](https://redirect.github.com/sanity-io/sanity/commit/38002e4432aff0f917eee7461897c23bba35886e))

##### Performance Improvements

- **sanity:** batch connector geometry updates with rAF and bail on
unchanged connectors
([#&#8203;13763](https://redirect.github.com/sanity-io/sanity/issues/13763))
([24a033e](https://redirect.github.com/sanity-io/sanity/commit/24a033eacb13ce373f844ec77cfc6e0209741118))
- **sanity:** defer non-controlled useObservable subscriptions
([#&#8203;13799](https://redirect.github.com/sanity-io/sanity/issues/13799))
([2958d75](https://redirect.github.com/sanity-io/sanity/commit/2958d75de93601e987f640b0ff02f3827db3d4ec))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR is behind base branch, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/renovate/) using a [curated
preset](https://redirect.github.com/sanity-io/renovate-config#readme)
maintained by [<picture><source media="(prefers-color-scheme: dark)"
srcset="https://www.sanity.io/static/images/logo_white.svg?v=3"><img
alt="Sanity"
src="https://www.sanity.io/static/images/logo_black.svg?v=3" height="22"
align="top"></picture>](https://www.sanity.io/?utm_source=github&utm_medium=referral&utm_campaign=ecosystem-renovate-preset).
View repository job log
[here](https://developer.mend.io/github/sanity-io/plugins)

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMS40IiwidXBkYXRlZEluVmVyIjoiNDQuMTMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsi8J+TpiBkZXBzIiwi8J+kliBib3QiXX0=-->

Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
@pedrobonamin

Copy link
Copy Markdown
Contributor

@copilot rebase the branch

Copilot Bot and others added 3 commits August 6, 2026 13:12
Co-authored-by: pedrobonamin <46196328+pedrobonamin@users.noreply.github.com>
Co-authored-by: pedrobonamin <46196328+pedrobonamin@users.noreply.github.com>
Copilot Bot review requested due to automatic review settings August 6, 2026 13:17
Copilot Bot requested review from a team as code owners August 6, 2026 13:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of files (300). Try reducing the number of changed files and requesting a review from Copilot again.

Copilot AI commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

@copilot rebase the branch

Done — I rebased the branch onto the latest main, resolved the conflict, and pushed the updated history. Latest commit: 9f6978a0.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 4 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 9f6978a. Configure here.

issues:
types:
- closed
- opened

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automatic issue triage no longer runs

Medium Severity

Removing the opened and labeled triggers means new issues and issues labeled needs-triage never invoke automatic triage. Only closure archival and manual dispatch remain.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9f6978a. Configure here.

Comment thread .github/workflows/e2e.yml
if [ "$result" != "success" ] && [ "$result" != "skipped" ]; then
echo "E2E test matrix failed with status: $result"
exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E2E aggregate masks prerequisite failures

Medium Severity

E2E Status accepts a skipped test matrix and ignores report status. Setup, deployment, or reporting failures can therefore leave the aggregate required check green even though no E2E tests completed successfully.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9f6978a. Configure here.

Comment thread .github/workflows/e2e.yml

on:
pull_request:
push:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

E2E always fails for forked pull requests

Medium Severity

The workflow runs on every pull request but requires repository secrets and write access. Fork pull requests receive neither, so the comment or secret-validation steps fail before any E2E tests run.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9f6978a. Configure here.

script: |
const COMMENT_MARKER = '<!-- changeset-pr-npmdiff-links -->'
const PACKAGE_JSON_PATTERN =
/^(?:plugins\/(?:@sanity\/[^/]+|sanity-plugin-[^/]+)|packages\/@sanity\/plugin-kit)\/package\.json$/

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Package diff regex omits published packages

Low Severity

PACKAGE_JSON_PATTERN only accepts unscoped names beginning with sanity-plugin-. Published packages sanity-naive-html-serializer and sanity-translations-tab are silently excluded from release diff comments.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 9f6978a. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants