@sveltia/cms 0.98.1 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -10
- package/dist/sveltia-cms.js +174 -174
- package/dist/sveltia-cms.js.map +1 -1
- package/dist/sveltia-cms.mjs +173 -173
- package/dist/sveltia-cms.mjs.map +1 -1
- package/package.json +1 -1
- package/schema/sveltia-cms.json +5 -0
- package/types/public.d.ts +4 -0
package/README.md
CHANGED
|
@@ -73,6 +73,7 @@ Welcome to the only Netlify CMS successor you can trust!
|
|
|
73
73
|
- [Including Hugo’s special index file in a folder collection](#including-hugos-special-index-file-in-a-folder-collection)
|
|
74
74
|
- [Using singletons](#using-singletons)
|
|
75
75
|
- [Using keyboard shortcuts](#using-keyboard-shortcuts)
|
|
76
|
+
- [Controlling entry file paths](#controlling-entry-file-paths)
|
|
76
77
|
- [Translating entry fields with one click](#translating-entry-fields-with-one-click)
|
|
77
78
|
- [Localizing entry slugs](#localizing-entry-slugs)
|
|
78
79
|
- [Disabling non-default locale content](#disabling-non-default-locale-content)
|
|
@@ -196,7 +197,7 @@ Note: This lengthy section compares Sveltia CMS with both Netlify CMS and Decap
|
|
|
196
197
|
### Better productivity
|
|
197
198
|
|
|
198
199
|
- Developers can [work with a local Git repository](#working-with-a-local-git-repository) without any additional configuration or proxy server, resulting in a streamlined workflow and improved performance.[^26]
|
|
199
|
-
- It also avoids a number of issues, including potential
|
|
200
|
+
- It also avoids a number of issues, including potential security issues,[^158][^282] a 30 MB file size limit,[^51] an unknown error with `publish_mode`,[^75] and an unused `logo_url`.[^49]
|
|
200
201
|
- When you delete an entry or an asset file, the empty folder that contains it is also deleted, so you don’t have to delete it manually.
|
|
201
202
|
- Provides a smoother user experience in the Content Editor:
|
|
202
203
|
- A local backup of an entry draft is automatically created without interruption by a confirmation dialog, which annoys users and can cause a page navigation problem if dismissed.[^106] The backup can then be reliably restored without unexpected overwriting.[^85]
|
|
@@ -229,7 +230,7 @@ Note: This lengthy section compares Sveltia CMS with both Netlify CMS and Decap
|
|
|
229
230
|
- The `same-origin` referrer policy is automatically set with a `<meta>` tag.
|
|
230
231
|
- Sveltia CMS has a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) requirement that forces the site content, including the CMS configuration file, to be served over HTTPS.
|
|
231
232
|
- GitHub commits are automatically GPG-signed and [marked as verified](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification).[^144]
|
|
232
|
-
- Our [local repository workflow](#working-with-a-local-git-repository) doesn’t require a proxy server, reducing an attack surface.[^158]
|
|
233
|
+
- Our [local repository workflow](#working-with-a-local-git-repository) doesn’t require a proxy server, reducing an attack surface.[^158][^282]
|
|
233
234
|
|
|
234
235
|
### Better installation
|
|
235
236
|
|
|
@@ -275,8 +276,9 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
275
276
|
- The [i18n limitations](https://decapcms.org/docs/i18n/#limitations) in Netlify/Decap CMS do not apply to Sveltia CMS:
|
|
276
277
|
- File collections support multiple files/folders i18n structures.[^87] To enable it, simply use the `{{locale}}` template tag in the `file` path option, e.g. `content/pages/about.{{locale}}.json` or `content/pages/{{locale}}/about.json`. For backward compatibility, the global `structure` option only applies to folder collections, and the default i18n structure for file collections remains single file.
|
|
277
278
|
- The List and Object widgets support the `i18n: duplicate` field configuration so that changes made with these widgets are duplicated between locales.[^7][^68] The `i18n` configuration can normally be used for the subfields.
|
|
278
|
-
-
|
|
279
|
-
|
|
279
|
+
- Gives more control over [entry file paths](#controlling-entry-file-paths):
|
|
280
|
+
- The new `multiple_folders_i18n_root` i18n structure allows to have locale folders below the project root: `/<locale>/<folder>/<path>.<extension>`.[^182]
|
|
281
|
+
- The new `omit_default_locale_from_filename` i18n option allows to exclude the default locale from filenames. This option applies to entry collections with the `multiple_files` i18n structure enabled, as well as to file collection items with the `file` path ending with `.{{locale}}.<extension>`, aiming to support [Zola’s multilingual sites](https://www.getzola.org/documentation/content/multilingual/). ([Discussion](https://github.com/sveltia/sveltia-cms/discussions/394))
|
|
280
282
|
- The `required` field option accepts an array of locale codes in addition to a boolean, making the field required for a subset of locales when i18n support is enabled. For example, if only English is required, you could write `required: [en]`. An empty array is equivalent to `required: false`.
|
|
281
283
|
- [Entry-relative media folders](https://decapcms.org/docs/collection-folder/#media-and-public-folder) can be used in conjunction with the `multiple_folders` i18n structure.[^21]
|
|
282
284
|
- The `{{locale}}` template tag can be used in the [`preview_path`](https://decapcms.org/docs/configuration-options/#preview_path) collection option to provide site preview links for each language.[^63]
|
|
@@ -583,6 +585,7 @@ Sveltia CMS supports all the [built-in widgets](https://decapcms.org/docs/widget
|
|
|
583
585
|
- Field validation works as expected.[^279]
|
|
584
586
|
- No error is raised in the browser console saying `Sent invalid data to remark`.[^280]
|
|
585
587
|
- No error is raised in the browser console saying `onValidate is not a function`.[^281]
|
|
588
|
+
- Developers can specify the URL to redirect users after logging out with the `logout_redirect_url` global option.[^283]
|
|
586
589
|
|
|
587
590
|
### Better localization
|
|
588
591
|
|
|
@@ -699,7 +702,7 @@ Sveitia CMS works with all modern browsers, but there are a few limitations beca
|
|
|
699
702
|
|
|
700
703
|
### Installation & setup
|
|
701
704
|
|
|
702
|
-
Currently, Sveltia CMS is primarily intended for existing Netlify/Decap CMS users. If you don’t have it yet, follow [their
|
|
705
|
+
Currently, Sveltia CMS is primarily intended for existing Netlify/Decap CMS users. If you don’t have it yet, follow [their document](https://decapcms.org/docs/basic-steps/) to add it to your site and create a configuration file first. Skip the [Choosing a Backend](https://decapcms.org/docs/choosing-a-backend/) page and configure the [GitHub](https://decapcms.org/docs/github-backend/), [GitLab](https://decapcms.org/docs/gitlab-backend/) or [Gitea/Forgejo](https://decapcms.org/docs/gitea-backend/) backend instead. Then [migrate](#migration) to Sveltia CMS as described below.
|
|
703
706
|
|
|
704
707
|
Or try one of the starter kits for popular frameworks created by community:
|
|
705
708
|
|
|
@@ -1047,6 +1050,56 @@ If you want to reference a singleton file with a Relation field, use `_singleton
|
|
|
1047
1050
|
|
|
1048
1051
|
Standard keyboard shortcuts are also available in the Markdown editor, including `Ctrl+B`/`Command+B` for bold text, `Ctrl+I`/`Command+I` for italics, and `Tab` to indent a list item.
|
|
1049
1052
|
|
|
1053
|
+
### Controlling entry file paths
|
|
1054
|
+
|
|
1055
|
+
A [folder collection](https://decapcms.org/docs/collection-folder/)’s file path is determined by multiple factors: the `i18n`, `folder`, `path`, `slug` and `extension` options. The configuration can be complex, especially with i18n support, so let’s break it down.
|
|
1056
|
+
|
|
1057
|
+
- The [`i18n`](https://decapcms.org/docs/i18n/) global or collection option (optional)
|
|
1058
|
+
- It can be configured to add internationalization (i18n) support to your site.
|
|
1059
|
+
- The `structure` and `omit_default_locale_from_filename` options affect the entry file path.
|
|
1060
|
+
- The `folder` collection option (required)
|
|
1061
|
+
- It specifies the folder where the collection entries are stored, relative to the repository’s root directory.
|
|
1062
|
+
- It can contain slashes to create a nested folder structure.
|
|
1063
|
+
- The [`path`](https://decapcms.org/docs/collection-folder/#folder-collections-path) collection option (optional)
|
|
1064
|
+
- It defaults to `{{slug}}`, which is the `slug` collection option value.
|
|
1065
|
+
- It can contain template tags.
|
|
1066
|
+
- It can also contain slashes to create a nested folder structure.
|
|
1067
|
+
- The [`slug`](https://decapcms.org/docs/configuration-options/#slug) collection option (optional)
|
|
1068
|
+
- It defaults to `{{title}}`, which is the entry’s `title` field value’s slugified version.
|
|
1069
|
+
- It can also contain template tags but _cannot_ contain slashes.
|
|
1070
|
+
- The [`extension`](https://decapcms.org/docs/configuration-options/#extension-and-format) collection option (optional)
|
|
1071
|
+
- It defaults to `md`.
|
|
1072
|
+
|
|
1073
|
+
Looking at the above options, the entry file path can be constructed as follows:
|
|
1074
|
+
|
|
1075
|
+
- With i18n disabled:
|
|
1076
|
+
```yaml
|
|
1077
|
+
/<folder>/<path>.<extension>
|
|
1078
|
+
```
|
|
1079
|
+
- With the `single_file` i18n structure
|
|
1080
|
+
```yaml
|
|
1081
|
+
/<folder>/<path>.<extension>
|
|
1082
|
+
```
|
|
1083
|
+
- With the `multiple_files` i18n structure:
|
|
1084
|
+
```yaml
|
|
1085
|
+
/<folder>/<path>.<locale>.<extension>
|
|
1086
|
+
```
|
|
1087
|
+
When the `omit_default_locale_from_filename` i18n option is set to `true`, the path depends on the locale:
|
|
1088
|
+
```yaml
|
|
1089
|
+
/<folder>/<path>.<extension> # default locale
|
|
1090
|
+
/<folder>/<path>.<locale>.<extension> # other locales
|
|
1091
|
+
```
|
|
1092
|
+
- With the `multiple_folders` i18n structure:
|
|
1093
|
+
```yaml
|
|
1094
|
+
/<folder>/<locale>/<path>.<extension>
|
|
1095
|
+
```
|
|
1096
|
+
- With the `multiple_folders_i18n_root` i18n structure:
|
|
1097
|
+
```yaml
|
|
1098
|
+
/<locale>/<folder>/<path>.<extension>
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
The configuration for a [file collection](https://decapcms.org/docs/collection-file/) and [singleton collection](#using-singletons) is much simpler, as it only requires the `file` option to specify the complete file path, including the folder, filename and extension. It can also include the `{{locale}}` template tag for i18n support.
|
|
1102
|
+
|
|
1050
1103
|
### Translating entry fields with one click
|
|
1051
1104
|
|
|
1052
1105
|
Sveltia CMS comes with a handy translation API integration so that you can translate any text field from another locale without leaving the Content Editor. Currently, Google’s Cloud Translation and OpenAI’s GPT-3.5 Turbo are supported. To enable the quick translation feature:
|
|
@@ -1385,7 +1438,7 @@ output:
|
|
|
1385
1438
|
|
|
1386
1439
|
Content is generally saved as key-value pairs in a file, where the key is the field name and the value is the field value. However, there are some exceptions you should be aware of.
|
|
1387
1440
|
|
|
1388
|
-
If the format is front matter, the `body` field is saved outside of the front matter block, as briefly explained in the [Decap CMS
|
|
1441
|
+
If the format is front matter, the `body` field is saved outside of the front matter block, as briefly explained in the [Decap CMS document](https://decapcms.org/docs/configuration-options/#extension-and-format):
|
|
1389
1442
|
|
|
1390
1443
|
```yaml
|
|
1391
1444
|
---
|
|
@@ -1670,7 +1723,7 @@ Due late 2025
|
|
|
1670
1723
|
Due early 2026
|
|
1671
1724
|
|
|
1672
1725
|
- Implementing [a few deferred Netlify/Decap CMS features](#current-limitations), including editorial workflow and nested collections, while addressing a number of bugs in their implementations
|
|
1673
|
-
- Tackling even more Netlify/Decap CMS issues
|
|
1726
|
+
- Tackling even more Netlify/Decap CMS issues to bring the total number of issues solved to 300+:
|
|
1674
1727
|
- [Manual entry sorting](https://github.com/sveltia/sveltia-cms/issues/214)[^125]
|
|
1675
1728
|
- [Directory navigation in the Asset Library](https://github.com/sveltia/sveltia-cms/issues/420)[^240]
|
|
1676
1729
|
|
|
@@ -1698,6 +1751,7 @@ Due early 2026
|
|
|
1698
1751
|
- Advanced Relation fields[^242], including cascade updates/deletes[^243] and quick item additions[^266]
|
|
1699
1752
|
- We’ll also implement [reverse reference lists](https://github.com/sveltia/sveltia-cms/discussions/416)
|
|
1700
1753
|
- and many more (100+ issues and discussions)
|
|
1754
|
+
- As we mentioned in the [Project status](#project-status) section, we’re planning to solve 400+ issues in total.
|
|
1701
1755
|
- Enhancements to Sveltia CMS Additions (some may be included in v3.0):
|
|
1702
1756
|
- Post locking[^166] (like [WordPress](https://codex.wordpress.org/Post_Locking))
|
|
1703
1757
|
- Scheduled posts[^167]
|
|
@@ -1721,8 +1775,8 @@ Due early 2026
|
|
|
1721
1775
|
|
|
1722
1776
|
### Non-goals
|
|
1723
1777
|
|
|
1724
|
-
- Framework-specific integrations, including a WYSIWYG editor. Due to the crowded CMS market and our limited resources, we will focus on framework-agnostic core features that are essential for
|
|
1725
|
-
- Monetization. We may offer an affordable cloud version in the future since self-hosting the CMS
|
|
1778
|
+
- Framework-specific integrations, including a WYSIWYG editor. Due to the crowded CMS market and our limited resources, we will focus on framework-agnostic core features that are essential for succeeding Netlify/Decap CMS and modernizing the platform.
|
|
1779
|
+
- Monetization. We may offer an affordable cloud version in the future since self-hosting the CMS can be a hassle. However, we will not charge for the CMS itself. We want to keep it free and open source forever.
|
|
1726
1780
|
|
|
1727
1781
|
## Trivia
|
|
1728
1782
|
|
|
@@ -1966,7 +2020,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1966
2020
|
|
|
1967
2021
|
[^112]: Netlify/Decap CMS [#5815](https://github.com/decaporg/decap-cms/issues/5815), [#6522](https://github.com/decaporg/decap-cms/issues/6522), [#6532](https://github.com/decaporg/decap-cms/issues/6532), [#6588](https://github.com/decaporg/decap-cms/issues/6588), [#6617](https://github.com/decaporg/decap-cms/issues/6617), [#6640](https://github.com/decaporg/decap-cms/issues/6640), [#6663](https://github.com/decaporg/decap-cms/issues/6663), [#6695](https://github.com/decaporg/decap-cms/issues/6695), [#6697](https://github.com/decaporg/decap-cms/issues/6697), [#6764](https://github.com/decaporg/decap-cms/issues/6764), [#6765](https://github.com/decaporg/decap-cms/issues/6765), [#6835](https://github.com/decaporg/decap-cms/issues/6835), [#6983](https://github.com/decaporg/decap-cms/issues/6983), [#7205](https://github.com/decaporg/decap-cms/issues/7205), [#7450](https://github.com/decaporg/decap-cms/issues/7450), [#7453](https://github.com/decaporg/decap-cms/issues/7453), [#7572](https://github.com/decaporg/decap-cms/issues/7572)
|
|
1968
2022
|
|
|
1969
|
-
[^113]: Netlify/Decap CMS [#5656](https://github.com/decaporg/decap-cms/issues/5656), [#5837](https://github.com/decaporg/decap-cms/issues/5837), [#5972](https://github.com/decaporg/decap-cms/issues/5972), [#6476](https://github.com/decaporg/decap-cms/issues/6476), [#6516](https://github.com/decaporg/decap-cms/issues/6516), [#6930](https://github.com/decaporg/decap-cms/issues/6930), [#7080](https://github.com/decaporg/decap-cms/issues/7080), [#7105](https://github.com/decaporg/decap-cms/issues/7105), [#7106](https://github.com/decaporg/decap-cms/issues/7106), [#7119](https://github.com/decaporg/decap-cms/issues/7119), [#7176](https://github.com/decaporg/decap-cms/issues/7176), [#7194](https://github.com/decaporg/decap-cms/issues/7194), [#7244](https://github.com/decaporg/decap-cms/issues/7244), [#7278](https://github.com/decaporg/decap-cms/issues/7278), [#7301](https://github.com/decaporg/decap-cms/issues/7301), [#7342](https://github.com/decaporg/decap-cms/issues/7342), [#7348](https://github.com/decaporg/decap-cms/issues/7348), [#7354](https://github.com/decaporg/decap-cms/issues/7354), [#7376](https://github.com/decaporg/decap-cms/issues/7376), [#7408](https://github.com/decaporg/decap-cms/issues/7408), [#7412](https://github.com/decaporg/decap-cms/issues/7412), [#7413](https://github.com/decaporg/decap-cms/issues/7413), [#7422](https://github.com/decaporg/decap-cms/issues/7422), [#7427](https://github.com/decaporg/decap-cms/issues/7427), [#7434](https://github.com/decaporg/decap-cms/issues/7434), [#7438](https://github.com/decaporg/decap-cms/issues/7438), [#7454](https://github.com/decaporg/decap-cms/issues/7454), [#7464](https://github.com/decaporg/decap-cms/issues/7464), [#7471](https://github.com/decaporg/decap-cms/issues/7471), [#7485](https://github.com/decaporg/decap-cms/issues/7485), [#7499](https://github.com/decaporg/decap-cms/issues/7499), [#7515](https://github.com/decaporg/decap-cms/issues/7515), [#7564](https://github.com/decaporg/decap-cms/issues/7564), [#7571](https://github.com/decaporg/decap-cms/issues/7571), [#7574](https://github.com/decaporg/decap-cms/issues/7574) — These `removeChild` crashes are common in React apps, likely caused by a [browser extension](https://github.com/facebook/react/issues/17256) or [Google Translate](https://github.com/facebook/react/issues/11538).
|
|
2023
|
+
[^113]: Netlify/Decap CMS [#5656](https://github.com/decaporg/decap-cms/issues/5656), [#5837](https://github.com/decaporg/decap-cms/issues/5837), [#5972](https://github.com/decaporg/decap-cms/issues/5972), [#6476](https://github.com/decaporg/decap-cms/issues/6476), [#6516](https://github.com/decaporg/decap-cms/issues/6516), [#6930](https://github.com/decaporg/decap-cms/issues/6930), [#7080](https://github.com/decaporg/decap-cms/issues/7080), [#7105](https://github.com/decaporg/decap-cms/issues/7105), [#7106](https://github.com/decaporg/decap-cms/issues/7106), [#7119](https://github.com/decaporg/decap-cms/issues/7119), [#7176](https://github.com/decaporg/decap-cms/issues/7176), [#7194](https://github.com/decaporg/decap-cms/issues/7194), [#7244](https://github.com/decaporg/decap-cms/issues/7244), [#7278](https://github.com/decaporg/decap-cms/issues/7278), [#7301](https://github.com/decaporg/decap-cms/issues/7301), [#7342](https://github.com/decaporg/decap-cms/issues/7342), [#7348](https://github.com/decaporg/decap-cms/issues/7348), [#7354](https://github.com/decaporg/decap-cms/issues/7354), [#7376](https://github.com/decaporg/decap-cms/issues/7376), [#7408](https://github.com/decaporg/decap-cms/issues/7408), [#7412](https://github.com/decaporg/decap-cms/issues/7412), [#7413](https://github.com/decaporg/decap-cms/issues/7413), [#7422](https://github.com/decaporg/decap-cms/issues/7422), [#7427](https://github.com/decaporg/decap-cms/issues/7427), [#7434](https://github.com/decaporg/decap-cms/issues/7434), [#7438](https://github.com/decaporg/decap-cms/issues/7438), [#7454](https://github.com/decaporg/decap-cms/issues/7454), [#7464](https://github.com/decaporg/decap-cms/issues/7464), [#7471](https://github.com/decaporg/decap-cms/issues/7471), [#7485](https://github.com/decaporg/decap-cms/issues/7485), [#7499](https://github.com/decaporg/decap-cms/issues/7499), [#7515](https://github.com/decaporg/decap-cms/issues/7515), [#7564](https://github.com/decaporg/decap-cms/issues/7564), [#7571](https://github.com/decaporg/decap-cms/issues/7571), [#7574](https://github.com/decaporg/decap-cms/issues/7574), [#7580](https://github.com/decaporg/decap-cms/issues/7580) — These `removeChild` crashes are common in React apps, likely caused by a [browser extension](https://github.com/facebook/react/issues/17256) or [Google Translate](https://github.com/facebook/react/issues/11538).
|
|
1970
2024
|
|
|
1971
2025
|
[^114]: Netlify/Decap CMS [#5029](https://github.com/decaporg/decap-cms/issues/5029), [#5048](https://github.com/decaporg/decap-cms/issues/5048)
|
|
1972
2026
|
|
|
@@ -2303,3 +2357,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
2303
2357
|
[^280]: Netlify/Decap CMS [#3490](https://github.com/decaporg/decap-cms/issues/3490), [#3682](https://github.com/decaporg/decap-cms/issues/3682), [#4669](https://github.com/decaporg/decap-cms/issues/4669), [#4895](https://github.com/decaporg/decap-cms/issues/4895), [#4976](https://github.com/decaporg/decap-cms/issues/4976), [#5766](https://github.com/decaporg/decap-cms/issues/5766), [#6501](https://github.com/decaporg/decap-cms/issues/6501), [#6785](https://github.com/decaporg/decap-cms/issues/6785), [#7315](https://github.com/decaporg/decap-cms/issues/7315)
|
|
2304
2358
|
|
|
2305
2359
|
[^281]: Netlify/Decap CMS [#4892](https://github.com/decaporg/decap-cms/issues/4892) — We cannot reproduce the crash, but we do see the error message in the console.
|
|
2360
|
+
|
|
2361
|
+
[^282]: Netlify/Decap CMS [#7579](https://github.com/decaporg/decap-cms/pull/7579)
|
|
2362
|
+
|
|
2363
|
+
[^283]: Netlify/Decap CMS [#713](https://github.com/decaporg/decap-cms/issues/713)
|