@sveltia/cms 0.12.0 → 0.12.2

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
@@ -16,13 +16,13 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
16
16
 
17
17
  Sveltia CMS was born in November 2022, when the progress of Netlify CMS was stalled for more than six months. [@kyoshino](https://github.com/kyoshino)’s clients wanted to replace their Netlify CMS instances without much effort, mainly to get better internationalization (i18n) support.
18
18
 
19
- To achieve radical improvements in UX, performance and i18n, it was decided to build an alternative from the ground up, while ensuring an easy migration path from the other. After proving the concept with a rapid [Svelte](https://svelte.dev/) prototype, development was accelerated to address their primary use cases. The new offering has since been named Sveltia CMS and released as open source software to encourage wider adoption.
19
+ To achieve radical improvements in UX, performance, i18n and other areas, it was decided to build an alternative from the ground up, while ensuring an easy migration path from the other. After proving the concept with a rapid [Svelte](https://svelte.dev/) prototype, development was accelerated to address their primary use cases. The new offering has since been named Sveltia CMS and released as open source software to encourage wider adoption.
20
20
 
21
21
  Our goal is to make it a viable successor to Netlify CMS, expand the Git-based headless CMS market, empower small businesses and individuals who need a simple yet powerful CMS solution, and showcase the huge potential of the Svelte framework.
22
22
 
23
23
  ## Features
24
24
 
25
- Here are some highlights mainly compared to Netlify/Decap CMS:
25
+ We are working hard to create a **much better alternative to Netlify/Decap CMS**. Here’s what makes Sveltia CMS different. (Whoa, there are so many!)
26
26
 
27
27
  ### Compatible with Netlify/Decap CMS
28
28
 
@@ -37,20 +37,21 @@ Here are some highlights mainly compared to Netlify/Decap CMS:
37
37
  - 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.
38
38
  - Made with Svelte, not React, means we can spend more time on UX rather than tedious state management.
39
39
  - The screenshots above are worth a thousand words!
40
+ - Read on to learn about many other enhancements, including performance, productivity, accessibility, service integrations, and an all-new Asset Library.
40
41
 
41
42
  ### Better performance
42
43
 
43
44
  - 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.
44
- - Small footprint: less than 300 KB when minified and gzipped, compared to 1.5 MB of Netlify/Decap CMS. And [no virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
45
- - Uses the GraphQL API for GitHub to quickly fetch content at once, so that entries and assets can be listed and searched instantly. This avoids the slowness and potential API rate limit violations caused by hundreds of requests with relation widgets[^14].
45
+ - Small footprint: The bundle size is less than 300 KB when minified and gzipped, compared to 1.5 MB of Netlify/Decap CMS. And [no virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
46
+ - Uses the GraphQL API for GitHub 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].
46
47
  - Saving entries and assets is also much faster thanks to the [GraphQL mutation](https://github.blog/changelog/2021-09-13-a-simpler-api-for-authoring-commits/).
47
48
  - Caches Git files locally to further speed up startup and reduce bandwidth.
48
49
  - You can [disable automatic deployments](#disable-automatic-deployments) by default or on demand to save costs and resources associated with CI/CD and to publish multiple changes at once[^24].
49
50
 
50
51
  ### Better productivity
51
52
 
52
- - You can [work on a local Git repository](#work-with-a-local-git-repository) without having to run a proxy server on your machine[^26].
53
- - 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 fallback to `master`[^27].
53
+ - You can [work on a local Git repository](#work-with-a-local-git-repository) without running a proxy server on your machine, bypassing the 30 MB file size limit[^26].
54
+ - 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].
54
55
  - Never miss out on the latest features and bug fixes by being notified when an update to the CMS is available[^31].
55
56
  - You can delete multiple entries and assets at once.
56
57
  - Some keyboard shortcuts are available for faster editing. More to come!
@@ -67,18 +68,22 @@ Here are some highlights mainly compared to Netlify/Decap CMS:
67
68
  - 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.
68
69
  - We’ll continue to test and improve the application to meet [WCAG 2.2](https://w3c.github.io/wcag/guidelines/22/).
69
70
 
71
+ ### Better security
72
+
73
+ - Avoids high/critical severity vulnerabilities through constant dependency updates[^34].
74
+ - We have documented how to [set up a Content Security Policy](#set-up-content-security-policy) for the CMS.
75
+ - The `unsafe-eval` or `unsafe-inline` keywords are not needed in the `script-src` CSP directive[^33].
76
+
70
77
  ### Better i18n support
71
78
 
72
79
  - It’s now easier to switch between locales while editing with just a click on a button instead of a dropdown list.
73
80
  - Fields in non-default locales are validated as expected[^13].
74
81
  - [Integrates DeepL](#use-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click.
75
82
  - You can [disable non-default locale content](#disable-non-default-locale-content)[^15].
76
- - You can [use a random UUID for an entry slug](#use-a-random-id-for-an-entry-slug), which is a good option for locales that write in non-Latin characters. Sveltia CMS also supports the proposed `uuid` widget with the following properties[^12]:
77
- - `prefix`: A string to be prepended to the value. Default: an empty string.
78
- - `use_b32_encoding`: Whether to encode the value with Base32. Default: `false`.
79
- - `read_only`: Whether to make the field read-only. Default: `true`.
80
- - Resolves 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].
83
+ - You can [use a random UUID for an entry slug](#use-a-random-id-for-an-entry-slug), which is a good option for locales that write in non-Latin characters.
84
+ - Resolves 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].
81
85
  - [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].
86
+ - Boolean fields are updated in real time between locales like other widgets to avoid confusion[^35].
82
87
 
83
88
  ### Better collections
84
89
 
@@ -90,17 +95,22 @@ Here are some highlights mainly compared to Netlify/Decap CMS:
90
95
 
91
96
  ### Better fields/widgets
92
97
 
98
+ - Required fields, not optional fields, are clearly marked for efficient data entry.
99
+ - You can revert changes to all fields or a specific field.
93
100
  - The Boolean, Number and String widgets support the `prefix` and `suffix` properties, allowing developers to display custom messages before and/or after the field[^28].
94
101
  - Relation field options are displayed with no additional API requests[^14]. The `options_length` property is therefore ignored.
95
- - Required fields, not optional fields, are clearly marked for efficient data entry.
96
- - Provides a reimagined all-in-one asset selection dialog for file and image fields.
102
+ - The `summary` for the List and Object widgets is displayed correctly when it refers to a Relation field[^36].
103
+ - Provides a reimagined all-in-one asset selection dialog for File and Image fields.
97
104
  - [Collection-specific assets](#use-a-custom-media-folder-for-a-collection) will be listed first for easy selection, while all assets can also be displayed in a separate tab[^19].
98
105
  - New assets can be uploaded by dragging & dropping them into the dialog[^20].
99
106
  - A file/image URL can also be entered in the dialog.
100
107
  - Integration with Pexels, Pixabay and Unsplash makes it easy to select and insert free stock photos[^8].
101
108
  - The Object widget 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].
102
- - Optional object fields (`widget: object` with `required: false`) can be manually added or removed. If unadded or removed, the required subfields won’t trigger validation errors[^16].
103
- - You can revert changes to all fields or a specific field.
109
+ - Optional Object fields (`widget: object` with `required: false`) can be manually added or removed. If unadded or removed, the required subfields won’t trigger validation errors[^16].
110
+ - In addition to [generating UUIDs for entry slugs](#use-a-random-id-for-an-entry-slug), Sveltia CMS also supports the proposed `uuid` widget with the following properties[^12]:
111
+ - `prefix`: A string to be prepended to the value. Default: an empty string.
112
+ - `use_b32_encoding`: Whether to encode the value with Base32. Default: `false`.
113
+ - `read_only`: Whether to make the field read-only. Default: `true`.
104
114
 
105
115
  ### Better asset management
106
116
 
@@ -116,7 +126,7 @@ While it’s not our goal to recreate all the features found in Netlify/Decap CM
116
126
 
117
127
  | Feature | Status in Sveltia CMS |
118
128
  | --- | --- |
119
- | Installation | Installing with npm is not supported yet. |
129
+ | Installation | Installing with `npm` is not supported yet. |
120
130
  | Backends | Only the GitHub backend is available at this time. Sveltia CMS uses the GraphQL by default for a better performance; it cannot be disabled. The GitLab backend will be available soon. We plan to add the Test backend as well for our demo site as well, but Azure and Bitbucket will probably not be supported, mainly due to the lack of a method to fetch content in bulk. We have not looked into the relatively new Gitea backend yet. |
121
131
  | Netlify Integration | Identity Widget is not supported yet. We will not support Git Gateway due to the poor performance; we may implement an alternative using GraphQL later. |
122
132
  | Local Git Repository | Supported using a different approach. [See below](#work-with-a-local-git-repository) for details. |
@@ -423,34 +433,39 @@ Sveltia CMS is still in early beta, so we do expect various problems. Please [re
423
433
 
424
434
  This software is provided “as is” without any express or implied warranty. We are not obligated to provide any support for the application. This product is not affiliated with or endorsed by Netlify, Decap CMS or any other integrated services. All product names, logos, and brands are the property of their respective owners.
425
435
 
426
- [^1]: [Netlify/Decap CMS #2557](https://github.com/decaporg/decap-cms/issues/2557)
427
- [^2]: [Netlify/Decap CMS #3267](https://github.com/decaporg/decap-cms/issues/3267)
428
- [^3]: [Netlify/Decap CMS #1040](https://github.com/decaporg/decap-cms/issues/1040)
429
- [^4]: [Netlify/Decap CMS #3671](https://github.com/decaporg/decap-cms/issues/3671)
430
- [^5]: [Netlify/Decap CMS #1032](https://github.com/decaporg/decap-cms/issues/1032)
431
- [^6]: [Netlify/Decap CMS #3240](https://github.com/decaporg/decap-cms/issues/3240)
432
- [^7]: [Netlify/Decap CMS #4386](https://github.com/decaporg/decap-cms/issues/4386)
433
- [^8]: [Netlify/Decap CMS #2579](https://github.com/decaporg/decap-cms/issues/2579)
434
- [^9]: [Netlify/Decap CMS #3505](https://github.com/decaporg/decap-cms/issues/3505)
435
- [^10]: [Netlify/Decap CMS #341](https://github.com/decaporg/decap-cms/issues/341)
436
- [^11]: [Netlify/Decap CMS #1382](https://github.com/decaporg/decap-cms/issues/1382), [#2370](https://github.com/decaporg/decap-cms/issues/2370), [#5596](https://github.com/decaporg/decap-cms/issues/5596), [#5752](https://github.com/decaporg/decap-cms/issues/5752), [#6325](https://github.com/decaporg/decap-cms/issues/6325), [#6994](https://github.com/decaporg/decap-cms/issues/6994) and more. We’ll be updating this list after reviewing their issue list.
437
- [^12]: [Netlify/Decap CMS #1975](https://github.com/decaporg/decap-cms/issues/1975)
438
- [^13]: [Netlify/Decap CMS #5112](https://github.com/decaporg/decap-cms/issues/5112), [#5653](https://github.com/decaporg/decap-cms/issues/5653)
439
- [^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)
440
- [^15]: [Netlify/Decap CMS #6932](https://github.com/decaporg/decap-cms/issues/6932)
441
- [^16]: [Netlify/Decap CMS #2103](https://github.com/decaporg/decap-cms/issues/2103)
442
- [^17]: [Netlify/Decap CMS #1333](https://github.com/decaporg/decap-cms/issues/1333), [#7077](https://github.com/decaporg/decap-cms/issues/7077)
443
- [^18]: [Netlify/Decap CMS #441](https://github.com/decaporg/decap-cms/issues/441)
444
- [^19]: [Netlify/Decap CMS #5910](https://github.com/decaporg/decap-cms/issues/5910)
445
- [^20]: [Netlify/Decap CMS #4563](https://github.com/decaporg/decap-cms/issues/4563)
446
- [^21]: [Netlify/Decap CMS #4781](https://github.com/decaporg/decap-cms/issues/4781)
447
- [^22]: [Netlify/Decap CMS #6642](https://github.com/decaporg/decap-cms/issues/6642)
448
- [^23]: [Netlify/Decap CMS #2](https://github.com/decaporg/decap-cms/issues/2)
449
- [^24]: [Netlify/Decap CMS #6831](https://github.com/decaporg/decap-cms/issues/6831)
450
- [^25]: [Netlify/Decap CMS #526](https://github.com/decaporg/decap-cms/issues/526), [#6987](https://github.com/decaporg/decap-cms/issues/6987)
451
- [^26]: [Netlify/Decap CMS #3285](https://github.com/decaporg/decap-cms/issues/3285)
452
- [^27]: [Netlify/Decap CMS #3285](https://github.com/decaporg/decap-cms/issues/5617)
453
- [^28]: [Netlify/Decap CMS #6836](https://github.com/decaporg/decap-cms/pull/6836)
454
- [^29]: [Netlify/Decap CMS #4783](https://github.com/decaporg/decap-cms/pull/4783)
455
- [^30]: [Netlify/Decap CMS #565](https://github.com/decaporg/decap-cms/pull/565)
456
- [^31]: [Netlify/Decap CMS #1045](https://github.com/decaporg/decap-cms/pull/1045)
436
+ [^1]: Netlify/Decap CMS [#2557](https://github.com/decaporg/decap-cms/issues/2557)
437
+ [^2]: Netlify/Decap CMS [#3267](https://github.com/decaporg/decap-cms/issues/3267)
438
+ [^3]: Netlify/Decap CMS [#1040](https://github.com/decaporg/decap-cms/issues/1040)
439
+ [^4]: Netlify/Decap CMS [#3671](https://github.com/decaporg/decap-cms/issues/3671)
440
+ [^5]: Netlify/Decap CMS [#1032](https://github.com/decaporg/decap-cms/issues/1032)
441
+ [^6]: Netlify/Decap CMS [#3240](https://github.com/decaporg/decap-cms/issues/3240)
442
+ [^7]: Netlify/Decap CMS [#4386](https://github.com/decaporg/decap-cms/issues/4386), [#6978](https://github.com/decaporg/decap-cms/issues/6978)
443
+ [^8]: Netlify/Decap CMS [#2579](https://github.com/decaporg/decap-cms/issues/2579)
444
+ [^9]: Netlify/Decap CMS [#3505](https://github.com/decaporg/decap-cms/issues/3505)
445
+ [^10]: Netlify/Decap CMS [#341](https://github.com/decaporg/decap-cms/issues/341), [#1167](https://github.com/decaporg/decap-cms/issues/1167)
446
+ [^11]: Netlify/Decap CMS [#1382](https://github.com/decaporg/decap-cms/issues/1382), [#1424](https://github.com/decaporg/decap-cms/issues/1424), [#2370](https://github.com/decaporg/decap-cms/issues/2370), [#5596](https://github.com/decaporg/decap-cms/issues/5596), [#5752](https://github.com/decaporg/decap-cms/issues/5752), [#6994](https://github.com/decaporg/decap-cms/issues/6994) and more. We’ll be updating this list after reviewing their issue list.
447
+ [^12]: Netlify/Decap CMS [#1975](https://github.com/decaporg/decap-cms/issues/1975)
448
+ [^13]: Netlify/Decap CMS [#5112](https://github.com/decaporg/decap-cms/issues/5112), [#5653](https://github.com/decaporg/decap-cms/issues/5653)
449
+ [^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)
450
+ [^15]: Netlify/Decap CMS [#6932](https://github.com/decaporg/decap-cms/issues/6932)
451
+ [^16]: Netlify/Decap CMS [#2103](https://github.com/decaporg/decap-cms/issues/2103)
452
+ [^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333), [#7077](https://github.com/decaporg/decap-cms/issues/7077)
453
+ [^18]: Netlify/Decap CMS [#441](https://github.com/decaporg/decap-cms/issues/441)
454
+ [^19]: Netlify/Decap CMS [#5910](https://github.com/decaporg/decap-cms/issues/5910)
455
+ [^20]: Netlify/Decap CMS [#4563](https://github.com/decaporg/decap-cms/issues/4563)
456
+ [^21]: Netlify/Decap CMS [#4781](https://github.com/decaporg/decap-cms/issues/4781)
457
+ [^22]: Netlify/Decap CMS [#6642](https://github.com/decaporg/decap-cms/issues/6642)
458
+ [^23]: Netlify/Decap CMS [#2](https://github.com/decaporg/decap-cms/issues/2)
459
+ [^24]: Netlify/Decap CMS [#6831](https://github.com/decaporg/decap-cms/issues/6831)
460
+ [^25]: Netlify/Decap CMS [#526](https://github.com/decaporg/decap-cms/issues/526), [#6987](https://github.com/decaporg/decap-cms/issues/6987)
461
+ [^26]: Netlify/Decap CMS [#3285](https://github.com/decaporg/decap-cms/issues/3285), [#6731](https://github.com/decaporg/decap-cms/issues/6731)
462
+ [^27]: Netlify/Decap CMS [#3285](https://github.com/decaporg/decap-cms/issues/5617)
463
+ [^28]: Netlify/Decap CMS [#6836](https://github.com/decaporg/decap-cms/pull/6836)
464
+ [^29]: Netlify/Decap CMS [#4783](https://github.com/decaporg/decap-cms/issues/4783)
465
+ [^30]: Netlify/Decap CMS [#565](https://github.com/decaporg/decap-cms/issues/565)
466
+ [^31]: Netlify/Decap CMS [#1045](https://github.com/decaporg/decap-cms/issues/1045), [#3353](https://github.com/decaporg/decap-cms/issues/3353)
467
+ [^32]: Netlify/Decap CMS [#302](https://github.com/decaporg/decap-cms/issues/302), [#5549](https://github.com/decaporg/decap-cms/issues/5549)
468
+ [^33]: Netlify/Decap CMS [#6513](https://github.com/decaporg/decap-cms/issues/6513)
469
+ [^34]: Netlify/Decap CMS [#2138](https://github.com/decaporg/decap-cms/issues/2138)
470
+ [^35]: Netlify/Decap CMS [#7086](https://github.com/decaporg/decap-cms/issues/7086)
471
+ [^36]: Netlify/Decap CMS [#6325](https://github.com/decaporg/decap-cms/issues/6325)