@sveltia/cms 0.40.2 → 0.40.4
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 +132 -71
- package/dist/sveltia-cms.js +335 -313
- package/dist/sveltia-cms.js.map +1 -1
- package/dist/sveltia-cms.mjs +353 -331
- package/dist/sveltia-cms.mjs.map +1 -1
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -33,6 +33,8 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
|
|
|
33
33
|
- [Better widgets](#better-widgets)
|
|
34
34
|
- [New widgets](#new-widgets)
|
|
35
35
|
- [Better asset management](#better-asset-management)
|
|
36
|
+
- [Better customization](#better-customization)
|
|
37
|
+
- [Better localization](#better-localization)
|
|
36
38
|
- [Compatibility](#compatibility)
|
|
37
39
|
- [Features not to be implemented](#features-not-to-be-implemented)
|
|
38
40
|
- [Current limitations](#current-limitations)
|
|
@@ -40,12 +42,12 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
|
|
|
40
42
|
- [New users](#new-users)
|
|
41
43
|
- [Migration](#migration)
|
|
42
44
|
- [Migrating from Git Gateway backend](#migrating-from-git-gateway-backend)
|
|
43
|
-
- [Moving your site from Netlify to another hosting service](#moving-your-site-from-netlify-to-another-hosting-service)
|
|
44
45
|
- [Installing with npm](#installing-with-npm)
|
|
45
46
|
- [Updates](#updates)
|
|
46
47
|
- [Tips \& tricks](#tips--tricks)
|
|
48
|
+
- [Moving your site from Netlify to another hosting service](#moving-your-site-from-netlify-to-another-hosting-service)
|
|
47
49
|
- [Providing a JSON configuration file](#providing-a-json-configuration-file)
|
|
48
|
-
- [Working around authentication error](#working-around-authentication-error)
|
|
50
|
+
- [Working around an authentication error](#working-around-an-authentication-error)
|
|
49
51
|
- [Working with a local Git repository](#working-with-a-local-git-repository)
|
|
50
52
|
- [Enabling local development in Brave](#enabling-local-development-in-brave)
|
|
51
53
|
- [Using a custom icon for a collection](#using-a-custom-icon-for-a-collection)
|
|
@@ -81,9 +83,11 @@ Due to its unfortunate abandonment, Netlify CMS spawned 3 successors:
|
|
|
81
83
|
- **Sveltia CMS**: a total reboot, started in November 2022, first appeared on GitHub in March 2023
|
|
82
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
|
|
83
85
|
|
|
84
|
-
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.
|
|
85
87
|
|
|
86
|
-
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.
|
|
87
91
|
|
|
88
92
|
### Our goals
|
|
89
93
|
|
|
@@ -95,22 +99,20 @@ While Sveltia CMS is specifically designed to replace legacy Netlify CMS instanc
|
|
|
95
99
|
|
|
96
100
|
## Development status
|
|
97
101
|
|
|
98
|
-
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).
|
|
99
103
|
|
|
100
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:
|
|
101
105
|
|
|
102
|
-
- Ensuring substantial [compatibility with
|
|
106
|
+
- Ensuring substantial [compatibility with Netlify/Decap CMS](#compatibility)
|
|
103
107
|
- Tackling as many [Netlify/Decap CMS issues](https://github.com/decaporg/decap-cms/issues) as possible
|
|
104
|
-
- So far,
|
|
105
|
-
- Target: 150 issues by GA, 250
|
|
106
|
-
- 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)
|
|
107
111
|
- [Let us know](https://github.com/sveltia/sveltia-cms/issues/new) if you have any specific issues you’d like to see solved!
|
|
108
112
|
- Responding to feedback from clients and regular users
|
|
109
113
|
- Implementing our own enhancement ideas for every part of the product
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
<br>
|
|
115
|
+
<br>
|
|
114
116
|
|
|
115
117
|
## Differentiators
|
|
116
118
|
|
|
@@ -121,17 +123,18 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
121
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.
|
|
122
124
|
- The maintainer tries to be as responsive as possible. Reported bugs are usually fixed within 24 hours.
|
|
123
125
|
- Offers a modern, intuitive user interface, including an immersive dark mode[^2], inspired in part by the Netlify CMS v3 prototype[^1].
|
|
124
|
-
-
|
|
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.
|
|
125
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!
|
|
126
|
-
- The Help menu provides all links to useful resources, including release notes, feedback and support.
|
|
127
|
-
- Users can
|
|
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.
|
|
128
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].
|
|
129
132
|
|
|
130
133
|
### Better performance
|
|
131
134
|
|
|
132
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.
|
|
133
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.
|
|
134
|
-
- 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.
|
|
135
138
|
- Sveltia CMS is free of technical debt and [virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
|
|
136
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].
|
|
137
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 +154,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
151
154
|
- Click once (the Save button) instead of twice (Publish > Publish now) to save an entry.
|
|
152
155
|
- The editor closes automatically when an entry is saved. This behaviour can be changed in Settings.
|
|
153
156
|
- Uploading files can be done with drag and drop[^20].
|
|
154
|
-
- You can upload multiple
|
|
157
|
+
- You can upload multiple files at once to the Asset Library[^5].
|
|
155
158
|
- You can delete multiple entries and assets at once.
|
|
156
159
|
- Some [keyboard shortcuts](#using-keyboard-shortcuts) are available for faster editing.
|
|
157
160
|
|
|
@@ -169,17 +172,17 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
169
172
|
|
|
170
173
|
### Better security
|
|
171
174
|
|
|
172
|
-
- Avoids
|
|
175
|
+
- Avoids vulnerabilities in dependencies through constant updates, [`pnpm audit`](https://pnpm.io/cli/audit), and frequent releases[^33].
|
|
173
176
|
- We have enabled [npm package provenance](https://github.blog/security/supply-chain-security/introducing-npm-package-provenance/).
|
|
174
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].
|
|
175
178
|
- The `unsafe-eval` and `unsafe-inline` keywords are not needed in the `script-src` CSP directive[^34].
|
|
176
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].
|
|
177
181
|
|
|
178
182
|
### Better configuration
|
|
179
183
|
|
|
180
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].
|
|
181
185
|
- Supports a [JSON configuration file](#providing-a-json-configuration-file) that can be generated for bulk or complex collections[^60].
|
|
182
|
-
- The application renders within the dimensions of a [custom mount element](https://decapcms.org/docs/custom-mounting/), if exists[^109].
|
|
183
186
|
|
|
184
187
|
### Better backend support
|
|
185
188
|
|
|
@@ -199,20 +202,19 @@ We are working hard to create a **significantly better alternative to Netlify CM
|
|
|
199
202
|
Sveltia CMS has been built with a multilingual architecture from the very beginning. You can expect first-class internationalization (i18n) support, as it’s required by clients of maintainer [@kyoshino](https://github.com/kyoshino), who himself was a long-time Japanese localizer for Mozilla and currently lives in a [city](https://en.wikipedia.org/wiki/Toronto) where 150+ languages are spoken.
|
|
200
203
|
|
|
201
204
|
- Configuration
|
|
202
|
-
-
|
|
205
|
+
- The [i18n limitations](https://decapcms.org/docs/i18n/#limitations) in Netlify/Decap CMS do not apply to Sveltia CMS:
|
|
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.
|
|
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].
|
|
203
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].
|
|
204
|
-
- Removes the [limitations in the List and Object widgets](https://decapcms.org/docs/i18n/#limitations) so that changes made with these widgets will be duplicated between locales as expected when using the `i18n: duplicate` field configuration[^7][^68].
|
|
205
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].
|
|
206
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.
|
|
207
|
-
- You can [localize entry slugs](#localizing-entry-slugs) while linking the localized files[^80], thanks to the support for Hugo’s `translationKey`[^81].
|
|
208
|
-
- 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].
|
|
209
213
|
- You can embed the locale code in an entry by using `widget: hidden` along with `default: '{{locale}}'`[^101].
|
|
210
214
|
- User interface
|
|
211
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.
|
|
212
|
-
- You can easily switch between locales while editing by clicking a button instead of a dropdown list.
|
|
213
|
-
- Language labels appear in human-readable display names instead of ISO 639 language codes
|
|
214
|
-
- 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].
|
|
215
|
-
- Long menu item labels, especially in non-English locales, don’t overflow the dropdown container[^117].
|
|
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.
|
|
216
218
|
- Content editing
|
|
217
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.
|
|
218
220
|
- You can [disable non-default locale content](#disabling-non-default-locale-content)[^15].
|
|
@@ -222,6 +224,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
222
224
|
- 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].
|
|
223
225
|
- 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].
|
|
224
226
|
- Fields in non-default locales are validated as expected[^13].
|
|
227
|
+
- No internal error is thrown when changing the locale[^103].
|
|
225
228
|
|
|
226
229
|
### Better collections
|
|
227
230
|
|
|
@@ -233,15 +236,20 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
233
236
|
- You can use Markdown in the `description` collection option[^79]. Bold, italic, strikethrough, code and links are allowed.
|
|
234
237
|
- Entry slugs
|
|
235
238
|
- You can [use a random UUID for an entry slug](#using-a-random-id-for-an-entry-slug).
|
|
239
|
+
- Slug generation is fail-safe: If a slug cannot be determined from entry content, part of a random UUID is used instead of throwing an error or filling in with arbitrary string field values[^133].
|
|
236
240
|
- Entry slug template tags support [filter transformations](https://decapcms.org/docs/summary-strings/) just like summary string template tags[^29].
|
|
237
|
-
- Single quotes in a slug will be replaced with `sanitize_replacement` (default: hyphen) rather than being removed[^52].
|
|
238
|
-
- You can set the maximum number of characters for an entry slug with the new `slug_length` collection option[^25].
|
|
241
|
+
- Single quotes (apostrophes) in a slug will be replaced with `sanitize_replacement` (default: hyphen) rather than being removed[^52].
|
|
242
|
+
- 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].
|
|
243
|
+
- Setting the collection `path` doesn’t affect the entry slugs stored with the Relation widget[^137].
|
|
239
244
|
- Entry listing
|
|
240
245
|
- The collection list displays the number of items in each collection.
|
|
241
246
|
- A folder collection filter with a boolean value works as expected[^93].
|
|
247
|
+
- Entry grouping and sorting can work together. For example, it’s possible to group by year and then sort by year if configured properly.
|
|
242
248
|
- 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.
|
|
243
249
|
- 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].
|
|
244
250
|
- Sorting entries by a DateTime field works as expected[^110].
|
|
251
|
+
- 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.
|
|
252
|
+
- 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].
|
|
245
253
|
- Assets stored in a [per-collection media folder](#using-a-custom-media-folder-for-a-collection) can be displayed next to the entries.
|
|
246
254
|
- 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].
|
|
247
255
|
- 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.
|
|
@@ -249,17 +257,19 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
249
257
|
|
|
250
258
|
### Better content editing
|
|
251
259
|
|
|
252
|
-
- Required fields, not optional fields, are
|
|
260
|
+
- Required fields, not optional fields, are marked for efficient data entry.
|
|
253
261
|
- You can revert changes to all fields or a specific field.
|
|
254
262
|
- If you revert changes and there are no unsaved changes, the Save button is disabled as expected[^118].
|
|
255
263
|
- You can hide the preview of a specific field with `preview: false`[^126].
|
|
256
264
|
- Fields with validation errors are automatically expanded if they are part of nested, collapsed objects[^40].
|
|
257
|
-
- When you click on a field in the preview pane, the corresponding field in the edit pane is highlighted. It will be automatically expanded if collapsed
|
|
258
|
-
- The preview pane displays all fields, including each
|
|
265
|
+
- 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.
|
|
266
|
+
- The preview pane displays all fields, including each label, making it easier to see which fields are populated.
|
|
259
267
|
- Provides better scroll synchronization between the panes when editing or previewing an entry[^92].
|
|
260
|
-
-
|
|
268
|
+
- The preview pane won’t cause a scrolling issue[^136].
|
|
269
|
+
- 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.)
|
|
261
270
|
- A long validation error message is displayed in full, without being hidden behind the field label[^59].
|
|
262
271
|
- Any links to other entries will work as expected, with the Content Editor being updated for the other[^100].
|
|
272
|
+
- In the Boolean and Select widgets, you don’t have to update a value twice to re-enable the Save button after saving an entry[^139].
|
|
263
273
|
|
|
264
274
|
### Better data output
|
|
265
275
|
|
|
@@ -284,6 +294,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
284
294
|
- The `default` value is saved when you create a file collection item, not just a folder collection item[^78].
|
|
285
295
|
- 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].
|
|
286
296
|
- List
|
|
297
|
+
- The `min` and `max` options can be used separately. You don’t need to specify both to use either option[^145].
|
|
287
298
|
- 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.
|
|
288
299
|
- 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.
|
|
289
300
|
- A required List field with no subfield or value is marked as invalid[^43].
|
|
@@ -291,9 +302,9 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
291
302
|
- You can enter spaces in a simple text-based List field[^50].
|
|
292
303
|
- You can preview variable types without having to register a preview template[^42].
|
|
293
304
|
- Markdown
|
|
294
|
-
- The rich text editor is built with [Lexical](https://lexical.dev/), 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].
|
|
305
|
+
- 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].
|
|
295
306
|
- 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.
|
|
296
|
-
- Line breaks are rendered as line breaks in the preview pane according to GitHub Flavored Markdown.
|
|
307
|
+
- Line breaks are rendered as line breaks in the preview pane according to GitHub Flavored Markdown (GFM).
|
|
297
308
|
- Object
|
|
298
309
|
- Sveltia CMS offers two ways to have conditional fields in a collection[^30]:
|
|
299
310
|
- You can use [variable types](https://decapcms.org/docs/variable-type-widgets/) (the `types` option) with the Object widget just like the List widget.
|
|
@@ -304,6 +315,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
304
315
|
- Template strings with a wildcard like `{{cities.*.name}}` can also be used for `value_field`[^94].
|
|
305
316
|
- `display_fields` is displayed in the preview pane instead of `value_field`.
|
|
306
317
|
- The redundant `search_fields` option is not required in Sveltia CMS, as it defaults to `display_fields` (and `value_field`).
|
|
318
|
+
- A new item created in a referenced collection is immediately available in the options[^138].
|
|
307
319
|
- Select
|
|
308
320
|
- It’s possible to select an option with value `0`[^56].
|
|
309
321
|
- `label` is displayed in the preview pane instead of `value`.
|
|
@@ -314,7 +326,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
314
326
|
- Supports the `prefix` and `suffix` string options, which automatically prepend and/or append the developer-defined value to the user-input value.
|
|
315
327
|
- Boolean, Number and String
|
|
316
328
|
- 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.
|
|
317
|
-
-
|
|
329
|
+
- Compatibility note: In Static CMS, these options are implemented as `prefix` and `suffix`, respectively, which have different meaning in Sveltia CMS.
|
|
318
330
|
- File and Image
|
|
319
331
|
- Provides a reimagined all-in-one asset selection dialog for File and Image fields.
|
|
320
332
|
- [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].
|
|
@@ -323,6 +335,7 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
323
335
|
- 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.
|
|
324
336
|
- 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.
|
|
325
337
|
- 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.
|
|
338
|
+
- 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].
|
|
326
339
|
- List and Object
|
|
327
340
|
- The `summary` is displayed correctly when it refers to a Relation field[^36] or a simple List field.
|
|
328
341
|
- Markdown, String and Text
|
|
@@ -359,17 +372,29 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
359
372
|
- Sort or filter assets by name or file type.
|
|
360
373
|
- View asset details, including size, dimensions, commit author/date and a list of entries that use the selected asset.
|
|
361
374
|
- PDF documents are displayed with a thumbnail image in both the Asset Library and the Select File dialog, making it easier to find the file you’re looking for[^38].
|
|
362
|
-
- Assets stored in an entry-relative media folder are automatically deleted when the associated entry is deleted because these assets are not available for other entries[^22]. When you’re [working with a local repository](#working-with-a-local-git-repository), the empty enclosing folder is also deleted.
|
|
375
|
+
- Assets stored in an entry-relative media folder are displayed in the Asset Library[^142]. These assets are automatically deleted when the associated entry is deleted because these assets are not available for other entries[^22]. When you’re [working with a local repository](#working-with-a-local-git-repository), the empty enclosing folder is also deleted.
|
|
363
376
|
- Hidden files (dot files) don’t appear in the Asset Library[^47].
|
|
364
377
|
- You can add assets using the Quick Add button in the upper right corner of the application.
|
|
365
378
|
- Files are uploaded with their original names, without converting uppercase letters and spaces to lowercase letters and hyphens[^97].
|
|
366
379
|
- No fatal application crash when uploading assets[^112].
|
|
367
380
|
|
|
381
|
+
### Better customization
|
|
382
|
+
|
|
383
|
+
- The application renders within the dimensions of a [custom mount element](https://decapcms.org/docs/custom-mounting/), if exists[^109].
|
|
384
|
+
- 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].
|
|
385
|
+
|
|
386
|
+
### Better localization
|
|
387
|
+
|
|
388
|
+
- 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 Settings. Therefore, the `locale` configuration option is ignored and `CMS.registerLocale()` is not required.
|
|
389
|
+
- 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].
|
|
390
|
+
- Long menu item labels, especially in non-English locales, don’t overflow the dropdown container[^117].
|
|
391
|
+
- 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.
|
|
392
|
+
|
|
368
393
|
## Compatibility
|
|
369
394
|
|
|
370
395
|
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).
|
|
371
396
|
|
|
372
|
-
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
|
|
397
|
+
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.
|
|
373
398
|
|
|
374
399
|
### Features not to be implemented
|
|
375
400
|
|
|
@@ -387,15 +412,17 @@ These limitations are expected to be resolved before or shortly after GA:
|
|
|
387
412
|
|
|
388
413
|
| Feature | Status in Sveltia CMS |
|
|
389
414
|
| --- | --- |
|
|
390
|
-
| Backends | The Test backend needed for our demo site is not yet added. We’ll see if Azure can also be supported. |
|
|
415
|
+
| Backends | The Test backend needed for our demo site is not yet added. We’ll see if Azure DevOps can also be supported. |
|
|
391
416
|
| Configuration | Comprehensive config validation is not yet implemented. |
|
|
392
417
|
| Localization | The application UI is only available in English and Japanese at this time. |
|
|
393
418
|
| Media Libraries | Cloudinary and Uploadcare are not yet supported. |
|
|
394
419
|
| Workflow | Editorial Workflow and Open Authoring are not yet supported. |
|
|
395
|
-
| Collections | Nested
|
|
420
|
+
| Collections | Nested Collections are not yet supported. |
|
|
396
421
|
| Widgets | Custom widgets are not yet supported. See the table below for other limitations. |
|
|
397
422
|
| Customizations | Custom previews, custom formatters and event subscriptions are not yet supported. |
|
|
398
423
|
|
|
424
|
+
Open Authoring and Nested Collections will be implemented after the 1.0 release.
|
|
425
|
+
|
|
399
426
|
| Widget | Status in Sveltia CMS |
|
|
400
427
|
| --- | --- |
|
|
401
428
|
| Code | Not yet supported. |
|
|
@@ -459,9 +486,7 @@ Once you have migrated from the Git Gateway and Netlify Identity combo, you can
|
|
|
459
486
|
-<script src="https://identity.netlify.com/v1/netlify-identity-widget.js"></script>
|
|
460
487
|
```
|
|
461
488
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
You can host your Sveltia CMS-managed site anywhere, such as [Cloudflare Pages](https://pages.cloudflare.com/) or [GitHub Pages](https://pages.github.com/). But moving away from Netlify means you can no longer sign in with GitHub or GitLab via Netlify. Instead, you can use [our own OAuth client](https://github.com/sveltia/sveltia-cms-auth), which can be easily deployed to Cloudflare Workers, or [any other 3rd party client](https://decapcms.org/docs/external-oauth-clients/) made for Netlify/Decap CMS.
|
|
489
|
+
If you want to stay with Netlify Identity, unfortunately you can’t migrate to Sveltia CMS right now. We plan to develop a high-performance Git Gateway alternative with Netlify Identity support in the future.
|
|
465
490
|
|
|
466
491
|
### Installing with npm
|
|
467
492
|
|
|
@@ -475,6 +500,10 @@ If you’ve chosen to install with npm, updating the package is your responsibil
|
|
|
475
500
|
|
|
476
501
|
## Tips & tricks
|
|
477
502
|
|
|
503
|
+
### Moving your site from Netlify to another hosting service
|
|
504
|
+
|
|
505
|
+
You can host your Sveltia CMS-managed site anywhere, such as [Cloudflare Pages](https://pages.cloudflare.com/) or [GitHub Pages](https://pages.github.com/). But moving away from Netlify means you can no longer sign in with GitHub or GitLab via Netlify. Instead, you can use [our own OAuth client](https://github.com/sveltia/sveltia-cms-auth), which can be easily deployed to Cloudflare Workers, or [any other 3rd party client](https://decapcms.org/docs/external-oauth-clients/) made for Netlify/Decap CMS.
|
|
506
|
+
|
|
478
507
|
### Providing a JSON configuration file
|
|
479
508
|
|
|
480
509
|
Sveltia CMS supports a configuration file written in the JSON format in addition to the standard YAML format. This allows developers to programmatically generate the CMS configuration to enable bulk or complex collections. To do this, simply add a `<link>` tag to your HTML, just like a [custom YAML config link](https://decapcms.org/docs/configuration-options/#configuration-file), but with the type `application/json`:
|
|
@@ -485,7 +514,7 @@ Sveltia CMS supports a configuration file written in the JSON format in addition
|
|
|
485
514
|
|
|
486
515
|
Alternatively, you can [manually initialize](https://decapcms.org/docs/manual-initialization/) the CMS with a JavaScript configuration object.
|
|
487
516
|
|
|
488
|
-
### Working around authentication error
|
|
517
|
+
### Working around an authentication error
|
|
489
518
|
|
|
490
519
|
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))
|
|
491
520
|
|
|
@@ -499,9 +528,11 @@ Basically there are only two differences: you don’t need to run the proxy serv
|
|
|
499
528
|
- Please note that the Git Gateway backend mentioned in the Netlify/Decap CMS [local Git repository document](https://decapcms.org/docs/working-with-a-local-git-repository/) is not supported in Sveltia CMS, so `name: git-gateway` won’t work. You’ll need either `name: github` or `name: gitlab` along with the `repo` definition. If you haven’t determined your repository name yet, just use a random one.
|
|
500
529
|
- You can remove `local_backend` from your configuration, as it will be ignored by Sveltia CMS.
|
|
501
530
|
1. Launch the local development server for your frontend framework, typically with `npm run dev` or `pnpm dev`.
|
|
502
|
-
1.
|
|
503
|
-
-
|
|
531
|
+
1. Open `http://localhost:[port]/admin/index.html` with Chrome or Edge.
|
|
532
|
+
- The port number varies by framework. Check the terminal output from the previous step.
|
|
504
533
|
- The `127.0.0.1` address can also be used instead of `localhost`.
|
|
534
|
+
- If your CMS instance is not located under `/admin/`, use the appropriate path.
|
|
535
|
+
- Other Chromium-based browsers may also work. Brave user? [See below](#enabling-local-development-in-brave).
|
|
505
536
|
1. Click “Work with Local Repository” and select the project’s root directory once prompted.
|
|
506
537
|
- If you get an error saying “not a repository root directory”, make sure you’ve turned the folder into a repository with either a CUI ([`git init`](https://github.com/git-guides/git-init)) or GUI, and the hidden `.git` folder exists.
|
|
507
538
|
- If you’re using Windows Subsystem for Linux (WSL), you may get an error saying “Can’t open this folder because it contains system files.” This is due to a limitation in the browser, and you can try some workarounds mentioned in [this issue](https://github.com/coder/code-server/issues/4646) and [this thread](https://github.com/sveltia/sveltia-cms/discussions/101).
|
|
@@ -510,9 +541,9 @@ Basically there are only two differences: you don’t need to run the proxy serv
|
|
|
510
541
|
1. Open the dev site at `http://localhost:[port]/` to check the rendered pages.
|
|
511
542
|
1. Commit and push the changes if satisfied, or discard them if you’re just testing.
|
|
512
543
|
|
|
513
|
-
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
|
|
544
|
+
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].
|
|
514
545
|
|
|
515
|
-
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.
|
|
546
|
+
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.
|
|
516
547
|
|
|
517
548
|
### Enabling local development in Brave
|
|
518
549
|
|
|
@@ -543,7 +574,7 @@ You can specify an icon for each collection for easy identification in the colle
|
|
|
543
574
|
|
|
544
575
|
### Adding dividers to the collection list
|
|
545
576
|
|
|
546
|
-
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:
|
|
577
|
+
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:
|
|
547
578
|
|
|
548
579
|
```yaml
|
|
549
580
|
collections:
|
|
@@ -558,9 +589,9 @@ collections:
|
|
|
558
589
|
|
|
559
590
|
### Using a custom media folder for a collection
|
|
560
591
|
|
|
561
|
-
This is actually not new in Sveltia CMS but rather an
|
|
592
|
+
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.
|
|
562
593
|
|
|
563
|
-
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
|
|
594
|
+
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.
|
|
564
595
|
|
|
565
596
|
```diff
|
|
566
597
|
media_folder: static/media
|
|
@@ -571,7 +602,7 @@ Rather, if you’d like to add all the media files for a collection in one singl
|
|
|
571
602
|
label: Products
|
|
572
603
|
create: true
|
|
573
604
|
folder: data/products/
|
|
574
|
-
+ media_folder: /static/media/products
|
|
605
|
+
+ media_folder: /static/media/products # start with a slash
|
|
575
606
|
+ public_folder: /media/products
|
|
576
607
|
```
|
|
577
608
|
|
|
@@ -638,13 +669,13 @@ With this configuration, an entry is saved with localized filenames, while the d
|
|
|
638
669
|
|
|
639
670
|
- `data/posts/en/my-trip-to-new-york.yaml`
|
|
640
671
|
```yaml
|
|
641
|
-
title: My trip to New York
|
|
642
672
|
translationKey: my-trip-to-new-york
|
|
673
|
+
title: My trip to New York
|
|
643
674
|
```
|
|
644
675
|
- `data/posts/fr/mon-voyage-a-new-york.yaml`
|
|
645
676
|
```yaml
|
|
646
|
-
title: Mon voyage à New York
|
|
647
677
|
translationKey: my-trip-to-new-york
|
|
678
|
+
title: Mon voyage à New York
|
|
648
679
|
```
|
|
649
680
|
|
|
650
681
|
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)):
|
|
@@ -656,7 +687,7 @@ i18n:
|
|
|
656
687
|
value: 'en/{{slug}}' # default: {{slug}}
|
|
657
688
|
```
|
|
658
689
|
|
|
659
|
-
|
|
690
|
+
For [Jekyll](https://migueldavid.eu/how-to-make-jekyll-multilingual-c13e74c18f1c), you may want to use the `ref` property:
|
|
660
691
|
|
|
661
692
|
```yaml
|
|
662
693
|
i18n:
|
|
@@ -696,7 +727,7 @@ It’s simple — just specify `{{uuid}}` (full UUID v4), `{{uuid_short}}` (last
|
|
|
696
727
|
|
|
697
728
|
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.
|
|
698
729
|
|
|
699
|
-
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:
|
|
730
|
+
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:
|
|
700
731
|
|
|
701
732
|
1. Add the new `automatic_deployments` property to your `backend` configuration with a value of `false`:
|
|
702
733
|
```diff
|
|
@@ -712,9 +743,9 @@ With Sveltia CMS, you can disable automatic deployments by default and manually
|
|
|
712
743
|
|
|
713
744
|
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.
|
|
714
745
|
|
|
715
|
-
|
|
746
|
+
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.
|
|
716
747
|
|
|
717
|
-
If the `automatic_deployments` property is defined, you can manually trigger a deployment by
|
|
748
|
+
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:
|
|
718
749
|
|
|
719
750
|
- GitHub Actions:
|
|
720
751
|
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:
|
|
@@ -843,7 +874,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
|
|
|
843
874
|
|
|
844
875
|
### Before the 1.0 release
|
|
845
876
|
|
|
846
|
-
- [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate)
|
|
877
|
+
- [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate) Runes migration
|
|
847
878
|
- Enhanced [compatibility with Netlify/Decap CMS](#compatibility)
|
|
848
879
|
- 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]
|
|
849
880
|
- Localization with the new [Fluent](https://projectfluent.org)-powered sveltia-i18n library
|
|
@@ -856,7 +887,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
|
|
|
856
887
|
|
|
857
888
|
### After the 1.0 release
|
|
858
889
|
|
|
859
|
-
- Tackling more Netlify/Decap CMS issues, especially the [top
|
|
890
|
+
- 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
|
|
860
891
|
- Advanced digital asset management (DAM) features, including image editing and tagging[^114]
|
|
861
892
|
- AI integrations for image generation and content writing
|
|
862
893
|
- End-user documentation
|
|
@@ -903,11 +934,11 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
903
934
|
|
|
904
935
|
[^13]: Netlify/Decap CMS [#5112](https://github.com/decaporg/decap-cms/issues/5112), [#5653](https://github.com/decaporg/decap-cms/issues/5653)
|
|
905
936
|
|
|
906
|
-
[^14]: Netlify/Decap CMS [#4635](https://github.com/decaporg/decap-cms/issues/4635), [#5920](https://github.com/decaporg/decap-cms/issues/5920), [#6410](https://github.com/decaporg/decap-cms/issues/6410), [#6924](https://github.com/decaporg/decap-cms/issues/6924)
|
|
937
|
+
[^14]: Netlify/Decap CMS [#4635](https://github.com/decaporg/decap-cms/issues/4635), [#5920](https://github.com/decaporg/decap-cms/issues/5920), [#6410](https://github.com/decaporg/decap-cms/issues/6410), [#6827](https://github.com/decaporg/decap-cms/issues/6827), [#6924](https://github.com/decaporg/decap-cms/issues/6924)
|
|
907
938
|
|
|
908
939
|
[^15]: Netlify/Decap CMS [#6932](https://github.com/decaporg/decap-cms/issues/6932)
|
|
909
940
|
|
|
910
|
-
[^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103)
|
|
941
|
+
[^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103), [#7302](https://github.com/decaporg/decap-cms/discussions/7302)
|
|
911
942
|
|
|
912
943
|
[^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333)
|
|
913
944
|
|
|
@@ -929,13 +960,13 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
929
960
|
|
|
930
961
|
[^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)
|
|
931
962
|
|
|
932
|
-
[^27]: Netlify/Decap CMS [#
|
|
963
|
+
[^27]: Netlify/Decap CMS [#5617](https://github.com/decaporg/decap-cms/issues/5617)
|
|
933
964
|
|
|
934
965
|
[^28]: Netlify/Decap CMS [#2677](https://github.com/decaporg/decap-cms/pull/2677), [#6836](https://github.com/decaporg/decap-cms/pull/6836)
|
|
935
966
|
|
|
936
967
|
[^29]: Netlify/Decap CMS [#4783](https://github.com/decaporg/decap-cms/issues/4783)
|
|
937
968
|
|
|
938
|
-
[^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565)
|
|
969
|
+
[^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565), [#6733](https://github.com/decaporg/decap-cms/discussions/6733)
|
|
939
970
|
|
|
940
971
|
[^31]: Netlify/Decap CMS [#1045](https://github.com/decaporg/decap-cms/issues/1045)
|
|
941
972
|
|
|
@@ -943,7 +974,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
943
974
|
|
|
944
975
|
[^33]: Netlify/Decap CMS [#6513](https://github.com/decaporg/decap-cms/issues/6513), [#7295](https://github.com/decaporg/decap-cms/issues/7295)
|
|
945
976
|
|
|
946
|
-
[^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138)
|
|
977
|
+
[^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138), [#5932](https://github.com/decaporg/decap-cms/discussions/5932)
|
|
947
978
|
|
|
948
979
|
[^35]: Netlify/Decap CMS [#7086](https://github.com/decaporg/decap-cms/issues/7086)
|
|
949
980
|
|
|
@@ -971,7 +1002,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
971
1002
|
|
|
972
1003
|
[^47]: Netlify/Decap CMS [#2370](https://github.com/decaporg/decap-cms/issues/2370), [#5596](https://github.com/decaporg/decap-cms/issues/5596)
|
|
973
1004
|
|
|
974
|
-
[^48]: Netlify/Decap CMS [#5569](https://github.com/decaporg/decap-cms/issues/5569)
|
|
1005
|
+
[^48]: Netlify/Decap CMS [#5569](https://github.com/decaporg/decap-cms/issues/5569), [#6754](https://github.com/decaporg/decap-cms/discussions/6754)
|
|
975
1006
|
|
|
976
1007
|
[^49]: Netlify/Decap CMS [#5752](https://github.com/decaporg/decap-cms/issues/5752)
|
|
977
1008
|
|
|
@@ -979,7 +1010,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
979
1010
|
|
|
980
1011
|
[^51]: Netlify/Decap CMS [#6731](https://github.com/decaporg/decap-cms/issues/6731)
|
|
981
1012
|
|
|
982
|
-
[^52]: Netlify/Decap CMS [#7147](https://github.com/decaporg/decap-cms/issues/7147)
|
|
1013
|
+
[^52]: Netlify/Decap CMS [#6970](https://github.com/decaporg/decap-cms/discussions/6970), [#7147](https://github.com/decaporg/decap-cms/issues/7147)
|
|
983
1014
|
|
|
984
1015
|
[^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)
|
|
985
1016
|
|
|
@@ -1089,9 +1120,9 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1089
1120
|
|
|
1090
1121
|
[^106]: Netlify/Decap CMS [#2822](https://github.com/decaporg/decap-cms/issues/2822)
|
|
1091
1122
|
|
|
1092
|
-
[^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), [#6862](https://github.com/decaporg/decap-cms/issues/6862), [#7023](https://github.com/decaporg/decap-cms/issues/7023)
|
|
1123
|
+
[^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)
|
|
1093
1124
|
|
|
1094
|
-
[^108]: Netlify/Decap CMS [#
|
|
1125
|
+
[^108]: Netlify/Decap CMS [#6879](https://github.com/decaporg/decap-cms/discussions/6879)
|
|
1095
1126
|
|
|
1096
1127
|
[^109]: Netlify/Decap CMS [#7197](https://github.com/decaporg/decap-cms/issues/7197)
|
|
1097
1128
|
|
|
@@ -1109,7 +1140,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1109
1140
|
|
|
1110
1141
|
[^116]: Netlify/Decap CMS [#3431](https://github.com/decaporg/decap-cms/issues/3431)
|
|
1111
1142
|
|
|
1112
|
-
[^117]: Netlify/Decap CMS [#3562](https://github.com/decaporg/decap-cms/issues/3562)
|
|
1143
|
+
[^117]: Netlify/Decap CMS [#3562](https://github.com/decaporg/decap-cms/issues/3562), [#6215](https://github.com/decaporg/decap-cms/issues/6215)
|
|
1113
1144
|
|
|
1114
1145
|
[^118]: Netlify/Decap CMS [#7267](https://github.com/decaporg/decap-cms/issues/7267)
|
|
1115
1146
|
|
|
@@ -1127,7 +1158,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1127
1158
|
|
|
1128
1159
|
[^125]: Netlify/Decap CMS [#475](https://github.com/decaporg/decap-cms/issues/475)
|
|
1129
1160
|
|
|
1130
|
-
[^126]: Netlify/Decap CMS [#7279](https://github.com/decaporg/decap-cms/
|
|
1161
|
+
[^126]: Netlify/Decap CMS [#7279](https://github.com/decaporg/decap-cms/discussions/7279)
|
|
1131
1162
|
|
|
1132
1163
|
[^127]: Netlify/Decap CMS [#4518](https://github.com/decaporg/decap-cms/issues/4518)
|
|
1133
1164
|
|
|
@@ -1136,3 +1167,33 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1136
1167
|
[^129]: Netlify/Decap CMS [#4961](https://github.com/decaporg/decap-cms/issues/4961), [#4979](https://github.com/decaporg/decap-cms/issues/4979), [#5545](https://github.com/decaporg/decap-cms/issues/5545), [#5778](https://github.com/decaporg/decap-cms/issues/5778), [#6279](https://github.com/decaporg/decap-cms/issues/6279), [#6464](https://github.com/decaporg/decap-cms/issues/6464), [#6810](https://github.com/decaporg/decap-cms/issues/6810), [#6922](https://github.com/decaporg/decap-cms/issues/6922), [#7118](https://github.com/decaporg/decap-cms/issues/7118), [#7293](https://github.com/decaporg/decap-cms/issues/7293) — A comment on one of the issues says the crash was due to Google Translate. Sveltia CMS has turned off Google Translate on the admin page.
|
|
1137
1168
|
|
|
1138
1169
|
[^130]: Netlify/Decap CMS [#6571](https://github.com/decaporg/decap-cms/issues/6571)
|
|
1170
|
+
|
|
1171
|
+
[^131]: Netlify/Decap CMS [#4429](https://github.com/decaporg/decap-cms/issues/4429)
|
|
1172
|
+
|
|
1173
|
+
[^132]: Netlify/Decap CMS [#6816](https://github.com/decaporg/decap-cms/discussions/6816)
|
|
1174
|
+
|
|
1175
|
+
[^133]: Netlify/Decap CMS [#445](https://github.com/decaporg/decap-cms/issues/445)
|
|
1176
|
+
|
|
1177
|
+
[^134]: Netlify/Decap CMS [#5548](https://github.com/decaporg/decap-cms/issues/5548)
|
|
1178
|
+
|
|
1179
|
+
[^135]: Netlify/Decap CMS [#2133](https://github.com/decaporg/decap-cms/issues/2133)
|
|
1180
|
+
|
|
1181
|
+
[^136]: Netlify/Decap CMS [#7085](https://github.com/decaporg/decap-cms/issues/7085)
|
|
1182
|
+
|
|
1183
|
+
[^137]: Netlify/Decap CMS [#4092](https://github.com/decaporg/decap-cms/issues/4092)
|
|
1184
|
+
|
|
1185
|
+
[^138]: Netlify/Decap CMS [#4841](https://github.com/decaporg/decap-cms/issues/4841)
|
|
1186
|
+
|
|
1187
|
+
[^139]: Netlify/Decap CMS [#6202](https://github.com/decaporg/decap-cms/issues/6202)
|
|
1188
|
+
|
|
1189
|
+
[^140]: Netlify/Decap CMS [#5444](https://github.com/decaporg/decap-cms/issues/5444)
|
|
1190
|
+
|
|
1191
|
+
[^141]: Netlify/Decap CMS [#3723](https://github.com/decaporg/decap-cms/issues/3723), [#6990](https://github.com/decaporg/decap-cms/issues/6990)
|
|
1192
|
+
|
|
1193
|
+
[^142]: Netlify/Decap CMS [#7124](https://github.com/decaporg/decap-cms/discussions/7124)
|
|
1194
|
+
|
|
1195
|
+
[^143]: Netlify/Decap CMS [#1341](https://github.com/decaporg/decap-cms/issues/1341)
|
|
1196
|
+
|
|
1197
|
+
[^144]: Netlify/Decap CMS [#3284](https://github.com/decaporg/decap-cms/issues/3284)
|
|
1198
|
+
|
|
1199
|
+
[^145]: Netlify/Decap CMS [#4733](https://github.com/decaporg/decap-cms/issues/4733)
|