Sanity Studio v6.17.0
This release includes various improvements and bug fixes.
For the complete changelog with all details, please visit:
www.sanity.io/changelog/studio-Ni4xNi4w
Install or upgrade Sanity Studio
To upgrade to this version, run:
npm install sanity@latestTo initiate a new Sanity Studio project or learn more about upgrading, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.
📓 Full changelog
| Author | Message | Commit |
|---|---|---|
| squiggler-app[bot] | chore(deps): update dependency @sanity/logos to ^2.2.6 (#15073) | 1ff510c |
| squiggler-app[bot] | chore(lint): fix linter issues 🤖 ✨ (#15094) | 6ab2ad0 |
| cursor[bot] | test(config): cover flattenConfig plugin order and deprecation (#14776) | c6c7457 |
| squiggler-app[bot] | fix(deps): update sanity-sdk to ^3.6.0 (#15091) | aac614c |
| cursor[bot] | test(store): cover listenQuery welcome refetch and error paths (#15008) | 21663c2 |
| @stipsan | perf(form): create presence cursor components via a compiler-friendly factory (#15069) | 090696e |
| squiggler-app[bot] | fix(deps): update dev-non-major (#15076) | c23a168 |
| squiggler-app[bot] | chore(deps): update dependency prettier to ^3.9.9 (#15084) | d608086 |
| squiggler-app[bot] | chore(deps): update renovatebot/github-action action to v46.3.5 (#14870) | 4d4d6fe |
| squiggler-app[bot] | chore(deps): update dependency @sanity/vanilla-extract-vite-plugin to ^0.2.20 (#15075) | 9c62421 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/color to ^3.0.9 (#15072) | e2688fe |
| squiggler-app[bot] | chore(deps): update dependency @sanity/tsdown-config to ^0.28.2 (#15074) | dfd10dd |
| @juice49 | feat(sanity): first-class singletons API (#12810) | 02890f3 |
| @juice49 | feat(sanity): singleton document badge (#14443) | c21d524 |
| @juice49 | test(ailf): add literacy tasks for the first-class singleton API (#15017) | 8588609 |
| @juice49 | refactor(test-studio): migrate singleton examples to first-class singletons API (#14442) | 89aa947 |
| @laurenashpole | chore: stack migration final pass (#15032) | b801550 |
| squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#15065) | 6b7460e |
| @stipsan | chore(deps): upgrade vite to 8.3.1 and repin bundled dev rolldown to 1.2.9 (#15055) | eb9aba6 |
| @stipsan | ci(chromatic): gate pull request runs behind the trigger:chromatic label (#15062) | 0add91d |
| @bjoerge | ci(fuzz): add a single Fuzz Status job to require for merge (#15057) | f43d049 |
| @stipsan | fix(structure): suppress deprecated selectedVariantName lint error in useListPaneCounts (#15061) | 30dcbdf |
| @stipsan | feat(core): add beta.reactActivityMode to keep recent tools mounted (#14901) | f5821c3 |
| @bjoerge | chore(radar): track total CSS weight + style tag CSS per scenario (#15049) | 6685243 |
| @jordanl17 | feat(structure): add opt-in live document count badges to document type list items (#14163) | 23ee1df |
| squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#15050) | 9c26a66 |
| @stipsan | fix(studio): collapse navbar tools into the overflow menu when the studio is narrower than the viewport (#15030) | adbe052 |
| @stipsan | fix(presentation): handle review feedback on the open preview link (#15020) | a6f6a91 |
| @stipsan | chore(deps): enable trustPolicyExcludePrune (#14892) | eef4e15 |
| squiggler-app[bot] | chore(deps): update dependency @uiw/react-codemirror to ^4.25.12 (#15045) | b1b41a9 |
| squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#15044) | af3eccf |
| squiggler-app[bot] | fix(deps): update sanity-sdk to ^3.5.0 (#14891) | a4c50e0 |
| squiggler-app[bot] | chore(deps): update dependency oxlint-tsgolint to ^7.0.2003 (#14999) | 797f644 |
| squiggler-app[bot] | fix(deps): update portabletext (#14982) | 06b0b03 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ailf to ^7.38.1 (#14983) | 0af0a39 |
| squiggler-app[bot] | fix(deps): update dependency @sanity/cli to ^8.13.0 (#15012) | d0bc976 |
| squiggler-app[bot] | fix(deps): update dependency get-it to ^9.6.0 (#15013) | a3e1534 |
| @laurenashpole | chore: container migration final pass (#15036) | 30f1530 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/themer to ^0.8.0 (#15043) | 485ae5c |
| squiggler-app[bot] | chore(deps): update dependency chromatic to ^18.9.5 (#14947) | d2668ee |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.2.6 (#15024) | 651dcdb |
| squiggler-app[bot] | fix(deps): update dependency motion to ^13.4.4 (#14977) | be2e1aa |
| squiggler-app[bot] | chore(deps): update dependency sanity-plugin-internationalized-array to ^5.3.1 (#15041) | b2a7e20 |
| squiggler-app[bot] | fix(deps): update dev-non-major (#15040) | 2adc86f |
| @stipsan | chore(deps): enable pnpm autoDedupe (#14930) | 6619338 |
| @stipsan | fix(form): keep a grown portable text editor from scrolling to top on focus (#14954) | 56113a4 |
| squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#15028) | 7ab39a0 |
| squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#15027) | 5327419 |
| @bjoerge | test(portable-text): add sync conformance fuzzer (#14981) | d32d341 |
| squiggler-app[bot] | fix(deps): update dev-non-major (#15025) | e80674d |
| squiggler-app[bot] | chore(deps): update dependency @sanity/media-library-types to ^1.7.1 (#14973) | de1b3b1 |
| @pedrobonamin | feat(core): render one variant menu per type and update variant creation form (#14884) | 45e733c |
| @stipsan | feat(core): add sanity/_dangerously_use_private_internals_that_do_not_follow_semver entry (additive) (#14837) | d0e8253 |
| @laurenashpole | chore: migrate container in core (#15006) | 85f52d8 |
| @laurenashpole | chore: migrate stack in core components (#15004) | fe56a87 |
| @laurenashpole | chore: migrate stack in dev (#15003) | 6c7ea7b |
| @stipsan | fix(presentation): enable preview mode when opening preview (#14936) | 8ef1e7c |
| @juice49 | refactor(sanity): add reusable structure node id validator (#15010) | d85a6b8 |
| squiggler-app[bot] | chore(deps): update dependency knip to ^6.38.0 (#14978) | bd63eff |
| @stipsan | chore: install sanity-tsdown-config agent skill (#14956) | f66b1ae |
| squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#15009) | 4138fe1 |
| @stipsan | fix(core): let a container block config add portable text toolbar actions (#14961) | 4cebde0 |
| @pedrobonamin | chore(core): add condition resolver for variants (#14857) | f2a7cfc |
| @pedrobonamin | fix(core): treat empty variant conditions as an error (#14586) | 0c10e61 |
| @pedrobonamin | feat(core): configure variant conditions under types (#14883) | b3e7efd |
| @pedrobonamin | feat(core): read every selected variant from perspective (#14918) | b15b556 |
| squiggler-app[bot] | chore(deps): update dependency @sanity/themer to ^0.5.0 (#15001) | f5a99eb |
| @stipsan | chore(deps): enable catalogMode prefer (#14929) | af20efe |
| squiggler-app[bot] | chore(deps): dedupe pnpm-lock.yaml (#14971) | 25bdb5c |
| squiggler-app[bot] | chore(tests): generate dts tests 🤖 ✨ (#14998) | becc23e |
| squiggler-app[bot] | fix(deps): update codemirror (#14976) | abe61ba |
| squiggler-app[bot] | chore(deps): update dependency @sanity/ui to ^4.2.4 (#14974) | ac6a8be |
| @stipsan | fix(e2e): exit playwright webServer after the suite (#14988) | 3fbbb6e |
| @stipsan | fix(ui): prevent resizable layout props leaking to DOM (#14937) | 907d651 |
| squiggler-app[bot] | fix(deps): update dev-non-major (#14984) | 68e6096 |
| @stipsan | fix(structure): remove the pane layout observer on unsubscribe (#14980) | 455bd45 |
| squiggler-app[bot] | chore(deps): update dependency ui5 to v5.0.0-alpha.11 (#14950) | fcc68ea |
| @laurenashpole | chore: migrate stack in structure (#14943) | 88778ce |
| @stipsan | fix(structure): forward pane widths from the document type list input (#14968) | 632128d |
| squiggler-app[bot] | chore(deps): update dependency react-i18next to ^17.0.15 (#14948) | 9ff12d1 |
| squiggler-app[bot] | chore(deps): update dependency @sentry/react to ^10.75.3 (#14920) | 4b21f17 |
| squiggler-app[bot] | fix(deps): update dependency get-it to ^9.5.8 (#14951) | 37abe77 |
| squiggler-app[bot] | chore(deps): update dependency react-rx to ^7.0.1 (#14949) | 17755c5 |
| squiggler-app[bot] | fix(deps): update dependency @sanity/client to ^8.7.0 (#14953) | ed409c5 |
| squiggler-app[bot] | chore(deps): update dependency sanity-plugin-internationalized-array to ^5.3.1 (#14889) | c82ed26 |
| squiggler-app[bot] | chore(deps): lock file maintenance (#14962) | 5c997f5 |
| @rexxars | fix(schema): inline object-inspect parts (#14902) | 3efc395 |
| @webpro | fix(structure): keep pane widths when releasing a resize divider (#14964) | c97d0e3 |
| @webpro | feat(structure): support list pane widths (#14967) | b12fb38 |
| @webpro | perf(structure): keep pane router context stable while resizing panes (#14966) | 3b92c51 |
| @stipsan | fix(core): move middleware Suspense fallbacks to the render sites (#14687) | 8737940 |
| squiggler-app[bot] | chore(deps): update dependency @conventional-changelog/git-client to v3 (#14829) | f2d4891 |
| squiggler-app[bot] | chore(deps): update chromaui/action action to v18.9.5 (#14946) | a08998e |
| @stipsan | docs(skills): point the sharded chromatic capture recipe at .vitest/blob (#14960) | ad9864e |
| @stipsan | chore(deps): upgrade to vitest 5 (#14881) | baf7aac |
| @hermanwikner | fix(comments-v2): exclude pathless comments from field queries (#14860) | 9f36804 |
| squiggler-app[bot] | chore(deps): update actions/github-script action to v9 (#14828) | 5b704c5 |
| squiggler-app[bot] | chore(deps): update pnpm to v12.6.0 (#14952) | 070a9b1 |
| @stipsan | feat(test-studio): throw the style migrations widget between viewport corners (#14945) | 9702372 |
| @laurenashpole | chore: migrate stack in core/perspective to core/variants (#14940) | e7f74b2 |
| squiggler-app[bot] | fix(deps): update dependency get-it to ^9.5.7 (#14921) | 455717e |
| @bjoerge | chore(radar): declarative INP steps with scroll and press kinds (#14924) | 700c3cb |
| @bjoerge | chore(radar): load scenarios for login, tool and editable milestones (#14931) | c091e24 |
| @stipsan | refactor(comments): migrate comments v2 reactions, popovers and inspector header to vanilla-extract (#14909) | 59cbcec |
| @stipsan | refactor(core): migrate navbar search filter and result wrappers to vanilla-extract (#14910) | 322d172 |
| @stipsan | refactor(form): migrate asset input chrome and simple input wrappers to vanilla-extract (#14911) | 30d7b10 |
| @stipsan | refactor(form): migrate form field status, reference previews and small editor wrappers to vanilla-extract (#14912) | c238567 |
| @stipsan | refactor(tasks): migrate task sidebar, list and activity wrappers to vanilla-extract (#14913) | 7ae880e |
| @stipsan | refactor(sanity): migrate presentation panels and release activity wrappers to vanilla-extract (#14914) | eed01c3 |
| cursor[bot] | test(field): cover path helper edge cases (#14777) | 69cb821 |
| cursor[bot] | test(form): cover patch application edge cases (#14772) | 0969836 |
| @stipsan | refactor(structure): migrate dialog, diff view and pane content styles to vanilla-extract (#14908) | b649f10 |
| cursor[bot] | test(config): cover config property reducer edge cases (#14789) | ee7eee2 |
| @jordanl17 | feat(telemetry): report portable text editor and app sdk versions (#14922) | b699078 |
| @stipsan | fix(search): close vstack tags in SearchChromeStory (#14927) | 4e3733d |
| @jordanl17 | fix(releases): detect scheduled draft edits when deleting a schedule (#14787) | a28d84a |
| @jordanl17 | feat(form): collapse long arrays behind a show all items toggle (#13870) | 83a9f83 |
| @stipsan | test(storybook): add chromatic sentinels for studio navbar drawer menus, search no-results and dev server stopped screen (#14900) | e639361 |
| squiggler-app[bot] | fix(deps): update portabletext (#14890) | b2f1c73 |
| @stipsan | refactor(sanity): migrate shared ui primitives and trivial styled wrappers to vanilla-extract (#14905) | 859b35c |
| @stipsan | refactor(field): migrate static field preview and diff wrapper styles to vanilla-extract (#14906) | 724b84c |
| @stipsan | refactor(structure): migrate document pane inspector and timeline styles to vanilla-extract (#14907) | 458ab08 |
| @pedrobonamin | fix(studio): show draft indicator for draft-only documents (#14859) | 5813869 |
| @stipsan | ci(e2e): install chromium in every playwright shard when the browser cache misses (#14916) | 3e2f281 |
| @laurenashpole | chore: migrate stack in core/studio/components (#14898) | cee91bc |
| @laurenashpole | chore: migrate stack in misc form directories (#14886) | d8c86b1 |
| @laurenashpole | chore: migrate stack in misc core/studio directories (#14896) | 90b3b6d |
| @laurenashpole | chore: migrate stack in form/inputs (#14744) | e99e4c2 |