Skip to content

[pull] main from tinacms:main - #304

Merged
pull[bot] merged 6 commits into
code:mainfrom
tinacms:main
Aug 17, 2026
Merged

[pull] main from tinacms:main#304
pull[bot] merged 6 commits into
code:mainfrom
tinacms:main

Conversation

@pull

@pull pull Bot commented Aug 17, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

JackDevAU and others added 6 commits August 17, 2026 13:32
Resolves:
- #6349

## How to test

1. Run a TinaCMS site with the admin iframe preview (e.g.
`examples/next/kitchen-sink`, then open `/admin`).
2. Drag the sidebar's resize handle and **release the mouse while the
cursor is over the preview iframe**.
3. Move the cursor over the preview and scroll — it should scroll right
away. _(Before this fix, scrolling/clicking the preview stayed dead
until you clicked the sidebar again.)_
4. Repeat the resize a few times and confirm clicking elements in the
preview also works immediately after each drag.
5. Open the sidebar in fullscreen and confirm the resize handle is
hidden.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: kulesy <kulewidak@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Matt Wicks [SSW] <wicksipedia@users.noreply.github.com>
Co-authored-by: Eli Kent [SSW] <69125238+kulesy@users.noreply.github.com>
Co-authored-by: Josh Berman <joshberman@ssw.com.au>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: dependabot[bot] <support@github.com>
Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.0 to 7.5.21.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md">tar's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>7.5</h2>
<ul>
<li>Added <code>zstd</code> compression support.</li>
<li>Consistent TOCTOU behavior in sync t.list</li>
<li>Only read from ustar block if not specified in Pax</li>
<li>Fix sync tar.list when file size reduces while reading</li>
<li>Sanitize absolute linkpaths properly</li>
<li>Prevent writing hardlink entries to the archive ahead of their
file target</li>
</ul>
<h2>7.4</h2>
<ul>
<li>Deprecate <code>onentry</code> in favor of <code>onReadEntry</code>
for clarity.</li>
</ul>
<h2>7.3</h2>
<ul>
<li>Add <code>onWriteEntry</code> option</li>
</ul>
<h2>7.2</h2>
<ul>
<li>DRY the command definitions into a single <code>makeCommand</code>
method,
and update the type signatures to more appropriately infer the
return type from the options and arguments provided.</li>
</ul>
<h2>7.1</h2>
<ul>
<li>Update minipass to v7.1.0</li>
<li>Update the type definitions of <code>write()</code> and
<code>end()</code> methods on
<code>Unpack</code> and <code>Parser</code> classes to be compatible
with the
NodeJS.WritableStream type in the latest versions of
<code>@types/node</code>.</li>
</ul>
<h2>7.0</h2>
<ul>
<li>Drop support for node &lt;18</li>
<li>Rewrite in TypeScript, provide ESM and CommonJS hybrid
interface</li>
<li>Add tree-shake friendly exports, like
<code>import('tar/create')</code>
and <code>import('tar/read-entry')</code> to get individual functions or
classes.</li>
<li>Add <code>chmod</code> option that defaults to false, and deprecate
<code>noChmod</code>. That is, reverse the default option regarding
explicitly setting file system modes to match tar entry
settings.</li>
<li>Add <code>processUmask</code> option to avoid having to call
<code>process.umask()</code> when <code>chmod: true</code> (or
<code>noChmod: false</code>) is
set.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/node-tar/commit/0cd9cc3c5814446d3c0cbea6a31d6c00c2c8a9d9"><code>0cd9cc3</code></a>
7.5.21</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/631ae59121bf8fc8a22bbae35f074cb9b789cd4a"><code>631ae59</code></a>
list: prevent unbounded recursion</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/ebbb72094159d003f428dcd1cb28255d37ea4873"><code>ebbb720</code></a>
7.5.20</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/2f271963a7fe5a5960aee5dd6adf9647a1e266fd"><code>2f27196</code></a>
fix: fully disable and dispose of unzip when aborting parser</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/be440da64e9fe80c68c755d8147328ea1cc2a9ad"><code>be440da</code></a>
7.5.19</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/2812e9338665659b183aa7226518c307044957d3"><code>2812e93</code></a>
add maxDecompressionRatio guard against explosive decompression</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/9ecd4d2956fd915507eca018ddc1fea727fbba93"><code>9ecd4d2</code></a>
7.5.18</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/9e78bf058b2c22dd4d52e00d8922d5c06fc2f7b5"><code>9e78bf0</code></a>
refuse to let header size be less than 0</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/e02a4e9e013c4be95302e2eb2047a942b883c27b"><code>e02a4e9</code></a>
pax: parse values according to known types</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/9cbdb31e5e8dbcb97a642e0f91e2d1e342585946"><code>9cbdb31</code></a>
7.5.17</li>
<li>Additional commits viewable in <a
href="https://github.com/isaacs/node-tar/compare/v7.4.0...v7.5.21">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~isaacs">isaacs</a>, a new releaser for tar
since your current version.</p>
</details>
<details>
<summary>Install script changes</summary>
<p>This version adds <code>prepare</code> script that runs during
installation. Review the package contents before updating.</p>
</details>
<br />

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Eli Kent [SSW] <69125238+kulesy@users.noreply.github.com>
Co-authored-by: kulesy <kulewidak@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
There's no way to render markdown content when not using a framework.
This adds a `tina-markdown` web component which can be passed tina's
markdown AST.

```js
const postsResponse = await client.queries.postConnection();
const posts = postsResponse.data.postConnection.edges.map((post) => {
    return {
        title: post.node.title,
        body: post.node.body,
    };
});

const postsContainer = document.getElementById("posts");
for (const post of posts) {
    const tinaMarkdown = document.createElement("tina-markdown");
    const markdownAst = JSON.stringify(post.body);
    tinaMarkdown.setAttribute("content", markdownAst)

    postsContainer.appendChild(tinaMarkdown);
}
```

See
[examples/js/markdown-rendering/index.html](https://github.com/tinacms/tinacms/blob/bj/20260803/feat/tina-markdown-web-component/examples/js/markdown-rendering/index.html)
for a more detailed example

---------

Assisted-by: OpenCode:big-pickle
Signed-off-by: brookjeynes-ssw <brookjeynes@ssw.com.au>
Co-authored-by: Matt Wicks [SSW] <wicksipedia@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This PR adds support for workos redirect authentication when enabled.

Depends on #7304

---------

Assisted-by: OpenCode:big-pickle
Signed-off-by: brookjeynes-ssw <brookjeynes@ssw.com.au>
…ends with a space (#7427)

Fixes #7426

Demo - https://youtu.be/OX4HWD5bhmc

## What was broken

Select a word *and its trailing space*, then hit bold. TinaCMS saved
`**word **`. CommonMark will not close emphasis that sits against a
space, so the published page rendered literal asterisks and the bold was
gone. The editor kept showing it as bold, so nothing looked wrong until
publish.

Plate is behaving correctly here: it stores `{ text: 'word ', bold: true
}`, and `mdast-util-to-markdown` writes `**` + children + `**` verbatim
without normalising.

## The fix

`normalizeMarkWhitespace` runs on the mdast tree after it is built from
the editor value and before markdown is written, on both serializer
paths. It hoists edge whitespace out of `strong` / `emphasis` /
`delete`, drops marks left with nothing inside, and trims whitespace
that lands at a block boundary.

```
Some **word **more   →   Some **word** more
```

Both v3 and v4 serialize through `serializeMDX`, so both get the fix.

## Related cases, same root cause

Found while writing the tests:

| Input | Saved before |
|---|---|
| `{text:' word', bold}` | `** word**` |
| `{text:'word ', italic}` | `*word *` |
| `{text:'word ', strikethrough}` | `~~word ~~` |
| `{text:'word ', bold, italic}` | `***word ***` |
| `{text:' ', bold}` | `** **` |
| `{text:'', bold}` | `****` |
| multi-node marked run | `**ab **` |
| mark inside a multi-child link | `[**w **tail](u)` |
| 4+ leading spaces in a mark | became an indented code block |

Left alone on purpose: `inlineCode` (`to-markdown` already pads it
correctly), `highlight` (serializes to `<mark>`), and interior
whitespace such as `**Hello *world*, again**`, which has to survive.

## Testing

Tests came first and failed before the fix landed. 32 new tests across
both parser configurations, including round trips that reparse the
output.

Checked in a real editor against `examples/next/kitchen-sink`: keyboard
and toolbar produce byte-identical output, and the rendered page emits
`<strong>`. An untouched document still saves byte-identical. No churn
in the 79 existing fixture files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Isaac Lombard [SSW] <152236421+isaaclombardssw@users.noreply.github.com>
@pull pull Bot locked and limited conversation to collaborators Aug 17, 2026
@pull pull Bot added the ⤵️ pull label Aug 17, 2026
@pull
pull Bot merged commit 2860f56 into code:main Aug 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants