@sveltia/cms 0.29.3 → 0.31.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
@@ -28,7 +28,8 @@ While we are fixing reported bugs as fast as we can, usually within 24 hours, th
28
28
 
29
29
  - Ensuring maximum compatibility with existing versions of Netlify/Decap CMS
30
30
  - Tackling as many [issues reported to Netlify/Decap CMS](https://github.com/decaporg/decap-cms/issues) as possible
31
- - So far 95+ of them have been effectively solved in Sveltia CMS, with the goal of solving 125 by GA
31
+ - So far, 100+ of them have been effectively solved in Sveltia CMS, with the goal of reaching 150 by GA and 250 in later releases.
32
+ - [Let us know](https://github.com/sveltia/sveltia-cms/issues/new) if you have any specific issues you’d like to see solved!
32
33
  - Responding to user feedback
33
34
  - Implementing our own enhancement ideas
34
35
 
@@ -49,7 +50,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
49
50
  - 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.
50
51
  - Offers a modern, intuitive user interface, including an immersive dark mode[^2], inspired in part by the Netlify CMS v3 prototype[^1].
51
52
  - 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.
52
- - 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 React app crashes[^100]. Best of all, Svelte offers great performance!
53
+ - 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 React app crashes[^999]. Best of all, Svelte offers great performance!
53
54
  - The screenshots above are worth a thousand words, but read on to learn about many other improvements in detail.
54
55
 
55
56
  ### Better performance
@@ -69,7 +70,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
69
70
  - 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.
70
71
  - It also avoids a number of issues, including the 30 MB file size limit[^51], an unknown error with `publish_mode`[^75], and an unused `logo_url`[^49].
71
72
  - Eliminates some workflow disruptions in the Content Editor:
72
- - A local backup of an entry draft is automatically created without interruption by a confirmation dialog. It can then be reliably restored without unexpected overwriting[^85].
73
+ - A local backup of an entry draft is automatically created without interruption by a confirmation dialog, which annoys users and can cause a page navigation problem when it’s dismissed[^106]. It can then be reliably restored without unexpected overwriting[^85].
73
74
  - Click once (the Save button) instead of twice (Publish > Publish now) to save an entry.
74
75
  - The editor closes automatically when an entry is saved.
75
76
  - You can upload multiple assets at once[^5].
@@ -83,6 +84,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
83
84
  - Comprehensive [WAI-ARIA](https://w3c.github.io/aria/) support enables users who rely on screen readers such as NVDA and VoiceOver.
84
85
  - Ensures sufficient contrast between the foreground text and background colours.
85
86
  - 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.
87
+ - Enabled and disabled buttons can be clearly distinguished[^105].
86
88
  - We’ll continue to test and improve the application to meet [WCAG 2.2](https://w3c.github.io/wcag/guidelines/22/).
87
89
 
88
90
  ### Better security
@@ -92,6 +94,11 @@ We are working hard to create a **significantly better alternative to Netlify CM
92
94
  - The `unsafe-eval` and `unsafe-inline` keywords are not needed in the `script-src` CSP directive[^34].
93
95
  - The `same-origin` referrer policy is automatically set with a `<meta>` tag.
94
96
 
97
+ ### Better configuration
98
+
99
+ - 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`), which results in a 404 Not Found[^107].
100
+ - Supports a [JSON configuration file](#providing-a-json-configuration-file) that can be generated for bulk or complex collections[^60].
101
+
95
102
  ### Better backend support
96
103
 
97
104
  - Uses the GraphQL API where possible for better performance, as mentioned above. You don’t need to set the `use_graphql` option to enable it for GitHub and GitLab.
@@ -102,29 +109,34 @@ We are working hard to create a **significantly better alternative to Netlify CM
102
109
 
103
110
  ### Better i18n support
104
111
 
105
- - Sveltia CMS has been built with a multilingual architecture from the very beginning. You can expect top-notch 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.
106
- - Supports multiple files/folders i18n structure for file collections[^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.
107
- - Eliminates UI confusion — the Preview pane can be displayed without toggling i18n in the Content Editor.
108
- - You can easily switch between locales while editing with just a click on a button instead of a dropdown list.
109
- - Language labels appear in human-readable display names instead of ISO 639 language codes, which not everyone is familiar with. (For example, it might be difficult to recognize `DE` as German, `NL` as Dutch, or `ZH` as Chinese.)
110
- - Fields in non-default locales are validated as expected[^13].
111
- - Boolean, DateTime, List and Number fields in the entry preview are displayed in a localized format.
112
- - [Integrates DeepL](#using-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click.
113
- - You can [disable non-default locale content](#disabling-non-default-locale-content)[^15].
114
- - 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.
115
- - 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].
116
- - 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].
117
- - [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].
118
- - Boolean fields are updated in real time between locales like other widgets to avoid confusion[^35].
119
- - Relation fields with i18n enabled won’t trigger a change in the content draft status when you start editing an existing entry[^84].
120
- - 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].
121
- - 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].
122
- - You can [localize entry slugs](#localizing-entry-slugs) while linking the localized files[^80], thanks to the support for Hugo’s `translationKey`[^81].
123
- - 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].
112
+ 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.
113
+
114
+ - Configuration
115
+ - Supports multiple files/folders i18n structure for file collections[^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.
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
+ - 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].
118
+ - 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
+ - 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.
120
+ - You can [localize entry slugs](#localizing-entry-slugs) while linking the localized files[^80], thanks to the support for Hugo’s `translationKey`[^81].
121
+ - 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://www.npmjs.com/package/@sindresorhus/transliterate)[^99].
122
+ - You can embed the locale code in an entry by using `widget: hidden` along with `default: '{{locale}}'`[^101].
123
+ - User interface
124
+ - 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.
125
+ - You can easily switch between locales while editing by clicking a button instead of a dropdown list. No internal error is thrown when changing the locale[^103].
126
+ - Language labels appear in human-readable display names instead of ISO 639 language codes, which not everyone is familiar with. (For example, it might be difficult to recognize `DE` as German, `NL` as Dutch, or `ZH` as Chinese.)
127
+ - 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].
128
+ - Content editing
129
+ - [Integrates DeepL](#using-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click.
130
+ - You can [disable non-default locale content](#disabling-non-default-locale-content)[^15].
131
+ - Boolean, DateTime, List and Number fields in the entry preview are displayed in a localized format.
132
+ - Boolean fields are updated in real time between locales like other widgets to avoid confusion[^35].
133
+ - Relation fields with i18n enabled won’t trigger a change in the content draft status when you start editing an existing entry[^84].
134
+ - 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].
135
+ - 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].
136
+ - Fields in non-default locales are validated as expected[^13].
124
137
 
125
138
  ### Better collections
126
139
 
127
- - Supports a [JSON configuration file](#providing-a-json-configuration-file) that can be generated for bulk or complex collections[^60].
128
140
  - You can choose a [custom icon for each collection](#using-a-custom-icon-for-a-collection)[^3].
129
141
  - You can [add dividers to the collection list](#adding-dividers-to-the-collection-list).
130
142
  - Assets stored in a [per-collection media folder](#using-a-custom-media-folder-for-a-collection) can be displayed next to the entries.
@@ -143,16 +155,17 @@ We are working hard to create a **significantly better alternative to Netlify CM
143
155
  - You can revert changes to all fields or a specific field.
144
156
  - You can hide the preview of a specific field with `preview: false`.
145
157
  - Fields with validation errors are automatically expanded if they are part of nested, collapsed objects[^40].
146
- - When you click on a field in the Preview pane, the corresponding field in the Editor pane is highlighted. It will be automatically expanded if collapsed[^41].
147
- - The Preview pane displays all fields, including each title, making it easier to see which fields are populated.
158
+ - 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[^41].
159
+ - The preview pane displays all fields, including each title, making it easier to see which fields are populated.
148
160
  - Provides better scroll synchronization between the panes when editing or previewing an entry[^92].
149
161
  - 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).
150
162
  - A long validation error message is displayed in full, without being hidden behind the field label[^59].
163
+ - Any links to other entries will work as expected, with the Content Editor being updated for the other[^100].
151
164
 
152
165
  ### Better data output
153
166
 
154
167
  - Keys in generated JSON/TOML/YAML content are always sorted by the order of configured fields, making Git commits clean and consistent[^86].
155
- - 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.
168
+ - 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[^45][^46][^44].
156
169
  - Leading and trailing spaces in text-type field values are automatically removed when you save an entry[^37].
157
170
  - 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].
158
171
  - String values in YAML files can be quoted with the new `yaml_quote: true` option for a collection, mainly for framework compatibility[^9].
@@ -162,10 +175,13 @@ We are working hard to create a **significantly better alternative to Netlify CM
162
175
  - Boolean
163
176
  - A required Boolean field with no default value is saved as `false` by default, without raising a confusing validation error[^45].
164
177
  - An optional Boolean field with no default value is also saved as `false` by default, rather than nothing[^46].
178
+ - Color
179
+ - The preview shows both the RGB(A) hex value and the `rgb()` function notation.
165
180
  - DateTime
166
181
  - A DateTime field doesn’t trigger a change in the content draft status when you’ve just started editing a new entry[^90].
167
182
  - Hidden
168
183
  - The `default` value is saved when you create a file collection item, not just a folder collection item[^78].
184
+ - 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].
169
185
  - List
170
186
  - 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.
171
187
  - 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.
@@ -176,7 +192,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
176
192
  - Markdown
177
193
  - The rich text editor is built with [Lexical](https://github.com/facebook/lexical) instead of [Slate](https://github.com/ianstormtaylor/slate), which solves various problems found in Netlify/Decap CMS, including fatal application crashes[^53][^70][^71][^72][^73].
178
194
  - 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.
179
- - Line breaks are rendered as line breaks in the Preview pane according to GitHub Flavored Markdown.
195
+ - Line breaks are rendered as line breaks in the preview pane according to GitHub Flavored Markdown.
180
196
  - Object
181
197
  - Sveltia CMS offers two ways to have conditional fields in a collection[^30]:
182
198
  - You can use [variable types](https://decapcms.org/docs/variable-type-widgets/) (the `types` option) with the Object widget just like the List widget.
@@ -185,13 +201,13 @@ We are working hard to create a **significantly better alternative to Netlify CM
185
201
  - Field options are displayed with no additional API requests[^14]. The confusing `options_length` option, which defaults to 20, is therefore ignored[^76].
186
202
  - `slug` can be used for `value_field` to show all available options instead of just one in some situations[^91].
187
203
  - Template strings with a wildcard like `{{cities.*.name}}` can also be used for `value_field`[^94].
188
- - `display_fields` is displayed in the Preview pane instead of `value_field`.
204
+ - `display_fields` is displayed in the preview pane instead of `value_field`.
189
205
  - The redundant `search_fields` option is not required in Sveltia CMS, as it defaults to `display_fields` (and `value_field`).
190
206
  - Select
191
207
  - It’s possible to select an option with value `0`[^56].
192
- - `label` is displayed in the Preview pane instead of `value`.
208
+ - `label` is displayed in the preview pane instead of `value`.
193
209
  - String
194
- - When a YouTube video URL is entered in a String field, it appears as an embedded video in the Preview pane.
210
+ - When a YouTube video URL is entered in a String field, it appears as an embedded video in the preview pane.
195
211
  - Check your site’s [CSP](#setting-up-content-security-policy) if the preview doesn’t work.
196
212
  - When a regular URL is entered in a String field, it appears as a link that can be opened in a new browser tab.
197
213
  - Supports the `type` option that accepts `url` or `email` as a value, which will validate the value as a URL or email.
@@ -204,7 +220,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
204
220
  - A new asset can be uploaded by dragging & dropping it into the dialog[^20].
205
221
  - A URL can also be entered in the dialog.
206
222
  - Integration with Pexels, Pixabay and Unsplash makes it easy to select and insert a free stock photo[^8]. More services will be added later.
207
- - 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.
223
+ - 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.
208
224
  - List and Object
209
225
  - The `summary` is displayed correctly when it refers to a Relation field[^36].
210
226
  - Markdown, String and Text
@@ -218,7 +234,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
218
234
  #### New widgets
219
235
 
220
236
  - Compute
221
- - The experimental `compute` widget allows to reference the value of other fields in the same collection, similar to the `summary` property for the List and Object widgets. Use the `value` property to define the value template, e.g. `posts-{{fields.slug}}` ([example](https://github.com/sveltia/sveltia-cms/issues/111)).
237
+ - The experimental `compute` widget allows to reference the value of other fields in the same collection, similar to the `summary` property for the List and Object widgets[^104]. Use the `value` property to define the value template, e.g. `posts-{{fields.slug}}` ([example](https://github.com/sveltia/sveltia-cms/issues/111)).
222
238
  - UUID
223
239
  - In addition to [generating UUIDs for entry slugs](#using-a-random-id-for-an-entry-slug), Sveltia CMS also supports the proposed `uuid` widget with the following properties[^12]:
224
240
  - `prefix`: A string to be prepended to the value. Default: an empty string.
@@ -242,7 +258,7 @@ We are working hard to create a **significantly better alternative to Netlify CM
242
258
  - View asset details, including size, dimensions, commit author/date and a list of entries that use the selected asset.
243
259
  - More features are planned so that you’ll be able to utilize Sveltia CMS as digital asset management (DAM) software.
244
260
  - 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].
245
- - 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].
261
+ - 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]. If you’re [working with a local repository](#working-with-a-local-git-repository), the empty enclosing folder is also deleted.
246
262
  - Hidden files (dot files) don’t appear in the Asset Library[^47].
247
263
  - You can add assets using the Quick Add button in the upper right corner of the application.
248
264
  - Files are uploaded with their original names, without converting uppercase letters and spaces to lowercase letters and hyphens[^97].
@@ -273,12 +289,12 @@ These limitations are expected to be resolved before GA:
273
289
  | Map | Not yet supported. |
274
290
  | Markdown | Editor components, including built-in `image` and `code-block` as well as custom components, are not yet supported. |
275
291
 
276
- If we have missed any other features, let us know by [filing an issue](https://github.com/sveltia/sveltia-cms/issues).
292
+ Missing other features? Let us know by [filing an issue](https://github.com/sveltia/sveltia-cms/issues/new).
277
293
 
278
294
  ### Features not to be implemented
279
295
 
280
296
  - 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.
281
- - 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.
297
+ - **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.
282
298
  - 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.
283
299
  - The deprecated Netlify Large Media service will not be supported. Consider other storage providers.
284
300
  - Sveltia CMS has dropped the support for the deprecated Date widget following Decap CMS 3.0. Use the DateTime widget instead.
@@ -358,19 +374,6 @@ Updating Sveltia CMS is transparent, unless you include a specific version in th
358
374
 
359
375
  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.
360
376
 
361
- ## Tips & tricks
362
-
363
- ### Working around configuration loading issue
364
-
365
- Depending on your server or framework’s configuration, when you access the CMS at `/admin/`, you’ll be redirected to `/admin` with the trailing slash removed. The CMS assumes that your configuration exists in the same directory, which means `/config.yml` is loaded instead of `/admin/config.yml`, resulting in an error saying “The configuration file could not be retrieved.” There are a couple of ways to work around this problem:
366
-
367
- - Access `/admin/index.html` or `/admin/#/`
368
- - Rename `/admin/index.html` to `/admin/cms.html`, and access `/admin/cms`
369
- - [Specify the configuration file path](https://decapcms.org/docs/configuration-options/#configuration-file) with a `<link>` tag in `/admin/index.html`:
370
- ```html
371
- <link href="/admin/config.yml" type="application/yaml" rel="cms-config-url" />
372
- ```
373
-
374
377
  ### Providing a JSON configuration file
375
378
 
376
379
  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`:
@@ -544,6 +547,14 @@ i18n:
544
547
  value: 'en/{{slug}}' # default: {{slug}}
545
548
  ```
546
549
 
550
+ Or, for [Jekyll](https://migueldavid.eu/how-to-make-jekyll-multilingual-c13e74c18f1c), you may want to use the `ref` property:
551
+
552
+ ```yaml
553
+ i18n:
554
+ canonical_slug:
555
+ key: ref
556
+ ```
557
+
547
558
  ### Disabling non-default locale content
548
559
 
549
560
  You can now disable output of content in selected non-default locales by adding the `save_all_locales` property to the top-level or per-collection `i18n` configuration. Then you’ll find “Disable (locale name)” in the three-dot menu in the top right corner of the content editor. This is useful if the translation isn’t ready yet, but you want to publish the default locale content first.
@@ -742,7 +753,7 @@ This software is provided “as is” without any express or implied warranty. W
742
753
  [^6]: Netlify/Decap CMS [#3240](https://github.com/decaporg/decap-cms/issues/3240)
743
754
  [^7]: Netlify/Decap CMS [#4386](https://github.com/decaporg/decap-cms/issues/4386)
744
755
  [^8]: Netlify/Decap CMS [#2579](https://github.com/decaporg/decap-cms/issues/2579)
745
- [^9]: Netlify/Decap CMS [#3505](https://github.com/decaporg/decap-cms/issues/3505), [#4211](https://github.com/decaporg/decap-cms/issues/4211)
756
+ [^9]: Netlify/Decap CMS [#3505](https://github.com/decaporg/decap-cms/issues/3505), [#4211](https://github.com/decaporg/decap-cms/issues/4211), [#5439](https://github.com/decaporg/decap-cms/issues/5439)
746
757
  [^10]: Netlify/Decap CMS [#341](https://github.com/decaporg/decap-cms/issues/341), [#1167](https://github.com/decaporg/decap-cms/issues/1167)
747
758
  [^11]: Netlify/Decap CMS [#1382](https://github.com/decaporg/decap-cms/issues/1382)
748
759
  [^12]: Netlify/Decap CMS [#1975](https://github.com/decaporg/decap-cms/issues/1975), [#3712](https://github.com/decaporg/decap-cms/issues/3712)
@@ -755,7 +766,7 @@ This software is provided “as is” without any express or implied warranty. W
755
766
  [^19]: Netlify/Decap CMS [#5910](https://github.com/decaporg/decap-cms/issues/5910)
756
767
  [^20]: Netlify/Decap CMS [#4563](https://github.com/decaporg/decap-cms/issues/4563)
757
768
  [^21]: Netlify/Decap CMS [#4781](https://github.com/decaporg/decap-cms/issues/4781)
758
- [^22]: Netlify/Decap CMS [#6642](https://github.com/decaporg/decap-cms/issues/6642)
769
+ [^22]: Netlify/Decap CMS [#3615](https://github.com/decaporg/decap-cms/issues/3615), [#4069](https://github.com/decaporg/decap-cms/issues/4069), [#5097](https://github.com/decaporg/decap-cms/issues/5097), [#6642](https://github.com/decaporg/decap-cms/issues/6642)
759
770
  [^23]: Netlify/Decap CMS [#2](https://github.com/decaporg/decap-cms/issues/2)
760
771
  [^24]: Netlify/Decap CMS [#6831](https://github.com/decaporg/decap-cms/issues/6831)
761
772
  [^25]: Netlify/Decap CMS [#526](https://github.com/decaporg/decap-cms/issues/526), [#6987](https://github.com/decaporg/decap-cms/issues/6987)
@@ -804,7 +815,7 @@ This software is provided “as is” without any express or implied warranty. W
804
815
  [^68]: Netlify/Decap CMS [#6978](https://github.com/decaporg/decap-cms/issues/6978)
805
816
  [^69]: Netlify/Decap CMS [#6994](https://github.com/decaporg/decap-cms/issues/6994)
806
817
  [^70]: Netlify/Decap CMS [#6482](https://github.com/decaporg/decap-cms/issues/6482)
807
- [^71]: Netlify/Decap CMS [#6999](https://github.com/decaporg/decap-cms/issues/6999), [#7152](https://github.com/decaporg/decap-cms/issues/7152)
818
+ [^71]: Netlify/Decap CMS [#6999](https://github.com/decaporg/decap-cms/issues/6999), [#7000](https://github.com/decaporg/decap-cms/issues/7000), [#7001](https://github.com/decaporg/decap-cms/issues/7001), [#7152](https://github.com/decaporg/decap-cms/issues/7152)
808
819
  [^72]: Netlify/Decap CMS [#7047](https://github.com/decaporg/decap-cms/issues/7047)
809
820
  [^73]: Netlify/Decap CMS [#7123](https://github.com/decaporg/decap-cms/issues/7123)
810
821
  [^74]: Netlify/Decap CMS [#4209](https://github.com/decaporg/decap-cms/issues/4209)
@@ -832,4 +843,13 @@ This software is provided “as is” without any express or implied warranty. W
832
843
  [^96]: Netlify/Decap CMS [#962](https://github.com/decaporg/decap-cms/issues/962)
833
844
  [^97]: Netlify/Decap CMS [#4288](https://github.com/decaporg/decap-cms/issues/4288)
834
845
  [^98]: Netlify/Decap CMS [#3856](https://github.com/decaporg/decap-cms/issues/3856)
835
- [^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).
846
+ [^99]: Netlify/Decap CMS [#1685](https://github.com/decaporg/decap-cms/issues/1685)
847
+ [^100]: Netlify/Decap CMS [#4147](https://github.com/decaporg/decap-cms/issues/4147)
848
+ [^101]: Netlify/Decap CMS [#5969](https://github.com/decaporg/decap-cms/issues/5969)
849
+ [^102]: Netlify/Decap CMS [#1270](https://github.com/decaporg/decap-cms/issues/1270)
850
+ [^103]: Netlify/Decap CMS [#6307](https://github.com/decaporg/decap-cms/issues/6307)
851
+ [^104]: Netlify/Decap CMS [#6819](https://github.com/decaporg/decap-cms/issues/6819)
852
+ [^105]: Netlify/Decap CMS [#5701](https://github.com/decaporg/decap-cms/issues/5701)
853
+ [^106]: Netlify/Decap CMS [#2822](https://github.com/decaporg/decap-cms/issues/2822)
854
+ [^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), [#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)
855
+ [^999]: 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).