Skip to content

Releases: sanity-io/sanity

v3.36.4

03 Apr 17:47
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 an issue in the Portable Text editor in which annotations were not opening (bug introduced in v3.36.3)
  • Fixes a potential cross-origin error from being shown in the developer console

📓 Full changelog

Author Message Commit
Pedro Bonamin fix(core): remove custom options in comments upsell request (#6201) 46c7ce8
Pedro Bonamin fix(structure): annotations not opening in portable text editor (#6198) 907c904

v3.36.3

02 Apr 15:49
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 Sanity Studio, run this command in its folder:

npm install sanity@latest

Notable changes

  • Increases the default height of the Portable Text editor

Notable bugfixes

  • Fixes the --enforce-required-fields flag for the sanity typegen generate command not correctly respecting validation rules
  • Fixes a few focus issues where the Portable Text editor would sometimes jump to the start of a block or scroll to a previously opened block on focus inside of the Presentation tool
  • Fixes an issue in which when the tasks panel is open, searching for content in the Cmd + K search changes target document rather than searches the studio

📓 Full changelog

Author Message Commit
Tommy Petty fix(pte): update default height of PTE in Form (#6119) 5756753
Sindre Gulseth fix(schema-extraction): check for _required field in validation rules (#6151) 5ba26a5
Cody Olsen chore: add prettier-plugin-packagejson (#6155) 8f7fe70
renovate[bot] chore(deps): update pnpm to v8.15.6 (#6154) 07b0745
renovate[bot] chore(lockfile): update dependency framer-motion to v11.0.24 (#6144) 954c892
Rupert Dunk fix(structure): improve document pane path handling (#6129) 9b4d105
renovate[bot] chore(deps): update babel monorepo (#6159) eb97fe2
renovate[bot] chore(deps): update dependency @types/babel__traverse to ^7.20.5 (#6160) 16f32c9
Sindre Gulseth feat(schema): handle assetRequired when extracting schema with enforceRequiredFields (#6157) cd52979
Sindre Gulseth chore(deps): upgrade groq-js to latest (#6162) 8db7485
Pedro Bonamin fix(tasks): don't open tasks search on hotkey + enter (#6165) d387316
ecospark[bot] chore(deps): dedupe pnpm-lock.yaml (#6164) 74a7a75
Sindre Gulseth chore(codegen): add enforceRequriedFields to spinner output (#6163) b68e650

v3.36.2

28 Mar 20:39
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 an issue where clicking "Publish" and possible other actions would throw the error Sanity LocaleContext value missing.
  • Fixes an issue in which users' names were sometimes displayed in lowercase in the tasks assignee list.

📓 Full changelog

Author Message Commit
Pedro Bonamin fix(tasks): don't lowercase users when searching in the assignee menu (#6138) 27643c8
cngonzalez fix: add default listFormat locale where LocaleProvider may not be available (#6147) 3c4d4cf

v3.36.1

27 Mar 18:53
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 an issue where the studio might crash on "orphaned marks" in the Portable Text Editor.
  • Fixes an issue that caused the tasks plugin to be inserted multiple times in studios using more than one instance of the Structure Tool.

📓 Full changelog

Author Message Commit
Pedro Bonamin fix(tasks): group changes done to the same field (#6132) 61c7ef8
Espen Hovlandsdal fix(i18n): allow list formatter without arguments in Translate component (#6135) 3e5b8d6
Pedro Bonamin fix(core): remove duplicateds tasks plugins (#6134) a0fce46
Sindre Gulseth fix(typegen): add placeholder group to allow typegen to show in help (#6133) 45f0406

v3.36.0

26 Mar 18:08
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 Sanity Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Sanity TypeGen (beta): Generate types for your schema and GROQ queries

This release comes with Sanity TypeGen, the new tooling in the Sanity CLI that enables extracting the schema into a static representation (schema.json) and to generate TypeScript type definition for it, as well as for GROQ query results.

You can learn more about Sanity TypeGen:

If you try out Sanity TypeGen, do let us know how it went in the #typescript channel in the Sanity community or to your customer success team.

Tasks (beta): Delegate work within Sanity Studio

This update also includes the beta of Tasks for Sanity Studio. It's a way to assign tasks related to documents, delegate them to team members, and track their status across the project.

image

If you wish to disable tasks, you can do so by adding the following to sanity.config.ts:

export default defineConfig({
  ...restOfConfig,
  unstable_tasks: {
    enabled: false,
  },
})

Documentation for Tasks is in the works and will be announced when ready.

🐛 Notable bugfixes

  • Fixes a bug where all fields got marked as non-optional when extracting schema with --enforce-required-fields.
  • Fixes a bug where Vision would insert new line on cmd-return.

On styled-components@5?

If you encounter an error such as TypeError: Cannot read properties of undefined (reading 'div'), please make sure your Studio doesn't depend on styled-components@5. Updating any such dependencies to styled-components@6 should resolve the error:

npm install styled-components@latest

This error is caused by an ESM/CJS compability issue in @sanity/ui.

📓 Full changelog

Author Message Commit
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.12.1 (#6109) 2014ef5
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.5 (#6104) 0817d8d
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.12 (#6107) 4886b00
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.7 (#6106) 69a5d6d
Sindre Gulseth fix: move typegen cli into @sanity/cli (#6111) 3f37c21
Tommy Petty fix(comments): update close icon to be consistent (#6096) 89fd7ec
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.4 (#6100) 046c090
renovate[bot] chore(deps): update dependency turbo to ^1.13.0 (#6114) 1352e84
Sindre Gulseth chore(typegen): show schema extraction and typegen in help texts (#6122) ec3b25e
Pedro Bonamin fix(pte): PTE inline block object modal closing on validation state changes (#6113) a272c71
Sindre Gulseth fix(schema): correctly assert optional fields with enforce required fields (#6121) f568e14
Espen Hovlandsdal chore: disable import/extensions rule for get-it middleware import (#6127) aca88e9
Sindre Gulseth fix(schemaExtract): guard for list options not being an array (#6128) e4f28e5
Sindre Gulseth chore(codegen): track ratio between unknown nodes and all type nodes (#6125) 3822da2
Sindre Gulseth fix(vision): fixes bug where codemirror would insert a new line on cmd-return (#6123) 971ba9f
Pedro Bonamin fix(tasks): update description input to create blocks edx-1206 (#6126) 852bfca
Pedro Bonamin feat(tasks): add tasks empty states (#6130) 22afbb4
Sindre Gulseth chore(codegen): add cl as codeowners for {code,type}gen (#6118) 94d0934
Sindre Gulseth feat(codegen): attempt to parse groq queries with parameter in slices (#6117) 97c0b0c
shur feat: indicate in metadata that the quickstart option was used in project creation (#6065) 468e76c

v3.35.2

21 Mar 12:42
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 bug that caused inputs to lose focus when their value changed

📓 Full changelog

Author Message Commit
Sindre Gulseth chore(schema): add tracing for schema extraction (#6019) ab5ae9f
Sindre Gulseth chore(codegen): add total types and align telemetry prop names (#6077) 7ecff65
renovate[bot] chore(deps): update dependency @portabletext/toolkit to ^2.0.13 (#6098) c5faca2
renovate[bot] chore(lockfile): update dependency @sanity/color to v3.0.2 (#6101) 7c82923
renovate[bot] chore(deps): update dependency @sanity/icons to ^2.11.4 (#6099) a42e9f3
renovate[bot] fix(deps): update dependency get-it to ^8.4.16 (#6108) eca9c30
Herman Wikner fix(comments): drop permission check (#6110) d6a3891

v3.35.1

20 Mar 17:36
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

  • Increases width of all inline popovers in the Portable Text Editor
  • Fixes an issue where incorrect studio version was shown in the help menu
  • Fixes an issue where incorrect loading message shown while a pane is resolving in the structure tool

📓 Full changelog

Author Message Commit
renovate[bot] chore(deps): update tiryoh/gha-jobid-action digest to c1d1cf7 (#6064) ae05976
renovate[bot] chore(deps): update thollander/actions-comment-pull-request digest to fabd468 (#6063) 13dcbdb
renovate[bot] chore(deps): update peter-evans/create-pull-request digest to 70a41ab (#6062) 7bd281c
renovate[bot] chore(deps): update dependency express to ^4.18.3 (#6067) 2aa4b64
renovate[bot] chore(lockfile): update dependency @sanity/locale-nn-no to v1.1.5 (#6071) 0254106
renovate[bot] chore(lockfile): update dependency @sanity/locale-sv-se to v1.2.3 (#6073) 0b1d581
renovate[bot] chore(lockfile): update dependency @sanity/locale-pt-pt to v1.1.2 (#6072) 19a8dd6
renovate[bot] chore(lockfile): update dependency @sanity/locale-nb-no to v1.1.4 (#6070) cc60405
renovate[bot] chore(lockfile): update dependency @sanity/locale-ko-kr to v1.1.3 (#6069) 1d5f3cb
Nina Andal Aarvik fix(core): increase default width of PT inline popovers (#5878) f809fe3
Herman Wikner fix(comments): permission check (#6057) 2163ff0
Sindre Gulseth fix(codegen): include babel.config.json in the published package (#6075) 2e06b84
Sindre Gulseth fix(codegen): uppercase query type names (#6080) 7402093
Sindre Gulseth refactor(codegen): move Result appending into type generation (#6082) 63432da
Herman Wikner fix(comments): hide resolve action if no handler is provided (#6084) 4767b32
Tommy Petty fix(tasks): copy changes for Tasks feature (#6085) 3ab20ef
Bjørge Næss fix: use workspace protocol for all workspace dependencies (#6088) 0653134
Herman Wikner fix(tasks): ui adjustments (#6086) f89111c
Pedro Bonamin fix(tasks): update info passed to the tasks comments notification context (#6087) 6635d72
Pedro Bonamin fix(tasks): update how addonDatasetProvider ready state is set (#6076) a08a82f
Sindre Gulseth fix(codegen): use relative path when globbing for files (#6083) 5bc629f
Pedro Bonamin fix(tasks): add new sanityTasks flag (#6089) ae89244
Binoy Patel Revert "fix: use workspace protocol for all workspace dependencies (#6088)" (#6092) abfc5d2
Espen Hovlandsdal fix(structure): use correct loading messages while resolving panes (#6093) d784f82
Cody Olsen refactor: use PKG_VERSION from @sanity/pkg-utils instead of manually regexing SANITY_VERSION (#6078) d514bfc

v3.35.0

19 Mar 16:53
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 an issue that would cause duplicate entries in the list of recent searches.
  • Updates the type of value within ObjectFieldProps to accept a type parameter, allowing for dynamically setting the expected type. (thanks @shixish)

📓 Full changelog

Author Message Commit
Ash fix(core): include request tag in Text Search API requests (#5988) 471854e
cngonzalez chore: update licenses across packages for current year (#6002) c11256b
renovate[bot] chore(lockfile): update dependency @sanity/assist to v2.0.4 (#6006) 37a4ed3
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.7 (#6007) 1041460
cngonzalez fix: ensure that useStructureToolSetting updates only when necessary (#6004) a4d8d2d
renovate[bot] fix(deps): update dependency get-it to ^8.4.13 (#6013) 1da1feb
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.5 (#6012) 01dec12
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.0 (#6015) 2f16c94
Sindre Gulseth fix: schema extraction object type name (#6014) dcd5537
Sindre Gulseth Fix bug where we cant resolve custom types (#6016) 217a47d
Herman Wikner feat(tasks): add comment delete confirm dialog (#6009) c105115
Herman Wikner fix(comments): hide context menu actions if handler is undefined (#6011) cb55bc5
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.1 (#6022) 09d4e27
renovate[bot] chore(deps): update dependency @types/use-sync-external-store to ^0.0.6 (#6023) 910f04c
renovate[bot] chore(deps): update dependency turbo to ^1.12.5 (#6025) 02699dd
renovate[bot] chore(deps): update dependency vite to ^4.5.2 (#6026) 767e99e
renovate[bot] chore(deps): update pnpm to v8.15.5 (#6027) a2aedcb
renovate[bot] chore(deps): update dependency @portabletext/toolkit to ^2.0.11 (#6030) 639580f
renovate[bot] chore(deps): update dependency @babel/preset-env to ^7.24.0 (#6033) 795167f
renovate[bot] chore(lockfile): update dependency @portabletext/react to v3.0.12 (#6031) 9f745f0
renovate[bot] chore(deps): update dependency styled-components to ^6.1.8 (#6024) d405517
renovate[bot] chore(deps): update linters (#6029) baaa56b
renovate[bot] chore(deps): update dependency esbuild to v0.20.2 (#6028) a480588
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to ^3.3.8 (#6036) 871b450
Ash fix(util): safely stringify path segments named as GROQ data types (e.g. null) (#5986) 561ee14
Ash refactor(core): use path toString function from @sanity/util/paths (#5987) 522477a
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to v4 (#6037) 114d8bb
renovate[bot] chore(deps): update dependency @portabletext/toolkit to ^2.0.12 (#6042) eb86c41
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.8.2 (#6043) 039eb1f
renovate[bot] chore(lockfile): update dependency @sanity/logos to v2.1.7 (#6045) 92e62aa
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.4 (#6046) aa37fd9
renovate[bot] chore(lockfile): update dependency mendoza to v3.0.6 (#6047) b94419a
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.8 (#6048) bd44216
renovate[bot] fix(deps): update dependency get-it to ^8.4.14 (#6049) 01866ed
renovate[bot] chore(lockfile): update dependency @portabletext/react to v3.0.13 (#6044) 9ab928f
Ash feat(core): integrate with Text Search API ordering (#6001) a59f4bc
renovate[bot] chore(deps): update dependency @sanity/pkg-utils to ^4.4.3 (#6050) b6334ee
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.6 (#6052) ac206c2
Pedro Bonamin fix(tasks): hide safari details marker (#6020) f70cf04
Herman Wikner fix(tasks): only display tasks with edits in the drafts menu (#6053) 050f452
Herman Wikner feat(tasks): ui improvements (#5990) a58b596
cngonzalez fix: use more reliable comparison in deduping search results (#6034) 1dd2ccc
Sindre Gulseth feat(codegen): add codegen skeleton package (#5979) e94c02f
Sindre Gulseth feat(codegen): add groq finder methods. (#5980) 7addeef
Sindre Gulseth feat(codegen): add typegen methods to codegen package (#5981) baf7cf0
Sindre Gulseth feat(codegen): add CLI to generate types given a codegen config (#5982) 3742b3f
Sindre Gulseth feat(codegen): expose referenced type as hidden symbol (#6008) 2826c46
Sindre Gulseth chore(codegen): refactor codegen cli group to use typegen cli group (#6051) ff07ff2
Sindre Gulseth chore(codegen): bind groq-js to ^1.5.0 (#6055) 9595f3a
renovate[bot] chore(deps): lock file maintenance (#6035) c70653a
Sindre Gulseth fix(codegen): update help text and generated comments copy (#6059) 2afbc3b
Tommy Petty feat(tasks): Localize Task feature (#6017) 06d812c
Binoy Patel chore(deps): pin @sanity/migrate groq to 1.5.0 (#6060) c36a3b0
Andrew Wessels Update fieldProps.ts (#5902) 10d86e0

v3.34.0

14 Mar 17:56
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 your Sanity Studio, run this command in its folder:

npm install sanity@latest

✨ Highlights

Persisted user settings

User settings (like desk list sort orders, view modes, and global search history) are now stored securely server-side by Sanity. This means that these settings do not need to be re-selected across devices or browsers, and will be persisted wherever a user logs into their Studio.

🐛 Notable bugfixes

  • Fixes a bug in the Portable Text Editor where merging two text blocks could result in data loss in the topmost block when several editors are inside the document.
  • Migration CLI tooling now always places its output in the project root, and provides better messaging about this.

📓 Full changelog

Author Message Commit
Ash feat(cli): improve migration runner output (#5904) 11d15ce
Ash fix(cli): use inferred project root when creating migrations from subdirectory (#5905) 1d2775c
Herman Wikner fix(core): handle no userId in getUser (#5992) c9ceac0
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.6 (#5999) 51d3bbd
Per-Kristian Nordnes fix(portable-text-editor): fix and test issue with merge block operation (#5996) 96bc72b
Pedro Bonamin feat(tasks): add notification data for tasks document and tasks comments (#5998) 8e63552
cngonzalez feat(core): store and fetch user settings from backend (#5939) ecb3495

v3.33.0

12 Mar 20:11
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 Sanity Studio, run this command in its folder:

npm install sanity@latest

🐛 Notable bugfixes

  • Resolves an issue where users were not redirected to their original destination after re-authenticating, ensuring seamless access to linked content within the Studio.
  • _projectId and _strengthenOnPublish are now valid values for Initial Value Templates, allowing for Cross Dataset Reference values in templates.
  • Fixes a type bug where the type for defineType and defineField was not being captured correctly.

Other Features

  • __experimental_search is deprecated in favor of field-level search options for strings and Portable Text arrays. You should now be able to define search weights in your schema, like:
defineField({
  name: 'title',
  type: 'string',
  options: {
    search: {
      weight: 10,
    },
  },
})
  • Document Actions can now specify a group, which will allow users to specify whether a specific document action should appear in the footer or in the document's context menu.
  • Adds ability to open the hotspot and crop dialog by double-clicking image preview.

📓 Full changelog

Author Message Commit
Tommy Petty Update PULL_REQUEST_TEMPLATE.md (#5921) 3afe5a2
Herman Wikner fix(comments): enable check (#5918) c230bb5
Herman Wikner fix(comments): lost comment message while document is reconnecting (#5928) ec4da46
Bjørge Næss test(sanity): use dev aliases in the validation test's worker threads (#5927) 8bf1c92
Herman Wikner feat(comments): support task comments (#5934) 75273af
Herman Wikner fix(comments): use _weak instead of weak (#5936) 642224f
Tommy Petty fix(pte): updates zoffset for PopoverEditDialog to not be on top of InspectDialog (#5882) 69b3552
Nina Andal Aarvik fix(core): add onDoubleClick to open image crop (#5815) e3bfee0
Bjørge Næss fix(ci): align pnpm install across all workflows (#5920) f103967
Rico Kahler feat(core): redirect to previous path after login (#5932) 96cd0b6
Pedro Bonamin feat(tasks): bootstrap tasks plugin (#5704) dd0794a
cngonzalez refactor(core): use KeyValueStore for recent searches (#5872) c531a6b
Herman Wikner fix(comments): handle lack of access to inline comments (#5925) 2d4f60c
Pedro Bonamin chore(comments): add support for comments layout avatar config (#5944) f42ea79
Tommy Petty fix(core): remove prev and next month buttons in calendar input (#5931) 01f7df2
Pedro Bonamin feat(core): add groups to document actions, introduce paneActions group (#5933) 4e95e09
Rico Kahler fix(core): upgrade and fix types for typescript 5.4 (#5943) 4e72b80
Rico Kahler fix(core): allow _projectId and _strengthOnPublish in templates (#5942) 5adca88
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.7.0 (#5955) 0314111
renovate[bot] chore(lockfile): update dependency @sanity/react-loader to v1.9.3 (#5952) 01bd4ab
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.4 (#5954) a5a1a5d
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.3 (#5953) fc22e9f
renovate[bot] chore(lockfile): update dependency @sanity/icons to v2.11.0 (#5957) 502fda0
renovate[bot] chore(deps): update dependency @sanity/assist to v2 (#5960) f7019ff
Pedro Bonamin fix(deps): update @sanity/icons (#5956) 15f53bd
Bjørge Næss chore(test): exclude the github reporter from playwright tests for now (#5959) 334917f
Cody Olsen chore: add PTE in Presentation race condition reproduction (#5961) 4adda38
Cody Olsen chore: always bump @sanity/ui (#5963) 1884546
renovate[bot] chore(lockfile): update dependency @sanity/icons to v2.11.2 (#5962) bf22266
Sindre Gulseth feat: add cmd to generate a JSON representation of schema (#5919) c1e4f2a
renovate[bot] fix(deps): update dependency get-it to ^8.4.11 (#5967) 25dce83
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.8 (#5966) a1237d6
Herman Wikner feat(core): add navbar actions (@internal) (#5968) 8336c9f
renovate[bot] chore(lockfile): update dependency framer-motion to v11.0.12 (#5969) 01f260b
renovate[bot] chore(deps): update dependency @sanity/icons to ^2.11.2 (#5970) 1b0eb08
renovate[bot] chore(deps): update dependency @sanity/visual-editing to v1.7.1 (#5971) 3101795
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.9 (#5972) 218d09c
renovate[bot] fix(deps): update dependency @sanity/presentation to v1.11.5 (#5973) 9254565
Nina Andal Aarvik fix(tasks): show pending tasks in document footer (#5894) 177bc79
renovate[bot] fix(deps): update dependency @sanity/client to ^6.15.4 (#5975) a701e1c
renovate[bot] fix(deps): update dependency @sanity/ui to ^2.0.10 (#5976) b7bcc2d
renovate[bot] chore(lockfile): update dependency @sanity/assist to v2.0.3 (#5977) be49900
Pedro Bonamin feat(tasks): use FormBuilder to create and edit tasks. (#5897) 908577e
Pedro Bonamin feat(tasks): track activity changes with document history. (#5965) 0a76390
Bjørge Næss chore(deps): pin typescript to 5.3 (#5984) 193b4b8
Ash feat(core): add new search config API (#5948) 3c458c8