@sveltia/cms 0.68.0 → 0.70.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
@@ -4,15 +4,17 @@ Sveltia CMS is a Git-based lightweight headless CMS under active development as
4
4
 
5
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.
6
6
 
7
- ![Screenshot: Git-based Headless CMS Made Right](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-1.webp?20250131)<br>
7
+ ![Screenshot: Git-based Headless CMS Made Right](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-1.webp?20250405)<br>
8
8
 
9
- ![Screenshot: Fast and Lightweight; Modern UX/UI with Dark Mode](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-2.webp?20250131)<br>
9
+ ![Screenshot: Fast and Lightweight; Modern UX/UI with Dark Mode](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-2.webp?20250405)<br>
10
10
 
11
- ![Screenshot: Stock Photo Integration with Pexels, Pixabay and Unsplash](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-3.webp?20250206)<br>
11
+ ![Screenshot: Stock Photo Integration with Pexels, Pixabay and Unsplash](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-3.webp?20250405)<br>
12
12
 
13
- ![Screenshot: Full Fledged Asset Library; First Class I18n Support with DeepL](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-4.webp?20250131)<br>
13
+ ![Screenshot: Full-Fledged Asset Library; First-Class I18n Support with DeepL](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-4.webp?20250405)<br>
14
14
 
15
- ![Screenshot: GitHub, GitLab; Streamlined Local Repository Workflow; Single Line Migration from Netlify/Decap CMS (depending on your current setup); Sveltia CMS](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-5.webp?20250131)<br>
15
+ ![Screenshot: Mobile Support; WebP, SVGO; Built-In Image Optimizer](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-5.webp?20250406)<br>
16
+
17
+ ![GitHub, GitLab; Streamlined Local & Remote Workflow; Single Line Migration from Netlify/Decap CMS (depending on your current setup); Sveltia CMS](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-6.webp?20250406)<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)
@@ -67,7 +71,7 @@ The free, open source alternative to Netlify/Decap CMS is now in public beta, tu
67
71
  - [Disabling non-default locale content](#disabling-non-default-locale-content)
68
72
  - [Using a random ID for an entry slug](#using-a-random-id-for-an-entry-slug)
69
73
  - [Configuring multiple media libraries](#configuring-multiple-media-libraries)
70
- - [Optimizing images for uploaded](#optimizing-images-for-uploaded)
74
+ - [Optimizing images for upload](#optimizing-images-for-upload)
71
75
  - [Editing data files with a top-level list](#editing-data-files-with-a-top-level-list)
72
76
  - [Changing the input type of a DateTime field](#changing-the-input-type-of-a-datetime-field)
73
77
  - [Controlling data output](#controlling-data-output)
@@ -121,7 +125,7 @@ While we fix reported bugs as quickly as possible, usually within 24 hours, our
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 380+ if including duplicates, have been effectively solved in Sveltia CMS
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
@@ -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
- - Comes with touch device support, such as larger buttons for easier tapping. While the UI is not yet optimized for small screens, it should work well with large tablets like iPad Pro or Pixel Tablet. Mobile support and other optimizations such as swipe navigation are planned after the 1.0 release.
153
+ - Comes with decent mobile support.[^18] Expect some glitches we are still 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.
@@ -156,7 +160,6 @@ We hope Netlify/Decap CMS users will be pleased and surprised by the numerous im
156
160
  ### Better performance
157
161
 
158
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).
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.
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/).
@@ -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] The persistent storage is not yet supported in Safari.
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 library integrations:
483
+ - Enhancements to media libraries:
481
484
  - Supports multiple media libraries with the [new `media_libraries` option](#configuring-multiple-media-libraries).[^195]
482
- - 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).
483
- - The default media library comes with a [built-in image optimizer](#optimizing-images-for-uploaded). 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]
485
+ - Integrates stock photo providers, including Pexels, Pixabay and Unsplash.
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,24 @@ 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
+ - Firefox ESR and its derivatives, including Tor Browser and Mullvad Browser, are not officially supported, although they may still work.
599
+
579
600
  ### Other notes
580
601
 
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
602
  - 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
603
  - 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
604
 
587
605
  ## Getting started
588
606
 
@@ -961,27 +979,36 @@ media_libraries:
961
979
  defaultOperations: '/resize/800x600/'
962
980
  ```
963
981
 
964
- ### Optimizing images for uploaded
982
+ Note: Cloudinary and Uploadcare are not yet supported in Sveltia CMS.
983
+
984
+ ### Optimizing images for upload
965
985
 
966
- Ever wanted to prevent end-users from adding huge images? The built-in optimizer in Sveltia CMS helps developers avoid such situations with a simple configuration like this:
986
+ 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
987
 
968
988
  ```yaml
969
989
  media_libraries:
970
990
  default:
971
991
  config:
972
992
  transformations:
973
- raster_image:
974
- format: webp # only `webp` is supported
993
+ raster_image: # original format
994
+ format: webp # new format, only `webp` is supported
975
995
  quality: 85 # default: 85
976
996
  width: 2048 # default: original size
977
997
  height: 2048 # default: original size
998
+ svg:
999
+ optimize: true
978
1000
  ```
979
1001
 
980
- - As [noted above](#configuring-multiple-media-libraries), the `media_libraries` option can be global at the root level of `config.yml`, or field-specific for File/Image widgets.
981
- - `raster_image` applies to any supported raster image format: `avif`, `bmp`, `gif`, `jpeg`, `png`, `webp`. If you like, you can use a specific format as key instead of `raster_image`.
1002
+ 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.
1003
+
1004
+ 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.
1005
+
1006
+ - 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.
1007
+ - `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`.
982
1008
  - 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.
983
- - File processing is a bit slow on Safari because [native WebP encoding](https://caniuse.com/mdn-api_htmlcanvaselement_toblob_type_parameter_webp) is not yet supported. A [third-party library](https://github.com/jamsinclair/jSquash) is used as a fallback.
984
- - AVIF conversion is not supported at this time because no browser has native encoding support and the library is very slow.
1009
+ - 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.
1010
+ - 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.
1011
+ - 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.
985
1012
  - We may add more transformation options in the future.
986
1013
 
987
1014
  ### Editing data files with a top-level list
@@ -1225,7 +1252,7 @@ See [Contributing to Sveltia CMS](https://github.com/sveltia/sveltia-cms/blob/ma
1225
1252
  ### After the 1.0 release
1226
1253
 
1227
1254
  - Implementing the [remaining Netlify/Decap CMS features](#current-limitations)
1228
- - Tackling even more Netlify/Decap CMS issues, including MDX support,[^122] manual entry sorting,[^125] mobile optimization,[^18] config editor[^10] and other [top-voted features](https://github.com/decaporg/decap-cms/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc)
1255
+ - 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)
1229
1256
  - 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]
1230
1257
  - More integration options: stock photos, stock videos, cloud storage providers, translation services, maps, analytics tools, etc.
1231
1258
  - AI integrations for image generation and content writing
@@ -1291,7 +1318,7 @@ This software is provided “as is” without any express or implied warranty. W
1291
1318
 
1292
1319
  [^17]: Netlify/Decap CMS [#1333](https://github.com/decaporg/decap-cms/issues/1333), [#4216](https://github.com/decaporg/decap-cms/issues/4216)
1293
1320
 
1294
- [^18]: Netlify/Decap CMS [#441](https://github.com/decaporg/decap-cms/issues/441)
1321
+ [^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)
1295
1322
 
1296
1323
  [^19]: Netlify/Decap CMS [#5910](https://github.com/decaporg/decap-cms/issues/5910)
1297
1324