@sveltia/cms 0.69.0 → 0.70.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 +49 -28
- package/dist/sveltia-cms.js +247 -186
- package/dist/sveltia-cms.js.map +1 -1
- package/dist/sveltia-cms.mjs +254 -193
- package/dist/sveltia-cms.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
Sveltia CMS is a Git-based lightweight headless CMS under active development as a modern, powerful, quick replacement for Netlify CMS and Decap CMS. In some simple cases, migration is as easy as a single line of code change, although we are still working on improving compatibility.
|
|
4
4
|
|
|
5
|
-
The free, open source alternative to Netlify/Decap CMS is now in public beta, turbocharged with great UX, performance, i18n support and so many more enhancements.
|
|
5
|
+
The free, open source alternative/successor to Netlify/Decap CMS is now in public beta, turbocharged with great UX, performance, i18n support and so many more enhancements.
|
|
6
6
|
|
|
7
|
-
<br>
|
|
8
8
|
|
|
9
|
-
<br>
|
|
10
10
|
|
|
11
|
-
<br>
|
|
12
12
|
|
|
13
|
-
<br>
|
|
14
14
|
|
|
15
|
-
<br>
|
|
16
|
+
|
|
17
|
+
<br>
|
|
16
18
|
|
|
17
19
|
## Table of contents
|
|
18
20
|
|
|
@@ -43,6 +45,8 @@ The free, open source alternative to Netlify/Decap CMS is now in public beta, tu
|
|
|
43
45
|
- [Features not to be implemented](#features-not-to-be-implemented)
|
|
44
46
|
- [Current limitations](#current-limitations)
|
|
45
47
|
- [Compatibility with Static CMS](#compatibility-with-static-cms)
|
|
48
|
+
- [Framework support](#framework-support)
|
|
49
|
+
- [Browser support](#browser-support)
|
|
46
50
|
- [Other notes](#other-notes)
|
|
47
51
|
- [Getting started](#getting-started)
|
|
48
52
|
- [Installation \& setup](#installation--setup)
|
|
@@ -114,14 +118,14 @@ While Sveltia CMS is specifically designed to replace legacy Netlify CMS instanc
|
|
|
114
118
|
|
|
115
119
|
## Development status
|
|
116
120
|
|
|
117
|
-
Sveltia CMS is currently in **beta** and version 1.0 (GA) is expected to ship in
|
|
121
|
+
Sveltia CMS is currently in **beta** and version 1.0 (GA) is expected to ship in Q3 2025. Check our [release notes](https://github.com/sveltia/sveltia-cms/releases) for updates. See also our [roadmap](#roadmap).
|
|
118
122
|
|
|
119
123
|
While we fix reported bugs as quickly as possible, usually within 24 hours, our overall progress may be slower than you think. The thing is, it’s not just a personal project of [@kyoshino](https://github.com/kyoshino), but also a complicated system that involves various kinds of activities that require considerable effort:
|
|
120
124
|
|
|
121
125
|
- Ensuring substantial [compatibility with Netlify/Decap CMS](#compatibility)
|
|
122
126
|
- Providing partial [compatibility with Static CMS](#compatibility-with-static-cms)
|
|
123
127
|
- Tackling as many [Netlify/Decap CMS issues](https://github.com/decaporg/decap-cms/issues) as possible
|
|
124
|
-
- So far, 190+ issues, or
|
|
128
|
+
- So far, 190+ issues, or 390+ if including duplicates, have been effectively solved in Sveltia CMS
|
|
125
129
|
- Target:
|
|
126
130
|
- 200 issues, or 400 if including duplicates, by GA (almost there)
|
|
127
131
|
- 350 issues, or 600 if including duplicates, in the future
|
|
@@ -133,11 +137,11 @@ While we fix reported bugs as quickly as possible, usually within 24 hours, our
|
|
|
133
137
|
- Responding to requests from the maintainer’s clients
|
|
134
138
|
- Making the code clean and maintainable
|
|
135
139
|
|
|
136
|
-
<br>
|
|
137
141
|
|
|
138
142
|
## Differentiators
|
|
139
143
|
|
|
140
|
-
|
|
144
|
+
Netlify/Decap CMS users will definitely be pleased and surprised by the numerous improvements we have made, from the small to the large. Here’s what makes Sveltia CMS different. Look how serious we are!
|
|
141
145
|
|
|
142
146
|
### Better UX
|
|
143
147
|
|
|
@@ -146,7 +150,7 @@ We hope Netlify/Decap CMS users will be pleased and surprised by the numerous im
|
|
|
146
150
|
- Frequent releases deliver new features and enhancements to users faster. Most of our minor [releases](https://github.com/sveltia/sveltia-cms/releases) address one or more Netlify/Decap CMS issues, giving you even more reasons to switch from the legacy predecessor.
|
|
147
151
|
- Offers a modern, intuitive user interface that utilizes the full viewport,[^178] inspired in part by the Netlify CMS v3 prototype.[^1]
|
|
148
152
|
- Provides immersive dark mode.[^2] The UI theme follows the user’s system preference by default and can be changed in the application settings.
|
|
149
|
-
-
|
|
153
|
+
- Users can manage content on-the-go with decent mobile support.[^18] There are still rough edges though; we are working to fully optimize the app for small screens and touch devices.
|
|
150
154
|
- Made with [Svelte](https://svelte.dev/), not React, means we can spend more time on UX rather than tedious state management. It also allows us to avoid common fatal React application crashes.[^113][^129] Best of all, Svelte offers great performance.
|
|
151
155
|
- We build [our own UI component library](https://github.com/sveltia/sveltia-ui), including custom dialogs,[^196] to ensure optimal usability without compromising accessibility.
|
|
152
156
|
- The in-app Help menu provides all links to useful resources, including release notes, feedback and support.
|
|
@@ -155,15 +159,14 @@ We hope Netlify/Decap CMS users will be pleased and surprised by the numerous im
|
|
|
155
159
|
|
|
156
160
|
### Better performance
|
|
157
161
|
|
|
158
|
-
- Built completely from scratch with [Svelte](https://svelte.dev/) instead of forking React-based Netlify/Decap CMS. The app starts fast and stays fast with [no virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead).
|
|
159
|
-
- The CMS is compiled and distributed as vanilla JavaScript. You can use it with any framework or static site generator (SSG) that can load static files during the build process, including but not limited to Astro, Eleventy, Hugo, Jekyll, Next.js, SvelteKit and VitePress.
|
|
162
|
+
- Built completely from scratch with [Svelte](https://svelte.dev/) instead of forking React-based Netlify/Decap CMS. The app starts fast and stays fast with [no virtual DOM overhead](https://svelte.dev/blog/virtual-dom-is-pure-overhead). Note that Sveltia CMS is framework-agnostic; it’s served as a vanilla JavaScript bundle.
|
|
160
163
|
- Small footprint: The bundle size is less than 500 KB when minified and [brotlied](https://en.wikipedia.org/wiki/Brotli), which is much lighter than Netlify CMS (1.5 MB), Decap CMS (1.5 MB) and Static CMS (2.6 MB).[^57][^64] This number is remarkable because even though some Netlify/Decap CMS features are [omitted](#features-not-to-be-implemented) or [unimplemented](#current-limitations) in Sveltia CMS, we have added a lot of new features. That’s the power of [Svelte 5](https://svelte.dev/blog/svelte-5-is-alive) + [Vite](https://vite.dev/).
|
|
161
164
|
- 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] (the useless `search` configuration option is therefore ignored). It also avoids the slowness and potential API rate limit violations caused by hundreds of requests with Relation widgets.[^14]
|
|
162
165
|
- 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/).
|
|
163
166
|
- Our [local repository workflow](#working-with-a-local-git-repository) utilizes the modern [File System Access API](https://developer.chrome.com/docs/capabilities/web-apis/file-system-access) to read and write files natively through the web browser, rather than using a slow, ad hoc REST API through a proxy server.
|
|
164
167
|
- Sorting, filtering and grouping of entries is done instantly without reloading the entire content.
|
|
165
168
|
- Uses caching, lazy loading and infinite scrolling techniques. A list of repository files is stored locally for faster startup and bandwidth savings.
|
|
166
|
-
- Thumbnails of assets, including videos and PDF files, are generated and cached for faster rendering of the Asset Library and other parts of the CMS.[^39]
|
|
169
|
+
- Thumbnails of assets, including videos and PDF files, are generated and cached for faster rendering of the Asset Library and other parts of the CMS.[^39][^38]
|
|
167
170
|
- No typing lag on input widgets, especially within nested lists and objects.[^77]
|
|
168
171
|
|
|
169
172
|
### Better productivity
|
|
@@ -228,7 +231,7 @@ We hope Netlify/Decap CMS users will be pleased and surprised by the numerous im
|
|
|
228
231
|
- Users won’t get a 404 Not Found error when you sign in to the GitLab backend.[^115]
|
|
229
232
|
- Features the all-new local backend that boosts DX. See the [productivity section](#better-productivity) above.
|
|
230
233
|
- Developers can select the local and remote backends while working on a local server.
|
|
231
|
-
- The Test backend saves entries and assets in the browser’s [origin private file system](https://web.dev/articles/origin-private-file-system) (OPFS) so that changes are not discarded when the browser tab is closed or reloaded.[^194]
|
|
234
|
+
- The Test backend saves entries and assets in the browser’s [origin private file system](https://web.dev/articles/origin-private-file-system) (OPFS) so that changes are not discarded when the browser tab is closed or reloaded.[^194] Persistent storage is not yet supported in Safari.
|
|
232
235
|
|
|
233
236
|
### Better i18n support
|
|
234
237
|
|
|
@@ -477,10 +480,12 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
|
|
|
477
480
|
- Upload multiple assets at once, including files in nested folders, by browsing or dragging and dropping them into the library.[^5]
|
|
478
481
|
- Sort or filter assets by name or file type.
|
|
479
482
|
- View asset details, including size, dimensions, commit author/date and a list of entries that use the selected asset.
|
|
480
|
-
- Enhancements to media
|
|
481
|
-
- The default media library comes with a [built-in image optimizer](#optimizing-images-for-upload). With a few lines of configuration, images uploaded by users are automatically converted to WebP format for reduced size,[^199] and it’s also possible to specify a maximum width and/or height.[^200] SVG images can also be optimized.
|
|
483
|
+
- Enhancements to media libraries:
|
|
482
484
|
- Supports multiple media libraries with the [new `media_libraries` option](#configuring-multiple-media-libraries).[^195]
|
|
483
|
-
-
|
|
485
|
+
- Integrates stock photo providers, including Pexels, Pixabay and Unsplash.[^8]
|
|
486
|
+
- Default media library
|
|
487
|
+
- It comes with a [built-in image optimizer](#optimizing-images-for-upload). With a few lines of configuration, images selected by users for upload are automatically converted to WebP format for reduced size,[^199] and it’s also possible to specify a maximum width and/or height.[^200] SVG images can also be optimized.
|
|
488
|
+
- The `max_file_size` option for the File/Image widget can be defined within the global `media_library` option, using `default` as the library name. It applies to all File/Image entry fields, as well as direct uploads to the Asset Library. The option can also be part of the [new `media_libraries` option](#configuring-multiple-media-libraries).
|
|
484
489
|
- The global `media_folder` can be an empty string (or `.` or `/`) if you want to store assets in the root folder.
|
|
485
490
|
- 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]
|
|
486
491
|
- Assets stored in an entry-relative media folder are displayed in the Asset Library.[^142]
|
|
@@ -555,6 +560,8 @@ Due to the complexity, the following features will be added after the 1.0 releas
|
|
|
555
560
|
- [Open Authoring](https://decapcms.org/docs/open-authoring/)
|
|
556
561
|
- [Nested Collections](https://decapcms.org/docs/collection-nested/)
|
|
557
562
|
|
|
563
|
+
Found a compatibility issue or other missing feature? [Let us know](https://github.com/sveltia/sveltia-cms/issues/new?labels=bug). Bear in mind that undocumented behaviour can easily be overlooked.
|
|
564
|
+
|
|
558
565
|
### Compatibility with Static CMS
|
|
559
566
|
|
|
560
567
|
Sveltia CMS provides partial compatibility with [Static CMS](https://github.com/StaticJsCMS/static-cms), a now-defunct fork of Netlify CMS. This README will be updated as our development progresses.
|
|
@@ -576,13 +583,25 @@ Sveltia CMS provides partial compatibility with [Static CMS](https://github.com/
|
|
|
576
583
|
- Customization
|
|
577
584
|
- `CMS.registerIcon()` will not be supported, as Sveltia CMS includes the Material Symbols font for [custom collection icons](#using-a-custom-icon-for-a-collection) that doesn’t require manual registration.
|
|
578
585
|
|
|
586
|
+
### Framework support
|
|
587
|
+
|
|
588
|
+
While Sveltia CMS is built with Svelte, the application is **framework-agnostic** because it’s distributed as compiled vanilla JavaScript and is a pure headless CMS that only manages content in Git repositories.
|
|
589
|
+
|
|
590
|
+
You can use the CMS with any framework or static site generator (SSG) that can load static files during the build process, including but not limited to Astro, Eleventy, Hugo, Jekyll, Next.js, SvelteKit and VitePress.
|
|
591
|
+
|
|
592
|
+
### Browser support
|
|
593
|
+
|
|
594
|
+
Sveitia CMS works with all modern browsers, but there are a few limitations because it utilizes some new web technologies:
|
|
595
|
+
|
|
596
|
+
- The [local repository workflow](#working-with-a-local-git-repository) requires a Chromium-based browser, including Chrome, Edge and Brave.
|
|
597
|
+
- Safari: The Test backend doesn’t save changes locally; [image optimization](#optimizing-images-for-upload) is slower than in other browsers.
|
|
598
|
+
- Test backend doesn’t work in some browsers when using a private window.
|
|
599
|
+
- Firefox ESR and its derivatives, including Tor Browser and Mullvad Browser, are not officially supported, although they may still work.
|
|
600
|
+
|
|
579
601
|
### Other notes
|
|
580
602
|
|
|
581
|
-
- Make sure you’re using the latest stable version of a modern web browser. Firefox ESR and its derivatives, including Tor Browser and Mullvad Browser, are not officially supported, although they may still work. The [local repository workflow](#working-with-a-local-git-repository) requires Chrome, Edge or another Chromium-based browser.
|
|
582
|
-
- The persistent storage for the Test backend is not yet supported in Safari.
|
|
583
603
|
- Sveltia CMS requires a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts), meaning it only works with HTTPS, `localhost` or `127.0.0.1` URLs. If you’re running a remote server yourself and the content is served over HTTP, get a TLS certificate from [Let’s Encrypt](https://letsencrypt.org/).
|
|
584
604
|
- The GitLab backend requires GitLab 16.3 or later.
|
|
585
|
-
- Found a compatibility issue or other missing feature? [Let us know](https://github.com/sveltia/sveltia-cms/issues/new?labels=bug). Bear in mind that undocumented behaviour can easily be overlooked.
|
|
586
605
|
|
|
587
606
|
## Getting started
|
|
588
607
|
|
|
@@ -961,9 +980,11 @@ media_libraries:
|
|
|
961
980
|
defaultOperations: '/resize/800x600/'
|
|
962
981
|
```
|
|
963
982
|
|
|
983
|
+
Note: Cloudinary and Uploadcare are not yet supported in Sveltia CMS.
|
|
984
|
+
|
|
964
985
|
### Optimizing images for upload
|
|
965
986
|
|
|
966
|
-
Ever wanted to prevent end-users from adding huge images to your repository? The built-in optimizer in Sveltia CMS makes developers’ lives easier with a simple configuration like this:
|
|
987
|
+
Ever wanted to prevent end-users from adding huge images to your repository? The built-in image optimizer in Sveltia CMS makes developers’ lives easier with a simple configuration like this:
|
|
967
988
|
|
|
968
989
|
```yaml
|
|
969
990
|
media_libraries:
|
|
@@ -979,15 +1000,15 @@ media_libraries:
|
|
|
979
1000
|
optimize: true
|
|
980
1001
|
```
|
|
981
1002
|
|
|
982
|
-
Then, whenever a user selects images to upload, those images are automatically optimized, all within the browser. Raster images such as
|
|
1003
|
+
Then, whenever a user selects images to upload, those images are automatically optimized, all within the browser. Raster images such as JPEG and PNG are converted to WebP format and resized if necessary. SVG images are minified using the [SVGO](https://github.com/svg/svgo) library.
|
|
983
1004
|
|
|
984
|
-
In case you’re not aware, [WebP](https://developers.google.com/speed/webp) offers better compression than
|
|
1005
|
+
In case you’re not aware, [WebP](https://developers.google.com/speed/webp) offers better compression than conventional formats and is now [widely supported](https://caniuse.com/webp) across major browsers. So there is no reason not to use WebP on the web.
|
|
985
1006
|
|
|
986
1007
|
- As [noted above](#configuring-multiple-media-libraries), the `media_libraries` option can be global at the root level of `config.yml`, which applies to both entry fields and the Asset Library, or field-specific for the File/Image widgets.
|
|
987
1008
|
- `raster_image` applies to any supported raster image format: `avif`, `bmp`, `gif`, `jpeg`, `png` and `webp`. If you like, you can use a specific format as key instead of `raster_image`.
|
|
988
1009
|
- The `width` and `height` options are the maximum width and height, respectively. If an image is larger than the specified dimension, it will be scaled down. Smaller images will not be resized.
|
|
989
|
-
- File processing is a bit slow on Safari because [native WebP encoding](https://caniuse.com/mdn-api_htmlcanvaselement_toblob_type_parameter_webp) is not
|
|
990
|
-
- AVIF conversion is not supported
|
|
1010
|
+
- File processing is a bit slow on Safari because [native WebP encoding](https://caniuse.com/mdn-api_htmlcanvaselement_toblob_type_parameter_webp) is [not supported](https://bugs.webkit.org/show_bug.cgi?id=183257) and the [jSquash](https://github.com/jamsinclair/jSquash) library is used instead.
|
|
1011
|
+
- AVIF conversion is not supported because no browser has native AVIF encoding support ([Chromium won’t fix it](https://issues.chromium.org/issues/40848792)) and the third-party library (and AVIF encoding in general) is very slow.
|
|
991
1012
|
- This feature is not intended for creating image variants in different formats and sizes. It should be done with a framework during the build process.
|
|
992
1013
|
- We may add more transformation options in the future.
|
|
993
1014
|
|
|
@@ -1232,7 +1253,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
|
|
|
1232
1253
|
### After the 1.0 release
|
|
1233
1254
|
|
|
1234
1255
|
- Implementing the [remaining Netlify/Decap CMS features](#current-limitations)
|
|
1235
|
-
- Tackling even more Netlify/Decap CMS issues, including MDX support,[^122] manual entry sorting,[^125]
|
|
1256
|
+
- Tackling even more Netlify/Decap CMS issues, including MDX support,[^122] manual entry sorting,[^125] config editor[^10] and other [top-voted features](https://github.com/decaporg/decap-cms/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc)
|
|
1236
1257
|
- Exploring features that require server-side implementation, including user management (Netlify Identity alternative), roles,[^23] commits without a GitHub or GitLab account (Git Gateway alternative), post locking (like [WordPress](https://codex.wordpress.org/Post_Locking))[^166] and scheduled posts[^167]
|
|
1237
1258
|
- More integration options: stock photos, stock videos, cloud storage providers, translation services, maps, analytics tools, etc.
|
|
1238
1259
|
- AI integrations for image generation and content writing
|
|
@@ -1298,7 +1319,7 @@ This software is provided “as is” without any express or implied warranty. W
|
|
|
1298
1319
|
|
|
1299
1320
|
[^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333), [#4216](https://github.com/decaporg/decap-cms/issues/4216)
|
|
1300
1321
|
|
|
1301
|
-
[^18]: Netlify/Decap CMS [#441](https://github.com/decaporg/decap-cms/issues/441)
|
|
1322
|
+
[^18]: Netlify/Decap CMS [#441](https://github.com/decaporg/decap-cms/issues/441), [#1277](https://github.com/decaporg/decap-cms/issues/1277), [#1339](https://github.com/decaporg/decap-cms/issues/1339), [#2500](https://github.com/decaporg/decap-cms/issues/2500), [#2833](https://github.com/decaporg/decap-cms/issues/2833), [#2984](https://github.com/decaporg/decap-cms/issues/2984), [#3852](https://github.com/decaporg/decap-cms/issues/3852), [#7241](https://github.com/decaporg/decap-cms/issues/7241)
|
|
1302
1323
|
|
|
1303
1324
|
[^19]: Netlify/Decap CMS [#5910](https://github.com/decaporg/decap-cms/issues/5910)
|
|
1304
1325
|
|