Skip to content

Releases: sanity-io/sanity

v3.44.0

29 May 13:48
Compare
Choose a tag to compare

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

Customizing restore action now works

This releases fixes a bug preventing developers removing or customising the "restore" document action using the document.actions Studio configuration property.

Studio will now respect changes you make to the "restore" document action, but please note that you must set the action property to "restore" on your DocumentActionComponent. The action property allows Studio to identify the restore action.

Example

import {RocketIcon} from '@sanity/icons'
import {type DocumentActionComponent} from 'sanity'

export const TestCustomRestoreAction: (
  action: DocumentActionComponent,
) => DocumentActionComponent = (restoreAction) => {
  const action: DocumentActionComponent = (props) => ({
    ...restoreAction(props),
    label: 'Custom restore',
    tone: 'positive',
    icon: RocketIcon,
  })

+ action.action = 'restore'
  return action
}

Other bugfixes

  • Fixes an issue that could under certain conditions cause a circular structure to enter an infinite loop. Shoutout to @sarahsvedenborg and @stian-svedenborg for identifying the issue and proposing a fix.
  • Resolves a type error caused by the missing preview property in DocumentComponents.
  • Fixes an issue causing cross dataset reference search not returning hits in certain cases.
  • Improves text selection of full screen Portable Text editors (PTE).
  • Fixes issue where nested fullscreen PTEs were unable to open the block style dropdown.
  • Fixes issue causing EXIF metadata not being included when uplading multiple images through drag + drop. Thanks @xuzuodong!
  • Fixes bugs related to when the PTE is using a Reference input directly as the annotation type (not wrapped in a object type).
  • Add automatically resolving of some validation errors in the PTE.
  • Fixes bug causing "Untitled" to appear as title for array and object fields, even when explicitly passing undefined as title to renderDefault().

📓 Full changelog

Author Message Commit
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6731) 1587dfe
Pedro Bonamin fix(core): add retry to image observer and loading state (#6709) 0f51f9d
Ash feat(sanity): use optimistic locking when publishing documents (#6711) 6fe8c69
jordanl17 EDX-1352: batch select sheet list documents (#6713) 10b596a
Michael fix(cli): graphql api flag is respected during validation (#6615) c739eea
renovate[bot] chore(lockfile): update dependency @sanity/telemetry to v0.7.8 (#6732) 4307a3c
renovate[bot] chore(lockfile): update dependency i18next to v23.11.5 (#6733) 922235f
Per-Kristian Nordnes refactor(portable-text-editor): automatically resolve some validation errors (#6705) 6062a9a
Per-Kristian Nordnes fix(core/form): prohibit focus and unset on root input (#6706) 4a2f141
Cody Olsen chore: setup CI check for react compiler errors (#6730) 9c7175f
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6734) fe807a8
Hash Brown fix: EXIF data on Image asset not included when uploading multiple images to array type, or via drag-and-drop (#6708) 222418a
Robin Pyon fix(pte): improve text selection in fullscreen inputs (#6642) 6163d96
renovate[bot] fix(deps): Update dev-non-major (#6719) dadfcfa
Rune Botten fix(core): avoid attribute names being scanned as symbols 23f6c67
Cody Olsen chore: change the action to use warnings and only fail on new ones (#6740) ebef5cb
renovate[bot] chore(lockfile): update dependency @sanity/telemetry to v0.7.8 (#6743) a230bbf
renovate[bot] chore(deps): update dependency @vitejs/plugin-react to ^4.3.0 (#6744) 7551264
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.18 (#6746) 913740d
renovate[bot] chore(lockfile): update dependency @sanity/import to v3.37.4 (#6749) e5b04d1
renovate[bot] chore(lockfile): update dependency @sanity/export to v3.38.1 (#6748) 0dbf0c5
renovate[bot] fix(deps): Update dev-non-major (#6745) 7c44121
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.65 (#6747) 79a79a3
Cody Olsen fix: handle React Compiler errors (#6750) 403f485
Ash feat(sanity): use Actions API when restoring drafts 47e5420
Ash feat(sanity): add timeline test ids 038a1a2
Ash test(e2e): add test for restore document action e9b967f
Christian Grøngaard chore: add initial page-building test studio (#6735) cca14f3
Bjørge Næss fix(core): remove id from patch when using server actions (#6751) 7b90cad
Ash fix(sanity): respect Studio configuration when rendering "restore" document action (#6637) 6ba71f2
Binoy Patel chore(ci): set a shorter cache on manifest (#6660) 069dd31
renovate[bot] chore(lockfile): update dependency i18next to v23.11.5 (#6755) 6043919
renovate[bot] chore(lockfile): update dependency react-barcode to v1.5.3 (#6756) 89c86c6
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.12 (#6757) 9025619
renovate[bot] fix(deps): update dependency get-it to ^8.5.0 (#6758) 6b98663
renovate[bot] fix(deps): Update dev-non-major (#6759) 5893609
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.67 (#6761) 543d755
renovate[bot] fix(deps): update dependency @sanity/client to ^6.18.3 (#6762) 3e1bc3e
RitaDias fix(core): unable to open block style select when in nested PTEs in fullscreen (#6738) 9f7ab8b
Per-Kristian Nordnes test(portable-text-editor): add test for empty array value (#6764) a13e22c
Christian Grøngaard chore(page-building): configure build outputs (#6768) 076f9b8
Bjørge Næss fix(core): fix issue with nested preview fields not being included in legacy text search (#6767) 044ac39
jordanl17 feat(structure): sheet list prototype (#6741) f0670bf
Espen Hovlandsdal chore(deps): update dependency @sanity/bifur-client to ^0.4.0 (#6645) a79ea02
Simeon Griggs chore: correct grammar for open-source (#6766) f8ee0f2
Rico Kahler fix: resolve type error by inlining DocumentComponents definition (#6703) 10e1bc3
Herman Wikner fix(core): reactions menu open issue (#6765) 3f52b83
Bjørge Næss fix(form): fix issue making circular structures sometimes causing infinite loop (#6699) 7efdeeb
Per-Kristian Nordnes fix(portable-text-editor): add autoresolving validations and fix normalization issues (#6770) c458289
renovate[bot] fix(deps): update dependency @sanity/client to ^6.19.0 (#6781) 1961904
Bjørge Næss fix(form): properly support passing undefined as title to renderDefault() for array and object fields (#6774) f341c2d
Binoy Patel feat: store all versions in the manifest (#6769) 1fcc0f2
renovate[bot] chore(lockfile): update dependency @portabletext/react to v3.1.0 (#6788) 02fa562
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.10 (#6786) 517a1a9
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.13 (#6787) 43f1766
renovate[bot] fix(deps): Update dev-non-major (#6789) 772d464
renovate[bot] chore(deps): update linters (#6790) 674a6cb
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v2 (#6792) 8665a16
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.12 (#6793) 9d7c67d
Christian Grøngaard fix(form): avoid spreading key prop (#6776) eeba7f2
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.12 (#6794) 7d0d86a
renovate[bot] chore(lockfile): update dependency @sanity/telemetry to v0.7.9 (#6795) be1065f
Cody Olsen chore(deps): bump eslint-plugin-react-compiler (#6791) ea7db00
renovate[bot] chore(deps): update dependency @sanity/icons to v3 (#6797) 63e3c32
Cody Olsen chore(react-compiler): up the max warnings limit (#6801) aa95805
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.11 (#6799) 42fd4bf
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.14 (#6800) faa5bcf
renovate[bot] fix(deps): Update dev-non-major (#6798) 6640ad4
Bjørge Næss refactor(core): stabilize studio usage of actions API (#6783) 112b66c

v3.43.0

21 May 20:15
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

✨ Highlights

  • The sanity init command for Next.js-embedded Studios is updated to install next-sanity v9 and next v14 as per best practices.
  • Adds support for // @sanity-typegen-ignore comments that will ignore certain queries from type generation (thanks @largis21!).

🐛 Notable Bugfixes

  • Fixes an issue where the scheduled publishing tool is displayed as the only available plugin when no other plugins are added.
  • Adds memoization to minimize unnecessary calls to initial value functions, improving performance.
  • Removes a circular reference to usePaneRouter that caused build warnings and potential execution order issues.
  • Fixes bugs related to the Portable Text Input when using a Reference input directly as the annotation type. This change prohibits focus and unset on the root input, preventing abrupt modal closures and ensuring proper cleanup and function execution.

📓 Full changelog

Author Message Commit
renovate[bot] fix(deps): Update dev-non-major (#6659) ab0f97d
Pedro Bonamin fix(scheduled-publishing): don't include it if it's the only plugin available (#6530) b2fa80b
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.15 (#6666) 30c1f4c
renovate[bot] fix(deps): update dependency groq-js to ^1.9.0 (#6655) 71a0758
renovate[bot] chore(lockfile): update dependency @sanity/export to v3.38.0 (#6654) 1f6b8a8
Ash feat(sanity): use actions API when discarding drafts c1755d1
Ash feat(sanity): add test ids to confirm dialog buttons 73d51cb
Ash test(e2e): add tests for discardChanges document action 33564a2
renovate[bot] chore(deps): update dependency framer-motion to v11.2.0 (#6668) 673ba0c
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.3 (#6667) 71e6319
renovate[bot] chore(deps): update dependency esbuild to ^0.21.2 (#6656) fc79956
renovate[bot] chore(deps): update dependency lerna to ^8.1.3 (#6657) 7960627
renovate[bot] fix(deps): Update dev-non-major (#6673) 409d7df
Carolina Gonzalez feat: fetch feature toggle to enable serverside document actions (#6418) 8610fc6
renovate[bot] fix(deps): update dependency @sanity/client to ^6.18.2 (#6674) 4da4ae5
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.8 (#6675) e8a40e2
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.55 (#6672) 7b5bbe7
renovate[bot] fix(deps): update dependency get-it to ^8.4.30 (#6676) 0715793
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.4 (#6681) f97c348
renovate[bot] fix(deps): Update dev-non-major (#6680) ab4a9e8
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.5 (#6687) a61a679
renovate[bot] chore(deps): update dependency framer-motion to v11.2.2 (#6689) e27e063
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.9 (#6691) 3aa444f
renovate[bot] chore(deps): update dependency recast to ^0.23.7 (#6658) 3912e82
renovate[bot] fix(deps): Update dev-non-major (#6690) ec179d0
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.16 (#6692) 80d4620
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.59 (#6693) 1164a6b
Robin Pyon feat(pte): add initialActive prop to PortableTextInput (#6638) 5add977
Pedro Bonamin fix(schedule-publishing): avoid polling in upsell mode (#6670) 87889d1
Cody Olsen chore: setup dev:next-studio to use react v19 (#6685) 61d1bc3
renovate[bot] chore(deps): update dependency framer-motion to v11.2.3 (#6696) e6b4fdc
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.10 (#6701) af0eee4
renovate[bot] fix(deps): Update dev-non-major (#6700) 77785ff
Pedro Bonamin feat(structure): add sheet list table view. (#6647) c5916d4
Ash feat(sanity): memoize initial value resolver (#6614) 39bab8a
Cody Olsen fix: update @sanity/presentation and remove deprecated internal exports no longer in use (#6694) 69246c1
Cody Olsen fix: remove circular reference to usePaneRouter (#6664) d66def2
jordanl17 feat(structure): Sheet View columns (#6661) d8a37a8
Christian Grøngaard fix: pin framer-motion to an earlier version (#6717) 6c2aea2
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.11 (#6720) 61cc315
Pedro Bonamin fix(tasks): reduce tasks sidebar zoffset (#6718) 5ab0819
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.17 (#6722) babfd2d
Pedro Bonamin fix(tasks): hide footer button until the active document is set (#6695) 93c7d66
jordanl17 fix(structure): fixing incorrect way of setting col visibility (#6716) 06f7902
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.8 (#6724) 17ca815
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.62 (#6723) c6c1724
Cody Olsen feat: upgrade sanity init for Next.js to next-sanity v9 (#6644) f48e38b
largis21 Add support for @sanity-typegen-ignore to ignore queries (#6578) efe8bca
Sindre Gulseth chore(cli): symlink in local packages for the installed sanity cli (#6728) c4b8558
Bjørge Næss fix(i18n): remove extraneous curly brace (#6726) 74f2fd5
Sindre Gulseth feat(typegen): add optout for prettier formatting (#6702) ac5103a

v3.42.1

15 May 21:46
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

🐛 Notable bugfixes

  • Fixes regression introduced in v3.42.0 that crashes the document list pane in Presentation Tool

📓 Full changelog

Author Message Commit
Cody Olsen fix: regression crashing the document list pane in presentation (#6684) 7ae3afd

v3.42.0

14 May 19:41
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

✨ Highlights

Save Vision Query Results

You can now conveniently save the results of your Sanity Vision queries as JSON or CSV files. Simply run your query and click on the new "save result as" buttons in the bottom right corner.

Save Vision Query Results

Custom Components with Intent Handling in Structure Builder

Custom components included in the Structure Builder (like S.component(MyCustomComponent)) can now handle intents. This is especially useful for routing to custom components from global search results or other links. You can achieve this by using the canHandleIntent parameter.

S.listItem()
  .id('translate')
  .title('Translate Test')
  .child(S.component(TranslateExample).id('example')
    .canHandleIntent((intent, params, context) =>  {
      console.log(intent, params, context)
      return true
    }
  ))

🐛 Notable Bugfixes

  • Fixes an issue where Boolean inputs were not always clearly indicated as read-only and disabled.
  • Makes the search/filter in the document "Inspect" dialog case-insensitive.
  • Prevents inputs within the Portable Text Editor from calling element.onFocus() on any opened block or inline-object, thus avoiding unintended modal closures.
  • Prevents extra work on preview prepare functions, ensuring better performance.
  • Fixes miscellaneous bugs and performance issues with Portable Text Editor's block extras and highlight rendering. For example, pointer events are now correctly disabled to avoid unnecessary cursor changes or rendering thrashes.
  • Fixes an issue where the document history panel would appear to load indefinitely

📓 Full changelog

Author Message Commit
jordanl17 fix(studio): adding tooltip to read-only bool inputs (#6580) 55153ac
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6607) 48674b7
Carolina Gonzalez feat: add canHandleIntent to Structure Builder component (#6516) d3d0c04
Espen Hovlandsdal fix(structure): use case insensitive search for inspect dialog (#6588) 1dca6db
Carolina Gonzalez test(core): await publish action to prevent test flakiness (#6609) fad1628
renovate[bot] fix(deps): update dependency get-it to ^8.4.29 (#6603) cc08614
renovate[bot] fix(deps): update dependency @sanity/client to ^6.18.0 (#6604) c2b143e
Rostislav Melkumyan feat(vision): add "save result as json/csv" buttons (#6158) 14be9b6
Per-Kristian Nordnes fix(core/form): prevent onFocus for root object paths being called by editing form (#6610) 516ada5
jordanl17 feat(core, structure) sheet list menu option (#6593) 724da99
Binoy Patel chore(bundle): remove unnecessary bundles and make root imports index (#6616) 5f0227c
Robin Pyon feat(pte): add hideToolbar and fullscreen props to PortableTextInput (#6621) 800149f
Robin Pyon fix(pte): don't render the PTE block extras container when not in use, disable pointer events on highlights (#6620) 4c73ded
Evensix skip recalling invokePrepare (#6608) 2729437
Bjørge Næss fix(core): update test snapshots (#6629) 20b66b1
Bjørge Næss fix(e2e): support headless/headful env var toggle (#6558) 92260a4
Robin Pyon feat: add icon to BlockStyleDefinition (#6613) 2e69eee
Robin Pyon feat(pte): initial support for renderEditable in portable text inputs (#6627) 1d0fd3e
Binoy Patel chore(ci): add a circleci config to bundle packages (#6446) f4c7cfe
renovate[bot] chore(lockfile): update dependency esbuild to v0.21.2 (#6602) b63af70
Pedro Bonamin fix(pte): cursor presence causes pte error (#6622) b13fff4
Robin Pyon feat(pte): expose data-attributes on PTE Text + Object blocks (#6641) fceff23
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.14 (#6630) dd5cc7d
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.7 (#6633) 34b4754
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.53 (#6631) f58a005
Cody Olsen chore(ci): tweak renovate preset to better align with branch rulesets (#6648) ef39982
renovate[bot] chore(deps): update dependency styled-components to ^6.1.11 (#6636) 55ab489
Cody Olsen refactor(renovate): group non major dev deps (#6652) 1812de6
renovate[bot] fix(deps): update dependency @sanity/client to ^6.18.1 (#6653) 083960f
Binoy Patel fix(core): fixes issue with history loading indefinitely (#6539) 52a5308
Sindre Gulseth fix(typegen): move type new line separator into formatter (#6649) 109a180
Sindre Gulseth chore(schemaExtraction): add a newline to the extracted schema.json (#6650) 4beb29e
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6662) c7ad47b

v3.41.2

14 May 15:41
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

🐛 Notable bugfixes

  • Resolves a Maximum update depth exceeded crash in Presentation Tool.

📓 Full changelog

Author Message Commit
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.2 (#6632) 43823f6

v3.41.1

08 May 09:31
Compare
Choose a tag to compare

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

  • Fixes a regression in Presentation Tool introduced in v3.41.0 that causes it to crash in embedded studios.

📓 Full changelog

Author Message Commit
Binoy Patel test(core): fixes flaky test with document publish (#6595) 2a8375a
renovate[bot] chore(deps): update linters (#6590) 59b8ce8
renovate[bot] chore(deps): update dependency styled-components to ^6.1.10 (#6585) 5e727e0
renovate[bot] chore(lockfile): update dependency zod to v3.23.7 (#6527) 571dd56
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.13 (#6599) d9f9188
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.51 (#6600) 56a8a79
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.17 (#6584) 0819c40
Cody Olsen fix(presentation): regression causing a crash when in an embedded studio (#6606) 99dfb60

v3.41.0

07 May 15:22
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

✨ Highlights

  • The Portable Text Editor (PTE) now supports drag-n-dropping + pasting of images and files into Image and File blocks.

🐛 Notable bugfixes

  • Fixes a bug where importing a variable inside an imported file would fail in Typegen.
  • Fixes issues in the PTE where tools would show as being active for a selection when only part of the selection used the tool. Now tools will show as active only when all highlighted selections use the tool.
  • Fixes an Attempted import error related to using swr in embedded studios.
  • Fixes an issue in which listeners would sometimes not close if they were unsubscribed from shortly after opening.
  • Fixes an issue in which users were incorrectly seeing the scheduled publishing upsell UI.
  • When child within the PTE is created without a _key, we now automatically create one for it, avoiding unnecessary warning.
  • Fixes an issue in tasks in which the UI showed that they were created but the transaction didn't end.

📓 Full changelog

Author Message Commit
Herman Wikner feat(comments): add telemetry (#6541) 2d35256
Sindre Gulseth fix(typegen): pass resolved path instead of the imported path (#6540) e7ffe93
Cody Olsen fix: use vercelStegaClean util from @vercel/stega (#6544) 790bc8f
Pedro Bonamin fix(pte): preserve block key when pressing enter at start of block (#6521) 7df5396
Ash fix(sanity): do not order by _updatedAt when relevance ordering is used with Text Search API search strategy (#6537) 0ede4cf
Pedro Bonamin chore(test-studio): bump vercel stega version (#6545) 96f3841
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6547) ad28225
renovate[bot] fix(deps): update dependency @sanity/client to ^6.16.0 (#6548) 35b19c2
Tommy Petty chore(i18n): fix imports for useTranslation (#6517) 869b698
jordanl17 fix(pte): tools are active only when all blocks use the tool (#6524) 169e5fd
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.17 (#6551) 24f97ab
Binoy Patel chore: package build (#6394) 5a889fc
Rico Kahler fix: remove unconditional external from vite build (#6554) f1e9546
Cody Olsen fix: inline swr, date-fns-tz and @vvo/tzdb to restore embedded studios (#6553) 9a50252
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.10 (#6549) f8f1b47
renovate[bot] chore(deps): update dependency @vercel/stega to v0.1.2 (#6546) 6a2cdda
Bjørge Næss fix(deps): replace hashlru with quicklru (#6557) d634727
Espen Hovlandsdal chore(deps): update dependency @sanity/client to v6.17.1 (#6561) 7dd2d84
Cody Olsen fix: remove cleanStegaUnicode helper (#6564) 2e224d4
renovate[bot] fix(deps): update dependency @sanity/client to ^6.17.2 (#6567) 154d90b
shur feat: add cliInitializedAt field to project metadata (#6538) 15486f7
Pedro Bonamin fix(schedule-publishing): update flag used to check scheduledPublishing (#6543) 57fcbac
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.47 (#6550) 25cbd4e
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.11 (#6573) b31a151
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.18 (#6574) 77654c1
Herman Wikner fix(core): collapsed range decorations (#6568) 70ab283
Pedro Bonamin chore(scheduled-publishing): update schedule tool upsell layout (#6572) 295ea72
Pedro Bonamin fix(tasks): update tasks panel z index (#6571) 3b3125c
Pedro Bonamin feat(pte): create new text blocks if needed (#6560) cadd496
RitaDias refactor(@sanity): remove warning for when child within PTE has no key (#6565) e1fc2a0
Binoy Patel test(core): add test that only one listener is open when navigating list (#6569) 161b926
renovate[bot] fix(deps): update dependency get-it to ^8.4.28 (#6576) 47ef785
Pedro Bonamin fix(tasks): close the form only after the task is created (#6450) e089eb7
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.6 (#6575) 48321e6
Fred Carlsen feat(form/inputs): add support for image drop+paste in PTE input (#6534) e964b1e
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.14.0 (#6577) 0812390
renovate[bot] chore(deps): update dependency vite to ^4.5.3 (#6583) ed5aca8
Carolina Gonzalez fix: use discard when doc is not published (#6535) 9c86166
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.15.0 (#6591) 1d88df6
renovate[bot] chore(deps): update dependency esbuild to ^0.21.0 (#6589) fada62f
Pedro Bonamin fix(pte): insert empty text block after removing void block (#6552) 379510f
Binoy Patel test(core, desk): add tests for keyvalue storage (#6587) ab94bea

v3.40.0

30 Apr 17:06
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

✨ Highlights

Presence cursors in the Portable Text Editor

Sanity Studio has always supported real-time collaboration, but you have yet to be able to see where others are working within the Portable Text Editor. By upgrading, you'll get a similar experience to Google Docs when editing block content.

Presence cursors in the Portable Text Editor

This release also includes bug fixes for the Portable Text Editor:

  • The Portable Text Editor will now remove the invisible Stega-encoded characters if you copy-paste from a preview using Visual Editing
  • The cursor will not move out of viewpoint when deleting a character in PTE.
  • Creating an annotation at the bottom of a PTE will no longer scroll you to the top.
  • Fixes an issue where changing positions of items of an array within PTE would launch a cryptic error

Comments and Tasks are now out of beta

Comments and Tasks are now officially out of beta; hence, we have updated the configuration APIs. Both comments and tasks are enabled by default and for all document types.

Comments configuration migration

Configuration during beta:

// ./sanity.config.ts|js

export default defineConfig({
  // ... rest of config
  document: {
    unstable_comments: {
      enabled: false,
    },
  },
});

New configuration (remove unstable_):

// ./sanity.config.ts|js

export default defineConfig({
  // ... rest of config
  document: {
-   unstable_comments: {
+   comments: {
      enabled: false,
    },
  },
});

Tasks configuration migration

Configuration during beta:

// ./sanity.config.ts|js

export default defineConfig({
  // ... rest of config
  unstable_tasks: { enabled: false },
})

New configuration (remove unstable_):

// ./sanity.config.ts|js

export default defineConfig({
  // ... rest of config
- unstable_tasks: { enabled: false },
+ tasks: { enabled: false },
})

Sanity TypeGen improvements

Thanks for all the feedback about Sanity TypeGen so far! This release ships several improvements and bug fixes:

  • Sanity Typegen now supports count in GROQ projections
  • TypeGen code (sanity.types.ts) is now formatted when a project has a Prettier configuration
  • The TypeGen search path now includes src, app, and sanity folders by default
  • Various bug fixes for type generation
  • Fixes an issue where typegen command would fail on relative imports
  • Fixes a bug where we could not extract or validate schema when the sanity-plugin-mux-input plugin was installed.

Do continue to give us feedback in #typescript in the community!

🐛 Notable bugfixes

  • Fixes ambiguous aria-labels on some Status buttons
  • Fixes issue with inline text comments that would include an inline object.
  • Fixes toast message for document duplicate action

📓 Full changelog

Author Message Commit
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6463) a2faad2
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.4 (#6460) 34a1ae6
Sindre Gulseth fix(cli): mock matchMedia window function (#6472) ea715e8
Bjørge Næss chore: add perf runner to workspace (#6427) 9af065a
Sindre Gulseth fix(typegen): fixes a bug where we imported the wrong relative path (#6457) e1bd1f0
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.39 (#6464) f6af636
Sindre Gulseth feat(typegen): also search for queries in app and sanity folders (#6475) 03cbb12
Sindre Gulseth chore: upgrade groq-js (#6474) 68bb282
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6476) 076b2fc
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.15 (#6465) 2f7674c
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.14 (#6466) 9887e7c
renovate[bot] chore(lockfile): update dependency date-fns-tz to v2.0.1 (#6467) 14b4365
renovate[bot] chore(lockfile): update dependency i18next to v23.11.2 (#6468) 3fcfa42
renovate[bot] chore(lockfile): update dependency zod to v3.23.4 (#6470) bef170b
renovate[bot] chore(lockfile): update dependency next to v14.2.2 (#6469) cb957a6
renovate[bot] chore(lockfile): update dependency react-focus-lock to v2.12.1 (#6471) 05a019a
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.6 (#6482) c903cde
renovate[bot] chore(deps): update react monorepo (#6484) 3c8a329
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.40 (#6483) 0163210
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.8 (#6485) 05aad5c
renovate[bot] chore(deps): update react monorepo to ^18.3.0 (#6490) 144bb21
renovate[bot] chore(lockfile): update dependency @types/react-is to v18.3.0 (#6491) 2225589
Cody Olsen chore: setup next test that embeds the test studio (#6487) edefb66
Bjørge Næss fix(test): remove hydrateroot warning test (#6494) d50a0f1
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6493) c1f9071
Rostislav Melkumyan feat: set print width to 40 (#6068) 2e24fcd
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.7 (#6496) 2b840ba
renovate[bot] chore(deps): update dependency turbo to ^1.13.3 (#6497) fc80d2b
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.11 (#6498) 69b3c64
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.15 (#6499) c8b1d5e
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.16 (#6500) 2dff2bd
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.10 (#6501) 06ef31d
Herman Wikner feat(core): implement presence cursors (#6081) 1522806
renovate[bot] fix(deps): Update react monorepo (#6502) fa9d145
Espen Hovlandsdal chore(lint): add certain unicorn eslint rules (#6352) ba83971
Espen Hovlandsdal test: increase timeout for cross-dataset reference test afea9cf
Espen Hovlandsdal chore: fix incorrect path used in workshop story 61daf0c
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6506) 6486e34
RitaDias fix(structure): uncaught error while swapping images in array in PTE (#6399) c9bfc31
renovate[bot] chore(deps): update dependency @types/react to v18.3.1 (#6507) 311d722
Nina Andal Aarvik fix(core): change scrollintoview block to be nearest (#6328) 509757c
Nina Andal Aarvik fix(core): set scroll boundary to nearest (#6310) 0dae0da
RitaDias fix(@sanity): issue where hidden unicode characters were bloating document in PTE (#6440) ffa68ec
Per-Kristian Nordnes chore: add codeowners to block-tools 479e71f
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6508) ff26edd
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.8 (#6509) 4bb667d
cngonzalez feat: use prefersLatestPublished parameter in DocumentPaneProvider (#6486) 3da55ae
cngonzalez fix: prevent looping requests to keyvalue in recent searches (#6480) 232385e
Binoy Patel feat(singletons): add a singleton package exports 884fca1
Binoy Patel feat(singletons): add eslint rule for boundaries bfd9a30
Binoy Patel refactor(core): move ConnectorContext to singletons 3008a1c
Binoy Patel refactor(core): move PreviewCardContext to singletons 30cc592
Binoy Patel refactor(core): move scrollContext to singletons 5ca1b00
Binoy Patel refactor(core): move ZIndexContext to singletons d1a1d40
Binoy Patel refactor(core): move DiffContext to singletons ef08d0a
Binoy Patel refactor(core): move DocumentChangeContext to singletons 0509e58
Binoy Patel refactor(core): move FormBuilderContext to singletons 0f9cf43
Binoy Patel refactor(core): move DocumentIdContext to singletons 79343e4
Binoy Patel refactor(core): move FormValueContext to singletons 2b46b43
Binoy Patel refactor(core): move GetFormValueContext to singletons 3dc7e62
Binoy Patel refactor(core): move HoveredFieldContext to singletons dbedca6
Binoy Patel refactor(core): move FieldActionsContext to singletons c7374f7
Binoy Patel refactor(core): move VirtualizerScrollInstanceContext to singletons 372774e
Binoy Patel refactor(core): move SortableItemIdContext to singletons ffea136
Binoy Patel refactor(core): move PortableTextMarkersContext to singletons ed8f318
Binoy Patel refactor(core): move PortableTextMemberItemsContext to singletons 6325629
Binoy Patel refactor(core): move ReferenceItemRefContext to singletons a25a30b
Binoy Patel refactor(core): move DocumentFieldActionsContext to singletons 6f08a7d
Binoy Patel refactor(core): move FormCallbacksContext to singletons 2518910
Binoy Patel refactor(core): move PresenceContext to singletons 6a02f80
Binoy Patel refactor(core): move ReferenceInputOptionsConte...
Read more

v3.39.1

26 Apr 23:31
Compare
Choose a tag to compare

Installation and upgrading

To initiate a new Studio without installing the CLI globally:

npm create sanity@latest

To upgrade a v3 Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

  • Disables the new search API introduced in v3.38.0 due to a few discovered issues. We'll re-enable it in a future release.
  • Fixes an issue when using the "movie database" template when running npm create sanity

📓 Full changelog

Author Message Commit
Espen Hovlandsdal fix(cli): remove comments from moviedb template, hide location field (#6488) 80f8daf
Espen Hovlandsdal fix(search): revert to old search API for now (#6503) 8a08212

v3.39.0

23 Apr 15:56
Compare
Choose a tag to compare

Install or upgrade Sanity Studio

To initiate a new Sanity Studio project or upgrade an existing one, please refer to our comprehensive guide on Installing and Upgrading Sanity Studio.

If you are updating from a version earlier than 3.37.0, you should also check out this article to ensure your dependencies are up to date.

✨ Highlights

Scheduled Publishing is now part of the core Sanity Studio package

The Scheduled Publishing feature, which up until this release has been available as a plugin for Sanity Studio, has been moved into the core sanity package and enabled by default. Scheduled Publishing is available on all paid plans and trials.

If you wish to opt out of Scheduled Publishing, you can do so in your Studio configuration:

// sanity.config.ts 
export default defineConfig({ 
   // ....
   scheduledPublishing: {
       enabled: false, 
     }
  )

Go to docs and feature announcement blog post to learn more.

Migrating from the Scheduled Publishing plugin to the new built-in configuration:

If you are already using Scheduled Publishing plugin, the first step is to get rid of it and update your studio to the latest release. If you already updated your studio you might have gotten an alert about this.

Run the following command in your project root to uninstall the plugin:

npm uninstall @sanity/scheduled-publishing

Next, remove the plugin from your studio configuration. Typically you'll find this in ./sanity.config.ts|js. Find the scheduledPublishing plugin and do the following changes in your configuration file:

Before:

// sanity.config.ts
import {scheduledPublishing} from '@sanity/scheduled-publishing'

export default defineConfig({
    //....
    plugins: [
      scheduledPublishing({
        // e.g. 12/25/2024 6:30 AM
        inputDateTimeFormat: 'MM/dd/yyyy h:mm a',
      })
    ]
})

After:

-  import {scheduledPublishing} from '@sanity/scheduled-publishing'


export default defineConfig({ 
    // ...
    plugins: [
-     scheduledPublishing({
-       inputDateTimeFormat: 'MM/dd/yyyy h:mm a',
-     })
    ],
+   scheduledPublishing: {
+       enabled: true,
+       inputDateTimeFormat: 'MM/dd/yyyy h:mm a',
+   }
})

🐛 Notable bugfixes

  • Fixes a bug that caused negations to be transformed to wildcard search prefixes if they appeared at the end of a search query.
  • Improves error handling when attempting to run a migration against invalid project configurations.
  • Fixes an issue where a document's validation panel would show a system error message when a field with a validation error was deleted.
  • Fixes a bug that caused _type to be incorrectly parsed from statements in the filter parameter of document lists.
  • Fixes an issue that sometimes caused the Studio to load indefinitely when visited from a task notification email.
Author Message Commit
cngonzalez fix: refactor checkoutPair to allow mutations for liveEdit documents (#6393) f6ae402
Ash fix(core): prevent transformation of negation tokens into wildcard prefix tokens (#6396) f28ef7e
Bjørge Næss fix(migrate): forward possible API error response to error thrown for non 2xx (#6387) 9316475
Rico Kahler refactor(tasks, comments): core plugins (#6333) 3c917d2
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.34 (#6402) 5fc2775
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.12 (#6405) d3e924e
renovate[bot] chore(lockfile): update dependency @sanity/preview-url-secret to v1.6.9 (#6404) 4c6f1e2
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.12 (#6403) 6802d29
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.17 (#6406) 82e505f
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.5 (#6407) 98bb233
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.1.4 (#6408) 59cad0b
renovate[bot] fix(deps): update dependency get-it to ^8.4.26 (#6409) 159f542
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.7.1 (#6410) e5252e1
Pedro Bonamin fix(codeowners): update codeowners for tasks and comments (#6414) d286050
Rico Kahler test: add sanity-plugin-hotspot-array (#6401) d591b18
Binoy Patel fix: TS import paths importing index.ts twice incorrectly (#6415) 6066e92
Pedro Bonamin fix(tasks): update tasks upsell provider client version (#6413) 61a887c
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.0 (#6421) 72e34f8
renovate[bot] chore(lockfile): update dependency zod to v3.22.5 (#6420) 5c7352c
Cody Olsen refactor: use @sanity/prettier-config (#6423) e75e390
renovate[bot] chore(deps): update dependency recast to ^0.23.6 (#6422) 2b30eb6
Bjørge Næss chore: turn server actions on by default in test-studio (#6425) dd61ead
RitaDias fix(@sanity): issue where hidden unicode characters were bloating document in PTE (#6424) ce46077
Per-Kristian Nordnes Revert "fix(@sanity): issue where hidden unicode characters were bloating document in PTE (#6424)" cac48bb
Per-Kristian Nordnes fix(portable-text-editor): support collapsed range decorations (#6428) 2d02d62
renovate[bot] fix(deps): update dependency get-it to ^8.4.27 (#6434) 5fb7ddf
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.13 (#6432) f4e482d
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.19 (#6433) 4e32715
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v6.8.1 (#6431) 26b8c76
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.13 (#6436) 846cf68
renovate[bot] chore(lockfile): update dependency @sanity/preview-url-secret to v1.6.10 (#6435) 7b20162
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.6 (#6437) 3eb44db
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.14 (#6438) 177b4b5
renovate[bot] chore(deps): update dependency @sanity/tsdoc to v1.0.36 (#6444) 8f05301
renovate[bot] chore(deps): update peter-evans/create-pull-request digest to 9153d83 (#6443) 035c59d
Tommy Petty fix(structure): update to not crash validation panel if unable to get path title (#6417) d5f8fb6
renovate[bot] chore(lockfile): update dependency @sanity/eventsource to v5.0.2 (#6445) b8f3666
Herman Wikner fix(comments): conditional rendering of CommentsProvider (#6412) 379396e
Per-Kristian Nordnes perf(portable-text-editor): improve range deocration render perf (#6441) c9b1ebb
Rico Kahler fix(structure): resolve static types in document list filters (#6439) 048ce0b
Rico Kahler fix(core): fix autocomplete for defineType in VSCode (#6447) 3ff78f6
Ash test(e2e): fix unawaited assertion (#6442) 37b6291
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.7 (#6448) f9634f4
Pedro Bonamin fix(tasks): update taskURL for notification target (#6395) 7c8cebf
Sindre Gulseth fix(typegen): fixes a case where we track ratio as NaN (#6309) b0f405e
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.20 (#6461) d7f1067
Cody Olsen chore: remove _internalBrowser from typesVersions (#6451) c1f1fdf
Rico Kahler chore(deps): bump @sanity/export (#6462) 348a3a9
Pedro Bonamin feat(scheduled-publishing): move scheduled publishing into core. (#6416) a6fc5af