Repository navigation
fix(deps): update dependency @uiw/react-codemirror to ^4.25.11 - #1540
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: b945a35 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
stipsan
previously approved these changes
Jul 13, 2026
squiggler-app
Bot
force-pushed
the
renovate/uiw-react-codemirror-4.x
branch
from
July 13, 2026 00:25
7107ae7 to
5522ff9
Compare
stipsan
approved these changes
Jul 13, 2026
Merged
cursor Bot
pushed a commit
that referenced
this pull request
Jul 28, 2026
Replace styled-components and inline style objects with colocated
vanilla-extract stylesheets, using assignInlineVars for dynamic
theme/color values. Builds on the function-component + useDrag
refactor from the ban-react-class-components branch.
fix: address review feedback on drag attach timing and imperative handle
- useDrag: attach the mousedown listener in useLayoutEffect so it exists
before paint (matches the previous synchronous JSX onMouseDown wiring).
- OrderableDocumentList: give useImperativeHandle a dependency list so a
new handle object is not installed on every render (the structure pane
stores the handle in state, so per-render handles could loop).
refactor(color-input): extract shared useDrag hook for picker surfaces
Replace the per-component propsRef/AbortController plumbing in
Alpha/Hue/Saturation/EditableInput with a single useDrag hook. It wires a
native mousedown listener via useEffect and keeps callbacks fresh with
useEffectEvent, so drag events always read the latest props. mousemove and
mouseup listeners attach per-gesture and abort on mouseup or unmount.
fix(color-input): address review feedback on drag listeners
- Keep latest props in a ref so window mousemove listeners registered on
mousedown see current values (matches class `this.props` behavior).
- Normalize EditableInput value comparisons to avoid number/string mismatch.
- Correct orderable-document-list changeset wording (ref-as-prop, not forwardRef).
Merge origin/main into cursor/ban-react-class-components-ca2a
Resolve color-input conflicts from #1673 (simplify components, remove
CustomPicker HOC). Main kept Alpha/Hue/Saturation/EditableInput as class
components pending a follow-up conversion; this PR is that follow-up:
- Accept ColorWrap.tsx deletion (HOC replaced by ColorInput state).
- Re-apply function-component conversions on top of main's AbortController
listener cleanup, using useRef instead of createRef.
fix(color-input): simplify components, remove HOC (#1673)
Version Packages (#1668)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1671)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Migrate sanity-plugin-workflow styling to vanilla-extract (#1450)
* Migrate sanity-plugin-workflow styling to vanilla-extract
* Keep styled-components catalog:devDependency for peer alignment
After the vanilla-extract migration, the peer can go, but the catalog
devDependency must remain so pnpm resolves the workspace
@sanity/styled-components override (same as google-maps-input).
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Merge origin/main into cursor/ban-react-class-components-ca2a
Resolve the modify/delete conflict on .oxlintrc.json: main moved shared
lint rules into @sanity/plugin-kit/oxlint (#1565). Accept the deletion
and port the Component/PureComponent/createRef bans into
packages/@sanity/plugin-kit/src/oxlint.ts alongside the existing
createElement/forwardRef restrictions.
Also rewrite OrderableDocumentList to use React 19 ref-as-prop instead
of forwardRef so it complies with main's forwardRef ban, and update
skill docs that still pointed at .oxlintrc.json.
ci: request workflows permission for typegen app token (#935)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Cody Olsen <81981+stipsan@users.noreply.github.com>
feat(@sanity/plugin-kit)!: remove Studio v2 upgrade and compatibility tooling (#1588)
* feat(@sanity/plugin-kit)!: remove Studio v2 upgrade and compatibility tooling
Drop verify-studio and all verify-package checks that existed to migrate from
or stay compatible with Sanity Studio v2 (incompatible-plugin shim, part:/config:
imports, merged @sanity/* packages, sanity.json parts validation). Package
verification now focuses on current plugin-kit conventions.
* chore(@sanity/plugin-kit): drop unused json5/knip ignores and refresh snapshots
Remove the json5 dependency and readJson5File helper that only served v2
sanity.json parsing, prune stale eslint knip ignoreDependencies, and update
verify-package snapshots after removing v2-upgrade checks.
* fix(@sanity/plugin-kit): address review feedback on path validation and studio detection
Drop the dist-hardcoded path existence check in getPackage entirely: compiled
entry points legitimately don't exist pre-build regardless of outDir, and
verify-package's esmOnly check already bans main/module fields. Also detect
sanity.cli.(js|ts) in findStudioConfig so init/inject refuse cli-config-only
studio directories too.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): dedupe pnpm-lock.yaml (#1669)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(sanity-plugin-markdown): declare @sanity/client as a regular dependency (#1667)
* fix(sanity-plugin-markdown): declare @sanity/client and rxjs as regular deps
Move @sanity/client and rxjs out of inlinedDependencies into dependencies
so they are resolved at runtime instead of bundled into the package.
* chore: update lockfile for sanity-plugin-markdown deps
* fix(sanity-plugin-markdown): declare @sanity/client as a regular dependency
Move @sanity/client from devDependencies to dependencies so tsdown
externalizes it instead of writing it (and transitive rxjs) to
inlinedDependencies. rxjs is not imported by the plugin and is not
needed as a direct dependency once client is externalized.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
fix(typegen): 🤖 ✨ (#1666)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @tanstack/react-virtual to ^3.14.7 (#1664)
* fix(deps): update dependency @tanstack/react-virtual to ^3.14.7
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1665)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1663)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
feat: add @sanity/block-insert-picker (#1601)
* feat(block-insert-picker): add @sanity/block-insert-picker
Slash-command block-insert picker and markdown input rules for Portable
Text fields, extracted from the sanity-io/www-sanity-io docs Studio
(apps/studio/src/plugins/pte, PR #4003 there parameterized the docs
knowledge out in preparation).
Public API: blockInsertPicker({arrayTypeName, items?, inputRules?,
onItemInserted?}) returning the component for an array type's
components.portableText.plugins, plus the codeFenceRule/blockquoteRule
config factories and fence-language helpers. Items derive from the host
array's members with metadata-driven curation (triggers, keywords,
grouping, rank); inserts resolve member initial values, land as one
undo step, and open for editing.
Ported against sanity 6.5.0 / @portabletext/editor 7.10.7 /
@portabletext/plugin-input-rule 6.0.4 (peer editor ^7.10.7 to match the
input-rule plugin's requirement; editor stays a peer, never bundled).
112 tests ported with the source; test-studio example wired under
Home > Block Insert Picker.
* refactor(block-insert-picker): zero-config detection and reviewed v1 API
Applies the pre-publication design review (DESIGN-REVIEW.md in the
pte-plugin-extraction research):
- blockInsertPicker() now works with zero config: the containing array and
its members are detected via PortableTextMemberSchemaTypesContext
(quarantined in memberSchemaTypes.ts); arrayTypeName becomes an escape
hatch. Peer narrowed to sanity ^5.6 (the context export's floor).
- Text blocks are excluded by resolved type chain, fixing aliased
{name, type: 'block'} members being offered as object inserts (picker and
input-rule allow-list both).
- New options: labels (translatable chrome), shortcut, openOnInsert
(global + per-item), presets (well-known-type triggers/keywords),
filter (receives the bare query in both modes), resolveItems middleware
with custom item actions (query cleanup included); onItemInserted renamed
onInsert, events carry mode/query.
- Presentation matches core: icon fallback chain, upperFirst titles, and
curated descriptions now win over schema descriptions.
- New exports: BlockInsertPicker, MarkdownInputRules, derivePickerItems,
filterPickerItems, standardBlockPresets, wellKnownInputRules, PickerMode.
- Input rules resolve blockType through member type chains, so
wellKnownInputRules serves aliased code-input members.
- Review fixes: host-callback errors surface as toasts instead of unhandled
rejections; anchor-deletion mid-insert shows a warning toast; positional
row indices tolerate duplicate item ids; replacement-pattern-safe label
formatting; screen-reader position announcement is translatable.
Deliberate deviations from the review doc: presets carry no description
(avoids a three-way precedence chain).
* test(block-insert-picker): lift cold-start timeout on first picker popover test
* docs: add @sanity/block-insert-picker to Current Plugins table
* chore: trigger pkg.pr.new preview publish
* refactor(block-insert-picker): address Copilot review comments
- insertPickerItem: spread the resolved initialValue before `_key`/`_type`
so the generated key and target type always win. Sanity's initial-value
resolver sets `_type` on object values; the values coincide by
construction here, but ordering keeps the insert correct regardless.
- openBlockOnInsert: correct the stale rationale comment. The package
enables the React Compiler, so the old "not active" claim was wrong; the
point is the empty-dep useCallback keeps a stable reference for consumers.
- blockInsertPicker: fix the comment naming the wrong mouse events. Rows
select via onClick and highlight via onMouseMove (not onMouseDown /
onMouseEnter), passing an explicit idx to avoid a not-yet-flushed
highlightedIndex.
* fix(block-insert-picker): case-insensitive fence language table match; trim README install
- normalizeFenceLanguage now compares the typed token to language-table
`value`/`aliases` case-insensitively, returning the canonical value
(casing preserved). Previously a table with mixed-case entries never
matched and the mapped filename was skipped (Cursor Bugbot, low severity).
Built-in rules and code-input's lowercase table were unaffected; this
hardens host-supplied custom tables. Adds a mixed-case-table test.
- README: collapse the three install commands to a single `npm install`
(no --save), matching @sanity/code-input's install section.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* fix(block-insert-picker): restore bracket notation for process.env access
The Copilot Autofix commit rewrote `process.env['NODE_ENV']` to dot
notation, which fails this repo's type-aware lint: `noPropertyAccessFrom
IndexSignature` (TS4111) requires index-signature properties like
`process.env.NODE_ENV` to be accessed with brackets. Restore the bracket
form so `pnpm lint` passes.
* fix(block-insert-picker): address Cursor Bugbot findings
- inputRules: preserve case for unknown fence tokens (`return token`, not the
lowercased form) so the "pass through as typed" contract holds — e.g.
`GraphQL` stays `GraphQL` for wellKnownInputRules' no-table path.
- inputRules: spread host `buildValue` before `_key`/`_type` in createInsertRule
so a stray `_key`/`_type` can't hijack block identity (mirrors the
insertPickerItem fix).
- blockInsertPicker: close the picker when a select bails on an in-flight
insert, so a menu reopened during a slow initial-value resolution can't get
stuck swallowing Enter.
- blockInsertPicker: key sections on the namespaced raw group instead of the
display label, so a curated group named like `ungroupedSection` can't collide
with the null-group section's React key.
Two other Bugbot findings need no change: the text-block exclusion
(`isTextBlockMember`) already mirrors Sanity's own `findBlockType` (walk the
type chain to root, match `name === 'block'`), and the initial-value spread in
insertPickerItem was already reordered in an earlier commit.
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
feat(code-input): export SUPPORTED_LANGUAGES and LANGUAGE_ALIASES (#1600)
Downstream tooling that resolves external language tokens (markdown
fence infostrings, paste/import pipelines) onto code field values has
had to vendor this list and hand-sync it with the Language selector.
Exporting the canonical table (and the alias map) removes the drift.
Version Packages (#1662)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(changeset): note npm provenance re-enabled for sanity-plugin-utils (#1661)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Version Packages (#1660)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(changeset): bump google maps input for css dts cleanup (#1659)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1658)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/client to ^7.24.0 (#1581)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): lock file maintenance (#1657)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1640)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(test-studio): use turbo transit for build cache invalidation (#1655)
Replace empty dependsOn with a transit node so sanity build still skips
workspace package builds while Turbo invalidates when dependency source changes.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): bump pkg-utils, tsdown-config, and vanilla-extract plugins (#1656)
Update catalog entries to @sanity/pkg-utils ^11.0.13,
@sanity/tsdown-config ^0.19.6, and @sanity/vanilla-extract-vite-plugin
^0.2.5. Exclude lightningcss@1.33.0 (and platform packages) from
minimumReleaseAge so pnpm update/dedupe can resolve the new transitive
deps, and align turbo/generators tsdown with the workspace catalog.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): dedupe pnpm-lock.yaml (#1653)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore: remove @typescript/native-preview (use TypeScript 7 native tsc) (#1650)
* chore: remove @typescript/native-preview now that TypeScript 7 ships native tsc
TypeScript 7.0.2 includes the native compiler as `tsc`, so the preview package
and its `tsgo` binary are no longer needed. VS Code settings now point the
TypeScript 7 extension at the workspace `typescript` install.
* Update settings.json
* Update settings.json
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): lock file maintenance (#1651)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(test-studio): stop waiting on dependency builds (#1652)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Delete dependencies-GH-1642.md
Migrate to date-fns v4 and official @date-fns/tz, matching sanity core (#1569)
chore(deps): dedupe pnpm-lock.yaml (#1649)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.12 (#1647)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1645)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update renovatebot/github-action action to v46.1.20 (#1646)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): bump @sanity/vanilla-extract-vite-plugin to ^0.2.4
Drop the Bynder Styles.css.js Vite workaround from the test studio —
0.2.4 keeps the compiler alive under unstable_bundledDev, so plain
*.css.js modules no longer hang processVanillaFile.
fix(deps): update dependency tsdown to ^0.22.12 (#1642)
fix(deps): update dependency styled-components to ^6.4.4 (#1566)
chore(deps): dedupe pnpm-lock.yaml (#1643)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency react-virtuoso to ^4.18.11 (#1641)
* fix(deps): update dependency react-virtuoso to ^4.18.11
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
docs(agents): catalog shared deps + enable pnpm catalogMode prefer (#1374)
chore(deps): dedupe pnpm-lock.yaml (#1637)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency react-hook-form to ^7.82.0 (#1639)
* fix(deps): update dependency react-hook-form to ^7.82.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update davelosert/vitest-coverage-report-action action to v2.12.2 (#1638)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1612)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
ci: shard Vitest suite (#1584)
* ci: shard vitest suite
* ci: report sharded test coverage
* chore: ignore Vitest blob reports
* ci: require test shards to succeed in aggregate check
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
fix(typegen): 🤖 ✨ (#1634)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(format): 🤖 ✨ (#1633)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1632)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency tsdown to ^0.22.9 (#1622)
* fix(deps): update dependency tsdown to ^0.22.9
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
fix(assist): keep field group selection while editing AI Assist inputs (#1467)
* fix(assist): keep field group selection while editing AI Assist inputs
The AI Assist instruction inspector renders a nested document form that
reused the host document's pane router. Sanity's document pane mirrors the
router `path` param to programmatic focus, and focus drives the selected
field group. Navigating the instruction form therefore overwrote the host
`path`, re-focused the host document, and reset its field group tab.
Isolate the nested pane's `path` navigation in local state while still
forwarding other params (e.g. selected instruction) to the host router.
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
* test(test-studio): add AI Assist + field groups fixture (SAPP-3970)
Adds an 'AI Assist: Field groups' document type with Content/SEO field
group tabs so the field-group-reset behavior with AI Assist can be
manually reproduced and verified.
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
* refactor(assist): use react-fast-compare for param equality
Addresses PR review: the hand-rolled shallowEqualParams returned a false
positive when two param objects had the same key count but different keys
whose values were undefined (e.g. {foo: undefined} vs {bar: undefined}),
because it never verified the key existed on the other object. Reuse
react-fast-compare (already a plugin dependency, used in _lib/useListeningQuery)
instead of a custom check, and add a regression test.
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>
fix(bynder-input): restore Compact View modal visibility in Studio v6 (#1553)
* fix(bynder-input): restore Compact View modal visibility in Studio v6
Upgrade @bynder/compact-view from 5.1.2 to 5.4.0 and patch its shadow DOM
integration for Sanity Studio v6:
- disableCSSOMInjection on StyleSheetManager so styled-components injects
CSS into the shadow root instead of leaving empty style tags
- position:fixed + z-index on CompactViewContainer so the portal host
stacks above Studio UI layers
- widen React peer dependency range to support React 19
Also render BynderModalLayout outside the button flex row.
* fix: unmount bynder layout when not open
* fix(bynder-input): take @bynder/compact-view 5.4.0 as a regular pinned dependency
Implements review feedback on the patch-based approach:
- drop the pnpm patch and the bundling of @bynder/compact-view; pin it
as a regular dependency instead
- style the Compact View modal host from the plugin with a
vanilla-extract globalStyle instead of patching Modal.js
- document how to allow the stale react peer range (npm
--legacy-peer-deps, pnpm peerDependencyRules.allowedVersions) in the
README, and use the pnpm rule for the workspace itself
* fix(bynder-input): survive Compact View shadow-root re-attachment and fix dev-studio css.js crash
- append a <slot> fallback to Compact View's shadow root while the modal
is mounted: its attachShadow effect has no cleanup, so when React
reconnects passive effects on the same host (StrictMode, Activity),
the second attachShadow() throws and Compact View falls back to the
host's light DOM, which the slotless shadow tree kept invisible
- work around @bynder/compact-view's Styles.css.js (a plain JS module
whose name matches vanilla-extract's cssFileFilter and deadlocks the
compiler under sanity dev's bundled dev mode) in the test studio
- move the container globalStyle to BynderInput.css.ts so it loads with
the input instead of the lazy modal chunk
* chore(bynder-input): bump changeset to major
Taking @bynder/compact-view as an unbundled regular dependency with a
stale react peer range can fail npm installs without --legacy-peer-deps,
so it's a breaking change.
* chore(bynder-input): widen @bynder/compact-view to ^5.4.0
The exact pin was only needed while the package was patched and
inlined; as a plain regular dependency a caret range is fine.
* chore: merge main and regenerate lockfile
The PR lockfile was generated against a main where
@sanity/vanilla-extract-vite-plugin resolved to 0.2.1; main has since
bumped it to 0.2.2, and the git-merged lockfile on the PR merge ref was
internally inconsistent (ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY in CI).
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
fix(deps): update dependency @sanity/tsdown-config to ^0.19.3 (#1598)
* fix(deps): update dependency @sanity/tsdown-config to ^0.19.3
* chore: dedupe lockfile and add release-age excludes for tsdown transitive deps
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: Cody Olsen <81981+stipsan@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1631)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.2.2 (#1614)
* fix(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.2.2
* chore(deps): exempt yuku-parser from minimum release age for dedupe
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Move turbo/**/*.hbs oxfmt ignore to root config (#1604)
The turbo generator template ignore is monorepo-specific and should
not ship in the shared @sanity/plugin-kit/oxfmt preset consumed by
standalone plugins.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.10 (#1630)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
docs(assist): fix README markdown formatting and document English-only image descriptions (#1628)
* fix(@sanity/assist): respect document language when generating image descriptions
Pass the configured translate.document.languageField as languagePath to the
generate-caption task (both the automatic generation triggered on image
change, and the manual 'Generate image description' field action), so
generated alt text/captions are written in the document's language instead
of always defaulting to English.
Fixes https://github.com/sanity-io/plugins/issues/1606
* docs(@sanity/assist): clarify caption generation language limitation
Testing against the live AI Assist backend confirms that the generate-caption
task currently always writes descriptions in English, regardless of the
languagePath sent from the client (this matches Sanity's own documentation,
which states the automatic image description feature is English-only today
and recommends the Transform Agent Action's image-description operation as a
workaround). Update the changeset and README to accurately describe the
change as forward-compatible plumbing rather than a full fix, and point users
at the documented workaround for non-English alt text today.
* refactor(assist): resolve languagePath inside useGenerateCaption
Compute languagePath from config.translate.document.languageField once
inside useGenerateCaption itself (via useAiAssistanceConfig), instead of
requiring every call site to read the config and thread it through as an
argument. This removes the duplicated config lookup from both
ImageContextProvider and generateCaptionsActions, and matches the cleaner
approach used in sanity-io/plugins#1627.
Also documents in translate/types.ts JSDoc that languageField is reused
for image description generation.
* docs(assist): fix README markdown formatting and add known limitations
The README relied on markdown block elements (headings, lists, code
fences, images) interrupting paragraphs without blank lines between
them. GitHub tolerates this, but stricter renderers (e.g. the plugin
listing on sanity.io) join everything into unreadable walls of text
with literal '### Heading' and '- list item' fragments inline.
- Separate all block elements with blank lines throughout
- Add a 'Known limitations' section documenting that image descriptions
are always generated in English regardless of
translate.document.languageField (backend limitation, see #1606),
with Transform Agent Action and translate-after workarounds
- Fix broken links: empty-href heading, HOW-TO-USE pointing at the old
standalone repo layout, LICENSE pointing at a non-existent file
- Fix broken bold markup in the 'Enabling the AI Assist API' steps and
the useExampleFieldActions TOC anchor
- Add missing TOC entries (Known limitations, Caveats, Third party
sub-processors)
Also reverts the languagePath client plumbing from this branch: the
backend ignores it, so the plugin change had no effect. This PR is now
docs-only.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): dedupe pnpm-lock.yaml (#1619)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update pnpm to v11.13.1 (#1624)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.9 (#1625)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update turbo monorepo to v2.10.5 (#1626)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update dependency knip to ^6.27.0
chore: fix css
fix(deps): update dependency @codemirror/lang-markdown to ^6.5.1 (#1610)
* fix(deps): update dependency @codemirror/lang-markdown to ^6.5.1
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency oxfmt to ^0.59.0 (#1599)
* fix(deps): update dependency oxfmt to ^0.59.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.7 (#1594)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Fix TypeGen workflow failure by pinning `@sanity/vanilla-extract-vite-plugin` to 0.1.1 (#1616)
* Initial plan
* fix(typegen): pin vanilla-extract vite plugin to 0.1.1
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
chore(deps): bump tsdown and vanilla-extract
fix(deps): update dependency oxlint to ^1.74.0 (#1603)
* fix(deps): update dependency oxlint to ^1.74.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update zizmorcore/zizmor-action action to v0.6.0 (#1609)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): lock file maintenance (#1611)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): replace @vanilla-extract/vite-plugin with @sanity/vanilla-extract-vite-plugin (#1590)
* chore(deps): replace @vanilla-extract/vite-plugin with @sanity/vanilla-extract-vite-plugin
Swap the vanilla-extract Vite plugin used by the test studio and
@sanity/google-maps-input's vitest config to @sanity/vanilla-extract-vite-plugin,
a Vite 8 rewrite with plugin hook filters and a caching compiler on Vite's
Environment API / ModuleRunner instead of the legacy vite-node. Bump tsdown to
^0.22.8 and @sanity/tsdown-config to ^0.17.0 alongside it.
google-maps-input's vitest.config.ts also needed a small stub plugin: its
dist/bundle.css.js Node/SSR shim matches the upstream cssFileFilter by
filename alone (*.css.js), which made the new plugin try to evaluate it as
real .css.ts source and throw ReferenceError: require is not defined via
ModuleRunner (vite-node tolerated this). The stub renames that module id away
from a .css.js shape before vanillaExtractPlugin() ever sees it.
Documented both the plugin swap and the shim workaround in the
sanity-plugin-best-practices skill and the new-plugin generator templates so
future vanilla-extract plugins get this for free.
* chore(deps): bump @sanity/tsdown-config to ^0.17.1, drop bundle.css.js shim workaround
@sanity/tsdown-config 0.17.1 (via @sanity/vanilla-extract-tsdown-plugin
0.2.1 / @sanity/vanilla-extract-rolldown-plugin 0.1.1) renames the
vanilla-extract Node/SSR compat shim from bundle.css.js to bundle-css.js so
it no longer matches vanillaExtractPlugin()'s cssFileFilter by filename
alone (sanity-io/pkg-utils#3043). That was the root cause of the
require-is-not-defined regression worked around in the previous commit, so
the stub-bundle-css-js-shim plugin is no longer needed.
Rebuilding @sanity/google-maps-input picked up the renamed dist/bundle-css.js
shim and auto-rewrote its package.json ./bundle.css export map (adding a
types condition too). Reverted the vitest.config.ts workaround and the
matching documentation/generator-template changes back to the plain
vanillaExtractPlugin() registration, now noted as a historical gotcha
instead of a live workaround.
* docs(test-studio): note that unstable_bundledDev breaks .css.ts HMR
Document the trade-off discovered while testing the vanilla-extract Vite
plugin swap: with unstable_bundledDev: true, editing a .css.ts file doesn't
hot-reload (a sanity dev restart is required), while plain .ts/.tsx HMR is
unaffected. Comment out the line for a session if fast CSS HMR is needed
(confirmed sub-10ms with it unset).
* docs(styling skill): trim verbose vanilla-extract setup section
The ./bundle.css export map (and its dist/bundle-css.js shim/types) is
generated and kept in sync automatically by @sanity/tsdown-config's
vanillaExtract option, so it doesn't need explaining or a JSON example to
copy. Simplify the vitest.config.ts guidance to why (@sanity/vanilla-extract-
vite-plugin is faster than upstream) without the ModuleRunner/hook-filter/
sanity-build internals. Drop the sanity.cli.ts snippet, since the test studio
already registers the plugin globally in this repo and doesn't need to be
touched per-plugin. Drop the bundle.css.js->bundle-css.js rename history
note, a one-off gotcha now fixed upstream rather than evergreen guidance.
* chore(deps): bump @sanity/tsdown-config to ^0.17.2, @sanity/vanilla-extract-vite-plugin to ^0.1.1
Both are latest-available patch releases (0.17.1 -> 0.17.2 pulls in
@sanity/vanilla-extract-tsdown-plugin 0.2.2 / @sanity/vanilla-extract-
rolldown-plugin 0.1.2; 0.1.0 -> 0.1.1 is the vite plugin's own patch).
tsdown stays at ^0.22.8, already the latest. Benchmarked in the next commit's
message to confirm this doesn't regress anything.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
fix(deps): update dependency @changesets/cli to ^2.31.1 (#1607)
* fix(deps): update dependency @changesets/cli to ^2.31.1
* chore(deps): exempt @changesets/cli and refresh lockfile with dedupe
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
chore(deps): update dependency @vitejs/devtools to ^0.4.1 (#1593)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1591)
chore(deps): dedupe pnpm-lock.yaml (#1602)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(media): use useMediaIndex so Tags panel works on wide viewports (#1592)
The home-rolled useBreakpointIndex returned -1 above 1920px, which
force-hid the Tags panel. Switch Items to @sanity/ui's useMediaIndex,
which includes a min-width catch-all and matches Controls breakpoints.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
fix(deps): update dependency xstate to ^5.32.5 (#1597)
* fix(deps): update dependency xstate to ^5.32.5
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency tsdown to ^0.22.8 (#1596)
* fix(deps): update dependency tsdown to ^0.22.8
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/tsconfig to ^2.2.1 (#1595)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update actions/setup-node action to v7 (#1586)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update pnpm to v11 (#1579)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency nanoid to v6 (#1577)
* fix(deps): update dependency nanoid to v6
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency groq to ^6.5.0 (#1523)
* fix(deps): update dependency groq to ^6.5.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Migrate plugin-kit and the monorepo from prettier/eslint to oxfmt/oxlint (#1565)
* Migrate plugin-kit and monorepo formatting from prettier to oxfmt
- Ship the monorepo's oxfmt settings as a @sanity/plugin-kit/oxfmt preset
- Re-export the preset from the root oxfmt.config.ts (replaces .oxfmtrc.json)
- init/inject scaffold oxfmt (config, devDependency, format script) instead
of prettier; --no-prettier is now --no-oxfmt
- verify-package: replace the duplicate-prettier-config check with a
monorepo-aware oxfmt check that expects the config at the workspace root
(or next to package.json outside monorepos) and flags leftover prettier
configuration with migration instructions
* Migrate plugin-kit and monorepo linting from eslint to oxlint, drop tsc
- Ship the monorepo's oxlint settings as @sanity/plugin-kit/oxlint-config.json
(type-aware rules, type checking via oxlint-tsgolint, warnings denied); the
root .oxlintrc.json extends it and keeps only workspace-specific ignores and
overrides
- init/inject scaffold oxlint (.oxlintrc.json, oxlint + oxlint-tsgolint
devDependencies, lint script) instead of eslint; --no-eslint is now
--no-oxlint, and the typescript flag now controls TypeScript scaffolding
instead of piggybacking on the eslint flag
- verify-package: drop the tsc run (oxlint type-checks as part of linting) and
the duplicate-eslint-config check; add a monorepo-aware oxlint config check
with legacy eslint detection; the v2-imports check (eslintImports -> imports)
now runs a bundled oxlint pass instead of the package's eslint
- pin typescript in dev/test-studio so the sanity peer keeps resolving to the
catalog version now that plugin-kit no longer pulls eslint/typescript peers
* Pin oxlint imports-check output format so CI matches snapshots
oxlint auto-switches to GitHub annotations format on CI; --format=agent keeps
the compact per-diagnostic output (including help: messages) everywhere
* Ship the oxlint config as @sanity/plugin-kit/oxlint (oxlint.config.ts pattern)
Replaces the oxlint-config.json + .oxlintrc.json extends-by-file-path setup
with a TS config module, mirroring the oxfmt preset: the shared config is
authored in src/oxlint.ts (typed OxlintConfig, built to plain JS in dist), the
root and scaffolded configs are oxlint.config.ts files that re-export or extend
it via defineConfig({extends: [...]})
* Drop the Sanity v2 imports check from verify-package/verify-studio
v2-era imports are no longer linted for; with the bundled oxlint pass gone,
oxlint moves from a runtime dependency of plugin-kit to a dev/peer dependency
(it is only needed by consumers, which the scaffolding already installs)
* Address Bugbot review: opt-out scaffolds must verify, root legacy configs detected
- init/inject with --no-oxfmt/--no-oxlint now write the matching
sanityPlugin.verifyPackage opt-outs, so the scaffolded build script
(which runs verify-package) works out of the box
- the oxfmt/oxlint checks now also flag leftover prettier/eslint configs at
the detected workspace root, not only next to the plugin's package.json
* Scaffold ESM semver-workflow configs so fresh presets pass oxlint
The preset's lint-staged.config.js and commitlint.config.js templates
still used module.exports, but scaffolded plugins are ESM
("type": "module") and the shared oxlint config bans CommonJS via
import/no-commonjs (the old .eslintignore that excluded these files is
gone). A fresh 'init --preset semver-workflow' failed 'oxlint' out of
the box; switch the templates to 'export default' and cover the preset
configs in the inject test.
* Validate package-local oxfmt/oxlint configs that override the workspace root
verify-package treated a valid workspace-root config as sufficient and only
looked at the plugin directory when the root check failed. But oxfmt/oxlint
discover nested configs, so a local oxfmt.config.ts / oxlint.config.ts
overrides the root for that package's files — verify could pass while the
package wasn't actually using the shared plugin-kit settings.
In a monorepo the validators now check the plugin directory first: when a
local config exists it must use the shared preset/config (the error notes it
overrides the root config), and only when no local config exists does the
workspace root config decide the result.
* Flag legacy prettier/eslintConfig keys in the workspace root package.json
The oxfmt/oxlint checks scanned the workspace root for leftover
prettier/eslint config files but only looked at the plugin's own
package.json for the prettier / eslintConfig keys. In monorepos those
keys often live in the root package.json, where they still configure
the whole workspace — verify-package now inspects the root manifest
too and reports them alongside the legacy config files.
* Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Move oxfmt, oxlint and oxlint-tsgolint to the pnpm catalog
plugin-kit's oxfmt/oxlint peers now reference the default catalog
(catalog:) rather than catalog:peer or explicit ranges: the shared
configs may rely on rules and features that ship in a new minor, so
the peer range must stay in lockstep with the version the monorepo
develops against.
* Mark oxfmt/oxlint as optional peer dependencies of plugin-kit
Unlike @sanity/pkg-utils (a hard requirement, checked unconditionally
by verify-package), the oxfmt/oxlint verify-package checks are
individually opt-outable via sanityPlugin.verifyPackage.oxfmt/oxlint:
false, and plugin-kit's own code only ever imports their types. So a
consumer can legitimately use plugin-kit without oxfmt or oxlint
installed; peerDependenciesMeta now reflects that.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
chore(deps): bump sanity to 6.5.0 and enable unstable_bundledDev (#1589)
* chore(deps): bump sanity to 6.5.0 and enable bundledDev
Align @sanity/client (7.23.2) and @sanity/eventsource (5.0.4) so
unstable_bundledDev can be enabled without EventSource2 crashes in Structure.
* chore(markdown): sync inlined @sanity/client to 7.23.2
* chore(deps): drop client/eventsource overrides after lockfile bump
Keep @sanity/client@7.23.2 and @sanity/eventsource@5.0.4 via the
lockfile after pnpm dedupe; remove the temporary overrides and markdown
changeset.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): dedupe pnpm-lock.yaml (#1585)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update dependency @vitejs/devtools to ^0.4.0 (#1578)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.3 (#1582)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Remove redundant `dts` option from tsdown configs (#1567)
* 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>
fix(deps): update dependency @sanity/tsdown-config to ^0.14.2 (#1583)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore: simplify, rely on default options
fix(deps): update build tooling dependencies (#1580)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Version Packages (#1572)
chore(deps): dedupe pnpm-lock.yaml (#1575)
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 (#1573)
* 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>
fix(deps): update dependency @sanity/icons to ^5.1.0 (#1574)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update renovatebot/github-action action to v46.1.19 (#1570)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Prevent Renovate from rewriting pnpm `peer` catalog ranges (#1568)
fix(deps): update tsdown to ^0.22.7 and @sanity/tsdown-config to ^0.14.0 (#1571)
Version Packages (#1563)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Add pnpm `peer` catalog for peer dependency ranges (#1562)
Centralize all external peerDependencies ranges in a named `peer` catalog
in pnpm-workspace.yaml, referenced as `catalog:peer`. Conflicting ranges
resolve to the most-used one: react/react-dom `^19.2` and
styled-components `^6.1` (aligning sanity-plugin-media and
sanity-plugin-mux-input with what Sanity Studio v5+ already requires).
Peers on other workspace packages keep `workspace:^` (or an explicit
range in @sanity/sfcc) so changesets can keep tracking dependents.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Version Packages (#1558)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
feat: enable React Compiler for media and mux-input (#1560)
* feat: enable React Compiler for media, mux-input and debug-preview-url-secret-plugin
Enables the reactCompiler tsdown option for the last three plugins that
were still built without it. For sanity-plugin-media and
sanity-plugin-mux-input the react peer dependency is tightened to ^19.2
(matching every other plugin) since the compiled output imports
react/compiler-runtime, which requires React 19. Their sanity peer
(^5 || ^6.0.0-0) already mandates React 19.2, so no supported setup is
dropped.
* chore: don't enable React Compiler for debug-preview-url-secret-plugin
This plugin has no React components, so running the build through React
Compiler is a no-op (its dist output is byte-identical with or without
it). Drop the reactCompiler flag, the babel-plugin-react-compiler devDep,
and the changeset; keep the change limited to the two plugins that
actually ship components (media and mux-input).
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Handle TS7 `@typescript-eslint` config crashes in plugin-kit import validation (#1561)
* Initial plan
* fix(plugin-kit): fallback eslint import check for TS7 parser crash
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
fix(deps): update dependency typescript to v7 (#1531)
* fix(deps): update dependency typescript to v7
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
refactor: simplify how the PKG_VERSION is handled in mjux
Version Packages (#1556)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1557)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update sanity monorepo to ^6.4.0 (#1555)
Bumps the workspace catalog (@sanity/mutator, @sanity/schema, @sanity/util, @sanity/vision, sanity) and groq in sanity-plugin-media from ^6.3.0 to ^6.4.0.
- mux-input: replace the DocumentPreviewLink render-function workaround with IntentLink passed directly to PreviewCard's as prop, dropping the FIXME cast and the react-compiler lint suppression.
- orderable-document-list: keep using useDocumentVersionInfo (the useDocumentVersions replacement would need the unexported getDocumentVersionInfoFromVersions util) with an oxlint suppression for the new deprecation, and drop a ts-expect-error made obsolete by the 6.4.0 PreviewCard typings.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Version Packages (#1527)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
feat!: support TypeScript 7 in plugin-kit, require typescript 6.x || 7.x (#1554)
* feat!: support TypeScript 7, require typescript 6.x || 7.x in plugin-kit
* fix: scaffold typescript ^6 in plugin-kit init to avoid @typescript-eslint peer conflict
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): ts doesn't need to be a dep to plugin packages
fix(deps): update turbo monorepo to v2.10.4 (#1543)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1552)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/tsdown-config to ^0.13.1 (#1551)
fix(deps): update dependency vitest to ^4.1.10 (#1542)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @uiw/react-codemirror to ^4.25.11 (#1540)
* fix(deps): update dependency @uiw/react-codemirror to ^4.25.11
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^11.0.1 (#1550)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1549)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update linters (#1548)
* fix(deps): update linters
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency get-it to ^9.1.0 (#1546)
* fix(deps): update dependency get-it to ^9.1.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency react-hook-form to ^7.81.0 (#1547)
* fix(deps): update dependency react-hook-form to ^7.81.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update dependency knip to ^6.26.0 (#1545)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update dependency @tsconfig/vite-react to ^8.1.1 (#1544)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency iso-639-1 to ^3.1.6 (#1541)
* fix(deps): update dependency iso-639-1 to ^3.1.6
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @uiw/codemirror-themes to ^4.25.11 (#1539)
* fix(deps): update dependency @uiw/codemirror-themes to ^4.25.11
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @types/node to ^24.13.3 (#1538)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @tanstack/react-virtual to ^3.14.5 (#1536)
* fix(deps): update dependency @tanstack/react-virtual to ^3.14.5
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1537)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @tanstack/react-query to ^5.101.2 (#1535)
* fix(deps): update dependency @tanstack/react-query to ^5.101.2
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update pnpm to v10.34.5 (#1533)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @portabletext/block-tools to ^5.1.11 (#1534)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1532)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency tsdown to ^0.22.4 (#1519)
* fix(deps): update dependency tsdown to ^0.22.5
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/tsdown-config to ^0.13.0 (#1529)
fix(deps): update dependency @vanilla-extract/vite-plugin to ^5.2.4 (#1517)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to v11 (#1530)
fix(deps): update dependency react-virtuoso to ^4.18.10 (#1518)
* fix(deps): update dependency react-virtuoso to ^4.18.10
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update dependency knip to ^6.25.0 (#1520)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1526)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency react-icons to ^5.7.0 (#1486)
* fix(deps): update dependency react-icons to ^5.7.0
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^10.9.1 (#1515)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1502)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Merge pull request #1524 from sanity-io/actions/format-main
chore(format): 🤖 ✨
fix(deps): update dependency @sanity/tsdown-config to ^0.12.0 (#1521)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency oxfmt to ^0.58.0 (#1522)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/ui to ^3.3.5 (#1516)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): update renovatebot/github-action action to v46.1.18 (#1505)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(typegen): 🤖 ✨ (#1511)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore: disable automatic issue triage (#1514)
* chore: disable automatic issue triage
Version Packages (#1504)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Merge pull request #1513 from sanity-io/cursor/orderable-intent-repro-1506-bf83
fix(orderable-document-list): scope canHandleIntent to list's own type (#1506)
test(test-studio): reframe issue #1506 repro as regression fixture
Now that canHandleIntent is scoped to the list's own type, update labels
and comments to describe regression verification rather than active repro.
chore: remove repro step, add fix
test(test-studio): add repro case for orderable-document-list issue #1506
Add dedicated schema types and structure section that mirrors the issue
report: a regular document list alongside an orderable list at the same
level. Creating a Page via the global create menu incorrectly routes into
the Team Members orderable list due to canHandleIntent claiming all types.
Includes REPRO.md with step-by-step verification instructions.
Add orderable document list readme (#1508)
fix(deps): update dependency react-rx to ^4.2.3 (#1493)
* fix(deps): update dependency react-rx to ^4.2.3
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @codemirror/view to ^6.43.5 (#1500)
* fix(deps): update codemirror
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1496)
chore(deps): update linters (#1499)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(@sanity/assist): render instruction preview icons from @sanity/icons v5 (#1503)
The instruction schema's prepare() returns a rendered <Icon symbol> element
for instructions with a custom icon (since the icons v5 lazy-map migration),
but the preview component still rendered props.icon as a component, crashing
the instruction list with 'Element type is invalid ... got: <Icon />'.
Handle both the element and the component (SparklesIcon fallback) shapes.
Also add a README troubleshooting section for MISSING_EXPORT icon build
errors, which come from code importing icons from the @sanity/icons package
root - a pattern removed in v5 (the plugin itself already uses the per-icon
export paths).
Fixes #1495
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
fix(deps): update dependency @sanity/ui to ^3.3.1 (#1498)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/preview-url-secret to ^4.0.8 (#1492)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @vis.gl/react-google-maps to ^1.9.0 (#1501)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1497)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency xstate to ^5.32.4 (#1494)
* fix(deps): update dependency xstate to ^5.32.4
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Upgrade oxlint-tsgolint to ^0.24.0 and fix new lint findings (#1476)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Version Packages (#1489)
refactor: move all plugins and packages to tsdown (#1491)
refactor: move dbeug-live-sync-tags to tsdown (#1490)
Version Packages (#1487)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
chore(deps): dedupe pnpm-lock.yaml (#1488)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Remove isolatedDeclarations and collapse to one tsconfig per plugin (#1460)
* Remove isolatedDeclarations and use a single tsconfig per plugin
Drop the @sanity/tsconfig/isolated-declarations preset from the shared
@repo/tsconfig/build.json (now removed) and @repo/package.config, and
delete every per-plugin tsconfig.build.json. @sanity/pkg-utils now builds
declarations from each plugin's single tsconfig.json; dts: 'rolldown' is
kept, so isolated declarations can be re-adopted later by re-adding the
preset.
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
* Scaffold a single tsconfig in the plugin generator
Remove the isolatedDeclarations prompt and the tsconfig.build.json
scaffolding action from both generators, and delete the now-unused
tsconfig.build.json.hbs template.
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
* Drop tsconfig.build.json from plugin-transfer docs
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
* Add changesets for plugins with regenerated declarations
Patch bumps for the 8 published packages whose dist declaration output
(.d.ts and/or .d.ts.map) changed when dts generation moved off
isolatedDeclarations. The differences are cosmetic (quote style, JSDoc
indentation, union member order); runtime JS is unchanged.
* Remove @repo/tsconfig and extend @sanity/tsconfig/strictest directly
With a single tsconfig per plugin the @repo/tsconfig wrapper package no
longer earns its keep. Each plugin now extends @sanity/tsconfig/strictest
directly and sets customConditions: ['development'] inline (temporarily
needed until the planned move to tsdown, which handles dev conditions
differently). Swaps the @repo/tsconfig workspace devDependency for
@sanity/tsconfig (catalog) in all 48 packages and updates the generator
templates and knip config. Built dist output is byte-identical.
* Generate declarations with tsgo
Enable the tsgo pipeline (@typescript/native-preview) in
@repo/package.config, the same engine oxlint's type-check runs on.
tsgo requires inferred exported types to be portable (TS2883), so a few
sites gain explicit annotations: the xstate form machine in
sanity-plugin-dashboard-widget-vercel, the schema test fixtures in
sanity-naive-html-serializer, and the render helper in
sanity-plugin-media's tests. Documents the TS2883 failure mode in
AGENTS.md.
* Add changesets for tsgo-regenerated declarations
Unifies the earlier isolatedDeclarations changesets and adds patch bumps
for the 21 additional published packages whose dist declaration output
changed when dts generation switched to tsgo (cosmetic quote-style and
union-ordering differences only).
* Relax minimumReleaseAge to the pnpm v11 default
Drops the release-age gate from 3 days to pnpm v11's default of 1440
minutes (1 day), unblocking resolution of @vitejs/devtools releases the
test studio tracks closely.
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cody Olsen <stipsan@users.noreply.github.com>
Version Packages (#1484)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(@sanity/assist): open icon picker reliably with lazy-loaded icons (#1485)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
chore(deps): update dependency @vitejs/devtools to ^0.3.4 (#1479)
* chore(deps): update dependency @vitejs/devtools to ^0.3.4
* chore: dedupe lockfile with pnpm
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
fix(deps): update dependency motion to ^12.42.2 (#1480)
* fix(deps): update dependency motion to ^12.42.2
* chore(deps): changeset for dependency update
* chore: run pnpm dedupe for motion update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Version Packages (#1483)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @vanilla-extract/css to ^1.21.1 (#1477)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Add changesets for plugins using styledComponents tree-shaking upgrade (#1478) (#1481)
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
fix: update icon lazy loading
fix(deps): update dependency @sanity/icons to v5 (#1482)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency @sanity/pkg-utils to ^10.9.0 (#1478)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
Version Packages (#1473)
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(deps): update dependency typescript to v6 (#1474)
* fix(deps): update dependency typescript to v6
* chore(deps): changeset for dependency update
---------
Co-authored-by: squiggler-app[bot] <265501495+squiggler-app[bot]@users.noreply.github.com>
fix(document-internationalization): enable creating language copies for documents in releases (#1475)
* fix(document-internationalization): enable translations for documents in releases
When …
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^4.25.10→^4.25.11Release Notes
uiwjs/react-codemirror (@uiw/react-codemirror)
v4.25.11Compare Source
Documentation v4.25.11: https://raw.githack.com/uiwjs/react-codemirror/22c79da/index.html
Comparing Changes: uiwjs/react-codemirror@v4.25.10...v4.25.11
0b71006@jaywcjlovee275fb6@jaywcjlovebc982aa@zukmkvConfiguration
📅 Schedule: (UTC)
🚦 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.
This PR has been generated by Mend Renovate using a curated preset maintained by
. View repository job log here
Note
Low Risk
Dependency-only patch with no plugin code changes; upstream fix is a targeted memory-leak patch in the React CodeMirror wrapper.
Overview
Bumps
@uiw/react-codemirrorfrom^4.25.10to^4.25.11in@sanity/code-input, with matchingpnpm-lock.yamlresolution (including@uiw/codemirror-extensions-basic-setup@4.25.11). A changeset records a patch release for the plugin.There are no application source changes—only dependency and lockfile updates. Upstream 4.25.11 includes a fix for a memory leak when default themes are recreated; reviewers may want a quick smoke test of the Studio code field editor.
Reviewed by Cursor Bugbot for commit b945a35. Bugbot is set up for automated code reviews on this repo. Configure here.