@sveltia/cms 0.22.1 → 0.24.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 CHANGED
@@ -24,47 +24,46 @@ Our goal is to make it a viable successor to Netlify CMS, expand the Git-based h
24
24
 
25
25
  **Sveltia CMS is still in beta**, so please be careful when trying it out.
26
26
 
27
- While we are fixing reported bugs as fast as we can, usually within 48 hours, the 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:
27
+ While we are fixing reported bugs as fast as we can, usually within 24 hours, the 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:
28
28
 
29
29
  - Ensuring maximum compatibility with existing versions of Netlify/Decap CMS
30
- - Tackling as many [issues reported to Netlify/Decap CMS](https://github.com/decaporg/decap-cms/issues) as possible (so far 75+ of them have been effectively solved in Sveltia CMS, with the goal of reaching 100 by GA)
30
+ - Tackling as many [issues reported to Netlify/Decap CMS](https://github.com/decaporg/decap-cms/issues) as possible (so far 70+ of them have been effectively solved in Sveltia CMS, with the goal of reaching 100 by GA)
31
31
  - Implementing our own enhancement ideas
32
32
 
33
33
  At this point, **we are aiming to ship version 1.0 in Q3 2024**. Check our [release notes](https://github.com/sveltia/sveltia-cms/releases) for updates.
34
34
 
35
35
  ## Features
36
36
 
37
- We are working hard to create a **significantly better alternative to Netlify CMS** and Decap CMS by improving everything. Here’s what makes Sveltia CMS different. Look how serious we are!
37
+ We are working hard to create a **significantly better alternative to Netlify CMS and Decap CMS** by improving everything. Here’s what makes Sveltia CMS different. Look how serious we are!
38
38
 
39
39
  ### Compatible with Netlify/Decap CMS
40
40
 
41
41
  - Ready to replace Netlify/Decap CMS _in some casual use case scenarios_ by updating a single line of code.
42
42
  - Your existing [configuration file](https://decapcms.org/docs/configuration-options/) can be reused as is.
43
- - Various features are still missing though — look at the [compatibility chart](#compatibility) below to see if you can migrate.
43
+ - Various features are still missing though — look at the [compatibility info](#compatibility) below to see if you can migrate now or soon.
44
44
 
45
45
  ### Better UX
46
46
 
47
47
  - Created and maintained by an [experienced UX engineer](https://github.com/kyoshino) who loves code, design and marketing. You can expect constant UX improvements across the platform.
48
48
  - Offers a modern, intuitive user interface, including an immersive dark mode[^2], inspired in part by the Netlify CMS v3 prototype[^1].
49
49
  - Comes with touch device support. While the UI is not yet optimized for small screens, large tablets like iPad Pro or Pixel Tablet should work well. Mobile support is planned after the 1.0 release.
50
- - Made with Svelte, not React, means we can spend more time on UX rather than tedious state management.
51
- - The screenshots above are worth a thousand words!
52
- - Read on to learn about many other enhancements, including performance, productivity, accessibility, service integrations, and an all-new Asset Library.
50
+ - Made with Svelte, not React, means we can spend more time on UX rather than tedious state management. It also allows us to avoid fatal crashes in a React application[^100]. Best of all, Svelte offers great performance!
51
+ - The screenshots above are worth a thousand words, but read on to learn about many other improvements in detail.
53
52
 
54
53
  ### Better performance
55
54
 
56
55
  - 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 almost any framework.
57
- - Small footprint: The bundle size is less than 500 KB when minified and gzipped, which is much lighter than bloated Netlify CMS (1.5 MB) and Decap CMS (1.8 MB)[^57]. Sveltia CMS is free of technical debt and [virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
58
- - 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]. It also avoids the slowness and potential API rate limit violations caused by hundreds of requests with Relation widgets[^14].
56
+ - Small footprint: The bundle size is less than 500 KB when minified and gzipped, which is much lighter than bloated Netlify CMS (1.5 MB) and Decap CMS (1.8 MB)[^57][^64]. Sveltia CMS is free of technical debt and [virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
57
+ - 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].
59
58
  - 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/).
60
59
  - Using caching and lazy loading techniques. A list of repository files is stored locally for faster startup and bandwidth savings.
61
60
  - Thumbnails of assets, including PDF files, are generated and cached for faster rendering of the Asset Library and other parts of the CMS[^39].
62
- - The upcoming [Svelte 5](https://svelte.dev/blog/runes) upgrade is anticipated to deliver a further boost in performance, including accelerated speed and reduced code size.
61
+ - The upcoming [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate) upgrade is anticipated to deliver a further boost in performance, including accelerated speed and reduced code size.
63
62
 
64
63
  ### Better productivity
65
64
 
66
65
  - You can [work with a local Git repository](#working-with-a-local-git-repository) without any configuration or proxy server[^26].
67
- - In addition to a streamlined workflow, it offers great performance by loading files natively through the browser rather than using a slow, ad hoc API.
66
+ - In addition to a streamlined workflow, it offers great performance by loading files natively through the browser rather than using a slow, ad hoc REST API.
68
67
  - It also allows you to bypass the 30 MB file size limit[^51].
69
68
  - The `logo_url` defined in the configuration will be used[^49].
70
69
  - Eliminates some workflow disruptions in the Content Editor:
@@ -78,11 +77,11 @@ We are working hard to create a **significantly better alternative to Netlify CM
78
77
  - Search for entries and assets: `Ctrl+F` (Windows/Linux) or `Command+F` (macOS)
79
78
  - Create a new entry: `Ctrl+E` (Windows/Linux) or `Command+E` (macOS)
80
79
  - Save an entry: `Ctrl+S` (Windows/Linux) or `Command+S` (macOS)
81
- - Never miss out on the latest features and bug fixes by being notified when an update to the CMS is available[^31].
80
+ - 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].
82
81
 
83
82
  ### Better accessibility
84
83
 
85
- - Improved keyboard handling lets you efficiently navigate through UI elements using the Tab, Space, Enter and arrow keys[^17].
84
+ - Improved keyboard handling lets you efficiently navigate through UI elements using the Tab, Space, Enter and arrow keys[^17][^67].
86
85
  - Comprehensive [WAI-ARIA](https://w3c.github.io/aria/) support enables users who rely on screen readers such as NVDA and VoiceOver.
87
86
  - Ensures sufficient contrast between the foreground text and background colours.
88
87
  - Honours your operating system’s [reduced motion](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion) and [reduced transparency](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-transparency) settings.
@@ -101,6 +100,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
101
100
  - The Git branch name is automatically set to the repository’s default branch (`main`, `master` or whatever) if not specified in the configuration file, preventing data loading errors due to a hardcoded fallback to `master`[^27].
102
101
  - You can [disable automatic deployments](#disabling-automatic-deployments) by default or on demand to save costs and resources associated with CI/CD and to publish multiple changes at once[^24].
103
102
  - The GitLab backend support comes with background service status checking, just like GitHub.
103
+ - You can quickly open the source file of an entry or asset in your repository using View on GitHub (or GitLab) under the 3-dot menu.
104
104
 
105
105
  ### Better i18n support
106
106
 
@@ -111,11 +111,12 @@ We are working hard to create a **significantly better alternative to Netlify CM
111
111
  - [Integrates DeepL](#using-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click.
112
112
  - You can [disable non-default locale content](#disabling-non-default-locale-content)[^15].
113
113
  - 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.
114
- - 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].
114
+ - 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].
115
115
  - 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].
116
116
  - [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].
117
117
  - Boolean fields are updated in real time between locales like other widgets to avoid confusion[^35].
118
118
  - 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].
119
+ - 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].
119
120
 
120
121
  ### Better collections
121
122
 
@@ -125,6 +126,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
125
126
  - Entry slug template tags support [filter transformations](https://decapcms.org/docs/summary-strings/) just like summary string template tags[^29].
126
127
  - You can set the maximum number of characters for an entry slug with the new `slug_length` collection option[^25].
127
128
  - Single quotes in a slug will be replaced with `sanitize_replacement` (default: hyphen) rather than being removed[^52].
129
+ - You can use nested fields (dot notation) in the `path` option for a folder collection, e.g. `{{fields.state.name}}/{{slug}}`[^62].
128
130
 
129
131
  ### Better content editing
130
132
 
@@ -139,7 +141,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
139
141
 
140
142
  - For data consistency, Boolean, List (see below) and other fields are always saved as a proper value, such as an empty string or an empty array, rather than nothing, even if it’s optional or empty.
141
143
  - Leading and trailing spaces in text-type field values are automatically removed when you save an entry[^37].
142
- - JSON/TOML/YAML data is saved with a new line at the end of the file to prevent unnecessary changes being made to the file[^11].
144
+ - JSON/TOML/YAML data is saved with a new line at the end of the file to prevent unnecessary changes being made to the file[^11][^69].
143
145
  - String values in YAML files can be quoted with the new `yaml_quote: true` option for a collection, mainly for framework compatibility[^9].
144
146
 
145
147
  ### Better widgets
@@ -153,7 +155,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
153
155
  - You can enter spaces in a simple text-based List field[^50].
154
156
  - You can preview variable types without having to register a preview template[^42].
155
157
  - Markdown
156
- - The rich text editor is built with [Lexical](https://github.com/facebook/lexical) instead of [Slate](https://github.com/ianstormtaylor/slate), which solves several problems found in Netlify/Decap CMS, including fatal application crashes[^53].
158
+ - The rich text editor is built with [Lexical](https://github.com/facebook/lexical) instead of [Slate](https://github.com/ianstormtaylor/slate), which solves several problems found in Netlify/Decap CMS, including fatal application crashes[^53][^70][^71][^72][^73].
157
159
  - 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.
158
160
  - Object
159
161
  - Supports [variable types](https://decapcms.org/docs/variable-type-widgets/) just like the List widget. This allows you to have dependent fields in a collection[^30].
@@ -163,6 +165,8 @@ We are working hard to create a **significantly better alternative to Netlify CM
163
165
  - Select
164
166
  - It’s possible to select an option with value `0`[^56].
165
167
  - String
168
+ - When a YouTube video URL is entered in a String field, it appears as an embedded video in the preview pane.
169
+ - Check your site’s [CSP](#setting-up-content-security-policy) if the preview doesn’t work.
166
170
  - Supports the `type` property that accepts `url` or `email` as a value, which will validate the value as a URL or email.
167
171
  - Supports the `prefix` and `suffix` string properties, which automatically prepend and/or append the developer-defined value to the user-input value.
168
172
  - Boolean, Number and String
@@ -177,6 +181,8 @@ We are working hard to create a **significantly better alternative to Netlify CM
177
181
  - The `summary` is displayed correctly when it refers to a Relation field[^36].
178
182
  - Markdown, String and Text
179
183
  - A required field containing only spaces or line breaks will result in a validation error, as if no characters were entered.
184
+ - Relation and Select
185
+ - When there are 5 or fewer options, the UI switches from a dropdown list to radio buttons (single-select) or checkboxes (multi-select) for faster data entry[^61].
180
186
 
181
187
  #### New widgets
182
188
 
@@ -213,7 +219,7 @@ We are trying to make Sveltia CMS as compatible as possible with Netlify/Decap C
213
219
 
214
220
  ### Current limitations
215
221
 
216
- The table below shows the current limitations of Sveltia CMS, that are expected to be resolved before GA:
222
+ These limitations are expected to be resolved before GA:
217
223
 
218
224
  | Feature | Status in Sveltia CMS |
219
225
  | --- | --- |
@@ -234,14 +240,17 @@ The table below shows the current limitations of Sveltia CMS, that are expected
234
240
  | Map | Not yet supported. |
235
241
  | Markdown | Editor components are not yet supported. |
236
242
 
243
+ If we have missed any other features, let us know by [filing an issue](https://github.com/sveltia/sveltia-cms/issues).
244
+
237
245
  ### Features not to be implemented
238
246
 
239
247
  - 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.
240
248
  - The Bitbucket, Gitea/Forgejo and Git Gateway backends will not be supported due to performance limitations. We may implement a performant Git Gateway alternative in the future.
241
- - The Netlify Identity Widget will not be supported, as it’s not useful without Git Gateway.
249
+ - 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.
242
250
  - The deprecated Netlify Large Media service will not be supported. Consider other storage providers.
243
251
  - Sveltia CMS has dropped the support for the deprecated Date widget following Decap CMS 3.0. Use the DateTime widget instead.
244
252
  - Remark plugins will not be supported, as they are not compatible with our Lexical-based rich text editor.
253
+ - Undocumented [methods available on the `window.CMS` object](https://github.com/sveltia/sveltia-cms/blob/b7f62741e02dc390c63c03291f95b2ca315d811b/src/main.js#L3-L33) will not be implemented. This includes custom backends, if any.
245
254
 
246
255
  ## Roadmap
247
256
 
@@ -249,7 +258,7 @@ The table below shows the current limitations of Sveltia CMS, that are expected
249
258
 
250
259
  - Enhanced compatibility with Netlify/Decap CMS (see above for the status)
251
260
  - Automation test coverage (Vitest + Playwright)
252
- - [Svelte 5](https://svelte.dev/blog/runes) migration
261
+ - [Svelte 5](https://svelte.dev/blog/svelte-5-release-candidate) migration
253
262
  - Localization
254
263
  - Documentation
255
264
  - Marketing site
@@ -281,7 +290,7 @@ Alternatively, you can probably use one of the [Netlify/Decap CMS templates](htt
281
290
 
282
291
  ### Migration
283
292
 
284
- Have a look at the [compatibility chart](#compatibility) above first. If you’re already using Netlify/Decap CMS with the GitHub or GitLab backend and don’t have any custom widget, custom preview or plugin, migrating to Sveltia CMS is super easy. Edit `/admin/index.html` to replace the CMS `script` tag, and push the change to your repository.
293
+ Have a look at the [compatibility info](#compatibility) above first. If you’re already using Netlify/Decap CMS with the GitHub or GitLab backend and don’t have any custom widget, custom preview or plugin, migrating to Sveltia CMS is super easy — it works as a drop-in replacement. Edit `/admin/index.html` to replace the CMS `script` tag, and push the change to your repository.
285
294
 
286
295
  From Netlify CMS:
287
296
 
@@ -307,7 +316,7 @@ For advanced users, we have also made the bundle available as an [npm package](h
307
316
 
308
317
  Updating Sveltia CMS is transparent, unless you include a specific version in the `<script>` source URL or use the npm package. Whenever you (re)load the CMS, the latest version will be served via [UNPKG](https://unpkg.com/). The CMS also periodically checks for updates and notifies you when a new version is available. After the product reaches GA, you could use a semantic version range (`^1.0.0`) like Netlify/Decap CMS.
309
318
 
310
- If you’ve chosen to install with npm, updating the package is your responsibility. We recommend using [`ncu`](https://www.npmjs.com/package/npm-check-updates) to keep dependencies up to date, otherwise you’ll miss important bug fixes and new features.
319
+ If you’ve chosen to install with npm, updating the package is your responsibility. We recommend using [`ncu`](https://www.npmjs.com/package/npm-check-updates) or a service like [Dependabot](https://github.blog/2020-06-01-keep-all-your-packages-up-to-date-with-dependabot/) to keep dependencies up to date, otherwise you’ll miss important bug fixes and new features.
311
320
 
312
321
  ## Tips & tricks
313
322
 
@@ -323,7 +332,7 @@ Alternatively, you can [manually initialize](https://decapcms.org/docs/manual-in
323
332
 
324
333
  ### Migrating from Git Gateway backend
325
334
 
326
- Sveltia CMS does not support the Git Gateway backend (and Netlify Identity) due to performance limitations. If you don’t care about user management, you can easily migrate to the [GitHub backend](https://decapcms.org/docs/github-backend/) or [GitLab backend](https://decapcms.org/docs/gitlab-backend/). Make sure **you install an OAuth client** on GitHub or GitLab in addition to updating your configuration file. As noted in the document, Netlify still facilitates the auth flow.
335
+ Sveltia CMS does not support the Git Gateway backend due to performance limitations. If you don’t care about user management with Netlify Identity, you can use the [GitHub backend](https://decapcms.org/docs/github-backend/) or [GitLab backend](https://decapcms.org/docs/gitlab-backend/) instead. Make sure **you install an OAuth client** on GitHub or GitLab in addition to updating your configuration file. As noted in the document, Netlify is still able to facilitate the auth flow.
327
336
 
328
337
  ### Moving your site from Netlify to another hosting service
329
338
 
@@ -331,7 +340,7 @@ You can host your Sveltia CMS-managed site anywhere, such as [Cloudflare Pages](
331
340
 
332
341
  ### Working around authentication error
333
342
 
334
- 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 breaks 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))
343
+ 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))
335
344
 
336
345
  ### Working with a local Git repository
337
346
 
@@ -482,52 +491,81 @@ script-src 'self' https://unpkg.com;
482
491
  connect-src 'self' blob: data: https://unpkg.com;
483
492
  ```
484
493
 
485
- And combine the following policies depending on your Git backend and enabled integrations.
486
-
487
- - GitHub: (If you’re running GitHub Enterprise Server, you’ll also need to add the origin to these directives.)
488
- ```csp
489
- img-src https://*.githubusercontent.com;
490
- connect-src https://api.github.com https://www.githubstatus.com;
491
- ```
494
+ Then, add the following origins depending on your Git backend and enabled integrations.
495
+
496
+ - GitHub: (If you’re running a GitHub Enterprise Server, you’ll also need to add the origin to these directives.)
497
+ - `img-src`
498
+ ```
499
+ https://*.githubusercontent.com
500
+ ```
501
+ - `connect-src`
502
+ ```
503
+ https://api.github.com https://www.githubstatus.com
504
+ ```
492
505
  - GitLab: (If you’re running a self-hosted instance, you’ll also need to add the origin to these directives.)
493
- ```csp
494
- img-src https://gitlab.com https://secure.gravatar.com;
495
- connect-src https://gitlab.com https://status-api.hostedstatus.com;
496
- ```
506
+ - `img-src`
507
+ ```
508
+ https://gitlab.com https://secure.gravatar.com
509
+ ```
510
+ - `connect-src`
511
+ ```
512
+ https://gitlab.com https://status-api.hostedstatus.com
513
+ ```
497
514
  - Pexels:
498
- ```csp
499
- img-src https://images.pexels.com;
500
- connect-src https://images.pexels.com https://api.pexels.com;
501
- ```
515
+ - `img-src`
516
+ ```
517
+ https://images.pexels.com
518
+ ```
519
+ - `connect-src`
520
+ ```
521
+ https://images.pexels.com https://api.pexels.com
522
+ ```
502
523
  - Pixabay:
503
- ```csp
504
- img-src https://pixabay.com;
505
- connect-src https://pixabay.com;
506
- ```
524
+ - `img-src`
525
+ ```
526
+ https://pixabay.com
527
+ ```
528
+ - `connect-src`
529
+ ```
530
+ https://pixabay.com
531
+ ```
507
532
  - Unsplash:
508
- ```csp
509
- img-src https://images.unsplash.com;
510
- connect-src https://images.unsplash.com https://api.unsplash.com;
511
- ```
533
+ - `img-src`
534
+ ```
535
+ https://images.unsplash.com
536
+ ```
537
+ - `connect-src`
538
+ ```
539
+ https://images.unsplash.com https://api.unsplash.com
540
+ ```
512
541
  - DeepL API Free:
513
- ```csp
514
- connect-src https://api-free.deepl.com;
515
- ```
542
+ - `connect-src`
543
+ ```
544
+ https://api-free.deepl.com
545
+ ```
516
546
  - DeepL API Pro:
517
- ```csp
518
- connect-src https://api.deepl.com;
519
- ```
547
+ - `connect-src`
548
+ ```
549
+ https://api.deepl.com
550
+ ```
551
+ - YouTube:
552
+ - `frame-src`
553
+ ```
554
+ https://www.youtube-nocookie.com
555
+ ```
520
556
 
521
557
  If you choose to [disable automatic deployments](#disabling-automatic-deployments) and have configured a webhook URL, you may need to add the origin to the `connect-src` directive. For example,
522
558
 
523
559
  - Netlify:
524
- ```csp
525
- connect-src https://api.netlify.com;
526
- ```
560
+ - `connect-src`
561
+ ```csp
562
+ https://api.netlify.com
563
+ ```
527
564
  - Cloudflare Pages
528
- ```csp
529
- connect-src https://api.cloudflare.com;
530
- ```
565
+ - `connect-src`
566
+ ```csp
567
+ https://api.cloudflare.com
568
+ ```
531
569
 
532
570
  If you have image field(s) and expect that images will be inserted as URLs, you may want to allow any source using a wildcard instead of specifying individual origins:
533
571
 
@@ -547,6 +585,8 @@ Since Sveltia CMS is still in beta, we expect various problems. Please [report a
547
585
 
548
586
  Tips are always welcome! The project hasn’t set up a sponsorship program, but maintainer [@kyoshino](https://github.com/kyoshino) has a [PayPal account](https://paypal.me/kohei).
549
587
 
588
+ Last but not least, don’t forget to star this project and spread the word so more users can benefit from the app!
589
+
550
590
  ## Related links
551
591
 
552
592
  - Introducing Sveltia CMS: a short technical presentation by [@kyoshino](https://github.com/kyoshino) during the _This Week in Svelte_ online meetup on March 31, 2023 — [recording](https://youtu.be/-YjLubiieYs?t=1660) & [slides](https://docs.google.com/presentation/d/1Wi4ty-1AwOp2-zy7LctmzCV4rrdYPfke9NGhO0DdRdM)
@@ -566,17 +606,17 @@ This software is provided “as is” without any express or implied warranty. W
566
606
  [^4]: Netlify/Decap CMS [#3671](https://github.com/decaporg/decap-cms/issues/3671)
567
607
  [^5]: Netlify/Decap CMS [#1032](https://github.com/decaporg/decap-cms/issues/1032)
568
608
  [^6]: Netlify/Decap CMS [#3240](https://github.com/decaporg/decap-cms/issues/3240)
569
- [^7]: Netlify/Decap CMS [#4386](https://github.com/decaporg/decap-cms/issues/4386), [#6978](https://github.com/decaporg/decap-cms/issues/6978)
609
+ [^7]: Netlify/Decap CMS [#4386](https://github.com/decaporg/decap-cms/issues/4386)
570
610
  [^8]: Netlify/Decap CMS [#2579](https://github.com/decaporg/decap-cms/issues/2579)
571
611
  [^9]: Netlify/Decap CMS [#3505](https://github.com/decaporg/decap-cms/issues/3505)
572
612
  [^10]: Netlify/Decap CMS [#341](https://github.com/decaporg/decap-cms/issues/341), [#1167](https://github.com/decaporg/decap-cms/issues/1167)
573
- [^11]: Netlify/Decap CMS [#1382](https://github.com/decaporg/decap-cms/issues/1382), [#6994](https://github.com/decaporg/decap-cms/issues/6994)
613
+ [^11]: Netlify/Decap CMS [#1382](https://github.com/decaporg/decap-cms/issues/1382)
574
614
  [^12]: Netlify/Decap CMS [#1975](https://github.com/decaporg/decap-cms/issues/1975)
575
615
  [^13]: Netlify/Decap CMS [#5112](https://github.com/decaporg/decap-cms/issues/5112), [#5653](https://github.com/decaporg/decap-cms/issues/5653)
576
- [^14]: Netlify/Decap CMS [#4635](https://github.com/decaporg/decap-cms/issues/4635), [#4738](https://github.com/decaporg/decap-cms/issues/4738), [#5920](https://github.com/decaporg/decap-cms/issues/5920), [#6410](https://github.com/decaporg/decap-cms/issues/6410)
616
+ [^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)
577
617
  [^15]: Netlify/Decap CMS [#6932](https://github.com/decaporg/decap-cms/issues/6932)
578
618
  [^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103)
579
- [^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333), [#7077](https://github.com/decaporg/decap-cms/issues/7077)
619
+ [^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333)
580
620
  [^18]: Netlify/Decap CMS [#441](https://github.com/decaporg/decap-cms/issues/441)
581
621
  [^19]: Netlify/Decap CMS [#5910](https://github.com/decaporg/decap-cms/issues/5910)
582
622
  [^20]: Netlify/Decap CMS [#4563](https://github.com/decaporg/decap-cms/issues/4563)
@@ -590,8 +630,8 @@ This software is provided “as is” without any express or implied warranty. W
590
630
  [^28]: Netlify/Decap CMS [#6836](https://github.com/decaporg/decap-cms/pull/6836)
591
631
  [^29]: Netlify/Decap CMS [#4783](https://github.com/decaporg/decap-cms/issues/4783)
592
632
  [^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565)
593
- [^31]: Netlify/Decap CMS [#1045](https://github.com/decaporg/decap-cms/issues/1045), [#3353](https://github.com/decaporg/decap-cms/issues/3353)
594
- [^32]: Netlify/Decap CMS [#302](https://github.com/decaporg/decap-cms/issues/302), [#5549](https://github.com/decaporg/decap-cms/issues/5549), [#6034](https://github.com/decaporg/decap-cms/issues/6034)
633
+ [^31]: Netlify/Decap CMS [#1045](https://github.com/decaporg/decap-cms/issues/1045)
634
+ [^32]: Netlify/Decap CMS [#302](https://github.com/decaporg/decap-cms/issues/302), [#5549](https://github.com/decaporg/decap-cms/issues/5549)
595
635
  [^33]: Netlify/Decap CMS [#6513](https://github.com/decaporg/decap-cms/issues/6513)
596
636
  [^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138)
597
637
  [^35]: Netlify/Decap CMS [#7086](https://github.com/decaporg/decap-cms/issues/7086)
@@ -612,11 +652,25 @@ This software is provided “as is” without any express or implied warranty. W
612
652
  [^50]: Netlify/Decap CMS [#4646](https://github.com/decaporg/decap-cms/issues/4646), [#7167](https://github.com/decaporg/decap-cms/issues/7167)
613
653
  [^51]: Netlify/Decap CMS [#6731](https://github.com/decaporg/decap-cms/issues/6731)
614
654
  [^52]: Netlify/Decap CMS [#7147](https://github.com/decaporg/decap-cms/issues/7147)
615
- [^53]: Netlify/Decap CMS [#5673](https://github.com/decaporg/decap-cms/issues/5673), [#6482](https://github.com/decaporg/decap-cms/issues/6482), [#6707](https://github.com/decaporg/decap-cms/issues/6707), [#6999](https://github.com/decaporg/decap-cms/issues/6999), [#7047](https://github.com/decaporg/decap-cms/issues/7047), [#7123](https://github.com/decaporg/decap-cms/issues/7123), [#7152](https://github.com/decaporg/decap-cms/issues/7152)
655
+ [^53]: Netlify/Decap CMS [#5673](https://github.com/decaporg/decap-cms/issues/5673), [#6707](https://github.com/decaporg/decap-cms/issues/6707)
616
656
  [^54]: Netlify/Decap CMS [#1347](https://github.com/decaporg/decap-cms/issues/1347), [#4629](https://github.com/decaporg/decap-cms/issues/4629), [#6287](https://github.com/decaporg/decap-cms/issues/6287) — Decap 3.0 updated the Slate editor in an attempt to fix the problems, but the IME issues remain unresolved when using a mobile/tablet browser.
617
657
  [^55]: Netlify/Decap CMS [#4480](https://github.com/decaporg/decap-cms/issues/4480), [#6353](https://github.com/decaporg/decap-cms/issues/6353)
618
658
  [^56]: Netlify/Decap CMS [#6515](https://github.com/decaporg/decap-cms/issues/6515)
619
- [^57]: Netlify/Decap CMS [#328](https://github.com/decaporg/decap-cms/issues/328), [#3853](https://github.com/decaporg/decap-cms/issues/3853)
659
+ [^57]: Netlify/Decap CMS [#328](https://github.com/decaporg/decap-cms/issues/328)
620
660
  [^58]: Netlify/Decap CMS [#5125](https://github.com/decaporg/decap-cms/issues/5125)
621
661
  [^59]: Netlify/Decap CMS [#1654](https://github.com/decaporg/decap-cms/issues/1654)
622
662
  [^60]: Netlify/Decap CMS [#386](https://github.com/decaporg/decap-cms/issues/386)
663
+ [^61]: Netlify/Decap CMS [#1489](https://github.com/decaporg/decap-cms/issues/1489)
664
+ [^62]: Netlify/Decap CMS [#7192](https://github.com/decaporg/decap-cms/issues/7192)
665
+ [^63]: Netlify/Decap CMS [#4877](https://github.com/decaporg/decap-cms/issues/4877)
666
+ [^64]: Netlify/Decap CMS [#3853](https://github.com/decaporg/decap-cms/issues/3853)
667
+ [^65]: Netlify/Decap CMS [#6034](https://github.com/decaporg/decap-cms/issues/6034)
668
+ [^66]: Netlify/Decap CMS [#3353](https://github.com/decaporg/decap-cms/issues/3353)
669
+ [^67]: Netlify/Decap CMS [#7077](https://github.com/decaporg/decap-cms/issues/7077)
670
+ [^68]: Netlify/Decap CMS [#6978](https://github.com/decaporg/decap-cms/issues/6978)
671
+ [^69]: Netlify/Decap CMS [#6994](https://github.com/decaporg/decap-cms/issues/6994)
672
+ [^70]: Netlify/Decap CMS [#6482](https://github.com/decaporg/decap-cms/issues/6482)
673
+ [^71]: Netlify/Decap CMS [#6999](https://github.com/decaporg/decap-cms/issues/6999), [#7152](https://github.com/decaporg/decap-cms/issues/7152)
674
+ [^72]: Netlify/Decap CMS [#7047](https://github.com/decaporg/decap-cms/issues/7047)
675
+ [^73]: Netlify/Decap CMS [#7123](https://github.com/decaporg/decap-cms/issues/7123)
676
+ [^100]: Netlify/Decap CMS [#5656](https://github.com/decaporg/decap-cms/issues/5656), [#5837](https://github.com/decaporg/decap-cms/issues/5837), [#5972](https://github.com/decaporg/decap-cms/issues/5972), [#6476](https://github.com/decaporg/decap-cms/issues/6476), [#6516](https://github.com/decaporg/decap-cms/issues/6516), [#6930](https://github.com/decaporg/decap-cms/issues/6930), [#6965](https://github.com/decaporg/decap-cms/issues/6965), [#7080](https://github.com/decaporg/decap-cms/issues/7080), [#7105](https://github.com/decaporg/decap-cms/issues/7105), [#7106](https://github.com/decaporg/decap-cms/issues/7106), [#7119](https://github.com/decaporg/decap-cms/issues/7119), [#7176](https://github.com/decaporg/decap-cms/issues/7176), [#7194](https://github.com/decaporg/decap-cms/issues/7194) — These `removeChild` crashes are common in React apps and seem to be caused by a [browser extension](https://github.com/facebook/react/issues/17256) or [Google Translate](https://github.com/facebook/react/issues/11538).