- Updated dependencies [216cfff0c]
- tinacms@1.6.1
- Updated dependencies [c8ceba4d8]
- tinacms@1.6.0
- Updated dependencies [04704e3dc]
- tinacms@1.5.30
- tinacms@1.5.29
- tinacms@1.5.28
- Updated dependencies [4202c1028]
- Updated dependencies [64f8fa038]
- Updated dependencies [548fe6d96]
- Updated dependencies [50b20f809]
- tinacms@1.5.27
- Updated dependencies [9e1a22a53]
- tinacms@1.5.26
- tinacms@1.5.25
-
a65ca13f2: ## TinaCMS Self hosted Updates
- Deprecated:
onPut
,onDelete
, andlevel
arguments increateDatabase
. - Added:
databaseAdapter
to replacelevel
. - Added:
gitProvider
to substituteonPut
andonDelete
. - New Package:
tinacms-gitprovider-github
, exporting theGitHubProvider
class. - Interface Addition:
gitProvider
added to@tinacms/graphql
. - Addition: Generated database client.
import { createDatabase, createLocalDatabase } from '@tinacms/datalayer' import { MongodbLevel } from 'mongodb-level' import { GitHubProvider } from 'tinacms-gitprovider-github' const isLocal = process.env.TINA_PUBLIC_IS_LOCAL === 'true' export default isLocal ? createLocalDatabase() : createDatabase({ gitProvider: new GitHubProvider({ branch: process.env.GITHUB_BRANCH, owner: process.env.GITHUB_OWNER, repo: process.env.GITHUB_REPO, token: process.env.GITHUB_PERSONAL_ACCESS_TOKEN, }), databaseAdapter: new MongodbLevel<string, Record<string, any>>({ collectionName: 'tinacms', dbName: 'tinacms', mongoUri: process.env.MONGODB_URI, }), namespace: process.env.GITHUB_BRANCH, })
- GitHubProvider Usage: Replace
onPut
andonDelete
withgitProvider
, using the providedGitHubProvider
for GitHub.
const gitProvider = new GitHubProvider({ branch: process.env.GITHUB_BRANCH, owner: process.env.GITHUB_OWNER, repo: process.env.GITHUB_REPO, token: process.env.GITHUB_PERSONAL_ACCESS_TOKEN, })
- Custom Git Provider: Implement the
GitProvider
interface for different git providers.
If you are not using Github as your git provider, you can implement the
GitProvider
interface to use your own git provider.class CustomGitProvider implements GitProvider async onPut(key: string, value: string) // ... async onDelete(key: string) // ... const gitProvider = new CustomGitProvider();
- Renaming in Code: Change
level
todatabaseAdapter
for clarity.
createDatabase({ - level: new MongodbLevel<string, Record<string, any>>(...), + databaseAdapter: new MongodbLevel<string, Record<string, any>>(...), })
- Usage: Implement a local database with the
createLocalDatabase
function.
import { createLocalDatabase } from '@tinacms/datalayer' createLocalDatabase(port)
- Updated
database.{ts,js}
File:
import { createDatabase, createLocalDatabase, GitHubProvider } from '@tinacms/datalayer'; import { MongodbLevel } from 'mongodb-level'; const isLocal = process.env.TINA_PUBLIC_IS_LOCAL === 'true'; export default isLocal ? createLocalDatabase() : createDatabase({ gitProvider: new GitHubProvider(...), databaseAdapter: new MongodbLevel<string, Record<string, any>>(...), });
- New:
authProvider
indefineConfig
. - Class:
AbstractAuthProvider
for extending new auth providers. - Clerk Auth Provider: New provider added.
- Renaming:
admin.auth
toadmin.authHooks
. - Deprecation:
admin.auth
.
- Transition: From auth functions to
authProvider
class.
- Previous API:
defineConfig({ admin: { auth: { login() {}, logout() {}, //... }, }, //... })
- New API:
import { AbstractAuthProvider } from 'tinacms' class CustomAuthProvider extends AbstractAuthProvider { login() {} logout() {} //... } defineConfig({ authProvider: new CustomAuthProvider(), //... })
-
New: TinaNodeBackend is exported from
@tinacms/datalayer
. This is used to host the TinaCMS backend in a single function. -
New:
LocalBackendAuthProvider
is exported from@tinacms/datalayer
. This is used to host the TinaCMS backend locally. -
New:
AuthJsBackendAuthProvider
is exported fromtinacms-authjs
. This is used to host the TinaCMS backend with AuthJS.
Now, instead of hosting the in /tina/api/gql.ts file, the entire TinaCMS backend (including auth) will be hosted in a single backend function.
/api/tina/[...routes].{ts,js}
import { TinaNodeBackend, LocalBackendAuthProvider } from '@tinacms/datalayer' import { TinaAuthJSOptions, AuthJsBackendAuthProvider } from 'tinacms-authjs' import databaseClient from '../../../tina/__generated__/databaseClient' const isLocal = process.env.TINA_PUBLIC_IS_LOCAL === 'true' const handler = TinaNodeBackend({ authProvider: isLocal ? LocalBackendAuthProvider() : AuthJsBackendAuthProvider({ authOptions: TinaAuthJSOptions({ databaseClient: databaseClient, secret: process.env.NEXTAUTH_SECRET, }), }), databaseClient, }) export default (req, res) => { // Modify the request here if you need to return handler(req, res) }
These changes are put in place to make self hosted TinaCMS easier to use and more flexible.
Please check out the docs for more information on self hosted TinaCMS.
- Deprecated:
-
Updated dependencies [a65ca13f2]
- tinacms@1.5.24
- a7b7148c5: Update to latest cloudinary (1.41.0)
- Updated dependencies [131b4dc55]
- Updated dependencies [93bfc804a]
- Updated dependencies [1fc2c4a99]
- Updated dependencies [693cf5bd6]
- Updated dependencies [afd1c7c97]
- Updated dependencies [a937aabf0]
- Updated dependencies [661239b2a]
- Updated dependencies [630ab9436]
- tinacms@1.5.23
- Updated dependencies [b6fbab887]
- Updated dependencies [4ae43fdde]
- Updated dependencies [aec44a7dc]
- tinacms@1.5.22
- 177002715: Fix/media thumbnail
- Updated dependencies [177002715]
- Updated dependencies [e69a3ef81]
- Updated dependencies [c925786ef]
- Updated dependencies [9f01550dd]
- tinacms@1.5.21
- Updated dependencies [7e4de0b2a]
- Updated dependencies [1144af060]
- tinacms@1.5.20
- Updated dependencies [1563ce5b2]
- Updated dependencies [e83ba8855]
- tinacms@1.5.19
-
121bd9fc4: Absorb @tinacms/toolkit into tinacms
fix: Use clean page-sizes on media manager (to make pagination more obvious)
Fix issue with uploading media in a folder with tina cloud
-
Updated dependencies [9c27087fb]
-
Updated dependencies [65d0a701f]
-
Updated dependencies [133e97d5b]
-
Updated dependencies [f02b4368b]
-
Updated dependencies [37cf8bd40]
-
Updated dependencies [ad22e0950]
-
Updated dependencies [8db979b9f]
-
Updated dependencies [7991e097e]
-
Updated dependencies [30c7eac58]
-
Updated dependencies [121bd9fc4]
- tinacms@1.5.18
- bc812441b: Use .mjs extension for ES modules
- a3e92bcfd: save https value on cloudinary upload
- bd26ae1ef: Fix issue where it would throw an error when the folder did not exist
- 63dd98904: - Adds newly added images to the top of the list and selects them
- Adds a refresh button to the image list
- Fixes a bug where you could not upload images in a directory (Locally)
- Adds a new folder button to the media manager
- Logs error messages from the handlers so the user is aware of them (previously they were just swallowed and returned in the response message but this is harder to find)
- 817b10b8a: deliver multiple size thumbnails
- 4cd5cd4f7: Refactor: Remove previewSrc from imageAPI
- f831dcf4f: security: update some deps
- 0b7687424: support pdf uploads
- efd56e769: Remove license headers
- c627ebe92: docs: Update broken media error links
- 48c4b3d48: Fix accept key in media stores
-
958d10c82: Tina 1.0 Release
Make sure you have updated to th "iframe" path: https://tina.io/blog/upgrading-to-iframe/
- 3370cefd8: Fix preview images in cloudinary
- 86dae3189: Fix dran'n'drop uploaded image not shown issue
- be40bfd71: Remove unnecessary media helper deps
- 2422e505d: Removed styled-components as a dependency in tinacms. Removed deprecated react-toolbar in @tinacms/toolkit.
- ed168ce43: Bump to update vm2
- b369d7238: Update dependencies to fix vulnerabilities in external packages.
- ae23e9ad6: Remove unused deps from monorepo
- d6f0cc835: fix: fix broken link in CMS placeholder screen
- cdcd49215: fixed a type error
-
4a3990c7e: Cloudinary media store now serves images over
https
by default. This can now be configured though the handler provided.To revert to the old behavior:
export default createMediaHandler( { // ... }, { useHttps: false, } )
The default for
useHttps
istrue
- 2a4a23b74: Fixed issue where folders could not have spaces
- e792dd0fd: Added basic Create Tina App
- 138ceb8c4: Clean up dependencies
- d9f37ea7e: Ensure the full image resolution URL is persisted
- b99baebf1: Add rich-text editor based on mdx, bump React dependency requirement to 16.14
- 9d68b058f: Add support for multiple image upload in the Media Store.
- 9b27192fe: Build packages with new scripting, which includes preliminary support for ES modules.
- 634524925: filetype acceptance now comes from the media store configuration
- c8be48892: Fix drag & drop behavior in ImageFieldPlugin
- 33382db1a: Fix files in root not showing when using default directory argument
-
7f3c8c1a: # 🔧 Changes coming to TinaCMS ⚙️
👋 You may have noticed we've been hard at-work lately building out a more opinionated approach to TinaCMS. To that end, we've settled around a few key points we'd like to announce. To see the work in progress, check out the main branch, which will become the primary branch soon.
By nature, Tina relies heavily on React context, and the dependency mismatches from over-modularizing our toolkit has led to many bugs related to missing context. To fix this, we'll be consolidating nearly every package in the @tinacms scope to a single package called
@tinacms/toolkit
We'll also be rolling out esm support as it's now much easier to address build improvements
The
tinacms
package now comes baked-in with APIs for working with the TinaCMS GraphQL API. Because@tinacms/toolkit
now encompasses everything you'd need to build your own CMS integration, we're repurposing thetinacms
package to more accurately reflect the "batteries-included" approach.If you haven't been introduced, the GraphQL API is a Git-backed CMS which we'll be leaning into more in the future. With a generous free tier and direct syncing with Github its something we're really excited to push forward. Sign up for free here Note: tinacms still exports the same APIs, but we'll gradually start moving the backend-agnostic tools to @tinacms/toolkit.
The tina-graphql-gateway repo will be absorbed into this one. If you've been working with our GraphQL APIs you'll need to follow our migration guide.
We've had success with Yarn 2 and PNP in other monorepos, if you're a contributor you'll notice some updates to the DX, which should hopefully result in a smoother experience.
The
@tinacms/toolkit
isn't going anywhere. And if you're using packages likereact-tinacms-strapi
or react-tinacms-github
with success, that won't change much, they'll just be powered by@tinacms/toolkit
under the hood.We'll be bumping all packages to
0.50.0
to reflect the changes. If you're using @tincams scoped packages those won't receive the upgrade. Unscoped packages likereact-tinacms-editor
will be upgraded, and should be bumped to 0.50.0 as well. When we move to1.0.0
we'll be pushing internal APIs to@tinacms/toolkit
, so that's the long-term location ofWe'll continue to make security patches, however major bug fixes will likely not see any updates. Keep in mind that
@tinacms/toolkit
will continue to be developed.
- d0335573: Upgrade to use @tinacms/toolkit instead of tinacms
- Updated dependencies [434d61d4]
- Updated dependencies [7f3c8c1a]
- tinacms@0.5.0
- @tinacms/toolkit@0.44.0
- 7e8f414e: contextual error messages in media library
- Updated dependencies [d42e2bcf]
- Updated dependencies [ab4e388b]
- Updated dependencies [7351d92f]
- Updated dependencies [95244e14]
- tinacms@0.4.0
- Updated dependencies [96ee3eb1]
- tinacms@0.3.0
- Create package