Patch Changes
Permalink
#7469
e24fc0eThanks @joshbermanssw! - Bump the final-form family to the TypeScript releases
final-form4.20.10 → ^5.0.1,final-form-arrays^3.1.0 → ^4.0.1,react-final-form^6.5.9 → ^7.0.1. All three majors are the same event: a coordinated Flow → TypeScript rewrite published on 2025-06-07 and labelled as carrying no API changes.react-final-form@7is where React 19 was added to the peer range, which clears the last unmet peer warning on install outside the GraphiQL chain.They must move together because each peers on the next:
react-final-form@7requiresfinal-form@^5, andfinal-form-arrays@3peers onfinal-form@^4.final-form-set-field-datastays put — its peer is>=1.2.0.#7472
d7cdea7Thanks @kulesy! - FixButtonandIconButtonnot passingdisabledto the DOM. Both components used the prop only to pick styling (pointer-events-none), which blocks the pointer but not the keyboard, so every disabled button in the CMS stayed focusable and could still be activated with Enter or Space.busyis now treated as disabled too, closing a double-submit path on in-flight buttons.disabledis omitted whenButtonrenders as a tag that does not support it (as='a').#7468
00a8b82Thanks @joshbermanssw! - Drop the deprecatedcrypto-jsdependency
@tinacms/cliused it in one place, to generate the defaultNEXTAUTH_SECREToffered duringtinacms init.crypto.lib.WordArray.random(16).toString()is replaced withrandomBytes(16).toString('hex')fromnode:crypto, which produces the same 32-character hex string.tinacmsdeclared the dependency without ever importing it.#7469
e24fc0eThanks @joshbermanssw! - Declare the field props thatreact-final-form's index signature used to cover
FieldRenderPropscarried[otherProp: string]: anyin v6, so the extrasFieldsBuilderpasses to every field plugin —tinaForm,index,children,experimental_focusIntent— type-checked implicitly. v7's TypeScript rewrite dropped that index signature, so they are now declared onFieldPropsdirectly. The rich-text plugin'srawMode,setRawModeandrawEditorare declared on its own props rather than the shared type.No runtime change; these props were always being passed.
#6763
8d94e35Thanks @kulesy! - Fix "Save to new branch" failing with "Branch operation failed" when the derived branch name is not a valid Git ref, e.g. when a collection'spathhas a trailing slash, producingcontent/articles//foo.mdxand the invalid reftina/articles//foo. The default branch name derived from the file path, and any user-typed name, are now normalised to a valid ref: repeated and leading/trailing slashes collapse, characters Git forbids in refs (whitespace, control characters,~ ^ : ? * [ \and the@{sequence) become hyphens,..runs collapse, and leading dots and trailing./.lockare stripped per path component. Saving is disabled while the name normalises to an empty string. The same normalisation now runs when creating a branch from the branch switcher and from the deleted-branch recovery modal, and the duplicatedformatBranchNamehelpers are unified into a single util (the legacy branch switcher previously deleted invalid characters; it now replaces them with hyphens like the main switcher).#7469
e24fc0eThanks @joshbermanssw! - Adddata-testhooks to group-list and blocks field controlsMirrors the hooks already on simple list fields, so end-to-end tests can target the add button and field wrapper of an object list or a blocks field without depending on Tailwind classes. Nested fields carry their full path, e.g.
add-item-blocks.0.actions.#7483
4d08c25Thanks @kulesy! - Fix two admin regressions that appear once the TinaCloud session check starts failing. Making the collection list settle instead of spinning left the previously fetched data in place, so switching collections rendered the last collection's documents under the new collection's heading; on a fresh mount it leftcollectionundefined with no error set, soGetCollectionran its auto-open effect against it and threw, which the top-level error boundary caught and replaced the admin with a raw TypeError card. A failed session check now sends the user straight back to the login modal with a "Your session has ended" message, and signing back in returns them to the page they were on.GetCollectionandGetDocumentalso stop handingundefinedto their children, showing an "Unable to load" popup for non-auth load failures, andGetCollection's auto-open effect bails out early, which clears the same crash on a failedfetchCollection.#7445
37ca62bThanks @kulesy! - Skip TinaCloud identity requests when no auth token is stored. Logged-out admin loads no longer produce misleading 401/CORS console errors; a clear console message now points at the login popup console instead. Also fixes an unawaited auth guard in GetDocument, stops the document view from loading forever when that guard rejects the request, and fixes an unhandled promise rejection when the project settings request fails.#7469
e24fc0eThanks @joshbermanssw! - Adddata-testhooks to list field controlsThe add and delete buttons on
list: truefields had no stable selector, so end-to-end tests had to target Tailwind classes. Addsdata-test="list-<name>"on the field wrapper,data-test="add-item-<name>"on the add button, anddata-test="delete-item-<name>.<index>"on the delete button shared with group-list and blocks fields.Every hook carries the full field path. The wrapper hook lands on the outer field wrapper, so a nested list's delete buttons are descendants of the outer list's wrapper; a bare id would make
[data-test="list-x"] [data-test="delete-item"]match the wrong row once lists nest.#7445
37ca62bThanks @kulesy! - Fix the collection list and collection search hanging on the loading screen when the session check says the user is not signed in. Both now settle and render instead of spinning until the page is reloaded.Updated dependencies [
4f90806,00a8b82,00a8b82,de5c7d7]:
- @tinacms/mdx@2.2.1
- @tinacms/search@1.2.24
- @tinacms/bridge@0.3.1
- @tinacms/schema-tools@2.9.0
View on GitHub