@sveltia/cms 0.11.0 → 0.12.1
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 +63 -46
- package/dist/sveltia-cms.js +115 -115
- package/package.json +8 -8
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
|
|
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
|
-
|
|
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,22 @@ 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.
|
|
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
|
|
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].
|
|
55
|
+
- Never miss out on the latest features and bug fixes by being notified when an update to the CMS is available[^31].
|
|
54
56
|
- You can delete multiple entries and assets at once.
|
|
55
57
|
- Some keyboard shortcuts are available for faster editing. More to come!
|
|
56
58
|
- Create a new entry: `Ctrl+E` (Windows/Linux) / `Command+E` (macOS)
|
|
@@ -66,18 +68,22 @@ Here are some highlights mainly compared to Netlify/Decap CMS:
|
|
|
66
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.
|
|
67
69
|
- We’ll continue to test and improve the application to meet [WCAG 2.2](https://w3c.github.io/wcag/guidelines/22/).
|
|
68
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
|
+
|
|
69
77
|
### Better i18n support
|
|
70
78
|
|
|
71
79
|
- It’s now easier to switch between locales while editing with just a click on a button instead of a dropdown list.
|
|
72
80
|
- Fields in non-default locales are validated as expected[^13].
|
|
73
81
|
- [Integrates DeepL](#use-deepl-to-translate-entry-fields) to allow translation of text fields from another locale with one click.
|
|
74
82
|
- You can [disable non-default locale content](#disable-non-default-locale-content)[^15].
|
|
75
|
-
- 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.
|
|
76
|
-
|
|
77
|
-
- `use_b32_encoding`: Whether to encode the value with Base32. Default: `false`.
|
|
78
|
-
- `read_only`: Whether to make the field read-only. Default: `true`.
|
|
79
|
-
- 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].
|
|
80
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].
|
|
81
87
|
|
|
82
88
|
### Better collections
|
|
83
89
|
|
|
@@ -89,17 +95,22 @@ Here are some highlights mainly compared to Netlify/Decap CMS:
|
|
|
89
95
|
|
|
90
96
|
### Better fields/widgets
|
|
91
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.
|
|
92
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].
|
|
93
101
|
- Relation field options are displayed with no additional API requests[^14]. The `options_length` property is therefore ignored.
|
|
94
|
-
-
|
|
95
|
-
- Provides a reimagined all-in-one asset selection dialog for
|
|
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.
|
|
96
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].
|
|
97
105
|
- New assets can be uploaded by dragging & dropping them into the dialog[^20].
|
|
98
106
|
- A file/image URL can also be entered in the dialog.
|
|
99
107
|
- Integration with Pexels, Pixabay and Unsplash makes it easy to select and insert free stock photos[^8].
|
|
100
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].
|
|
101
|
-
- Optional
|
|
102
|
-
-
|
|
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`.
|
|
103
114
|
|
|
104
115
|
### Better asset management
|
|
105
116
|
|
|
@@ -115,7 +126,7 @@ While it’s not our goal to recreate all the features found in Netlify/Decap CM
|
|
|
115
126
|
|
|
116
127
|
| Feature | Status in Sveltia CMS |
|
|
117
128
|
| --- | --- |
|
|
118
|
-
| Installation | Installing with npm is not supported yet. |
|
|
129
|
+
| Installation | Installing with `npm` is not supported yet. |
|
|
119
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. |
|
|
120
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. |
|
|
121
132
|
| Local Git Repository | Supported using a different approach. [See below](#work-with-a-local-git-repository) for details. |
|
|
@@ -422,33 +433,39 @@ Sveltia CMS is still in early beta, so we do expect various problems. Please [re
|
|
|
422
433
|
|
|
423
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.
|
|
424
435
|
|
|
425
|
-
[^1]:
|
|
426
|
-
[^2]:
|
|
427
|
-
[^3]:
|
|
428
|
-
[^4]:
|
|
429
|
-
[^5]:
|
|
430
|
-
[^6]:
|
|
431
|
-
[^7]:
|
|
432
|
-
[^8]:
|
|
433
|
-
[^9]:
|
|
434
|
-
[^10]:
|
|
435
|
-
[^11]:
|
|
436
|
-
[^12]:
|
|
437
|
-
[^13]:
|
|
438
|
-
[^14]:
|
|
439
|
-
[^15]:
|
|
440
|
-
[^16]:
|
|
441
|
-
[^17]:
|
|
442
|
-
[^18]:
|
|
443
|
-
[^19]:
|
|
444
|
-
[^20]:
|
|
445
|
-
[^21]:
|
|
446
|
-
[^22]:
|
|
447
|
-
[^23]:
|
|
448
|
-
[^24]:
|
|
449
|
-
[^25]:
|
|
450
|
-
[^26]:
|
|
451
|
-
[^27]:
|
|
452
|
-
[^28]:
|
|
453
|
-
[^29]:
|
|
454
|
-
[^30]:
|
|
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)
|