diff --git a/.changeset/app-raw-editor-error-boundary.md b/.changeset/app-raw-editor-error-boundary.md deleted file mode 100644 index d0b649c037..0000000000 --- a/.changeset/app-raw-editor-error-boundary.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@tinacms/app": patch ---- - -Switching a rich-text field to raw markdown no longer blanks the whole admin. - -Two things could take the editing session down. The raw editor arrives as a lazy chunk, so a failed fetch after a deploy or on a flaky connection tore the page down. It also serializes the field while rendering, so content it cannot represent threw with the chunk already loaded. Applying inline code and then bolding a word inside it was enough. Either way you got a blank page: no message, no way back, and unsaved work in the other fields gone with it. - -The failure now stays inside the field it came from. You get the thrown message, which for the formatting case names what to undo, and a button back to the rich-text editor. diff --git a/.changeset/app-typescript-not-runtime.md b/.changeset/app-typescript-not-runtime.md deleted file mode 100644 index 08d83ecd59..0000000000 --- a/.changeset/app-typescript-not-runtime.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@tinacms/app": patch ---- - -Remove `typescript` from `@tinacms/app`'s production dependencies. - -It was declared in both `dependencies` and `devDependencies`, but nothing in `src/` imports it — the package ships raw source and is compiled by `@tinacms/cli`. Every TinaCMS user was installing a second copy of the TypeScript compiler (~23 MB) for nothing. It remains a devDependency for type-checking. diff --git a/.changeset/bright-drinks-battle.md b/.changeset/bright-drinks-battle.md deleted file mode 100644 index f50cf9da4c..0000000000 --- a/.changeset/bright-drinks-battle.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"tinacms": patch -"@tinacms/schema-tools": patch ---- - -refactor: facilitate token refresh through tinacloud diff --git a/.changeset/bump-multer-off-eol-1x.md b/.changeset/bump-multer-off-eol-1x.md deleted file mode 100644 index b6960d660e..0000000000 --- a/.changeset/bump-multer-off-eol-1x.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'next-tinacms-cloudinary': patch -'next-tinacms-dos': patch ---- - -Bump `multer` to 2.2.0. multer 1.x is end of life; 2.x changes file-handling behaviour, so review upload paths when upgrading. diff --git a/.changeset/bump-tar-7-5-21.md b/.changeset/bump-tar-7-5-21.md deleted file mode 100644 index 44c23b89c8..0000000000 --- a/.changeset/bump-tar-7-5-21.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'create-tina-app': patch ---- - -Bump `tar` to 7.5.21 diff --git a/.changeset/bump-vite-off-eol-4.md b/.changeset/bump-vite-off-eol-4.md deleted file mode 100644 index c3b6012230..0000000000 --- a/.changeset/bump-vite-off-eol-4.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@tinacms/cli": patch -"@tinacms/scripts": patch ---- - -Bump `vite` off the EOL 4.x line (`^4.5.9`, resolving to the last-ever `4.5.14`) to `^6.4.3`, and `@vitejs/plugin-react` 3 → 4, closing several path-traversal / file-disclosure advisories that were never backported to vite 4.x. - -**Dev server:** Vite 6 serves its dev endpoints (`@vite/client`, `@react-refresh`, and the SPA entry) under the configured `base` — Vite 4 served them at the server root. The injected dev HTML now prefixes those URLs with the admin base path, so `tinacms dev` loads the editor again instead of failing with "Failed loading TinaCMS assets". - -**esbuild:** the `esbuild` catalog pin moves `^0.24.2` → `^0.25.0` to match the version vite 6 bundles, so `@tinacms/cli` installs a single esbuild native binary instead of two. - -**Other fallout from the majors:** `@vitejs/plugin-react` 4 removed the `fastRefresh` option, so Fast Refresh is now always on in `tinacms dev` (it had been explicitly disabled) — if editor HMR misbehaves, that's the knob that changed. `splitVendorChunkPlugin` (deprecated since Vite 5.2.7, still exported in 6.4.3) is deliberately dropped from the build config as a simplification — the admin build now emits a single bundle with no separate vendor chunk, unless a `manualChunks` split is reinstated. The `process.env` define switches from a `new Object(...)` wrapper to a plain JSON literal, since esbuild ≥0.25 (bundled by vite 6) rejects the old form. The Node.js floor for the `tinacms` binary rises from 14.18 to 18, matching vite 6's engine requirement. diff --git a/.changeset/clear-waves-take.md b/.changeset/clear-waves-take.md deleted file mode 100644 index 2f6a913fb4..0000000000 --- a/.changeset/clear-waves-take.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"tinacms": patch -"@tinacms/app": patch ---- - -feat: add announcements banner diff --git a/.changeset/cli-telemetry-anonymous-events.md b/.changeset/cli-telemetry-anonymous-events.md deleted file mode 100644 index b127822fce..0000000000 --- a/.changeset/cli-telemetry-anonymous-events.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@tinacms/cli': patch ---- - -Capture CLI telemetry as anonymous events so builds no longer create a single-use person profile per run diff --git a/.changeset/cloudinary-escape-search-expression.md b/.changeset/cloudinary-escape-search-expression.md deleted file mode 100644 index e149d4d2f5..0000000000 --- a/.changeset/cloudinary-escape-search-expression.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"next-tinacms-cloudinary": patch ---- - -Escape the listing directory before interpolating it into the Cloudinary search expression, so folder names are always matched literally. diff --git a/.changeset/codegen-v7.md b/.changeset/codegen-v7.md deleted file mode 100644 index 6b791d3ac3..0000000000 --- a/.changeset/codegen-v7.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@tinacms/cli": patch ---- - -Move graphql-codegen to its current majors (~33 MB). - -`@graphql-codegen/plugin-helpers@7` drops lodash entirely. Before this, the CLI declared `plugin-helpers` directly at `^7.0.1` while the five codegen plugins it uses all wanted `^5` — so our pin took the hoisted slot and each plugin nested its own copy, each dragging a `lodash` pinned to `~4.17.0` that couldn't use the hoisted `4.18.1` either. Six copies of `plugin-helpers` and six of `lodash`, all but one identical. **Now one of each.** - -Three things v7 needs, all handled here: - -- **jest couldn't load it.** codegen v6's CJS build `require()`s `auto-bind@5`, which is ESM-only. Node 22 can do that; jest's module registry can't, and jest doesn't transform `node_modules`. Babel now down-levels that one package. -- **`@graphql-inspector/core` v6** makes `ChangeType` a const rather than an enum; the type is `TypeOfChangeType`. -- **codegen v5+ stops exporting `Exact`** from the generated `types.ts`, and defaults unmapped scalars to `unknown` instead of `any` — which would break every ``, since rich-text bodies ride on the `JSON` scalar. Both are pinned back. - -No behaviour change: the generated `types.ts`, `frags.gql` and `queries.gql` are unchanged, and the kitchen-sink typechecks with zero new errors. diff --git a/.changeset/collapse-icons-to-lucide.md b/.changeset/collapse-icons-to-lucide.md deleted file mode 100644 index 993addd358..0000000000 --- a/.changeset/collapse-icons-to-lucide.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@tinacms/app": patch -"tinacms": patch ---- - -Collapse three icon libraries into `lucide-react` (~85 MB). - -`tinacms` declared `react-icons` (84 MB), `lucide-react` (32 MB) and `@heroicons/react` as production dependencies, so every user installed all three. Icon usage is entirely internal admin chrome — there is no icon-picker, no `icon` schema field type, and no dynamic whole-set import — so `react-icons` and `@heroicons/react` have been removed in favour of `lucide-react`, which was already the de-facto house set. - -Not a breaking change for user content, schemas, or plugins: `ScreenPlugin.Icon` is typed `any`, and `CloudConfigOptions` is not publicly exported. The internal `IconType` prop type is now lucide's `LucideIcon`. - -Six icons have no exact lucide counterpart and were substituted: `BsCheckCircleFill`/`BsExclamationOctagonFill` → `CircleCheck`/`OctagonAlert` (lucide is outline-only), `MdSyncProblem` → `RefreshCwOff`, `TbLogs` → `ScrollText`, `BiRename` → `SquarePen`, `MdOutlineDataSaverOff` → `Info`. diff --git a/.changeset/common-eyes-hear.md b/.changeset/common-eyes-hear.md deleted file mode 100644 index 4929847ab6..0000000000 --- a/.changeset/common-eyes-hear.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"tinacms": patch -"@tinacms/app": patch -"@tinacms/schema-tools": patch ---- - -feat: when WorkOS is enabled, use a redirect-based workflow for authentication diff --git a/.changeset/create-tina-app-default-astro-starter.md b/.changeset/create-tina-app-default-astro-starter.md deleted file mode 100644 index 66532f8c90..0000000000 --- a/.changeset/create-tina-app-default-astro-starter.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"create-tina-app": minor ---- - -Make Astro the default starter. The interactive `What starter code would you like to use?` prompt now pre-selects `Astro Starter` (moved to the top of the list). When `create-tina-app` runs without a TTY and without a `--template` flag, the Astro starter is now selected automatically instead of the prompt receiving empty input and exiting as `user cancelled`. - -Note that a fully non-interactive run still needs `--pkg-manager` and a project name. Those two prompts have no non-TTY fallback yet, so a bare `create-tina-app` in CI still stops at the package manager question. diff --git a/.changeset/drop-headlessui.md b/.changeset/drop-headlessui.md deleted file mode 100644 index 9abc4a3e62..0000000000 --- a/.changeset/drop-headlessui.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@tinacms/app": patch -"tinacms": patch ---- - -Drop `@headlessui/react` (~50 MB). - -Headless UI v2 pulls in the entire React Aria stack (`react-aria` 34.8 MB, `react-stately` 9.4 MB, `@internationalized/*`) — about 50 MB installed — to provide components Radix already covers. `tinacms` was shipping three headless component libraries at once (`@radix-ui/*` in 22 files, `@headlessui/react` in 11, `@ariakit/react` in 1). - -The 11 Headless UI files now use Radix (`Popover`, `DropdownMenu`) and local state, consolidating on the library that was already the majority. No new dependencies were added. - -`Transition`/`TransitionChild` are replaced by a small local equivalent with the same prop API (`show`, `appear`, `enter*`/`leave*`). It uses `element.getAnimations({ subtree: true })` so a parent transition with no classes of its own still waits for its children to finish leaving before unmounting. diff --git a/.changeset/drop-monaco-editor-package.md b/.changeset/drop-monaco-editor-package.md deleted file mode 100644 index 45eb12890a..0000000000 --- a/.changeset/drop-monaco-editor-package.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@tinacms/app": patch -"tinacms": patch ---- - -Stop shipping the `monaco-editor` package (~73 MB). - -Every import of `monaco-editor` in shipped source was **types-only**. The editor itself has always been fetched from a CDN at runtime by `@monaco-editor/loader`, so the 73 MB installed on every user's disk was never executed — and was a different version (0.31.0) from the one that actually runs (0.55.1, the loader's default). - -`monaco-editor` is a *required* peer dependency of `@monaco-editor/react`, and npm 7+ auto-installs required peers, so removing it from our `dependencies` was not enough on its own. `@tinacms/app` now uses `@monaco-editor/loader` directly — the same loader `@monaco-editor/react` wraps, so the CDN and editor version are unchanged — and `monaco-editor` is kept as a devDependency for its types. - -The copy of the raw editor in `packages/tinacms` was dead code: nothing imported it, it was not exported, and its `parseMDX`/`stringifyMDX` were stubs returning empty values. The live raw editor lives in `@tinacms/app` and is injected into `tinacms` as the `rawEditor` prop. It has been deleted, letting `tinacms` drop both monaco packages entirely. - -No behaviour change: raw MDX mode still loads the same editor from the same CDN. diff --git a/.changeset/great-buses-roll.md b/.changeset/great-buses-roll.md deleted file mode 100644 index d04d8b2600..0000000000 --- a/.changeset/great-buses-roll.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"tinacms": patch ---- - -Fix the preview iframe going unresponsive after resizing the sidebar. - -Dragging the resize handle used to disable pointer events on the entire app so the drag would survive the cursor crossing into the preview. Releasing the drag over the preview left it dead to clicks and scrolling until you clicked the sidebar again. The handle now uses pointer capture, which keeps the drag targeting the handle without touching the rest of the page, so the preview stays interactive throughout. - -Also corrects the handle's fullscreen guard, which read a `fullscreen` key the sidebar context has never provided and so never fired. No behaviour change today, since nothing currently puts the sidebar into the fullscreen display state. diff --git a/.changeset/mdx-editor-facing-mark-errors.md b/.changeset/mdx-editor-facing-mark-errors.md deleted file mode 100644 index 40e870c4d7..0000000000 --- a/.changeset/mdx-editor-facing-mark-errors.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@tinacms/mdx": patch ---- - -Serializer errors that a content editor can hit now say what to change. - -The raw markdown editor prints the thrown message verbatim in the field, so these are read by whoever is editing, not only by developers. "Marks inside inline code are not supported" put a Slate term in front of someone who has never met it, and messages naming internal node types did the same. - -Reworded: the two mark-combination errors, the block and inline node errors, and the one raised for a field type that cannot be written. Each now names what to remove. Schema and template errors are unchanged, since a developer hits those on first run and needs the exact term. diff --git a/.changeset/mdx-line-endings-and-task-lists.md b/.changeset/mdx-line-endings-and-task-lists.md deleted file mode 100644 index 0fcd415cad..0000000000 --- a/.changeset/mdx-line-endings-and-task-lists.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@tinacms/mdx": patch ---- - -`parseMDX` now normalizes CRLF to LF before parsing. A carriage return used to survive micromark into the value of a text node, so a document authored on Windows carried `\r` into the editor. - -GFM task list items now keep their checked state through a round trip. `parseMDX` reads `checked` onto the `li` node, and both stringifiers write it back. A ticked checkbox previously came back unticked on save. `ListItemElement` gains an optional `checked?: boolean` — set only on task list items. diff --git a/.changeset/mdx-mark-edge-whitespace.md b/.changeset/mdx-mark-edge-whitespace.md deleted file mode 100644 index 99257b5c52..0000000000 --- a/.changeset/mdx-mark-edge-whitespace.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@tinacms/mdx": patch ---- - -Bold, italic and strikethrough now survive a leading or trailing space in the selection. Selecting `word ` and applying bold used to save `**word **`. CommonMark cannot close emphasis that sits against a space, so the published page showed literal asterisks and the formatting was lost, even though the editor still looked right. The space now sits outside the markers, giving `a **word** more`. - -Indentation at the start of a line is kept as well. A bare space there is whitespace a Markdown parser may discard, and four of them open an indented code block, so an indented line used to reload without its spaces on the `mdx` parser and as a code block on the `markdown` parser. This applies to the first line of a paragraph and to a line broken with Shift+Enter. The leading space is now written as ` `, so the text comes back the way it was left. - -The fix also covers marks holding only whitespace, empty marks, marks spanning several text nodes, marks inside a link, and combined bold and italic. Whitespace inside a mark, as in `**Hello *world*, again**`, still round trips unchanged. diff --git a/.changeset/mdx-sanitize-url-subpath.md b/.changeset/mdx-sanitize-url-subpath.md deleted file mode 100644 index 6008a31e1c..0000000000 --- a/.changeset/mdx-sanitize-url-subpath.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@tinacms/mdx": minor -"tinacms": patch ---- - -Add a dedicated `@tinacms/mdx/sanitize-url` subpath export containing just the URL-scheme sanitizer, and point `tinacms`'s rich-text renderer (`TinaMarkdown` / `StaticTinaMarkdown`) at it instead of the root `@tinacms/mdx` entry. Previously, importing `sanitizeUrl` pulled in `@tinacms/mdx`'s full remark/mdast/micromark markdown-parsing bundle (~2MB) into every site's client bundle, even though rich-text rendering only needs the ~15-line sanitizer. The root `@tinacms/mdx` export of `sanitizeUrl` is unchanged and still works. diff --git a/.changeset/media-list-v2-endpoint.md b/.changeset/media-list-v2-endpoint.md deleted file mode 100644 index 0b774bd903..0000000000 --- a/.changeset/media-list-v2-endpoint.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"tinacms": patch ---- - -The media manager now lists assets from the v2 assets-api endpoint. Uploads and deletes are unchanged and stay on v1. Listing behaviour is identical — this is a transport-only move that sets up media search. diff --git a/.changeset/media-manager-rename-local.md b/.changeset/media-manager-rename-local.md deleted file mode 100644 index 6c9bf35c1b..0000000000 --- a/.changeset/media-manager-rename-local.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"tinacms": minor -"@tinacms/cli": minor ---- - -Add a Rename action to the Media Manager, backed by the local dev server. - -Selecting a file in the media preview now offers Rename alongside Insert and Delete. The modal edits the basename, keeps the extension, previews the sanitised result using the same rules uploads apply, and reports collisions and missing files specifically instead of a generic failure. Every open media picker refreshes afterwards, and pickers previewing the renamed file follow it to its new path. - -Renaming does **not** update content that already references the old path — the modal says so explicitly. - -The action only appears when the media store implements `rename`. `TinaMediaStore` implements it for local development via a new `POST /media/rename` route on the CLI dev server; TinaCloud, static and self-hosted repo-media stores do not advertise it, so the action stays hidden there rather than failing on click. Third-party stores (S3, Cloudinary, DigitalOcean Spaces, Azure) can opt in by implementing `MediaStore.rename`. - -`MediaManager.rename()` dispatches `media:rename:start`, `media:rename:success` and `media:rename:failure`. diff --git a/.changeset/media-manager-search-filter.md b/.changeset/media-manager-search-filter.md deleted file mode 100644 index 6fbc171223..0000000000 --- a/.changeset/media-manager-search-filter.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"tinacms": minor -"@tinacms/cli": minor ---- - -Add media-manager search and a folder/file filter, and refresh the grid. - -Search filters the library by file path (debounced, recursive across folders); the `All | Folders | Files` toggle narrows the view. Folders and files render in labelled sections, files show a type badge (JPEG/PNG/MP4…), and videos show a play overlay. - -Search works against both TinaCloud media and local dev media. The local dev-server media endpoint (`@tinacms/cli`) now honours a `search` query param, matching paths recursively within the requested folder (case-insensitive) and staying within the media root. Matching is on the folder-relative path, so a folder name matches the files beneath it, and matching folders surface as their own folder results (local dev media; TinaCloud parity to follow). Results are paginated with the same `limit`/`cursor` contract as an unfiltered listing. - -The search box is opt-in per media store via a new `searchable` flag on the `MediaStore` interface. The default (TinaCloud/local) store sets it; a custom or self-hosted store shows the box only once it sets `searchable` and reads `options.search` in its `list()`, so stores that don't support search don't get a box that returns unfiltered results. - -Also fixes the breadcrumb rendering a duplicate root crumb — and Back not returning to the root — for folder names that carry a trailing slash. diff --git a/.changeset/ninety-deserts-turn.md b/.changeset/ninety-deserts-turn.md deleted file mode 100644 index 9c42b36010..0000000000 --- a/.changeset/ninety-deserts-turn.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"tinacms": minor -"@tinacms/cli": minor -"@tinacms/schema-tools": minor -"@tinacms/web-components": minor ---- - -feat: add tina-markdown web component -feat: add visual-editing library for web components diff --git a/.changeset/remove-dead-monaco-from-tinacms.md b/.changeset/remove-dead-monaco-from-tinacms.md deleted file mode 100644 index 688ef72e81..0000000000 --- a/.changeset/remove-dead-monaco-from-tinacms.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"tinacms": patch ---- - -Remove dead code left over from the `monaco-editor` removal in the mdx field plugin. diff --git a/.changeset/sanitise-tina-markdown-raw-html.md b/.changeset/sanitise-tina-markdown-raw-html.md deleted file mode 100644 index df7f900483..0000000000 --- a/.changeset/sanitise-tina-markdown-raw-html.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@tinacms/web-components": minor ---- - -Sanitise `html` / `html_inline` nodes in `tina-markdown` and add a -`TinaMarkdown.components` map for per-node-type renderers, matching the -`components` prop on the React and Astro renderers. diff --git a/.changeset/spicy-donuts-refuse.md b/.changeset/spicy-donuts-refuse.md deleted file mode 100644 index 37075bd6f0..0000000000 --- a/.changeset/spicy-donuts-refuse.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@tinacms/cli': patch -'@tinacms/scripts': patch ---- - -Bump `esbuild` to 0.28.1, picking up upstream security fixes (GHSA-g7r4-m6w7-qqqr, GHSA-gv7w-rqvm-qjhr) diff --git a/.changeset/tinacms-plate-plugin-type-portability.md b/.changeset/tinacms-plate-plugin-type-portability.md deleted file mode 100644 index 01964d2858..0000000000 --- a/.changeset/tinacms-plate-plugin-type-portability.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"tinacms": patch ---- - -Give the exported Plate plugin arrays (`plugins`, `viewPlugins`, `createEditorPlugins`) an explicit type, so their emitted declarations no longer carry a `.pnpm/` store path. - -The Plate satellite packages take `@udecode/plate` as a peer and never depend on `@udecode/plate-core` directly, so pnpm resolves it through the hoisted store. Once `@tinacms/rich-text` brought in a React 19 copy, the hoisted pick could land on a variant that nothing in `tinacms` is able to name, and `tsc` then failed with TS2742 rather than emit a declaration. Which copy wins varies per install, so the failure came and went. diff --git a/.changeset/warm-months-check.md b/.changeset/warm-months-check.md deleted file mode 100644 index 99c106fe75..0000000000 --- a/.changeset/warm-months-check.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@tinacms/cli": minor ---- - -`tinacms dev` and `tinacms build` now warn at startup when the `tinacms`, `@tinacms/graphql`, or `@tinacms/schema-tools` versions resolved from the project don't satisfy the ranges the CLI was published with, or when two different copies of `tinacms` are installed. A held-back package (stale lockfile entry, partial upgrade, pnpm `minimumReleaseAge`) previously failed silently: the admin built fine but served an older `tinacms` where newer documented features were missing. diff --git a/packages/@tinacms/app/CHANGELOG.md b/packages/@tinacms/app/CHANGELOG.md index 0b7951ad01..8f745daa30 100644 --- a/packages/@tinacms/app/CHANGELOG.md +++ b/packages/@tinacms/app/CHANGELOG.md @@ -1,5 +1,53 @@ # @tinacms/app +## 2.5.11 + +### Patch Changes + +- [#7429](https://github.com/tinacms/tinacms/pull/7429) [`7df6e04`](https://github.com/tinacms/tinacms/commit/7df6e04e4b5574bf7c0ddf8aa1240716fa03d20f) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Switching a rich-text field to raw markdown no longer blanks the whole admin. + + Two things could take the editing session down. The raw editor arrives as a lazy chunk, so a failed fetch after a deploy or on a flaky connection tore the page down. It also serializes the field while rendering, so content it cannot represent threw with the chunk already loaded. Applying inline code and then bolding a word inside it was enough. Either way you got a blank page: no message, no way back, and unsaved work in the other fields gone with it. + + The failure now stays inside the field it came from. You get the thrown message, which for the formatting case names what to undo, and a button back to the rich-text editor. + +- [#7218](https://github.com/tinacms/tinacms/pull/7218) [`4499dcb`](https://github.com/tinacms/tinacms/commit/4499dcb69f3bb614dda24aab9c475c5adf76b403) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Remove `typescript` from `@tinacms/app`'s production dependencies. + + It was declared in both `dependencies` and `devDependencies`, but nothing in `src/` imports it — the package ships raw source and is compiled by `@tinacms/cli`. Every TinaCMS user was installing a second copy of the TypeScript compiler (~23 MB) for nothing. It remains a devDependency for type-checking. + +- [#7388](https://github.com/tinacms/tinacms/pull/7388) [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add announcements banner + +- [#7216](https://github.com/tinacms/tinacms/pull/7216) [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Collapse three icon libraries into `lucide-react` (~85 MB). + + `tinacms` declared `react-icons` (84 MB), `lucide-react` (32 MB) and `@heroicons/react` as production dependencies, so every user installed all three. Icon usage is entirely internal admin chrome — there is no icon-picker, no `icon` schema field type, and no dynamic whole-set import — so `react-icons` and `@heroicons/react` have been removed in favour of `lucide-react`, which was already the de-facto house set. + + Not a breaking change for user content, schemas, or plugins: `ScreenPlugin.Icon` is typed `any`, and `CloudConfigOptions` is not publicly exported. The internal `IconType` prop type is now lucide's `LucideIcon`. + + Six icons have no exact lucide counterpart and were substituted: `BsCheckCircleFill`/`BsExclamationOctagonFill` → `CircleCheck`/`OctagonAlert` (lucide is outline-only), `MdSyncProblem` → `RefreshCwOff`, `TbLogs` → `ScrollText`, `BiRename` → `SquarePen`, `MdOutlineDataSaverOff` → `Info`. + +- [#7327](https://github.com/tinacms/tinacms/pull/7327) [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: when WorkOS is enabled, use a redirect-based workflow for authentication + +- [#7216](https://github.com/tinacms/tinacms/pull/7216) [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Drop `@headlessui/react` (~50 MB). + + Headless UI v2 pulls in the entire React Aria stack (`react-aria` 34.8 MB, `react-stately` 9.4 MB, `@internationalized/*`) — about 50 MB installed — to provide components Radix already covers. `tinacms` was shipping three headless component libraries at once (`@radix-ui/*` in 22 files, `@headlessui/react` in 11, `@ariakit/react` in 1). + + The 11 Headless UI files now use Radix (`Popover`, `DropdownMenu`) and local state, consolidating on the library that was already the majority. No new dependencies were added. + + `Transition`/`TransitionChild` are replaced by a small local equivalent with the same prop API (`show`, `appear`, `enter*`/`leave*`). It uses `element.getAnimations({ subtree: true })` so a parent transition with no classes of its own still waits for its children to finish leaving before unmounting. + +- [#7214](https://github.com/tinacms/tinacms/pull/7214) [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Stop shipping the `monaco-editor` package (~73 MB). + + Every import of `monaco-editor` in shipped source was **types-only**. The editor itself has always been fetched from a CDN at runtime by `@monaco-editor/loader`, so the 73 MB installed on every user's disk was never executed — and was a different version (0.31.0) from the one that actually runs (0.55.1, the loader's default). + + `monaco-editor` is a _required_ peer dependency of `@monaco-editor/react`, and npm 7+ auto-installs required peers, so removing it from our `dependencies` was not enough on its own. `@tinacms/app` now uses `@monaco-editor/loader` directly — the same loader `@monaco-editor/react` wraps, so the CDN and editor version are unchanged — and `monaco-editor` is kept as a devDependency for its types. + + The copy of the raw editor in `packages/tinacms` was dead code: nothing imported it, it was not exported, and its `parseMDX`/`stringifyMDX` were stubs returning empty values. The live raw editor lives in `@tinacms/app` and is injected into `tinacms` as the `rawEditor` prop. It has been deleted, letting `tinacms` drop both monaco packages entirely. + + No behaviour change: raw MDX mode still loads the same editor from the same CDN. + +- Updated dependencies [[`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`f014558`](https://github.com/tinacms/tinacms/commit/f014558a7ece15964b3b2eda942c02fc609dc32f), [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab), [`566f977`](https://github.com/tinacms/tinacms/commit/566f9775bc306f1a41806a29eb22182700765974), [`064b78e`](https://github.com/tinacms/tinacms/commit/064b78e9407d5d7f91ab11dd8b99de8f8ac38ab1), [`a0e0d2e`](https://github.com/tinacms/tinacms/commit/a0e0d2e8d573abfbfb5a3d277ffe1c2b6d692e37), [`2860f56`](https://github.com/tinacms/tinacms/commit/2860f569b3f4f8f6115ee4399af855ea3baa61e1), [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01), [`b6199da`](https://github.com/tinacms/tinacms/commit/b6199da1eeea7de01d5216c9b50c9e158440f891), [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba), [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d), [`5112e60`](https://github.com/tinacms/tinacms/commit/5112e60bd0c98f6de36f63dbf068d252993e586f), [`8c8e297`](https://github.com/tinacms/tinacms/commit/8c8e297efb12324f23785a5f8f7acbceeb3f0a4a)]: + - tinacms@3.12.0 + - @tinacms/mdx@2.2.0 + ## 2.5.10 ### Patch Changes diff --git a/packages/@tinacms/app/package.json b/packages/@tinacms/app/package.json index e6c0cc4635..7d755bd3e1 100644 --- a/packages/@tinacms/app/package.json +++ b/packages/@tinacms/app/package.json @@ -1,6 +1,6 @@ { "name": "@tinacms/app", - "version": "2.5.10", + "version": "2.5.11", "main": "src/main.tsx", "files": [ "src", diff --git a/packages/@tinacms/cli/CHANGELOG.md b/packages/@tinacms/cli/CHANGELOG.md index fd5f312b66..21cb88c564 100644 --- a/packages/@tinacms/cli/CHANGELOG.md +++ b/packages/@tinacms/cli/CHANGELOG.md @@ -1,5 +1,68 @@ # tinacms-cli +## 2.6.0 + +### Minor Changes + +- [#7391](https://github.com/tinacms/tinacms/pull/7391) [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba) Thanks [@Aibono1225](https://github.com/Aibono1225)! - Add a Rename action to the Media Manager, backed by the local dev server. + + Selecting a file in the media preview now offers Rename alongside Insert and Delete. The modal edits the basename, keeps the extension, previews the sanitised result using the same rules uploads apply, and reports collisions and missing files specifically instead of a generic failure. Every open media picker refreshes afterwards, and pickers previewing the renamed file follow it to its new path. + + Renaming does **not** update content that already references the old path — the modal says so explicitly. + + The action only appears when the media store implements `rename`. `TinaMediaStore` implements it for local development via a new `POST /media/rename` route on the CLI dev server; TinaCloud, static and self-hosted repo-media stores do not advertise it, so the action stays hidden there rather than failing on click. Third-party stores (S3, Cloudinary, DigitalOcean Spaces, Azure) can opt in by implementing `MediaStore.rename`. + + `MediaManager.rename()` dispatches `media:rename:start`, `media:rename:success` and `media:rename:failure`. + +- [#7323](https://github.com/tinacms/tinacms/pull/7323) [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512) Thanks [@joshbermanssw](https://github.com/joshbermanssw)! - Add media-manager search and a folder/file filter, and refresh the grid. + + Search filters the library by file path (debounced, recursive across folders); the `All | Folders | Files` toggle narrows the view. Folders and files render in labelled sections, files show a type badge (JPEG/PNG/MP4…), and videos show a play overlay. + + Search works against both TinaCloud media and local dev media. The local dev-server media endpoint (`@tinacms/cli`) now honours a `search` query param, matching paths recursively within the requested folder (case-insensitive) and staying within the media root. Matching is on the folder-relative path, so a folder name matches the files beneath it, and matching folders surface as their own folder results (local dev media; TinaCloud parity to follow). Results are paginated with the same `limit`/`cursor` contract as an unfiltered listing. + + The search box is opt-in per media store via a new `searchable` flag on the `MediaStore` interface. The default (TinaCloud/local) store sets it; a custom or self-hosted store shows the box only once it sets `searchable` and reads `options.search` in its `list()`, so stores that don't support search don't get a box that returns unfiltered results. + + Also fixes the breadcrumb rendering a duplicate root crumb — and Back not returning to the root — for folder names that carry a trailing slash. + +- [#7392](https://github.com/tinacms/tinacms/pull/7392) [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add tina-markdown web component + feat: add visual-editing library for web components + +- [#7283](https://github.com/tinacms/tinacms/pull/7283) [`1c89c44`](https://github.com/tinacms/tinacms/commit/1c89c44f377a56e9637d719d781ba2281ff56e37) Thanks [@kulesy](https://github.com/kulesy)! - `tinacms dev` and `tinacms build` now warn at startup when the `tinacms`, `@tinacms/graphql`, or `@tinacms/schema-tools` versions resolved from the project don't satisfy the ranges the CLI was published with, or when two different copies of `tinacms` are installed. A held-back package (stale lockfile entry, partial upgrade, pnpm `minimumReleaseAge`) previously failed silently: the admin built fine but served an older `tinacms` where newer documented features were missing. + +### Patch Changes + +- [#7297](https://github.com/tinacms/tinacms/pull/7297) [`f74e2d9`](https://github.com/tinacms/tinacms/commit/f74e2d90974e59973bbbfcf4cf118adc4726a17e) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Bump `vite` off the EOL 4.x line (`^4.5.9`, resolving to the last-ever `4.5.14`) to `^6.4.3`, and `@vitejs/plugin-react` 3 → 4, closing several path-traversal / file-disclosure advisories that were never backported to vite 4.x. + + **Dev server:** Vite 6 serves its dev endpoints (`@vite/client`, `@react-refresh`, and the SPA entry) under the configured `base` — Vite 4 served them at the server root. The injected dev HTML now prefixes those URLs with the admin base path, so `tinacms dev` loads the editor again instead of failing with "Failed loading TinaCMS assets". + + **esbuild:** the `esbuild` catalog pin moves `^0.24.2` → `^0.25.0` to match the version vite 6 bundles, so `@tinacms/cli` installs a single esbuild native binary instead of two. + + **Other fallout from the majors:** `@vitejs/plugin-react` 4 removed the `fastRefresh` option, so Fast Refresh is now always on in `tinacms dev` (it had been explicitly disabled) — if editor HMR misbehaves, that's the knob that changed. `splitVendorChunkPlugin` (deprecated since Vite 5.2.7, still exported in 6.4.3) is deliberately dropped from the build config as a simplification — the admin build now emits a single bundle with no separate vendor chunk, unless a `manualChunks` split is reinstated. The `process.env` define switches from a `new Object(...)` wrapper to a plain JSON literal, since esbuild ≥0.25 (bundled by vite 6) rejects the old form. The Node.js floor for the `tinacms` binary rises from 14.18 to 18, matching vite 6's engine requirement. + +- [#7285](https://github.com/tinacms/tinacms/pull/7285) [`c87b028`](https://github.com/tinacms/tinacms/commit/c87b0282b98f7a8e3ebafd7594914856c8692758) Thanks [@kulesy](https://github.com/kulesy)! - Capture CLI telemetry as anonymous events so builds no longer create a single-use person profile per run + +- [#7228](https://github.com/tinacms/tinacms/pull/7228) [`74ea991`](https://github.com/tinacms/tinacms/commit/74ea9912a78a284779ddd81697ab5cdeca762ff8) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Move graphql-codegen to its current majors (~33 MB). + + `@graphql-codegen/plugin-helpers@7` drops lodash entirely. Before this, the CLI declared `plugin-helpers` directly at `^7.0.1` while the five codegen plugins it uses all wanted `^5` — so our pin took the hoisted slot and each plugin nested its own copy, each dragging a `lodash` pinned to `~4.17.0` that couldn't use the hoisted `4.18.1` either. Six copies of `plugin-helpers` and six of `lodash`, all but one identical. **Now one of each.** + + Three things v7 needs, all handled here: + + - **jest couldn't load it.** codegen v6's CJS build `require()`s `auto-bind@5`, which is ESM-only. Node 22 can do that; jest's module registry can't, and jest doesn't transform `node_modules`. Babel now down-levels that one package. + - **`@graphql-inspector/core` v6** makes `ChangeType` a const rather than an enum; the type is `TypeOfChangeType`. + - **codegen v5+ stops exporting `Exact`** from the generated `types.ts`, and defaults unmapped scalars to `unknown` instead of `any` — which would break every ``, since rich-text bodies ride on the `JSON` scalar. Both are pinned back. + + No behaviour change: the generated `types.ts`, `frags.gql` and `queries.gql` are unchanged, and the kitchen-sink typechecks with zero new errors. + +- [#7076](https://github.com/tinacms/tinacms/pull/7076) [`976a93c`](https://github.com/tinacms/tinacms/commit/976a93ca16f85343566b0a3e36618e7330b8d94f) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump `esbuild` to 0.28.1, picking up upstream security fixes (GHSA-g7r4-m6w7-qqqr, GHSA-gv7w-rqvm-qjhr) + +- Updated dependencies [[`7df6e04`](https://github.com/tinacms/tinacms/commit/7df6e04e4b5574bf7c0ddf8aa1240716fa03d20f), [`4499dcb`](https://github.com/tinacms/tinacms/commit/4499dcb69f3bb614dda24aab9c475c5adf76b403), [`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`f014558`](https://github.com/tinacms/tinacms/commit/f014558a7ece15964b3b2eda942c02fc609dc32f), [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab), [`566f977`](https://github.com/tinacms/tinacms/commit/566f9775bc306f1a41806a29eb22182700765974), [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01), [`b6199da`](https://github.com/tinacms/tinacms/commit/b6199da1eeea7de01d5216c9b50c9e158440f891), [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba), [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d), [`5112e60`](https://github.com/tinacms/tinacms/commit/5112e60bd0c98f6de36f63dbf068d252993e586f), [`8c8e297`](https://github.com/tinacms/tinacms/commit/8c8e297efb12324f23785a5f8f7acbceeb3f0a4a)]: + - @tinacms/app@2.5.11 + - tinacms@3.12.0 + - @tinacms/schema-tools@2.9.0 + - @tinacms/graphql@2.4.9 + - @tinacms/metrics@2.1.1 + - @tinacms/search@1.2.23 + ## 2.5.6 ### Patch Changes diff --git a/packages/@tinacms/cli/package.json b/packages/@tinacms/cli/package.json index 5958220b75..a01eec4b63 100644 --- a/packages/@tinacms/cli/package.json +++ b/packages/@tinacms/cli/package.json @@ -1,7 +1,7 @@ { "name": "@tinacms/cli", "type": "module", - "version": "2.5.6", + "version": "2.6.0", "main": "dist/index.js", "typings": "dist/index.d.ts", "files": [ diff --git a/packages/@tinacms/mdx/CHANGELOG.md b/packages/@tinacms/mdx/CHANGELOG.md index 6a1e8fb637..077b836f65 100644 --- a/packages/@tinacms/mdx/CHANGELOG.md +++ b/packages/@tinacms/mdx/CHANGELOG.md @@ -1,5 +1,32 @@ # @tinacms/mdx +## 2.2.0 + +### Minor Changes + +- [#7233](https://github.com/tinacms/tinacms/pull/7233) [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Add a dedicated `@tinacms/mdx/sanitize-url` subpath export containing just the URL-scheme sanitizer, and point `tinacms`'s rich-text renderer (`TinaMarkdown` / `StaticTinaMarkdown`) at it instead of the root `@tinacms/mdx` entry. Previously, importing `sanitizeUrl` pulled in `@tinacms/mdx`'s full remark/mdast/micromark markdown-parsing bundle (~2MB) into every site's client bundle, even though rich-text rendering only needs the ~15-line sanitizer. The root `@tinacms/mdx` export of `sanitizeUrl` is unchanged and still works. + +### Patch Changes + +- [#7431](https://github.com/tinacms/tinacms/pull/7431) [`064b78e`](https://github.com/tinacms/tinacms/commit/064b78e9407d5d7f91ab11dd8b99de8f8ac38ab1) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Serializer errors that a content editor can hit now say what to change. + + The raw markdown editor prints the thrown message verbatim in the field, so these are read by whoever is editing, not only by developers. "Marks inside inline code are not supported" put a Slate term in front of someone who has never met it, and messages naming internal node types did the same. + + Reworded: the two mark-combination errors, the block and inline node errors, and the one raised for a field type that cannot be written. Each now names what to remove. Schema and template errors are unchanged, since a developer hits those on first run and needs the exact term. + +- [#7403](https://github.com/tinacms/tinacms/pull/7403) [`a0e0d2e`](https://github.com/tinacms/tinacms/commit/a0e0d2e8d573abfbfb5a3d277ffe1c2b6d692e37) Thanks [@wicksipedia](https://github.com/wicksipedia)! - `parseMDX` now normalizes CRLF to LF before parsing. A carriage return used to survive micromark into the value of a text node, so a document authored on Windows carried `\r` into the editor. + + GFM task list items now keep their checked state through a round trip. `parseMDX` reads `checked` onto the `li` node, and both stringifiers write it back. A ticked checkbox previously came back unticked on save. `ListItemElement` gains an optional `checked?: boolean` — set only on task list items. + +- [#7427](https://github.com/tinacms/tinacms/pull/7427) [`2860f56`](https://github.com/tinacms/tinacms/commit/2860f569b3f4f8f6115ee4399af855ea3baa61e1) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Bold, italic and strikethrough now survive a leading or trailing space in the selection. Selecting `word ` and applying bold used to save `**word **`. CommonMark cannot close emphasis that sits against a space, so the published page showed literal asterisks and the formatting was lost, even though the editor still looked right. The space now sits outside the markers, giving `a **word** more`. + + Indentation at the start of a line is kept as well. A bare space there is whitespace a Markdown parser may discard, and four of them open an indented code block, so an indented line used to reload without its spaces on the `mdx` parser and as a code block on the `markdown` parser. This applies to the first line of a paragraph and to a line broken with Shift+Enter. The leading space is now written as ` `, so the text comes back the way it was left. + + The fix also covers marks holding only whitespace, empty marks, marks spanning several text nodes, marks inside a link, and combined bold and italic. Whitespace inside a mark, as in `**Hello *world*, again**`, still round trips unchanged. + +- Updated dependencies [[`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d)]: + - @tinacms/schema-tools@2.9.0 + ## 2.1.11 ### Patch Changes diff --git a/packages/@tinacms/mdx/package.json b/packages/@tinacms/mdx/package.json index eae9db0424..b03591d2e6 100644 --- a/packages/@tinacms/mdx/package.json +++ b/packages/@tinacms/mdx/package.json @@ -1,6 +1,6 @@ { "name": "@tinacms/mdx", - "version": "2.1.11", + "version": "2.2.0", "type": "module", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/@tinacms/schema-tools/CHANGELOG.md b/packages/@tinacms/schema-tools/CHANGELOG.md index 627ce7dffb..41e7d596f9 100644 --- a/packages/@tinacms/schema-tools/CHANGELOG.md +++ b/packages/@tinacms/schema-tools/CHANGELOG.md @@ -1,5 +1,18 @@ # @tinacms/schema-tools +## 2.9.0 + +### Minor Changes + +- [#7392](https://github.com/tinacms/tinacms/pull/7392) [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add tina-markdown web component + feat: add visual-editing library for web components + +### Patch Changes + +- [#7304](https://github.com/tinacms/tinacms/pull/7304) [`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - refactor: facilitate token refresh through tinacloud + +- [#7327](https://github.com/tinacms/tinacms/pull/7327) [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: when WorkOS is enabled, use a redirect-based workflow for authentication + ## 2.8.3 ### Patch Changes diff --git a/packages/@tinacms/schema-tools/package.json b/packages/@tinacms/schema-tools/package.json index 014f61ceae..ebc0dc6233 100644 --- a/packages/@tinacms/schema-tools/package.json +++ b/packages/@tinacms/schema-tools/package.json @@ -1,7 +1,7 @@ { "name": "@tinacms/schema-tools", "type": "module", - "version": "2.8.3", + "version": "2.9.0", "main": "dist/index.js", "types": "dist/index.d.ts", "files": [ diff --git a/packages/@tinacms/scripts/CHANGELOG.md b/packages/@tinacms/scripts/CHANGELOG.md index b1efe7948c..2cfeff1ec7 100644 --- a/packages/@tinacms/scripts/CHANGELOG.md +++ b/packages/@tinacms/scripts/CHANGELOG.md @@ -1,5 +1,19 @@ # Change Log +## 1.6.3 + +### Patch Changes + +- [#7297](https://github.com/tinacms/tinacms/pull/7297) [`f74e2d9`](https://github.com/tinacms/tinacms/commit/f74e2d90974e59973bbbfcf4cf118adc4726a17e) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Bump `vite` off the EOL 4.x line (`^4.5.9`, resolving to the last-ever `4.5.14`) to `^6.4.3`, and `@vitejs/plugin-react` 3 → 4, closing several path-traversal / file-disclosure advisories that were never backported to vite 4.x. + + **Dev server:** Vite 6 serves its dev endpoints (`@vite/client`, `@react-refresh`, and the SPA entry) under the configured `base` — Vite 4 served them at the server root. The injected dev HTML now prefixes those URLs with the admin base path, so `tinacms dev` loads the editor again instead of failing with "Failed loading TinaCMS assets". + + **esbuild:** the `esbuild` catalog pin moves `^0.24.2` → `^0.25.0` to match the version vite 6 bundles, so `@tinacms/cli` installs a single esbuild native binary instead of two. + + **Other fallout from the majors:** `@vitejs/plugin-react` 4 removed the `fastRefresh` option, so Fast Refresh is now always on in `tinacms dev` (it had been explicitly disabled) — if editor HMR misbehaves, that's the knob that changed. `splitVendorChunkPlugin` (deprecated since Vite 5.2.7, still exported in 6.4.3) is deliberately dropped from the build config as a simplification — the admin build now emits a single bundle with no separate vendor chunk, unless a `manualChunks` split is reinstated. The `process.env` define switches from a `new Object(...)` wrapper to a plain JSON literal, since esbuild ≥0.25 (bundled by vite 6) rejects the old form. The Node.js floor for the `tinacms` binary rises from 14.18 to 18, matching vite 6's engine requirement. + +- [#7076](https://github.com/tinacms/tinacms/pull/7076) [`976a93c`](https://github.com/tinacms/tinacms/commit/976a93ca16f85343566b0a3e36618e7330b8d94f) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump `esbuild` to 0.28.1, picking up upstream security fixes (GHSA-g7r4-m6w7-qqqr, GHSA-gv7w-rqvm-qjhr) + ## 1.6.2 ### Patch Changes diff --git a/packages/@tinacms/scripts/package.json b/packages/@tinacms/scripts/package.json index ef087dc42c..3bda3ce13b 100644 --- a/packages/@tinacms/scripts/package.json +++ b/packages/@tinacms/scripts/package.json @@ -1,7 +1,7 @@ { "name": "@tinacms/scripts", "type": "module", - "version": "1.6.2", + "version": "1.6.3", "main": "dist/index.js", "files": [ "dist", diff --git a/packages/@tinacms/web-components/CHANGELOG.md b/packages/@tinacms/web-components/CHANGELOG.md new file mode 100644 index 0000000000..f9b92a1b57 --- /dev/null +++ b/packages/@tinacms/web-components/CHANGELOG.md @@ -0,0 +1,17 @@ +# @tinacms/web-components + +## 0.2.0 + +### Minor Changes + +- [#7392](https://github.com/tinacms/tinacms/pull/7392) [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add tina-markdown web component + feat: add visual-editing library for web components + +- [#7392](https://github.com/tinacms/tinacms/pull/7392) [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - Sanitise `html` / `html_inline` nodes in `tina-markdown` and add a + `TinaMarkdown.components` map for per-node-type renderers, matching the + `components` prop on the React and Astro renderers. + +### Patch Changes + +- Updated dependencies []: + - @tinacms/bridge@0.3.1 diff --git a/packages/@tinacms/web-components/package.json b/packages/@tinacms/web-components/package.json index 62b61609c3..0afa03d5de 100644 --- a/packages/@tinacms/web-components/package.json +++ b/packages/@tinacms/web-components/package.json @@ -1,6 +1,6 @@ { "name": "@tinacms/web-components", - "version": "0.1.0", + "version": "0.2.0", "type": "module", "files": [ "package.json", @@ -10,8 +10,8 @@ "license": "Apache-2.0", "buildConfig": { "entryPoints": [ - "./src/tina-markdown.js", - "./src/visual-editing.js" + "./src/tina-markdown.js", + "./src/visual-editing.js" ] }, "scripts": { diff --git a/packages/create-tina-app/CHANGELOG.md b/packages/create-tina-app/CHANGELOG.md index e971770992..b0c3b7c308 100644 --- a/packages/create-tina-app/CHANGELOG.md +++ b/packages/create-tina-app/CHANGELOG.md @@ -1,5 +1,17 @@ # create-tina-app +## 2.2.0 + +### Minor Changes + +- [#6961](https://github.com/tinacms/tinacms/pull/6961) [`e201abe`](https://github.com/tinacms/tinacms/commit/e201abee5e8ef040ed1335dadb75050b73430898) Thanks [@kulesy](https://github.com/kulesy)! - Make Astro the default starter. The interactive `What starter code would you like to use?` prompt now pre-selects `Astro Starter` (moved to the top of the list). When `create-tina-app` runs without a TTY and without a `--template` flag, the Astro starter is now selected automatically instead of the prompt receiving empty input and exiting as `user cancelled`. + + Note that a fully non-interactive run still needs `--pkg-manager` and a project name. Those two prompts have no non-TTY fallback yet, so a bare `create-tina-app` in CI still stops at the package manager question. + +### Patch Changes + +- [#7320](https://github.com/tinacms/tinacms/pull/7320) [`b8c3c13`](https://github.com/tinacms/tinacms/commit/b8c3c13e9fb64d9fe539f265ba517429e37cbe42) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump `tar` to 7.5.21 + ## 2.1.11 ### Patch Changes diff --git a/packages/create-tina-app/package.json b/packages/create-tina-app/package.json index 5f79f52f59..231db12999 100644 --- a/packages/create-tina-app/package.json +++ b/packages/create-tina-app/package.json @@ -1,6 +1,6 @@ { "name": "create-tina-app", - "version": "2.1.11", + "version": "2.2.0", "type": "module", "main": "dist/index.js", "files": [ diff --git a/packages/next-tinacms-cloudinary/CHANGELOG.md b/packages/next-tinacms-cloudinary/CHANGELOG.md index e15ae274c6..39efb90579 100644 --- a/packages/next-tinacms-cloudinary/CHANGELOG.md +++ b/packages/next-tinacms-cloudinary/CHANGELOG.md @@ -1,5 +1,16 @@ # next-tinacms-cloudinary +## 27.0.3 + +### Patch Changes + +- [#7436](https://github.com/tinacms/tinacms/pull/7436) [`4ef6b6d`](https://github.com/tinacms/tinacms/commit/4ef6b6d8f9afa7d596e2f74add3e9c5561e09563) Thanks [@kulesy](https://github.com/kulesy)! - Bump `multer` to 2.2.0. multer 1.x is end of life; 2.x changes file-handling behaviour, so review upload paths when upgrading. + +- [#7394](https://github.com/tinacms/tinacms/pull/7394) [`e66f1a4`](https://github.com/tinacms/tinacms/commit/e66f1a496b68078328c5a9e75ca41093426c8f77) Thanks [@joshbermanssw](https://github.com/joshbermanssw)! - Escape the listing directory before interpolating it into the Cloudinary search expression, so folder names are always matched literally. + +- Updated dependencies [[`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`f014558`](https://github.com/tinacms/tinacms/commit/f014558a7ece15964b3b2eda942c02fc609dc32f), [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab), [`566f977`](https://github.com/tinacms/tinacms/commit/566f9775bc306f1a41806a29eb22182700765974), [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01), [`b6199da`](https://github.com/tinacms/tinacms/commit/b6199da1eeea7de01d5216c9b50c9e158440f891), [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba), [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d), [`5112e60`](https://github.com/tinacms/tinacms/commit/5112e60bd0c98f6de36f63dbf068d252993e586f), [`8c8e297`](https://github.com/tinacms/tinacms/commit/8c8e297efb12324f23785a5f8f7acbceeb3f0a4a)]: + - tinacms@3.12.0 + ## 27.0.2 ### Patch Changes diff --git a/packages/next-tinacms-cloudinary/package.json b/packages/next-tinacms-cloudinary/package.json index 3cdbd9022f..643c749ff1 100644 --- a/packages/next-tinacms-cloudinary/package.json +++ b/packages/next-tinacms-cloudinary/package.json @@ -1,7 +1,7 @@ { "name": "next-tinacms-cloudinary", "type": "module", - "version": "27.0.2", + "version": "27.0.3", "main": "dist/index.js", "module": "./dist/index.js", "files": [ diff --git a/packages/next-tinacms-dos/CHANGELOG.md b/packages/next-tinacms-dos/CHANGELOG.md index 0d6011d152..4273a80d9e 100644 --- a/packages/next-tinacms-dos/CHANGELOG.md +++ b/packages/next-tinacms-dos/CHANGELOG.md @@ -1,5 +1,14 @@ # next-tinacms-cloudinary +## 24.0.3 + +### Patch Changes + +- [#7436](https://github.com/tinacms/tinacms/pull/7436) [`4ef6b6d`](https://github.com/tinacms/tinacms/commit/4ef6b6d8f9afa7d596e2f74add3e9c5561e09563) Thanks [@kulesy](https://github.com/kulesy)! - Bump `multer` to 2.2.0. multer 1.x is end of life; 2.x changes file-handling behaviour, so review upload paths when upgrading. + +- Updated dependencies [[`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`f014558`](https://github.com/tinacms/tinacms/commit/f014558a7ece15964b3b2eda942c02fc609dc32f), [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9), [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab), [`566f977`](https://github.com/tinacms/tinacms/commit/566f9775bc306f1a41806a29eb22182700765974), [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01), [`b6199da`](https://github.com/tinacms/tinacms/commit/b6199da1eeea7de01d5216c9b50c9e158440f891), [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba), [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d), [`5112e60`](https://github.com/tinacms/tinacms/commit/5112e60bd0c98f6de36f63dbf068d252993e586f), [`8c8e297`](https://github.com/tinacms/tinacms/commit/8c8e297efb12324f23785a5f8f7acbceeb3f0a4a)]: + - tinacms@3.12.0 + ## 24.0.2 ### Patch Changes diff --git a/packages/next-tinacms-dos/package.json b/packages/next-tinacms-dos/package.json index a6e465e8d4..2470a3d3f8 100644 --- a/packages/next-tinacms-dos/package.json +++ b/packages/next-tinacms-dos/package.json @@ -1,7 +1,7 @@ { "name": "next-tinacms-dos", "type": "module", - "version": "24.0.2", + "version": "24.0.3", "main": "dist/index.js", "module": "./dist/index.js", "files": [ diff --git a/packages/tinacms/CHANGELOG.md b/packages/tinacms/CHANGELOG.md index e589a06239..08bd932833 100644 --- a/packages/tinacms/CHANGELOG.md +++ b/packages/tinacms/CHANGELOG.md @@ -1,5 +1,90 @@ # tinacms +## 3.12.0 + +### Minor Changes + +- [#7391](https://github.com/tinacms/tinacms/pull/7391) [`ece366b`](https://github.com/tinacms/tinacms/commit/ece366bd5aa86e048d22f829319e41fe3d1267ba) Thanks [@Aibono1225](https://github.com/Aibono1225)! - Add a Rename action to the Media Manager, backed by the local dev server. + + Selecting a file in the media preview now offers Rename alongside Insert and Delete. The modal edits the basename, keeps the extension, previews the sanitised result using the same rules uploads apply, and reports collisions and missing files specifically instead of a generic failure. Every open media picker refreshes afterwards, and pickers previewing the renamed file follow it to its new path. + + Renaming does **not** update content that already references the old path — the modal says so explicitly. + + The action only appears when the media store implements `rename`. `TinaMediaStore` implements it for local development via a new `POST /media/rename` route on the CLI dev server; TinaCloud, static and self-hosted repo-media stores do not advertise it, so the action stays hidden there rather than failing on click. Third-party stores (S3, Cloudinary, DigitalOcean Spaces, Azure) can opt in by implementing `MediaStore.rename`. + + `MediaManager.rename()` dispatches `media:rename:start`, `media:rename:success` and `media:rename:failure`. + +- [#7323](https://github.com/tinacms/tinacms/pull/7323) [`4a19d66`](https://github.com/tinacms/tinacms/commit/4a19d669b069c0af959c6461cd60b5910aea6512) Thanks [@joshbermanssw](https://github.com/joshbermanssw)! - Add media-manager search and a folder/file filter, and refresh the grid. + + Search filters the library by file path (debounced, recursive across folders); the `All | Folders | Files` toggle narrows the view. Folders and files render in labelled sections, files show a type badge (JPEG/PNG/MP4…), and videos show a play overlay. + + Search works against both TinaCloud media and local dev media. The local dev-server media endpoint (`@tinacms/cli`) now honours a `search` query param, matching paths recursively within the requested folder (case-insensitive) and staying within the media root. Matching is on the folder-relative path, so a folder name matches the files beneath it, and matching folders surface as their own folder results (local dev media; TinaCloud parity to follow). Results are paginated with the same `limit`/`cursor` contract as an unfiltered listing. + + The search box is opt-in per media store via a new `searchable` flag on the `MediaStore` interface. The default (TinaCloud/local) store sets it; a custom or self-hosted store shows the box only once it sets `searchable` and reads `options.search` in its `list()`, so stores that don't support search don't get a box that returns unfiltered results. + + Also fixes the breadcrumb rendering a duplicate root crumb — and Back not returning to the root — for folder names that carry a trailing slash. + +- [#7392](https://github.com/tinacms/tinacms/pull/7392) [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add tina-markdown web component + feat: add visual-editing library for web components + +### Patch Changes + +- [#7304](https://github.com/tinacms/tinacms/pull/7304) [`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - refactor: facilitate token refresh through tinacloud + +- [#7422](https://github.com/tinacms/tinacms/pull/7422) [`f014558`](https://github.com/tinacms/tinacms/commit/f014558a7ece15964b3b2eda942c02fc609dc32f) Thanks [@dependabot](https://github.com/apps/dependabot)! - Bump `mermaid` to 11.16.1, picking up an upstream security fix (GHSA-c4c3-pg64-4m4v) + +- [#7388](https://github.com/tinacms/tinacms/pull/7388) [`17931b7`](https://github.com/tinacms/tinacms/commit/17931b72762afb575505c383ee6355476207a44e) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: add announcements banner + +- [#7216](https://github.com/tinacms/tinacms/pull/7216) [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Collapse three icon libraries into `lucide-react` (~85 MB). + + `tinacms` declared `react-icons` (84 MB), `lucide-react` (32 MB) and `@heroicons/react` as production dependencies, so every user installed all three. Icon usage is entirely internal admin chrome — there is no icon-picker, no `icon` schema field type, and no dynamic whole-set import — so `react-icons` and `@heroicons/react` have been removed in favour of `lucide-react`, which was already the de-facto house set. + + Not a breaking change for user content, schemas, or plugins: `ScreenPlugin.Icon` is typed `any`, and `CloudConfigOptions` is not publicly exported. The internal `IconType` prop type is now lucide's `LucideIcon`. + + Six icons have no exact lucide counterpart and were substituted: `BsCheckCircleFill`/`BsExclamationOctagonFill` → `CircleCheck`/`OctagonAlert` (lucide is outline-only), `MdSyncProblem` → `RefreshCwOff`, `TbLogs` → `ScrollText`, `BiRename` → `SquarePen`, `MdOutlineDataSaverOff` → `Info`. + +- [#7327](https://github.com/tinacms/tinacms/pull/7327) [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d) Thanks [@brookjeynes-ssw](https://github.com/brookjeynes-ssw)! - feat: when WorkOS is enabled, use a redirect-based workflow for authentication + +- [#7216](https://github.com/tinacms/tinacms/pull/7216) [`cf75e5b`](https://github.com/tinacms/tinacms/commit/cf75e5b8dd3209203df9fe1ffbc12a9d965277f9) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Drop `@headlessui/react` (~50 MB). + + Headless UI v2 pulls in the entire React Aria stack (`react-aria` 34.8 MB, `react-stately` 9.4 MB, `@internationalized/*`) — about 50 MB installed — to provide components Radix already covers. `tinacms` was shipping three headless component libraries at once (`@radix-ui/*` in 22 files, `@headlessui/react` in 11, `@ariakit/react` in 1). + + The 11 Headless UI files now use Radix (`Popover`, `DropdownMenu`) and local state, consolidating on the library that was already the majority. No new dependencies were added. + + `Transition`/`TransitionChild` are replaced by a small local equivalent with the same prop API (`show`, `appear`, `enter*`/`leave*`). It uses `element.getAnimations({ subtree: true })` so a parent transition with no classes of its own still waits for its children to finish leaving before unmounting. + +- [#7214](https://github.com/tinacms/tinacms/pull/7214) [`bd4df92`](https://github.com/tinacms/tinacms/commit/bd4df92a7e00bd74ee13eaf9f9b584fbb1a864ab) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Stop shipping the `monaco-editor` package (~73 MB). + + Every import of `monaco-editor` in shipped source was **types-only**. The editor itself has always been fetched from a CDN at runtime by `@monaco-editor/loader`, so the 73 MB installed on every user's disk was never executed — and was a different version (0.31.0) from the one that actually runs (0.55.1, the loader's default). + + `monaco-editor` is a _required_ peer dependency of `@monaco-editor/react`, and npm 7+ auto-installs required peers, so removing it from our `dependencies` was not enough on its own. `@tinacms/app` now uses `@monaco-editor/loader` directly — the same loader `@monaco-editor/react` wraps, so the CDN and editor version are unchanged — and `monaco-editor` is kept as a devDependency for its types. + + The copy of the raw editor in `packages/tinacms` was dead code: nothing imported it, it was not exported, and its `parseMDX`/`stringifyMDX` were stubs returning empty values. The live raw editor lives in `@tinacms/app` and is injected into `tinacms` as the `rawEditor` prop. It has been deleted, letting `tinacms` drop both monaco packages entirely. + + No behaviour change: raw MDX mode still loads the same editor from the same CDN. + +- [#6403](https://github.com/tinacms/tinacms/pull/6403) [`566f977`](https://github.com/tinacms/tinacms/commit/566f9775bc306f1a41806a29eb22182700765974) Thanks [@JackDevAU](https://github.com/JackDevAU)! - Fix the preview iframe going unresponsive after resizing the sidebar. + + Dragging the resize handle used to disable pointer events on the entire app so the drag would survive the cursor crossing into the preview. Releasing the drag over the preview left it dead to clicks and scrolling until you clicked the sidebar again. The handle now uses pointer capture, which keeps the drag targeting the handle without touching the rest of the page, so the preview stays interactive throughout. + + Also corrects the handle's fullscreen guard, which read a `fullscreen` key the sidebar context has never provided and so never fired. No behaviour change today, since nothing currently puts the sidebar into the fullscreen display state. + +- [#7233](https://github.com/tinacms/tinacms/pull/7233) [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Add a dedicated `@tinacms/mdx/sanitize-url` subpath export containing just the URL-scheme sanitizer, and point `tinacms`'s rich-text renderer (`TinaMarkdown` / `StaticTinaMarkdown`) at it instead of the root `@tinacms/mdx` entry. Previously, importing `sanitizeUrl` pulled in `@tinacms/mdx`'s full remark/mdast/micromark markdown-parsing bundle (~2MB) into every site's client bundle, even though rich-text rendering only needs the ~15-line sanitizer. The root `@tinacms/mdx` export of `sanitizeUrl` is unchanged and still works. + +- [#7322](https://github.com/tinacms/tinacms/pull/7322) [`b6199da`](https://github.com/tinacms/tinacms/commit/b6199da1eeea7de01d5216c9b50c9e158440f891) Thanks [@joshbermanssw](https://github.com/joshbermanssw)! - The media manager now lists assets from the v2 assets-api endpoint. Uploads and deletes are unchanged and stay on v1. Listing behaviour is identical — this is a transport-only move that sets up media search. + +- [#7231](https://github.com/tinacms/tinacms/pull/7231) [`5112e60`](https://github.com/tinacms/tinacms/commit/5112e60bd0c98f6de36f63dbf068d252993e586f) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Remove dead code left over from the `monaco-editor` removal in the mdx field plugin. + +- [#7428](https://github.com/tinacms/tinacms/pull/7428) [`8c8e297`](https://github.com/tinacms/tinacms/commit/8c8e297efb12324f23785a5f8f7acbceeb3f0a4a) Thanks [@wicksipedia](https://github.com/wicksipedia)! - Give the exported Plate plugin arrays (`plugins`, `viewPlugins`, `createEditorPlugins`) an explicit type, so their emitted declarations no longer carry a `.pnpm/` store path. + + The Plate satellite packages take `@udecode/plate` as a peer and never depend on `@udecode/plate-core` directly, so pnpm resolves it through the hoisted store. Once `@tinacms/rich-text` brought in a React 19 copy, the hoisted pick could land on a variant that nothing in `tinacms` is able to name, and `tsc` then failed with TS2742 rather than emit a declaration. Which copy wins varies per install, so the failure came and went. + +- Updated dependencies [[`d7a1641`](https://github.com/tinacms/tinacms/commit/d7a16416b1b4bc1ba0e2aabdddcf39ed1e4135d7), [`5050709`](https://github.com/tinacms/tinacms/commit/5050709dcbbc99530d6b284021c259d098d6455d), [`064b78e`](https://github.com/tinacms/tinacms/commit/064b78e9407d5d7f91ab11dd8b99de8f8ac38ab1), [`a0e0d2e`](https://github.com/tinacms/tinacms/commit/a0e0d2e8d573abfbfb5a3d277ffe1c2b6d692e37), [`2860f56`](https://github.com/tinacms/tinacms/commit/2860f569b3f4f8f6115ee4399af855ea3baa61e1), [`5f14d96`](https://github.com/tinacms/tinacms/commit/5f14d96fdba3d7a143827fc1cac9c7964c3f9b01), [`4b7d9b9`](https://github.com/tinacms/tinacms/commit/4b7d9b9f116f7f649aae1a573c838a663f97d99d)]: + - @tinacms/schema-tools@2.9.0 + - @tinacms/mdx@2.2.0 + - @tinacms/bridge@0.3.1 + - @tinacms/search@1.2.23 + ## 3.11.0 ### Minor Changes diff --git a/packages/tinacms/package.json b/packages/tinacms/package.json index ff5148896b..3c41c95da5 100644 --- a/packages/tinacms/package.json +++ b/packages/tinacms/package.json @@ -2,7 +2,7 @@ "name": "tinacms", "type": "module", "typings": "dist/index.d.ts", - "version": "3.11.0", + "version": "3.12.0", "main": "dist/index.js", "module": "./dist/index.js", "exports": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0d269d459..e8a9386af9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -475,8 +475,8 @@ catalogs: specifier: ^1.0.0 version: 1.0.0 mermaid: - specifier: ^11.12.2 - version: 11.12.2 + specifier: ^11.16.1 + version: 11.16.1 micromark-extension-gfm: specifier: 2.0.3 version: 2.0.3 @@ -2427,7 +2427,7 @@ importers: version: 0.424.0(react@18.3.1) mermaid: specifier: 'catalog:' - version: 11.12.2 + version: 11.16.1 posthog-js: specifier: ^1.347.1 version: 1.347.1 @@ -2751,7 +2751,7 @@ importers: version: 0.424.0(react@19.2.7) mermaid: specifier: 'catalog:' - version: 11.12.2 + version: 11.16.1 devDependencies: '@testing-library/dom': specifier: 'catalog:' @@ -4161,8 +4161,8 @@ packages: cpu: [x64] os: [win32] - '@braintree/sanitize-url@7.1.1': - resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} '@bruits/satteri-darwin-arm64@0.9.4': resolution: {integrity: sha512-W3MSUkr2mZRR8Stoe+lqNAyzQzRuFMU8WffV9IvFSxTok0LGWR0ZZQPLELU4QTRiUbhL2Y4VUP9vV7pj8rHjgg==} @@ -4278,20 +4278,8 @@ packages: '@changesets/write@0.3.2': resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} - '@chevrotain/cst-dts-gen@11.0.3': - resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} - - '@chevrotain/gast@11.0.3': - resolution: {integrity: sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==} - - '@chevrotain/regexp-to-ast@11.0.3': - resolution: {integrity: sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==} - - '@chevrotain/types@11.0.3': - resolution: {integrity: sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==} - - '@chevrotain/utils@11.0.3': - resolution: {integrity: sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} '@clack/core@1.3.1': resolution: {integrity: sha512-fT1qHVGAag4IEkrupZ6lRRbNCs1vS9P01KB/sG8zKgvUztbYtFBtQpjSITNwooDZ83tpsPzP0mRNs1/KVszCRA==} @@ -5964,8 +5952,8 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@mermaid-js/parser@0.6.3': - resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==} + '@mermaid-js/parser@1.2.0': + resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==} '@monaco-editor/loader@1.7.0': resolution: {integrity: sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==} @@ -8902,6 +8890,9 @@ packages: cpu: [x64] os: [win32] + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + '@vercel/stega@0.0.5': resolution: {integrity: sha512-vvuUYW0rBp4Ea9xv0LilqFyDHAW9tvy4GL70G1ayGisQwpOYIPChmiw/56jqZvpxjE9gjQIApLfglOcdZe3PcA==} @@ -9664,14 +9655,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - chevrotain-allstar@0.3.1: - resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} - peerDependencies: - chevrotain: ^11.0.0 - - chevrotain@11.0.3: - resolution: {integrity: sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -10042,8 +10025,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.33.2: - resolution: {integrity: sha512-sj4HXd3DokGhzZAdjDejGvTPLqlt84vNFN8m7bGsOzDY5DyVcxIb2ejIXat2Iy7HxWhdT/N1oKyheJ5YdpsGuw==} + cytoscape@3.34.1: + resolution: {integrity: sha512-Lr0RvH9H75y9ar8h9Toy6u4lxRSCcxUq+hHcQ26sVWo6BnaQp1gwEZOYqwuYTZhyW7npyKnNLP8oJ2p1/3OZ7g==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -10185,8 +10168,8 @@ packages: resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} engines: {node: '>=12'} - dagre-d3-es@7.0.13: - resolution: {integrity: sha512-efEhnxpSuwpYOKRm/L5KbqoZmNNukHa/Flty4Wp62JRvgH2ojwVgPgdYyr4twpieZnyRDdIH7PY2mopX26+j2Q==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -10448,6 +10431,9 @@ packages: dompurify@3.3.1: resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.4.13: + resolution: {integrity: sha512-2vmYIoqjze2d+kakP8S/nS5shfsl587kzwEjcGlTdiksUVgFHnFCsLYDVj/JNqJVOQZGSYBTmuycv0PodwmnMQ==} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -10591,6 +10577,9 @@ packages: es-toolkit@1.43.0: resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==} + es-toolkit@1.50.0: + resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} + esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -12286,10 +12275,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - langium@3.3.1: - resolution: {integrity: sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==} - engines: {node: '>=16.0.0'} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -12850,8 +12835,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - mermaid@11.12.2: - resolution: {integrity: sha512-n34QPDPEKmaeCG4WDMGy0OT6PSyxKCfy2pJgShP+Qow2KLrvWjclwbc3yXfSIf4BanqWEhQEpngWwNp/XhZt6w==} + mermaid@11.16.1: + resolution: {integrity: sha512-TQsq6u22fAn3rek5VOubrhKPo1g5hwC3FXUN9hiyupTckcYiGuuKGkNQrKYwGJkXUxZdojwRG46gsSCFZMDp4g==} meros@1.3.2: resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} @@ -16269,9 +16254,6 @@ packages: vscode-nls@5.2.0: resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} - vscode-uri@3.0.8: - resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} @@ -18953,7 +18935,7 @@ snapshots: '@biomejs/cli-win32-x64@1.9.4': optional: true - '@braintree/sanitize-url@7.1.1': {} + '@braintree/sanitize-url@7.1.2': {} '@bruits/satteri-darwin-arm64@0.9.4': optional: true @@ -19149,22 +19131,7 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 - '@chevrotain/cst-dts-gen@11.0.3': - dependencies: - '@chevrotain/gast': 11.0.3 - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/gast@11.0.3': - dependencies: - '@chevrotain/types': 11.0.3 - lodash-es: 4.17.21 - - '@chevrotain/regexp-to-ast@11.0.3': {} - - '@chevrotain/types@11.0.3': {} - - '@chevrotain/utils@11.0.3': {} + '@chevrotain/types@11.1.2': {} '@clack/core@1.3.1': dependencies: @@ -20883,9 +20850,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@mermaid-js/parser@0.6.3': + '@mermaid-js/parser@1.2.0': dependencies: - langium: 3.3.1 + '@chevrotain/types': 11.1.2 '@monaco-editor/loader@1.7.0': dependencies: @@ -24676,6 +24643,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + '@vercel/stega@0.0.5': {} '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@25.1.0)(lightningcss@1.32.0)(sass@1.97.3)(terser@5.46.0))': @@ -25848,20 +25820,6 @@ snapshots: check-error@2.1.1: {} - chevrotain-allstar@0.3.1(chevrotain@11.0.3): - dependencies: - chevrotain: 11.0.3 - lodash-es: 4.17.21 - - chevrotain@11.0.3: - dependencies: - '@chevrotain/cst-dts-gen': 11.0.3 - '@chevrotain/gast': 11.0.3 - '@chevrotain/regexp-to-ast': 11.0.3 - '@chevrotain/types': 11.0.3 - '@chevrotain/utils': 11.0.3 - lodash-es: 4.17.21 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -26255,17 +26213,17 @@ snapshots: csstype@3.2.3: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.2): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.1): dependencies: cose-base: 1.0.3 - cytoscape: 3.33.2 + cytoscape: 3.34.1 - cytoscape-fcose@2.2.0(cytoscape@3.33.2): + cytoscape-fcose@2.2.0(cytoscape@3.34.1): dependencies: cose-base: 2.2.0 - cytoscape: 3.33.2 + cytoscape: 3.34.1 - cytoscape@3.33.2: {} + cytoscape@3.34.1: {} d3-array@2.12.1: dependencies: @@ -26434,7 +26392,7 @@ snapshots: d3-transition: 3.0.1(d3-selection@3.0.0) d3-zoom: 3.0.0 - dagre-d3-es@7.0.13: + dagre-d3-es@7.0.14: dependencies: d3: 7.9.0 lodash-es: 4.17.21 @@ -26660,6 +26618,10 @@ snapshots: optionalDependencies: '@types/trusted-types': 2.0.7 + dompurify@3.4.13: + optionalDependencies: + '@types/trusted-types': 2.0.7 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 @@ -26863,6 +26825,8 @@ snapshots: es-toolkit@1.43.0: {} + es-toolkit@1.50.0: {} + esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -29542,14 +29506,6 @@ snapshots: kleur@4.1.5: {} - langium@3.3.1: - dependencies: - chevrotain: 11.0.3 - chevrotain-allstar: 0.3.1(chevrotain@11.0.3) - vscode-languageserver: 9.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -30309,23 +30265,24 @@ snapshots: merge2@1.4.1: {} - mermaid@11.12.2: + mermaid@11.16.1: dependencies: - '@braintree/sanitize-url': 7.1.1 + '@braintree/sanitize-url': 7.1.2 '@iconify/utils': 3.1.0 - '@mermaid-js/parser': 0.6.3 + '@mermaid-js/parser': 1.2.0 '@types/d3': 7.4.3 - cytoscape: 3.33.2 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.2) - cytoscape-fcose: 2.2.0(cytoscape@3.33.2) + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.1) + cytoscape-fcose: 2.2.0(cytoscape@3.34.1) d3: 7.9.0 d3-sankey: 0.12.3 - dagre-d3-es: 7.0.13 + dagre-d3-es: 7.0.14 dayjs: 1.11.20 - dompurify: 3.3.1 + dompurify: 3.4.13 + es-toolkit: 1.50.0 katex: 0.16.45 khroma: 2.1.0 - lodash-es: 4.17.21 marked: 16.4.2 roughjs: 4.6.6 stylis: 4.3.6 @@ -34941,8 +34898,6 @@ snapshots: vscode-nls@5.2.0: {} - vscode-uri@3.0.8: {} - vscode-uri@3.1.0: {} w3c-hr-time@1.0.2: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ea48da2151..1a08d7eaf8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -198,7 +198,7 @@ catalog: mdast-util-mdx-jsx: 2.1.2 mdast-util-to-markdown: 1.5.0 memory-level: ^1.0.0 - mermaid: ^11.12.2 + mermaid: ^11.16.1 micromark-extension-gfm: 2.0.3 micromark-factory-mdx-expression: 1.0.7 micromark-factory-space: 1.0.0