@sveltia/cms 0.40.3 → 0.41.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 +88 -72
- package/dist/sveltia-cms.js +472 -448
- package/dist/sveltia-cms.js.map +1 -1
- package/dist/sveltia-cms.mjs +474 -450
- package/dist/sveltia-cms.mjs.map +1 -1
- package/package.json +14 -13
package/README.md
CHANGED
|
@@ -25,7 +25,6 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
|
|
|
25
25
|
- [Better accessibility](#better-accessibility)
|
|
26
26
|
- [Better security](#better-security)
|
|
27
27
|
- [Better configuration](#better-configuration)
|
|
28
|
-
- [Better localization](#better-localization)
|
|
29
28
|
- [Better backend support](#better-backend-support)
|
|
30
29
|
- [Better i18n support](#better-i18n-support)
|
|
31
30
|
- [Better collections](#better-collections)
|
|
@@ -35,6 +34,7 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
|
|
|
35
34
|
- [New widgets](#new-widgets)
|
|
36
35
|
- [Better asset management](#better-asset-management)
|
|
37
36
|
- [Better customization](#better-customization)
|
|
37
|
+
- [Better localization](#better-localization)
|
|
38
38
|
- [Compatibility](#compatibility)
|
|
39
39
|
- [Features not to be implemented](#features-not-to-be-implemented)
|
|
40
40
|
- [Current limitations](#current-limitations)
|
|
@@ -47,7 +47,7 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
|
|
|
47
47
|
- [Tips \& tricks](#tips--tricks)
|
|
48
48
|
- [Moving your site from Netlify to another hosting service](#moving-your-site-from-netlify-to-another-hosting-service)
|
|
49
49
|
- [Providing a JSON configuration file](#providing-a-json-configuration-file)
|
|
50
|
-
- [Working around authentication error](#working-around-authentication-error)
|
|
50
|
+
- [Working around an authentication error](#working-around-an-authentication-error)
|
|
51
51
|
- [Working with a local Git repository](#working-with-a-local-git-repository)
|
|
52
52
|
- [Enabling local development in Brave](#enabling-local-development-in-brave)
|
|
53
53
|
- [Using a custom icon for a collection](#using-a-custom-icon-for-a-collection)
|
|
@@ -83,9 +83,11 @@ Due to its unfortunate abandonment, Netlify CMS spawned 3 successors:
|
|
|
83
83
|
- **Sveltia CMS**: a total reboot, started in November 2022, first appeared on GitHub in March 2023
|
|
84
84
|
- [Decap CMS](https://github.com/decaporg/decap-cms): a rebranded version, owned by a Netlify agency partner, [announced in February 2023](https://www.netlify.com/blog/netlify-cms-to-become-decap-cms/) as the official successor
|
|
85
85
|
|
|
86
|
-
Sveltia CMS is the only project that doesn’t inherit the complexity, technical debt and miscellaneous bugs of Netlify CMS, which was launched back in
|
|
86
|
+
Sveltia CMS is the only project that doesn’t inherit the complexity, technical debt and miscellaneous bugs of Netlify CMS, which was launched back in 2015. We are confident that our decision to rebuild the application from scratch was the right one, as proven by the [hundreds of improvements](#differentiators) we have already made.
|
|
87
87
|
|
|
88
|
-
While Sveltia CMS is specifically designed to replace legacy Netlify CMS instances, it also aims to serve as a substitute for the other products.
|
|
88
|
+
While Sveltia CMS is specifically designed to replace legacy Netlify CMS instances, it also aims to serve as a substitute for the other products.
|
|
89
|
+
|
|
90
|
+
Note: While we are closely following the development of Decap CMS, compatibility with Static CMS will be worked on mostly after the release of Sveltia CMS 1.0.
|
|
89
91
|
|
|
90
92
|
### Our goals
|
|
91
93
|
|
|
@@ -97,22 +99,20 @@ While Sveltia CMS is specifically designed to replace legacy Netlify CMS instanc
|
|
|
97
99
|
|
|
98
100
|
## Development status
|
|
99
101
|
|
|
100
|
-
Sveltia CMS is
|
|
102
|
+
Sveltia CMS is currently in **beta**, and version 1.0 is expected to ship in **early 2025**, with a release candidate hopefully by the end of 2024. Check our [release notes](https://github.com/sveltia/sveltia-cms/releases) for updates. See also our [roadmap](#roadmap).
|
|
101
103
|
|
|
102
104
|
While we fix reported bugs as quickly as possible, usually within 24 hours, our overall progress may be slower than you think. The thing is, it’s not just a personal project of [@kyoshino](https://github.com/kyoshino), but also involves different kinds of activities:
|
|
103
105
|
|
|
104
106
|
- Ensuring substantial [compatibility with Netlify/Decap CMS](#compatibility)
|
|
105
107
|
- Tackling as many [Netlify/Decap CMS issues](https://github.com/decaporg/decap-cms/issues) as possible
|
|
106
|
-
- So far,
|
|
107
|
-
- Target: 150 issues by GA, 250
|
|
108
|
-
- Note:
|
|
108
|
+
- So far, 135+ of them, or 240+ including duplicates, have been effectively solved in Sveltia CMS
|
|
109
|
+
- Target: 150 issues by GA, and 250 or all relevant and fixable issues in a future release
|
|
110
|
+
- Note: Issues include both feature requests and bug reports; we also track [their discussions](https://github.com/decaporg/decap-cms/discussions)
|
|
109
111
|
- [Let us know](https://github.com/sveltia/sveltia-cms/issues/new) if you have any specific issues you’d like to see solved!
|
|
110
112
|
- Responding to feedback from clients and regular users
|
|
111
113
|
- Implementing our own enhancement ideas for every part of the product
|
|
112
114
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
<br>
|
|
115
|
+
<br>
|
|
116
116
|
|
|
117
117
|
## Differentiators
|
|
118
118
|
|
|
@@ -123,17 +123,18 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
123
123
|
- Created and maintained by an [experienced UX engineer](https://github.com/kyoshino) who loves code, design and marketing. You can expect constant improvements to the user experience (UX) and developer experience (DX) across the platform.
|
|
124
124
|
- The maintainer tries to be as responsive as possible. Reported bugs are usually fixed within 24 hours.
|
|
125
125
|
- Offers a modern, intuitive user interface, including an immersive dark mode[^2], inspired in part by the Netlify CMS v3 prototype[^1].
|
|
126
|
-
-
|
|
126
|
+
- We develop [our own UI library](https://github.com/sveltia/sveltia-ui) to ensure optimal usability without compromising accessibility.
|
|
127
|
+
- Comes with touch device support, such as larger buttons for easier tapping. While the UI is not yet optimized for small screens, it should work well with large tablets like iPad Pro or Pixel Tablet. Mobile support and other optimizations such as swipe navigation are planned shortly after the 1.0 release.
|
|
127
128
|
- Made with Svelte, not React, means we can spend more time on UX rather than tedious state management. It also allows us to avoid common fatal application crashes[^113][^129]. Best of all, Svelte offers unmatched performance!
|
|
128
|
-
- The Help menu provides all links to useful resources, including release notes, feedback and support.
|
|
129
|
-
- Users can personalize the application with various settings.
|
|
129
|
+
- The in-app Help menu provides all links to useful resources, including release notes, feedback and support.
|
|
130
|
+
- Users can personalize the application with various settings, including appearance and language. Developer Mode can also be enabled.
|
|
130
131
|
- Never miss out on the latest features and bug fixes by being notified when an update to the CMS is available[^31]. Then update to the latest version with a single click[^66].
|
|
131
132
|
|
|
132
133
|
### Better performance
|
|
133
134
|
|
|
134
135
|
- Built completely from scratch with Svelte instead of forking React-based Netlify/Decap CMS. The app starts fast and stays fast. The compiled code is vanilla JavaScript — you can use it with any framework or static site generator (SSG) that can load static data files during the build process.
|
|
135
136
|
- Small footprint: The bundle size is less than 450 KB when minified and brotlied, which is much lighter than Netlify CMS (1.5 MB), Decap CMS (1.8 MB) and Static CMS (2.6 MB)[^57][^64], even though we haven’t implemented some features yet. That’s the power of Svelte + Vite.
|
|
136
|
-
- We have upgraded from Svelte 4 to [Svelte 5 Release Candidate](https://svelte.dev/blog/svelte-5-release-candidate) to further improve performance, including an even smaller bundle size. A full migration to the
|
|
137
|
+
- We have upgraded from Svelte 4 to [Svelte 5 Release Candidate](https://svelte.dev/blog/svelte-5-release-candidate) to further improve performance, including an even smaller bundle size. A full migration to the Runes reactivity API will follow.
|
|
137
138
|
- Sveltia CMS is free of technical debt and [virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
|
|
138
139
|
- Uses the GraphQL API for GitHub and GitLab to quickly fetch content at once, so that entries and assets can be listed and searched instantly[^32][^65]. It also avoids the slowness and potential API rate limit violations caused by hundreds of requests with Relation widgets[^14].
|
|
139
140
|
- Saving entries and assets to GitHub is also much faster thanks to the [GraphQL mutation](https://github.blog/changelog/2021-09-13-a-simpler-api-for-authoring-commits/).
|
|
@@ -151,7 +152,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
151
152
|
- Provides a smoother user experience in the Content Editor:
|
|
152
153
|
- 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].
|
|
153
154
|
- Click once (the Save button) instead of twice (Publish > Publish now) to save an entry.
|
|
154
|
-
- The editor closes automatically when an entry is saved. This behaviour can be changed in
|
|
155
|
+
- The editor closes automatically when an entry is saved. This behaviour can be changed in the application settings.
|
|
155
156
|
- Uploading files can be done with drag and drop[^20].
|
|
156
157
|
- You can upload multiple files at once to the Asset Library[^5].
|
|
157
158
|
- You can delete multiple entries and assets at once.
|
|
@@ -171,24 +172,18 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
171
172
|
|
|
172
173
|
### Better security
|
|
173
174
|
|
|
174
|
-
- Avoids
|
|
175
|
+
- Avoids vulnerabilities in dependencies through constant updates, [`pnpm audit`](https://pnpm.io/cli/audit), and frequent releases[^33].
|
|
175
176
|
- We have enabled [npm package provenance](https://github.blog/security/supply-chain-security/introducing-npm-package-provenance/).
|
|
176
177
|
- We have documented how to [set up a Content Security Policy](#setting-up-content-security-policy) for the CMS to prevent any unexpected errors or otherwise insecure configuration[^108].
|
|
177
178
|
- The `unsafe-eval` and `unsafe-inline` keywords are not needed in the `script-src` CSP directive[^34].
|
|
178
179
|
- The `same-origin` referrer policy is automatically set with a `<meta>` tag.
|
|
180
|
+
- 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].
|
|
179
181
|
|
|
180
182
|
### Better configuration
|
|
181
183
|
|
|
182
184
|
- Some servers and frameworks remove the trailing slash from the CMS URL (`/admin`) depending on the configuration. In such cases, the config file is loaded from a root-relative URL (`/admin/config.yml`) instead of a regular relative URL (`./config.yml` = `/config.yml`) that results in a 404 Not Found error[^107].
|
|
183
185
|
- Supports a [JSON configuration file](#providing-a-json-configuration-file) that can be generated for bulk or complex collections[^60].
|
|
184
186
|
|
|
185
|
-
### Better localization
|
|
186
|
-
|
|
187
|
-
- The application UI locale is automatically selected based on the preferred language set with the browser[^132]. The `locale` configuration option is ignored, and `CMS.registerLocale()` is not required.
|
|
188
|
-
- The List widget’s `label` and `label_singular` are not converted to lowercase, which is especially problematic in German, where all nouns are capitalized[^98].
|
|
189
|
-
- Long menu item labels, especially in non-English locales, don’t overflow the dropdown container[^117].
|
|
190
|
-
- We’ll soon be migrating from [svelte-i18n](https://github.com/kaisermann/svelte-i18n) to the [Fluent localization system](https://projectfluent.org/) to better handle singular/plural forms and even more complex grammars.
|
|
191
|
-
|
|
192
187
|
### Better backend support
|
|
193
188
|
|
|
194
189
|
- Uses the GraphQL API where possible for better performance, as mentioned above. You don’t need to set the `use_graphql` option to enable it for GitHub and GitLab.
|
|
@@ -209,19 +204,20 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
209
204
|
- Configuration
|
|
210
205
|
- The [i18n limitations](https://decapcms.org/docs/i18n/#limitations) in Netlify/Decap CMS do not apply to Sveltia CMS:
|
|
211
206
|
- 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 as before.
|
|
212
|
-
-
|
|
207
|
+
- The `i18n: duplicate` field configuration can be used for the List and Object widgets so that changes made with these widgets are duplicated between locales[^7][^68].
|
|
213
208
|
- [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].
|
|
214
209
|
- You can use the `{{locale}}` template tag in the [`preview_path`](https://decapcms.org/docs/configuration-options/#preview_path) collection option to provide site preview links for each language[^63].
|
|
215
210
|
- You can [use a random UUID for an entry slug](#using-a-random-id-for-an-entry-slug), which is a good option for locales that write in non-Latin characters.
|
|
216
|
-
- You can [localize entry slugs](#localizing-entry-slugs) while linking the localized files[^80], thanks to the support for Hugo’s `translationKey`[^81].
|
|
217
|
-
- When the `clean_accents` option is enabled for [entry slugs](https://decapcms.org/docs/configuration-options/#slug-type), certain characters, such as German umlauts, will be [transliterated](https://
|
|
211
|
+
- You can even [localize entry slugs](#localizing-entry-slugs) while linking the localized files[^80], thanks to the support for Hugo’s `translationKey`[^81].
|
|
212
|
+
- When the `clean_accents` option is enabled for [entry slugs](https://decapcms.org/docs/configuration-options/#slug-type), certain characters, such as German umlauts, will be [transliterated](https://en.wikipedia.org/wiki/Transliteration)[^99].
|
|
218
213
|
- You can embed the locale code in an entry by using `widget: hidden` along with `default: '{{locale}}'`[^101].
|
|
219
214
|
- User interface
|
|
220
215
|
- Eliminates UI confusion: The preview pane can be displayed without toggling i18n in the Content Editor. Both panes are scrollable. There is no condition where both panes are edited in the same language at the same time.
|
|
221
|
-
- You can easily switch between locales while editing by clicking a button instead of a dropdown list.
|
|
222
|
-
- Language labels appear in human-readable display names instead of ISO 639 language codes because it
|
|
216
|
+
- You can easily switch between locales while editing by clicking a button instead of a dropdown list.
|
|
217
|
+
- Language labels appear in human-readable display names instead of ISO 639 language codes because it’s not easy for everyone to recognize `DE` as German, `NL` as Dutch, `ZH` as Chinese, and so on.
|
|
223
218
|
- Content editing
|
|
224
219
|
- [Integrates DeepL](#using-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click. More translation services will be added in the future.
|
|
220
|
+
- The Content Editor supports [RTL scripts](https://en.wikipedia.org/wiki/Right-to-left_script) such as Arabic, Hebrew and Persian[^146].
|
|
225
221
|
- You can [disable non-default locale content](#disabling-non-default-locale-content)[^15].
|
|
226
222
|
- Boolean, DateTime, List and Number fields in the entry preview are displayed in a localized format.
|
|
227
223
|
- Boolean fields are updated in real time between locales like other widgets to avoid confusion[^35].
|
|
@@ -229,6 +225,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
229
225
|
- Solves problems with Chinese, Japanese and Korean (CJK) [IME](https://en.wikipedia.org/wiki/Input_method) text input in the rich text editor for the Markdown widget[^54].
|
|
230
226
|
- Raises a validation error instead of failing silently if the `single_file` structure is used and a required field is not filled in any of the locales[^55].
|
|
231
227
|
- Fields in non-default locales are validated as expected[^13].
|
|
228
|
+
- No internal error is thrown when changing the locale[^103].
|
|
232
229
|
|
|
233
230
|
### Better collections
|
|
234
231
|
|
|
@@ -244,14 +241,16 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
244
241
|
- Entry slug template tags support [filter transformations](https://decapcms.org/docs/summary-strings/) just like summary string template tags[^29].
|
|
245
242
|
- Single quotes (apostrophes) in a slug will be replaced with `sanitize_replacement` (default: hyphen) rather than being removed[^52].
|
|
246
243
|
- You can set the maximum number of characters for an entry slug with the new `slug_length` collection option to avoid deployment errors with Netlify or other platforms[^25].
|
|
247
|
-
- Setting the collection `path` doesn’t affect the entry slugs
|
|
244
|
+
- Setting the collection `path` doesn’t affect the entry slugs stored with the Relation widget[^137].
|
|
248
245
|
- Entry listing
|
|
249
246
|
- The collection list displays the number of items in each collection.
|
|
250
247
|
- A folder collection filter with a boolean value works as expected[^93].
|
|
248
|
+
- Entry grouping and sorting can work together. For example, it’s possible to group by year and then sort by year if configured properly.
|
|
251
249
|
- Hugo’s special `_index.md` files are ignored in folder collections unless the `path` option is configured to end with `_index` and the `extension` is `md`[^120]. You can still manage these files as part of a file collection if necessary.
|
|
252
250
|
- If there was an error while parsing an entry file, such as duplicate front matter keys, it won’t show up as a blank entry, and a clear error message will be displayed in the browser console[^121].
|
|
253
251
|
- Sorting entries by a DateTime field works as expected[^110].
|
|
254
|
-
-
|
|
252
|
+
- If you update an entry field that appears in the collection’s `summary`, such as `title`, the entry list displays an updated summary after you save the entry.
|
|
253
|
+
- If entries don’t have an Image field for thumbnails, the entry list will only be displayed in list view, because it doesn’t make sense to show grid view[^143].
|
|
255
254
|
- Assets stored in a [per-collection media folder](#using-a-custom-media-folder-for-a-collection) can be displayed next to the entries.
|
|
256
255
|
- The New Entry button won’t appear when a developer accidentally sets the `create: true` option on a file collection because it’s useless[^89].
|
|
257
256
|
- The Delete Entry button won’t appear when a developer accidentally sets the `delete: true` option on a file collection because the preconfigured files should not be deleted.
|
|
@@ -264,10 +263,10 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
264
263
|
- If you revert changes and there are no unsaved changes, the Save button is disabled as expected[^118].
|
|
265
264
|
- You can hide the preview of a specific field with `preview: false`[^126].
|
|
266
265
|
- Fields with validation errors are automatically expanded if they are part of nested, collapsed objects[^40].
|
|
267
|
-
-
|
|
268
|
-
-
|
|
269
|
-
- The preview pane displays all fields, including each title, making it easier to see which fields are populated.
|
|
266
|
+
- When you click on a field in the preview pane, the corresponding field in the edit pane is highlighted[^41]. It will be automatically expanded if collapsed.
|
|
267
|
+
- The preview pane displays all fields, including each label, making it easier to see which fields are populated.
|
|
270
268
|
- Provides better scroll synchronization between the panes when editing or previewing an entry[^92].
|
|
269
|
+
- The preview pane won’t cause a scrolling issue[^136].
|
|
271
270
|
- You can use a full regular expression, including flags, for the widget `pattern` option[^82]. For example, if you want to allow 280 characters or less in a multiline text field, you could write `/^.{0,280}$/s` (but you can now use the `maxlength` option instead.)
|
|
272
271
|
- A long validation error message is displayed in full, without being hidden behind the field label[^59].
|
|
273
272
|
- Any links to other entries will work as expected, with the Content Editor being updated for the other[^100].
|
|
@@ -296,6 +295,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
296
295
|
- The `default` value is saved when you create a file collection item, not just a folder collection item[^78].
|
|
297
296
|
- The `default` value supports the `{{locale}}` and `{{datetime}}` template tags, which will be replaced by the locale code and the current date/time in [ISO 8601 format](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format), respectively[^101][^102].
|
|
298
297
|
- List
|
|
298
|
+
- The `min` and `max` options can be used separately. You don’t need to specify both to use either option[^145].
|
|
299
299
|
- The Add Item button appears at the bottom of the list when the `add_to_top` option is not `true`, so you don’t have to scroll up each time to add new items.
|
|
300
300
|
- You can expand or collapse the entire list, while the Expand All and Collapse All buttons allow you to expand or collapse all items in the list at once.
|
|
301
301
|
- A required List field with no subfield or value is marked as invalid[^43].
|
|
@@ -305,7 +305,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
305
305
|
- Markdown
|
|
306
306
|
- The rich text editor is built with the well-maintained [Lexical](https://lexical.dev/) framework, which solves various issues with a [Slate](https://github.com/ianstormtaylor/slate)-based editor in Netlify/Decap CMS, including fatal application crashes[^71][^72][^73][^111], lost formatting when pasting[^124], backslash injections[^53], dropdown visibility[^70], and text input difficulties with IME[^54].
|
|
307
307
|
- You can set the default editor mode by changing the order of the `modes` option[^58]. If you want to use the plain text editor by default, add `modes: [raw, rich_text]` to the field configuration.
|
|
308
|
-
- Line breaks are rendered as line breaks in the preview pane according to GitHub Flavored Markdown.
|
|
308
|
+
- Line breaks are rendered as line breaks in the preview pane according to GitHub Flavored Markdown (GFM).
|
|
309
309
|
- Object
|
|
310
310
|
- Sveltia CMS offers two ways to have conditional fields in a collection[^30]:
|
|
311
311
|
- You can use [variable types](https://decapcms.org/docs/variable-type-widgets/) (the `types` option) with the Object widget just like the List widget.
|
|
@@ -316,7 +316,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
316
316
|
- Template strings with a wildcard like `{{cities.*.name}}` can also be used for `value_field`[^94].
|
|
317
317
|
- `display_fields` is displayed in the preview pane instead of `value_field`.
|
|
318
318
|
- The redundant `search_fields` option is not required in Sveltia CMS, as it defaults to `display_fields` (and `value_field`).
|
|
319
|
-
- A new
|
|
319
|
+
- A new item created in a referenced collection is immediately available in the options[^138].
|
|
320
320
|
- Select
|
|
321
321
|
- It’s possible to select an option with value `0`[^56].
|
|
322
322
|
- `label` is displayed in the preview pane instead of `value`.
|
|
@@ -327,7 +327,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
327
327
|
- Supports the `prefix` and `suffix` string options, which automatically prepend and/or append the developer-defined value to the user-input value.
|
|
328
328
|
- Boolean, Number and String
|
|
329
329
|
- Supports the `before_input` and `after_input` string options, which allow developers to display custom labels before and/or after the input UI[^28]. Markdown is supported in the value.
|
|
330
|
-
-
|
|
330
|
+
- Compatibility note: In Static CMS, these options are implemented as `prefix` and `suffix`, respectively, which have different meaning in Sveltia CMS.
|
|
331
331
|
- File and Image
|
|
332
332
|
- Provides a reimagined all-in-one asset selection dialog for File and Image fields.
|
|
333
333
|
- [Collection-specific assets](#using-a-custom-media-folder-for-a-collection) are listed for easy selection, while all assets are displayed in a separate tab[^19].
|
|
@@ -336,7 +336,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
336
336
|
- Integration with Pexels, Pixabay and Unsplash makes it easy to select and insert a free stock photo[^8]. More stock photo providers will be added in the future.
|
|
337
337
|
- You can also simply drag and drop a file onto a File/Image field to attach it without having to open the Select File dialog.
|
|
338
338
|
- Large images automatically fit in the preview pane instead of being displayed at their original size, which can easily exceed the width of the pane.
|
|
339
|
-
- If the `public_folder` contains `{{slug}}` and you’ve edited
|
|
339
|
+
- If the `public_folder` contains `{{slug}}` and you’ve edited a slug field (e.g. `title`) of a new entry after uploading an asset, the updated slug will be used in the saved asset path[^140]. Other dynamic template tags such as `{{filename}}` will also be populated as expected[^141].
|
|
340
340
|
- List and Object
|
|
341
341
|
- The `summary` is displayed correctly when it refers to a Relation field[^36] or a simple List field.
|
|
342
342
|
- Markdown, String and Text
|
|
@@ -384,18 +384,24 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
384
384
|
- The application renders within the dimensions of a [custom mount element](https://decapcms.org/docs/custom-mounting/), if exists[^109].
|
|
385
385
|
- A custom logo defined with the `logo_url` property is displayed on the global application header and the browser tab (favicon)[^134]. A smaller logo is also correctly positioned on the authentication page[^135].
|
|
386
386
|
|
|
387
|
+
### Better localization
|
|
388
|
+
|
|
389
|
+
- The application UI locale is automatically selected based on the preferred language set with the browser[^132]. Users can also change the locale in the application settings. Therefore, the `locale` configuration option is ignored and `CMS.registerLocale()` is not required.
|
|
390
|
+
- The List widget’s `label` and `label_singular` are not converted to lowercase, which is especially problematic in German, where all nouns are capitalized[^98].
|
|
391
|
+
- Long menu item labels, especially in non-English locales, don’t overflow the dropdown container[^117].
|
|
392
|
+
- We’ll soon be migrating from [svelte-i18n](https://github.com/kaisermann/svelte-i18n) to the [Fluent localization system](https://projectfluent.org/) for natural-sounding translations in every locale.
|
|
393
|
+
|
|
387
394
|
## Compatibility
|
|
388
395
|
|
|
389
396
|
We are trying to make Sveltia CMS compatible with Netlify/Decap CMS where possible, so that more users can seamlessly switch to our modern alternative. It’s ready to be used as a drop-in replacement for Netlify/Decap CMS in some casual use case scenarios with a [single line of code update](#migration).
|
|
390
397
|
|
|
391
|
-
However, some features are still missing or will not be added due to deprecation and other factors. Look at the compatibility info below to see if you can migrate now or
|
|
398
|
+
However, 100% feature parity is not planned, and some features are still missing or will not be added due to deprecation and other factors. Look at the compatibility info below to see if you can migrate now or in the near future.
|
|
392
399
|
|
|
393
400
|
### Features not to be implemented
|
|
394
401
|
|
|
395
402
|
- **The Bitbucket, Gitea/Forgejo and Git Gateway backends will not be supported** for performance reasons. We may implement a high-performance Git Gateway alternative in the future. We may also support the other platforms if/when their APIs improve to allow the CMS to fetch multiple files at once.
|
|
396
403
|
- **The Netlify Identity widget will not be supported**, as it’s not useful without Git Gateway. We may be able to support it in the future if/when a Git Gateway alternative is created.
|
|
397
404
|
- The deprecated client-side implicit grant for the GitLab backend will not be supported, as it has already been [removed from GitLab 15.0](https://gitlab.com/gitlab-org/gitlab/-/issues/344609). Use the client-side PKCE authorization instead.
|
|
398
|
-
- `netlify-cms-proxy-server` and `decap-server` will not be supported, as we have made it possible to [work with a local repository](#working-with-a-local-git-repository) without a proxy server.
|
|
399
405
|
- The deprecated Netlify Large Media service will not be supported. Consider other storage providers.
|
|
400
406
|
- The deprecated Date widget will not be supported, as it has already been removed from Decap CMS 3.0. Use the DateTime widget instead.
|
|
401
407
|
- Remark plugins will not be supported, as they are not compatible with our Lexical-based rich text editor.
|
|
@@ -407,15 +413,17 @@ These limitations are expected to be resolved before or shortly after GA:
|
|
|
407
413
|
|
|
408
414
|
| Feature | Status in Sveltia CMS |
|
|
409
415
|
| --- | --- |
|
|
410
|
-
| Backends | The Test backend needed for our demo site is not yet added. We’ll see if Azure can also be supported. |
|
|
416
|
+
| Backends | The Test backend needed for our demo site is not yet added. We’ll see if Azure DevOps can also be supported. |
|
|
411
417
|
| Configuration | Comprehensive config validation is not yet implemented. |
|
|
412
418
|
| Localization | The application UI is only available in English and Japanese at this time. |
|
|
413
419
|
| Media Libraries | Cloudinary and Uploadcare are not yet supported. |
|
|
414
420
|
| Workflow | Editorial Workflow and Open Authoring are not yet supported. |
|
|
415
|
-
| Collections | Nested
|
|
421
|
+
| Collections | Nested Collections are not yet supported. |
|
|
416
422
|
| Widgets | Custom widgets are not yet supported. See the table below for other limitations. |
|
|
417
423
|
| Customizations | Custom previews, custom formatters and event subscriptions are not yet supported. |
|
|
418
424
|
|
|
425
|
+
Open Authoring and Nested Collections will be implemented after the 1.0 release.
|
|
426
|
+
|
|
419
427
|
| Widget | Status in Sveltia CMS |
|
|
420
428
|
| --- | --- |
|
|
421
429
|
| Code | Not yet supported. |
|
|
@@ -507,7 +515,7 @@ Sveltia CMS supports a configuration file written in the JSON format in addition
|
|
|
507
515
|
|
|
508
516
|
Alternatively, you can [manually initialize](https://decapcms.org/docs/manual-initialization/) the CMS with a JavaScript configuration object.
|
|
509
517
|
|
|
510
|
-
### Working around authentication error
|
|
518
|
+
### Working around an authentication error
|
|
511
519
|
|
|
512
520
|
If you get an “Authentication Aborted” error when trying to sign in to GitHub or GitLab using the authorization code flow, you may need to check your site’s [`Cross-Origin-Opener-Policy`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy). The COOP header is not widely used, but it’s known to break the OAuth flow with a popup window. If that’s your case, changing `same-origin` to `same-origin-allow-popups` solves the problem. ([Discussion](https://github.com/sveltia/sveltia-cms/issues/131))
|
|
513
521
|
|
|
@@ -522,7 +530,7 @@ Basically there are only two differences: you don’t need to run the proxy serv
|
|
|
522
530
|
- You can remove `local_backend` from your configuration, as it will be ignored by Sveltia CMS.
|
|
523
531
|
1. Launch the local development server for your frontend framework, typically with `npm run dev` or `pnpm dev`.
|
|
524
532
|
1. Open `http://localhost:[port]/admin/index.html` with Chrome or Edge.
|
|
525
|
-
- The port number varies by framework. Check the output from the previous step.
|
|
533
|
+
- The port number varies by framework. Check the terminal output from the previous step.
|
|
526
534
|
- The `127.0.0.1` address can also be used instead of `localhost`.
|
|
527
535
|
- If your CMS instance is not located under `/admin/`, use the appropriate path.
|
|
528
536
|
- Other Chromium-based browsers may also work. Brave user? [See below](#enabling-local-development-in-brave).
|
|
@@ -534,9 +542,9 @@ Basically there are only two differences: you don’t need to run the proxy serv
|
|
|
534
542
|
1. Open the dev site at `http://localhost:[port]/` to check the rendered pages.
|
|
535
543
|
1. Commit and push the changes if satisfied, or discard them if you’re just testing.
|
|
536
544
|
|
|
537
|
-
Keep in mind that the local repository support doesn’t perform any Git operations. You’ll have to manually fetch, pull, commit and push all changes using a Git client. In the
|
|
545
|
+
Keep in mind that, as with Netlify/Decap CMS, the local repository support in Sveltia CMS doesn’t perform any Git operations. You’ll have to manually fetch, pull, commit and push all changes using a Git client. In the future, we’ll figure out if there’s a way to do this in a browser, because `netlify-cms-proxy-server` actually has the undocumented, experimental `git` mode that allows developers to create commits to a local repository[^131].
|
|
538
546
|
|
|
539
|
-
Also, at this point, you have to reload the CMS to see the latest content after retrieving remote updates. This manual work will be unnecessary once the proposed `FileSystemObserver` API, which is being [implemented in Chromium](https://issues.chromium.org/issues/40105284) behind a flag, becomes available.
|
|
547
|
+
Also, at this point, you have to reload the CMS to see the latest content after retrieving remote updates. This manual work will hopefully be unnecessary once the proposed `FileSystemObserver` API, which is being [implemented in Chromium](https://issues.chromium.org/issues/40105284) behind a flag, becomes available.
|
|
540
548
|
|
|
541
549
|
### Enabling local development in Brave
|
|
542
550
|
|
|
@@ -567,7 +575,7 @@ You can specify an icon for each collection for easy identification in the colle
|
|
|
567
575
|
|
|
568
576
|
### Adding dividers to the collection list
|
|
569
577
|
|
|
570
|
-
Sveltia CMS allows developers to add dividers to the collection list to distinguish different types of collections. To do this, insert a fake collection with the `divider: true` option along with a random `name`. In VS Code, you may get a validation error if `config.yml` is treated as a “Netlify YAML config” file. You can work around this by adding an empty `files` as well:
|
|
578
|
+
Sveltia CMS allows developers to add dividers to the collection list to distinguish different types of collections. To do this, insert a fake collection with the `divider: true` option along with a random, unique `name`. In VS Code, you may get a validation error if `config.yml` is treated as a “Netlify YAML config” file. You can work around this by adding an empty `files` list as well:
|
|
571
579
|
|
|
572
580
|
```yaml
|
|
573
581
|
collections:
|
|
@@ -582,9 +590,9 @@ collections:
|
|
|
582
590
|
|
|
583
591
|
### Using a custom media folder for a collection
|
|
584
592
|
|
|
585
|
-
This is actually not new in Sveltia CMS but rather an
|
|
593
|
+
This is actually not new in Sveltia CMS but rather an undocumented feature in Netlify/Decap CMS[^4]. You can specify media and public folders for each collection that override the [global media folder](https://decapcms.org/docs/configuration-options/#media-and-public-folders). Well, it’s [documented](https://decapcms.org/docs/collection-folder/#media-and-public-folder), but that’s probably not what you want.
|
|
586
594
|
|
|
587
|
-
Rather, if you’d like to add all the media files for a collection in one single folder, specify both `media_folder` and `public_folder` instead of leaving them empty. The trick is to use an
|
|
595
|
+
Rather, if you’d like to add all the media files for a collection in one single folder, specify both `media_folder` and `public_folder` instead of leaving them empty. The trick is to use an **absolute path** for `media_folder` like the example below. You can try this with Netlify/Decap CMS first if you prefer.
|
|
588
596
|
|
|
589
597
|
```diff
|
|
590
598
|
media_folder: static/media
|
|
@@ -595,7 +603,7 @@ Rather, if you’d like to add all the media files for a collection in one singl
|
|
|
595
603
|
label: Products
|
|
596
604
|
create: true
|
|
597
605
|
folder: data/products/
|
|
598
|
-
+ media_folder: /static/media/products
|
|
606
|
+
+ media_folder: /static/media/products # start with a slash
|
|
599
607
|
+ public_folder: /media/products
|
|
600
608
|
```
|
|
601
609
|
|
|
@@ -612,7 +620,7 @@ In Sveltia CMS, those per-collection media folders are displayed prominently for
|
|
|
612
620
|
|
|
613
621
|
### Using DeepL to translate entry fields
|
|
614
622
|
|
|
615
|
-
Sveltia CMS comes with a handy DeepL integration so that you can translate any text field from another locale without leaving the
|
|
623
|
+
Sveltia CMS comes with a handy DeepL integration so that you can translate any text field from another locale without leaving the Content Editor. To enable the high quality, AI-powered, quick translation feature:
|
|
616
624
|
|
|
617
625
|
1. Update your configuration file to enable the [i18n support](https://decapcms.org/docs/i18n/) with multiple locales.
|
|
618
626
|
1. Sign up for [DeepL API](https://www.deepl.com/pro-api/) and copy your Authentication Key from DeepL’s Account page.
|
|
@@ -662,13 +670,13 @@ With this configuration, an entry is saved with localized filenames, while the d
|
|
|
662
670
|
|
|
663
671
|
- `data/posts/en/my-trip-to-new-york.yaml`
|
|
664
672
|
```yaml
|
|
665
|
-
title: My trip to New York
|
|
666
673
|
translationKey: my-trip-to-new-york
|
|
674
|
+
title: My trip to New York
|
|
667
675
|
```
|
|
668
676
|
- `data/posts/fr/mon-voyage-a-new-york.yaml`
|
|
669
677
|
```yaml
|
|
670
|
-
title: Mon voyage à New York
|
|
671
678
|
translationKey: my-trip-to-new-york
|
|
679
|
+
title: Mon voyage à New York
|
|
672
680
|
```
|
|
673
681
|
|
|
674
682
|
You can customize the property name and value for a different framework or i18n library by adding the `canonical_slug` option to your top-level or per-collection `i18n` configuration. The example below is for [@astrolicious/i18n](https://github.com/astrolicious/i18n), which requires a locale prefix in the value ([discussion](https://github.com/sveltia/sveltia-cms/issues/137)):
|
|
@@ -680,7 +688,7 @@ i18n:
|
|
|
680
688
|
value: 'en/{{slug}}' # default: {{slug}}
|
|
681
689
|
```
|
|
682
690
|
|
|
683
|
-
|
|
691
|
+
For [Jekyll](https://migueldavid.eu/how-to-make-jekyll-multilingual-c13e74c18f1c), you may want to use the `ref` property:
|
|
684
692
|
|
|
685
693
|
```yaml
|
|
686
694
|
i18n:
|
|
@@ -690,7 +698,7 @@ i18n:
|
|
|
690
698
|
|
|
691
699
|
### Disabling non-default locale content
|
|
692
700
|
|
|
693
|
-
You can disable output of content in selected non-default locales by adding the `save_all_locales` property to the top-level or per-collection `i18n` configuration. Then you’ll find “Disable (locale name)” in the three-dot menu in the top right corner of the
|
|
701
|
+
You can disable output of content in selected non-default locales by adding the `save_all_locales` property to the top-level or per-collection `i18n` configuration. Then you’ll find “Disable (locale name)” in the three-dot menu in the top right corner of the Content Editor. This is useful if the translation isn’t ready yet, but you want to publish the default locale content first.
|
|
694
702
|
|
|
695
703
|
With the following configuration, you can disable the French and/or German translation while writing in English.
|
|
696
704
|
|
|
@@ -720,7 +728,7 @@ It’s simple — just specify `{{uuid}}` (full UUID v4), `{{uuid_short}}` (last
|
|
|
720
728
|
|
|
721
729
|
You may already have a CI/CD tool set up on your Git repository to automatically deploy changes to production. Occasionally, you make a lot of changes to your content to quickly reach the CI/CD provider’s (free) build limits, or you just don’t want to see builds triggered for every single small change.
|
|
722
730
|
|
|
723
|
-
With Sveltia CMS, you can disable automatic deployments by default and manually trigger deployments at your convenience. This is done by adding the `[skip ci]` prefix to commit messages, the convention supported by [GitHub](https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs), [GitLab](https://docs.gitlab.com/ee/ci/pipelines/#skip-a-pipeline), [CircleCI](https://circleci.com/docs/skip-build/#skip-jobs), [Travis CI](https://docs.travis-ci.com/user/customizing-the-build/#skipping-a-build), [Netlify](https://docs.netlify.com/site-deploys/manage-deploys/#skip-a-deploy), [Cloudflare Pages](https://developers.cloudflare.com/pages/platform/branch-build-controls/#skip-builds) and others. Here are the steps to use it:
|
|
731
|
+
With Sveltia CMS, you can disable automatic deployments by default and manually trigger deployments at your convenience. This is done by adding the `[skip ci]` prefix to commit messages, the convention supported by [GitHub Actions](https://docs.github.com/en/actions/managing-workflow-runs/skipping-workflow-runs), [GitLab CI/CD](https://docs.gitlab.com/ee/ci/pipelines/#skip-a-pipeline), [CircleCI](https://circleci.com/docs/skip-build/#skip-jobs), [Travis CI](https://docs.travis-ci.com/user/customizing-the-build/#skipping-a-build), [Netlify](https://docs.netlify.com/site-deploys/manage-deploys/#skip-a-deploy), [Cloudflare Pages](https://developers.cloudflare.com/pages/platform/branch-build-controls/#skip-builds) and others. Here are the steps to use it:
|
|
724
732
|
|
|
725
733
|
1. Add the new `automatic_deployments` property to your `backend` configuration with a value of `false`:
|
|
726
734
|
```diff
|
|
@@ -732,13 +740,13 @@ With Sveltia CMS, you can disable automatic deployments by default and manually
|
|
|
732
740
|
```
|
|
733
741
|
1. Commit and deploy the change to the config file and reload the CMS.
|
|
734
742
|
1. Now, whenever you save an entry or asset, `[skip ci]` is automatically added to each commit message. However, deletions are always committed without the prefix to avoid unexpected data retention on your site.
|
|
735
|
-
1. If you want to deploy a new or updated entry, as well as any other unpublished entries and assets, click an arrow next to the Save button in the
|
|
743
|
+
1. If you want to deploy a new or updated entry, as well as any other unpublished entries and assets, click an arrow next to the Save button in the Content Editor, then select **Save and Publish**. This will trigger CI/CD by omitting `[skip ci]`.
|
|
736
744
|
|
|
737
745
|
If you set `automatic_deployments` to `true`, the behaviour is reversed. CI/CD will be triggered by default, while you have an option to **Save without Publishing** that adds `[skip ci]` only to the associated commit.
|
|
738
746
|
|
|
739
|
-
|
|
747
|
+
Gotcha: Unpublished entries and assets are not drafts. Once committed to your repository, those changes can be deployed any time another commit is pushed without `[skip ci]`, or when a manual deployment is triggered.
|
|
740
748
|
|
|
741
|
-
If the `automatic_deployments` property is defined, you can manually trigger a deployment by
|
|
749
|
+
If the `automatic_deployments` property is defined, you can manually trigger a deployment by clicking the **Publish Changes** button on the application header. To use this feature:
|
|
742
750
|
|
|
743
751
|
- GitHub Actions:
|
|
744
752
|
1. Without any configuration, Publish Changes will [trigger a `repository_dispatch` event](https://docs.github.com/en/rest/repos/repos#create-a-repository-dispatch-event) with the `sveltia-cms-publish` event type. Update your build workflow to receive this event:
|
|
@@ -867,7 +875,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
|
|
|
867
875
|
|
|
868
876
|
### Before the 1.0 release
|
|
869
877
|
|
|
870
|
-
- [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate)
|
|
878
|
+
- [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate) Runes migration
|
|
871
879
|
- Enhanced [compatibility with Netlify/Decap CMS](#compatibility)
|
|
872
880
|
- Certain compatibility with Static CMS, a now-discontinued community fork of Netlify CMS, specifically the [KeyValue widget](https://staticjscms.netlify.app/docs/widget-keyvalue)[^123]
|
|
873
881
|
- Localization with the new [Fluent](https://projectfluent.org)-powered sveltia-i18n library
|
|
@@ -880,7 +888,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
|
|
|
880
888
|
|
|
881
889
|
### After the 1.0 release
|
|
882
890
|
|
|
883
|
-
- Tackling more Netlify/Decap CMS issues, especially the [top
|
|
891
|
+
- Tackling more Netlify/Decap CMS issues, especially the [top-voted features](https://github.com/decaporg/decap-cms/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc), including MDX support[^122], manual entry sorting[^125], roles[^23], mobile optimization[^18] and config editor[^10] — Some features are already implemented in Sveltia CMS
|
|
884
892
|
- Advanced digital asset management (DAM) features, including image editing and tagging[^114]
|
|
885
893
|
- AI integrations for image generation and content writing
|
|
886
894
|
- End-user documentation
|
|
@@ -931,7 +939,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
931
939
|
|
|
932
940
|
[^15]: Netlify/Decap CMS [#6932](https://github.com/decaporg/decap-cms/issues/6932)
|
|
933
941
|
|
|
934
|
-
[^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103), [#7302](https://github.com/decaporg/decap-cms/
|
|
942
|
+
[^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103), [#7302](https://github.com/decaporg/decap-cms/discussions/7302)
|
|
935
943
|
|
|
936
944
|
[^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333)
|
|
937
945
|
|
|
@@ -953,13 +961,13 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
953
961
|
|
|
954
962
|
[^26]: Netlify/Decap CMS [#3285](https://github.com/decaporg/decap-cms/issues/3285), [#7030](https://github.com/decaporg/decap-cms/issues/7030), [#7067](https://github.com/decaporg/decap-cms/issues/7067), [#7217](https://github.com/decaporg/decap-cms/issues/7217)
|
|
955
963
|
|
|
956
|
-
[^27]: Netlify/Decap CMS [#
|
|
964
|
+
[^27]: Netlify/Decap CMS [#5617](https://github.com/decaporg/decap-cms/issues/5617)
|
|
957
965
|
|
|
958
966
|
[^28]: Netlify/Decap CMS [#2677](https://github.com/decaporg/decap-cms/pull/2677), [#6836](https://github.com/decaporg/decap-cms/pull/6836)
|
|
959
967
|
|
|
960
968
|
[^29]: Netlify/Decap CMS [#4783](https://github.com/decaporg/decap-cms/issues/4783)
|
|
961
969
|
|
|
962
|
-
[^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565), [#6733](https://github.com/decaporg/decap-cms/
|
|
970
|
+
[^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565), [#6733](https://github.com/decaporg/decap-cms/discussions/6733)
|
|
963
971
|
|
|
964
972
|
[^31]: Netlify/Decap CMS [#1045](https://github.com/decaporg/decap-cms/issues/1045)
|
|
965
973
|
|
|
@@ -967,7 +975,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
967
975
|
|
|
968
976
|
[^33]: Netlify/Decap CMS [#6513](https://github.com/decaporg/decap-cms/issues/6513), [#7295](https://github.com/decaporg/decap-cms/issues/7295)
|
|
969
977
|
|
|
970
|
-
[^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138), [#5932](https://github.com/decaporg/decap-cms/
|
|
978
|
+
[^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138), [#5932](https://github.com/decaporg/decap-cms/discussions/5932)
|
|
971
979
|
|
|
972
980
|
[^35]: Netlify/Decap CMS [#7086](https://github.com/decaporg/decap-cms/issues/7086)
|
|
973
981
|
|
|
@@ -995,7 +1003,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
995
1003
|
|
|
996
1004
|
[^47]: Netlify/Decap CMS [#2370](https://github.com/decaporg/decap-cms/issues/2370), [#5596](https://github.com/decaporg/decap-cms/issues/5596)
|
|
997
1005
|
|
|
998
|
-
[^48]: Netlify/Decap CMS [#5569](https://github.com/decaporg/decap-cms/issues/5569), [#6754](https://github.com/decaporg/decap-cms/
|
|
1006
|
+
[^48]: Netlify/Decap CMS [#5569](https://github.com/decaporg/decap-cms/issues/5569), [#6754](https://github.com/decaporg/decap-cms/discussions/6754)
|
|
999
1007
|
|
|
1000
1008
|
[^49]: Netlify/Decap CMS [#5752](https://github.com/decaporg/decap-cms/issues/5752)
|
|
1001
1009
|
|
|
@@ -1003,7 +1011,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1003
1011
|
|
|
1004
1012
|
[^51]: Netlify/Decap CMS [#6731](https://github.com/decaporg/decap-cms/issues/6731)
|
|
1005
1013
|
|
|
1006
|
-
[^52]: Netlify/Decap CMS [#6970](https://github.com/decaporg/decap-cms/
|
|
1014
|
+
[^52]: Netlify/Decap CMS [#6970](https://github.com/decaporg/decap-cms/discussions/6970), [#7147](https://github.com/decaporg/decap-cms/issues/7147)
|
|
1007
1015
|
|
|
1008
1016
|
[^53]: Netlify/Decap CMS [#512](https://github.com/decaporg/decap-cms/issues/512), [#5673](https://github.com/decaporg/decap-cms/issues/5673), [#6707](https://github.com/decaporg/decap-cms/issues/6707)
|
|
1009
1017
|
|
|
@@ -1115,7 +1123,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1115
1123
|
|
|
1116
1124
|
[^107]: Netlify/Decap CMS [#332](https://github.com/decaporg/decap-cms/issues/332), [#683](https://github.com/decaporg/decap-cms/issues/683), [#999](https://github.com/decaporg/decap-cms/issues/999), [#1456](https://github.com/decaporg/decap-cms/issues/1456), [#4175](https://github.com/decaporg/decap-cms/issues/4175), [#4818](https://github.com/decaporg/decap-cms/issues/4818), [#5688](https://github.com/decaporg/decap-cms/issues/5688), [#6828](https://github.com/decaporg/decap-cms/issues/6828), [#6829](https://github.com/decaporg/decap-cms/issues/6829), [#6862](https://github.com/decaporg/decap-cms/issues/6862), [#7023](https://github.com/decaporg/decap-cms/issues/7023)
|
|
1117
1125
|
|
|
1118
|
-
[^108]: Netlify/Decap CMS [#6879](https://github.com/decaporg/decap-cms/
|
|
1126
|
+
[^108]: Netlify/Decap CMS [#6879](https://github.com/decaporg/decap-cms/discussions/6879)
|
|
1119
1127
|
|
|
1120
1128
|
[^109]: Netlify/Decap CMS [#7197](https://github.com/decaporg/decap-cms/issues/7197)
|
|
1121
1129
|
|
|
@@ -1151,7 +1159,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1151
1159
|
|
|
1152
1160
|
[^125]: Netlify/Decap CMS [#475](https://github.com/decaporg/decap-cms/issues/475)
|
|
1153
1161
|
|
|
1154
|
-
[^126]: Netlify/Decap CMS [#7279](https://github.com/decaporg/decap-cms/
|
|
1162
|
+
[^126]: Netlify/Decap CMS [#7279](https://github.com/decaporg/decap-cms/discussions/7279)
|
|
1155
1163
|
|
|
1156
1164
|
[^127]: Netlify/Decap CMS [#4518](https://github.com/decaporg/decap-cms/issues/4518)
|
|
1157
1165
|
|
|
@@ -1163,7 +1171,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1163
1171
|
|
|
1164
1172
|
[^131]: Netlify/Decap CMS [#4429](https://github.com/decaporg/decap-cms/issues/4429)
|
|
1165
1173
|
|
|
1166
|
-
[^132]: Netlify/Decap CMS [#6816](https://github.com/decaporg/decap-cms/
|
|
1174
|
+
[^132]: Netlify/Decap CMS [#6816](https://github.com/decaporg/decap-cms/discussions/6816)
|
|
1167
1175
|
|
|
1168
1176
|
[^133]: Netlify/Decap CMS [#445](https://github.com/decaporg/decap-cms/issues/445)
|
|
1169
1177
|
|
|
@@ -1181,6 +1189,14 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1181
1189
|
|
|
1182
1190
|
[^140]: Netlify/Decap CMS [#5444](https://github.com/decaporg/decap-cms/issues/5444)
|
|
1183
1191
|
|
|
1184
|
-
[^141]: Netlify/Decap CMS [#3723](https://github.com/decaporg/decap-cms/issues/3723)
|
|
1192
|
+
[^141]: Netlify/Decap CMS [#3723](https://github.com/decaporg/decap-cms/issues/3723), [#6990](https://github.com/decaporg/decap-cms/issues/6990)
|
|
1193
|
+
|
|
1194
|
+
[^142]: Netlify/Decap CMS [#7124](https://github.com/decaporg/decap-cms/discussions/7124)
|
|
1195
|
+
|
|
1196
|
+
[^143]: Netlify/Decap CMS [#1341](https://github.com/decaporg/decap-cms/issues/1341)
|
|
1197
|
+
|
|
1198
|
+
[^144]: Netlify/Decap CMS [#3284](https://github.com/decaporg/decap-cms/issues/3284)
|
|
1199
|
+
|
|
1200
|
+
[^145]: Netlify/Decap CMS [#4733](https://github.com/decaporg/decap-cms/issues/4733)
|
|
1185
1201
|
|
|
1186
|
-
[^
|
|
1202
|
+
[^146]: Netlify/Decap CMS [#2524](https://github.com/decaporg/decap-cms/issues/2524)
|