Spit Happens: October 2026 News - Colour and faster indexing
By The TinaCMS Team

The herd has been busy again ๐ฆ. So far in October (1 to 22 October, Brisbane time) we've merged 122 pull requests across TinaCMS and TinaCloud and published 34 package releases.
๐ฆ TinaCMS: 25 updates
๐จ Text colour in the editor
TinaCMS 3.15.0 adds a Text Color dropdown next to Highlight in the rich-text toolbar. Give a field a palette with overrides.textColors. If you've defined your own overrides.toolbar, add textColor to the list to show the button (#7683). The rich-text docs cover the setup and the markup it saves.
Two things to know first. Bold, italic or strikethrough that starts or ends mid-word next to coloured text can reload with the formatting characters showing. And on TinaCloud projects, text colour also needs a TinaCloud-side GraphQL update, which hadn't been merged as of 22 October. Test it on your own content before you roll it out.
The same release makes the date picker follow timeFormat. A format like HH:mm now gives you a 24-hour picker with no AM/PM (#7798). List field descriptions wrap instead of getting cut off (#7734).
๐ References that keep up
A reference inside a templated list item or an MDX component in rich text used to slip past the index, so a rename or delete could leave it pointing at the old path. @tinacms/graphql 4.0.1 now finds references by walking the document against your schema, and the lookup behind rename and delete no longer stops at 50 results (#7851).
Reindex after you upgrade. Existing indexes won't pick up the references they missed, or drop stale entries, on their own.
We also fixed a collection that sorts by a field whose index still listed a deleted document. The query skips it and logs a warning, instead of failing the whole list (#7133).
๐ Self-hosted sign-in
Self-hosted sites get a new authCollection database option and an admin list, authCollection.admins, for the users who can add, edit and remove users. Other users can still change their own passwords (#7722).
The catch is that sign-in now needs a database client generated by the matching CLI. Update @tinacms/cli alongside @tinacms/graphql 4.0.0 and @tinacms/datalayer 3.0.0, then run tinacms build or tinacms dev to regenerate tina/__generated__/databaseClient.
Self-hosted Next.js App Router projects also get @tinacms/cli 4.0.3, which returns plain objects from the database client. That fixes the error when results cross from a Server Component to a Client Component (#7741).
๐ฉน Fewer snags
When TinaCloud fails to index a branch, tinacms build prints the reason it gives instead of a bare "Unable to seed" (#7786).
tinacms build regenerates tina/tina-lock.json the way dev does, so CI-only pushes reach TinaCloud's indexer (#7051). The "Indexing local files" spinner no longer hangs forever when the CLI loses a connection race (#7295).
Error modals get their own titles and a descriptive help link (#7738). The saved/unsaved indicator has an accessible name, so it doesn't rely on colour alone (#7791).
In rich text, adjacent lists are separated by alternating bullets instead of an HTML comment (#7861). Empty optional image fields stay out of your frontmatter (#7863), and an image field with list: true parses instead of crashing (#7319).
One upgrade note: 3.15.0 moves React Router to v7, which needs React 18 or later (#7606).
๐ V4 keeps taking shape
V4 is still in progress. This month it gained a media contract and a Media Manager screen plugin, an image field, and arrays that hold templates (blocks) or single values.
The tinaCloud() plugin arrived too, providing media, auth and content.
โ๏ธ TinaCloud: 14 updates
โก Faster indexing
TinaCloud now writes index data in parallel instead of one request at a time, so big indexes spend less time waiting on storage (#4407, #4417). We also removed a source of wasted work when TinaCloud indexes a new branch (#4446). We haven't published before-and-after timings yet.
๐ Indexing that tells you what went wrong
When indexing fails, the status endpoint now returns the underlying reason, so older CLI versions print it too (#3822).
Multi-repo projects index pull branches against the generator repo's schema, so the branch is actually indexed instead of quietly skipped (#4102).
๐ Accounts and sign-in
Accounts on the new AuthKit sign-in can sign out all their other sessions from the dashboard's Security tab. The browser you're in stays signed in (#4289, #4290). Accounts with nothing to manage there no longer see an empty Security tab (#4418).
While account deletion is paused for the sign-in move, the Request Account Deletion section now says so and points to support, instead of vanishing (#4373).
A few safety nets landed too:
- You can't demote a project's last admin to Editor, and both role editors show why (#4495).
- Signed-in visitors who land on
/loginor another unknown path go to Projects, not a blank page (#4448).
๐ฑ A friendlier dashboard
On phones the dashboard nav is now a dropdown, so tabs like Leaderboard aren't hidden off the side (#4422). Visitors in the EU, EEA and UK are asked for consent before the dashboard loads its tracking scripts (#4478).
๐ผ๏ธ Assets
Images served from assets.tina.io keep their Cache-Control header, so browsers stop refetching the same SVG, PNG and WebP files (#4496).
Keep up with socials
We post product updates, tutorials and team news here:
- X: @tinacms
- LinkedIn: TinaCMS
- YouTube: @TinaCMS
- Bluesky: @tina.io
- Discord: Come chat with us!
Till next time ๐๐ฆ