@sveltia/cms 0.125.0 → 0.127.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
@@ -1,10 +1,10 @@
1
1
  # Sveltia CMS: Netlify/Decap CMS successor
2
2
 
3
- Sveltia CMS is a Git-based lightweight headless CMS under active development as a modern, powerful, direct replacement for Netlify CMS (now Decap CMS). We have picked up where they left off and have already solved over 275 issues reported in the predecessor’s repository, ranging from critical bugs to top feature requests.
3
+ Sveltia CMS is a Git-based lightweight headless CMS under active development as a modern, powerful, direct replacement for Netlify CMS (now Decap CMS). We have picked up where they left off and have already solved over 280 issues reported in the predecessor’s repository, ranging from critical bugs to top feature requests.
4
4
 
5
5
  Built from the ground up, Sveltia CMS offers excellent UX, DX, performance, security and internationalization (i18n) support. Although some features are still missing, our numerous enhancements across the board ensure smooth daily workflows for content editors and developers alike.
6
6
 
7
- This free, open source successor to Netlify/Decap CMS is currently in public beta, with version 1.0 expected in early 2026.
7
+ This free, open source successor to Netlify/Decap CMS is currently in public beta, with version 1.0 expected in early 2026. Despite being in beta, it’s already [used in production](#showcase) by hundreds of individuals and organizations worldwide.
8
8
 
9
9
  ![Git-based headless CMS made right](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/screenshot-1.webp?20250405)<br>
10
10
 
@@ -95,6 +95,7 @@ This free, open source successor to Netlify/Decap CMS is currently in public bet
95
95
  - [Disabling automatic deployments](#disabling-automatic-deployments)
96
96
  - [Setting up Content Security Policy](#setting-up-content-security-policy)
97
97
  - [Showing the CMS version](#showing-the-cms-version)
98
+ - [Showcase](#showcase)
98
99
  - [Support \& Feedback](#support--feedback)
99
100
  - [Contributions](#contributions)
100
101
  - [Roadmap](#roadmap)
@@ -174,7 +175,7 @@ While we fix reported bugs as quickly as possible, usually within 24 hours, our
174
175
  - It works as a drop-in replacement for most use cases
175
176
  - Some missing features will be implemented before or shortly after GA
176
177
  - Tackling as many [Netlify/Decap CMS issues](https://github.com/decaporg/decap-cms/issues) as possible
177
- - So far, **275+ issues, or 600+ if including duplicates, have been effectively solved** in Sveltia CMS (Yes, you read it right)
178
+ - So far, **280+ issues, or 600+ if including duplicates, have been effectively solved** in Sveltia CMS (Yes, you read it right)
178
179
  - Target:
179
180
  - 300 issues, or 600 if including duplicates, by GA — Almost there! 🚀
180
181
  - 450 issues, or 900 if including duplicates, in the future 💪
@@ -191,7 +192,7 @@ While we fix reported bugs as quickly as possible, usually within 24 hours, our
191
192
  - Preparing top-notch [documentation](https://github.com/sveltia/sveltia-cms/issues/485)
192
193
  - Implementing our own enhancement ideas for every part of the product
193
194
 
194
- ![275 Netlify/Decap CMS issues solved in Sveltia CMS](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/headline-1.webp?20251204)<br>
195
+ ![280 Netlify/Decap CMS issues solved in Sveltia CMS](https://raw.githubusercontent.com/sveltia/sveltia-cms/main/docs/headline-1.webp?20251228)<br>
195
196
 
196
197
  ## Differentiators
197
198
 
@@ -363,11 +364,12 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
363
364
  - It’s possible to embed the locale code in an entry by using `widget: hidden` along with `default: '{{locale}}'`.[^101]
364
365
  - The `value_field` Relation field option can contain a locale prefix like `{{locale}}/{{slug}}`, which will be replaced with the current locale. It’s intended to support i18n in Astro. ([Discussion](https://github.com/sveltia/sveltia-cms/discussions/302))
365
366
  - The collection filters are applied correctly regardless of the i18n structure.[^291]
366
- - The `summary` collection options supports the `{{locale}}` template tag to show enabled entry locales in the entry list.
367
+ - The `summary` collection option supports the `{{locales}}` template tag to show enabled entry locales in the entry list.
367
368
  - User interface
368
369
  - 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.
369
370
  - Users can easily switch between locales while editing by clicking a button instead of a dropdown list when there are less than 5 locales.
370
371
  - Language labels appear in human-readable display names instead of ISO 639 language codes because it’s not easy for everyone to recognize `DE` as German, `NL` as Dutch, `ZH` as Chinese, and so on.
372
+ - It’s possible to set the editor pane locale via a URL query parameter, e.g. `?_locale=fr`.
371
373
  - Content editing
372
374
  - [Integrates translation services](#translating-entry-fields-with-one-click) to allow translation of text fields from another locale with one click.
373
375
  - The Content Editor supports [RTL scripts](https://en.wikipedia.org/wiki/Right-to-left_script) such as Arabic, Hebrew and Persian.[^146]
@@ -413,12 +415,16 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
413
415
  - Sveltia CMS supports [singletons](#using-singletons), a simple form of a file collection.[^233]
414
416
  - File collections support files without extensions.[^255] This is useful for [editing site deployment configuration files](#editing-site-deployment-configuration-files), such as `_headers` and `_redirects`.
415
417
  - Each file in a file collection has the `format` and `frontmatter_delimiter` options, which can be used to specify the file format, making it possible to have `yaml-frontmatter`, `toml-frontmatter` and `json-frontmatter` side by side.[^218]
418
+ - The new `raw` format allows you to edit raw files without front matter, such as plain text files, CSV files, JSON files and YAML files.[^316] When using this format, make sure to have only one field named `body` with the `widget` type set to `code`, `markdown`, `richtext` or `text`.
416
419
  - The `create` option for folder collections defaults to `true`, providing a better out-of-the-box experience.
417
420
  - The collection `label` defaults to the `name` value according to the [Decap CMS document](https://decapcms.org/docs/configuration-options/#collections), while Netlify/Decap CMS actually throws a configuration error if the `label` option is omitted.
418
421
  - Nested fields (dot notation) can be used in the `path` option for a folder collection, e.g. `{{fields.state.name}}/{{slug}}`.[^62]
419
422
  - Markdown is supported in the `description` collection option.[^79] Bold, italic, strikethrough, code and links are allowed.
420
423
  - The collection `folder` can be an empty string (or `.` or `/`) if you want to store entries in the root folder. This supports a typical VitePress setup.
421
424
  - Entry slugs
425
+ - The [global slug options](https://decapcms.org/docs/configuration-options/#slug-type) have the following new options:
426
+ - `trim`: Remove leading and trailing replacement characters, such as hyphens, from an entry slug. The default value is `true`. Set to `false` to keep them.
427
+ - `maxlength`: The maximum number of characters for an entry slug; avoid deployment errors with Netlify or other platforms.[^25] Default to `undefined`, meaning no limit.
422
428
  - It’s possible to [use a random UUID for an entry slug](#using-a-random-id-for-an-entry-slug).
423
429
  - Entry slugs are editable.[^184]
424
430
  - To allow users to explicitly edit the entry slug in an initial entry draft, add `{{fields._slug}}` to the `slug` collection option. This will display a special slug editor UI that looks like a standard string field, but the value will be used as the entry slug.
@@ -429,8 +435,6 @@ Sveltia CMS has been built with a multilingual architecture from the very beginn
429
435
  - If a collection only has the Markdown `body` field, an entry slug will be generated from a header in the `body`, if exists. This supports a typical VitePress setup.
430
436
  - Entry slug template tags support [transformations](https://decapcms.org/docs/summary-strings/) just like summary string template tags.[^29] For example, you can use `{{fields.date | date('YYYY-MM-DD')}}` to generate a slug like `2025-01-23` from a DateTime field.
431
437
  - Single quotes (apostrophes) in a slug will be replaced with `sanitize_replacement` (default: hyphen) rather than being removed.[^52]
432
- - The [global `slug` option](https://decapcms.org/docs/configuration-options/#slug-type) accepts the `trim` option to remove leading and trailing replacement characters, such as hyphens, from an entry slug. The default value is `true`. Set to `false` to keep them.
433
- - The maximum number of characters for an entry slug can be set with the new `slug_length` collection option to avoid deployment errors with Netlify or other platforms.[^25]
434
438
  - Setting the collection `path` doesn’t affect the entry slugs stored with the Relation widget.[^137]
435
439
  - Entry listing
436
440
  - The [default sort field and direction](#specifying-default-entry-sort-field-and-direction) can be specified.[^172]
@@ -684,6 +688,7 @@ Sveltia CMS supports all the [built-in widgets](https://decapcms.org/docs/widget
684
688
  - Inline components are supported.[^267]
685
689
  - Field validation works as expected.[^279]
686
690
  - No error is raised in the browser console saying `Sent invalid data to remark`[^280] or `onValidate is not a function`.[^281]
691
+ - A link with kramdown inline attributes (e.g. `{:.class}`) is parsed correctly.[^317]
687
692
  - Enhancements to [event hooks](https://decapcms.org/docs/registering-events/):
688
693
  - Missing `identifier_field` won’t cause an error when the `preSave` hook is triggered.[^306]
689
694
  <!-- - Content can be modified in the `prePublish` hook (once we support editorial workflow).[^307] -->
@@ -791,7 +796,7 @@ Sveltia CMS supports the GitHub, GitLab and Gitea/Forgejo [backends](#better-bac
791
796
 
792
797
  ### Browser support
793
798
 
794
- Sveitia CMS works with all modern browsers, but there are a few limitations because it utilizes some new web technologies:
799
+ Sveltia CMS works with all modern browsers, but there are a few limitations because it utilizes some new web technologies:
795
800
 
796
801
  - The [local repository workflow](#working-with-a-local-git-repository) requires a Chromium-based browser, including Chrome, Edge and Brave.
797
802
  - Safari: The Test backend doesn’t save changes locally; [image optimization](#optimizing-images-for-upload) is slower than in other browsers.
@@ -803,6 +808,7 @@ These options were added to Sveltia CMS 0.x but are now deprecated and will be r
803
808
 
804
809
  - The `automatic_deployments` backend option: Use the new [`skip_ci` option](#disabling-automatic-deployments) instead, which is more intuitive. `automatic_deployments: false` is equivalent to `skip_ci: true`, and `automatic_deployments: true` is equivalent to `skip_ci: false`.
805
810
  - The `save_all_locales` i18n option: Use the [`initial_locales` option](#disabling-non-default-locale-content) instead, which provides more flexibility. `save_all_locales: false` is equivalent to `initial_locales: all`.
811
+ - The `slug_length` collection option: Use the `maxlength` option in the [global slug options](/en/docs/collections/entries#global-slug-options) instead.
806
812
  - The `yaml_quote` collection option: `yaml_quote: true` is equivalent to `quote: double` in the [new YAML format options](#controlling-data-output).
807
813
  - The `read_only` UUID widget option: Use the `readonly` common field option instead, which defaults to `true` for the UUID widget.
808
814
 
@@ -820,7 +826,7 @@ Static CMS made [some breaking changes](https://staticjscms.netlify.app/docs/dec
820
826
  - The `logo_link` global option will not be supported. Use `display_url` or `site_url` instead.
821
827
  - The `yaml` global option will not be supported, as Sveltia CMS doesn’t expose the underlying `yaml` library options for forward compatibility reasons. However, we do have some [data output options](#controlling-data-output), including YAML indentation and quotes.
822
828
  - I18n support
823
- - The `enforce_required_non_default` i18n option will not be supported. Sveitia CMS enforces required fields in all locales by default. However, the `initial_locales` i18n option allows users to [disable non-default locales](#disabling-non-default-locale-content) if needed. Developers can also specify a subset of locales with the `required` field option, e.g. `required: [en]`.
829
+ - The `enforce_required_non_default` i18n option will not be supported. Sveltia CMS enforces required fields in all locales by default. However, the `initial_locales` i18n option allows users to [disable non-default locales](#disabling-non-default-locale-content) if needed. Developers can also specify a subset of locales with the `required` field option, e.g. `required: [en]`.
824
830
  - Widgets
825
831
  - The date/time format options for the DateTime widget are **not compatible** since Static CMS [switched to date-fns](https://staticjscms.netlify.app/docs/decap-migration-guide#dates) while Decap CMS and Sveltia CMS have replaced Moment.js with Day.js. Update your formats accordingly.
826
832
  - The [KeyValue widget](#new-widgets) is implemented in Sveltia CMS with the same options.
@@ -848,6 +854,8 @@ Or try one of the starter kits for popular frameworks created by community:
848
854
  - Hugo
849
855
  - [Hugo module](https://github.com/privatemaker/headless-cms) by [@privatemaker](https://github.com/privatemaker)
850
856
  - [Hugolify](https://www.hugolify.io/) by [@sebousan](https://github.com/sebousan)
857
+ - Zola
858
+ - [Zola Sveltia Source](https://github.com/unicornfantasian/zola-sveltia-source) by [@husenunicorn](https://github.com/husenunicorn)
851
859
 
852
860
  The Netlify/Decap CMS website has more [templates](https://decapcms.org/docs/start-with-a-template/) and [examples](https://decapcms.org/docs/examples/). You can probably use one of them and switch to Sveltia CMS. (Note: These third-party resources are not necessarily reviewed by the Sveltia CMS team.)
853
861
 
@@ -1277,20 +1285,31 @@ The configuration for a [file collection](https://decapcms.org/docs/collection-f
1277
1285
 
1278
1286
  Sveltia CMS comes with a handy translation API integration so that you can translate any text field from another locale without leaving the Content Editor. Currently, the following services are supported:
1279
1287
 
1280
- - Google’s [Cloud Translation](https://cloud.google.com/translate)
1281
- - Anthropic’s [Claude Haiku 4.5](https://www.anthropic.com/claude/haiku)
1282
- - OpenAI’s [GPT-4o mini](https://platform.openai.com/docs/models/gpt-4o-mini)
1288
+ - Neural Machine Translation (NMT)
1289
+ - Google: [Cloud Translation](https://cloud.google.com/translate)
1290
+ - Large Language Models (LLMs)
1291
+ - Anthropic: [Claude Haiku 4.5](https://www.anthropic.com/claude/haiku)
1292
+ - Google: [Gemini 2.5 Flash-Lite](https://deepmind.google/models/gemini/flash-lite/)
1293
+ - OpenAI: [GPT-4o mini](https://platform.openai.com/docs/models/gpt-4o-mini)
1283
1294
 
1284
- Google’s API is very fast and offers a free tier. Other LLMs may produce more natural translations, but they are slower and require a paid plan. Choose the one that best fits your needs.
1295
+ A few notes to help you choose a service:
1296
+
1297
+ - NMT is specialized for translations, while LLMs are more general-purpose.
1298
+ - NMT is fast, while LLMs may produce more natural, context-aware translations.
1299
+ - Google offers free tiers, while Anthropic and OpenAI require a paid plan.
1300
+ - With [Gemini’s free tier](https://ai.google.dev/gemini-api/docs/pricing), API input and output may be used to improve their products. As their terms state, do not send sensitive or confidential information while using the free tier. Consider using the paid plan or other services if this is a concern.
1285
1301
 
1286
1302
  To enable the quick translation feature:
1287
1303
 
1288
1304
  1. Update your configuration file to enable the [i18n support](https://decapcms.org/docs/i18n/) with multiple locales.
1289
1305
  1. Create a new API key for the translation service of your choice:
1290
- - Google
1306
+ - Google Cloud Translation
1291
1307
  1. Sign in or sign up for [Google Cloud](https://cloud.google.com/) and create a new project.
1292
1308
  1. Enable the [Cloud Translation API](https://console.cloud.google.com/apis/library/translate.googleapis.com). It’s free up to 500,000 characters per month.
1293
1309
  1. Create a [new API key](https://console.cloud.google.com/apis/api/translate.googleapis.com/credentials) and copy it.
1310
+ - Google Gemini
1311
+ 1. Sign in or sign up for [Google AI Studio](https://aistudio.google.com/).
1312
+ 1. A new [API key](https://aistudio.google.com/api-keys) is created automatically for your account. Or create a new one if needed, and copy it.
1294
1313
  - Anthropic
1295
1314
  1. Sign in or sign up for [Claude Developer Platform](https://docs.claude.com/en/api/overview).
1296
1315
  1. Add a credit balance (minimum $5) to your account.
@@ -1315,7 +1334,7 @@ If you don’t want some text to be translated, use the HTML [`translate`](https
1315
1334
  <span class="notranslate">...</span>
1316
1335
  ```
1317
1336
 
1318
- For Anthropic and OpenAI, you can also use the `notranslate` comment to exclude specific parts of Markdown content from translation:
1337
+ For LLMs, you can also use the `notranslate` comment to exclude specific parts of Markdown content from translation:
1319
1338
 
1320
1339
  ```html
1321
1340
  <!-- notranslate -->...<!-- /notranslate -->
@@ -1996,6 +2015,38 @@ img-src 'self' blob: data: https://*;
1996
2015
 
1997
2016
  A Release Notes link will now appear under the Account menu with the current application version.
1998
2017
 
2018
+ ## Showcase
2019
+
2020
+ Sveltia CMS powers hundreds of websites around the world. Here are some examples of websites using Sveltia CMS. Many of them are switching from Netlify/Decap CMS for a better UX and DX 🎉
2021
+
2022
+ <!-- cSpell:disable -->
2023
+
2024
+ - [Anil Dash](https://www.anildash.com/): Personal blog of Anil Dash, a prominent tech writer and entrepreneur, who created once-popular CMSs called [Movable Type](https://en.wikipedia.org/wiki/Movable_Type) and [TypePad](https://en.wikipedia.org/wiki/Typepad). Built with Eleventy. ([repository](https://github.com/anildash/anildash-dot-com-netlify)) ([Bluesky post](https://bsky.app/profile/anildash.com/post/3m7osuyipnc22))
2025
+ - [Dutch Institute for Vulnerability Disclosure](https://www.divd.nl/): An institute focused on responsible vulnerability disclosure in the Netherlands. Utilizes [i18n support](#better-i18n-support). Built with Hugo. ([repository](https://github.com/DIVD-NL/web-www-v2))
2026
+ - [Inclusive Design Research Centre](https://idrc.ocadu.ca/): A research center at OCAD University focused on inclusive design practices. Built with Eleventy. ([repository](https://github.com/inclusive-design/idrc))
2027
+ - [FLOE](https://floeproject.org/): An open education project focused on accessibility and inclusive learning technologies. Built with Eleventy. ([repository](https://github.com/fluid-project/floeproject.org)) ([blog post](https://floeproject.org/news/2024-06-24-evaluating-static-content-management-systems/))
2028
+ - [SIGPwny](https://sigpwny.com/): A student-run cybersecurity club at the University of Illinois Urbana-Champaign. Built with Astro. ([repository](https://github.com/sigpwny/websites))
2029
+ - [Critical Mass Portugal](https://massacritica.pt/en/): The Portuguese chapter of the global Critical Mass movement promoting cycling. Utilizes [i18n support](#better-i18n-support). Built with Astro. ([repository](https://github.com/afonsojramos/critical-mass))
2030
+ - [Dylan Beattie](https://dylanbeattie.net/): Personal website of Dylan Beattie, a well-known software developer and speaker. Built with Jekyll. ([repository](https://github.com/dylanbeattie/dylanbeattie.net)) ([blog post](https://dylanbeattie.net/2025/02/13/sveltiacms-jekyll-and-github-pages.html))
2031
+ - [The Forgotten Europe Project](https://forgotteneurope.org/): A project dedicated to exploring and documenting lesser-known parts of Europe. Built with SvelteKit. ([repository](https://github.com/refact0r/forgotten-europe-website))
2032
+ - [Chris’s Tech ADHD](https://chris-ayers.com/): Personal website of Chris Ayers, a senior software engineer and speaker. Built with Jekyll. ([repository](https://github.com/codebytes/codebytes.github.io)) ([blog post](https://chris-ayers.com/2025/06/26/mobile-cms-on-github-pages/))
2033
+ - [Bilgin Dictionary](https://sozluk.ulug.tr/): An etymological dictionary of Turkish. Built with Astro. ([repository](https://github.com/ulughann/sozluk))
2034
+ - [Woogles Blog](https://blog.woogles.io/): Blog of a non-profit organization specializing in word games and education. Built with Hugo. ([repository](https://github.com/woogles-io/liwords-static))
2035
+ - [The Living Glossary of Digital Narrative](https://glossary.cdn.uib.no/): A collaborative glossary for digital narrative studies. Built with Astro. ([repository](https://github.com/Center-for-Digital-Narrative/Living-Glossary-of-Digital-Narrative))
2036
+ - [IA·rbre](https://iarbre.fr/): Collaborative platform for territorial data on urban climate adaptation. Built with MkDocs. ([repository](https://github.com/TelesCoop/iarbre))
2037
+ - [Melbourne Disc Golf Club](https://www.melbournediscgolf.com/): A disc golf club in Australia. Built with Astro. ([repository](https://github.com/melbourne-disc-golf/mdgc-website))
2038
+ - [ACM Gazi](https://acmgazi.com/): Gazi University Association for Computing Machinery community site. Built with Hugo. ([repository](https://github.com/ACM-Gazi/acm-gazi.github.io))
2039
+ - [Volley Club Nogentais](https://volley-club-nogent.fr/): A volleyball club in France. Built with Hugo. ([repository](https://github.com/Volley-Club-Nogentais/vcn-website))
2040
+ - [The Scalable Way](https://thescalableway.com/): A consultancy specializing in data platform engineering, analytics, and data science. Built with Eleventy. ([repository](https://github.com/dyvenia/site-thescalableway))
2041
+ - [Medieval Scrolls Digital Archive](https://medievalscrolls.fas.harvard.edu/): A comprehensive resource for medieval scrolls at Harvard University. Built with Astro. ([repository](https://github.com/artshumrc/scrolls-astro))
2042
+ - [Queer Winnipeg](https://queerwinnipeg.ca/): Blog that shares stories and resources for the local queer community. Built with Astro. ([repository](https://gitlab.com/queerwinnipeg/queerwinnipeg.ca))
2043
+ - [Code for Heilbronn](https://codeforheilbronn.de/): A civic tech group in Germany, focused on open data and digital solutions for local issues. Built with Hugo. ([repository](https://github.com/cfhn/codeforheilbronn-website))
2044
+ - [Plan B Architecture Studio](https://www.planasb.lt/en/): An architecture studio based in Lithuania. Built with Astro. ([agency case study](https://oaksun.studio/work/architectural-studio/))
2045
+
2046
+ <!-- cSpell:enable -->
2047
+
2048
+ More projects, including small personal blogs and portfolios, can be found by [searching GitHub](https://github.com/search?q=sveltia+cms&type=commits&s=committer-date&o=desc). Please note that the code search only returns 100 results, and private repositories are not included. We’ll continue to update this list as we discover more projects!
2049
+
1999
2050
  ## Support & Feedback
2000
2051
 
2001
2052
  While we don’t have dedicated developer/user support resources, you can post [quick questions](https://github.com/sveltia/sveltia-cms/discussions/new?category=q-a) on the [Discussions](https://github.com/sveltia/sveltia-cms/discussions) page of our GitHub repository. [Feedback](https://github.com/sveltia/sveltia-cms/discussions/new?category=ideas) is also welcome, but please check the [Compatibility](#compatibility) and [Roadmap](#roadmap) sections of this README before starting a new discussion — your idea may already be covered.
@@ -2004,7 +2055,7 @@ Join us on [Discord](https://discord.gg/5hwCGqup5b) or ping us on [Bluesky](http
2004
2055
 
2005
2056
  <!-- prettier-ignore-start -->
2006
2057
  > [!IMPORTANT]
2007
- > As described throughout this README, Sveltia CMS is specifically designed as a replacement for Netlify/Decap CMS. At this point, we assume that most developers and users are moving from the other product. We are happy to help you migrate, but **we cannot help you set up Sveltia CMS from scratch** through our free support channels.
2058
+ > Sveltia CMS is specifically designed as a replacement for Netlify/Decap CMS. We are happy to help you migrate from the legacy product, but **we cannot help you set up Sveltia CMS from scratch** through our free support channels. Questions about installation or initial configuration may go unanswered.
2008
2059
  <!-- prettier-ignore-end -->
2009
2060
 
2010
2061
  Planning to build a website with Sveltia CMS? Looking for professional support? Maintainer [@kyoshino](https://github.com/kyoshino) is available for hire depending on your needs. Feel free to reach out!
@@ -2026,11 +2077,12 @@ We cannot promise any specific release dates, but here is a rough roadmap for th
2026
2077
 
2027
2078
  ### v1.0
2028
2079
 
2029
- Due early 2026
2080
+ Due early 2026. This will be the first stable release of Sveltia CMS, suitable for production use in many scenarios. This release also [solves 300 issues](#project-status) of Netlify/Decap CMS, including many highly requested features and important bug fixes.
2030
2081
 
2031
2082
  - Enhanced [compatibility with Netlify/Decap CMS](#compatibility)
2032
2083
  - Tackling some more Netlify/Decap CMS issues:
2033
2084
  - PKCE for GitHub[^285] — It’s [not yet supported](https://github.com/orgs/community/discussions/15752) by GitHub but is [planned for Q4 2025](https://github.com/github/roadmap/issues/1153)
2085
+ - [Amazon S3 and Cloudflare R2 media library backend](https://github.com/sveltia/sveltia-cms/issues/586)[^315]
2034
2086
  - Thorough config validation[^246]
2035
2087
  - [Entry pre-validation/normalization](https://github.com/sveltia/sveltia-cms/issues/395)[^248]
2036
2088
  - Accessibility audit
@@ -2042,7 +2094,7 @@ See also the [1.0 RC](https://github.com/sveltia/sveltia-cms/milestone/1) and [1
2042
2094
 
2043
2095
  ### v2.0
2044
2096
 
2045
- Due mid-2026
2097
+ Due mid-2026. This release completes the core features of Sveltia CMS as a successor to Netlify/Decap CMS.
2046
2098
 
2047
2099
  - Implementing [a few deferred Netlify/Decap CMS features](#current-limitations), including editorial workflow and nested collections, while addressing a number of bugs in their implementations
2048
2100
  - They will probably first be included as beta features in v1.x releases
@@ -2055,7 +2107,7 @@ See also the [2.0](https://github.com/sveltia/sveltia-cms/milestone/3) milestone
2055
2107
 
2056
2108
  ### v3.0
2057
2109
 
2058
- Due late 2026
2110
+ Due late 2026. This release provides an alternative to the deprecated Netlify Identity and Git Gateway services used by Netlify/Decap CMS.
2059
2111
 
2060
2112
  - **Sveltia CMS Additions**: Edge functions for Cloudflare Workers and possibly other platforms that provide features that cannot be implemented client-side:
2061
2113
  - User management (Netlify Identity alternative) with roles[^23]
@@ -2375,7 +2427,7 @@ This project would not have been possible without the open source Netlify CMS pr
2375
2427
 
2376
2428
  [^112]: Netlify/Decap CMS [#5815](https://github.com/decaporg/decap-cms/issues/5815), [#6522](https://github.com/decaporg/decap-cms/issues/6522), [#6532](https://github.com/decaporg/decap-cms/issues/6532), [#6588](https://github.com/decaporg/decap-cms/issues/6588), [#6617](https://github.com/decaporg/decap-cms/issues/6617), [#6640](https://github.com/decaporg/decap-cms/issues/6640), [#6663](https://github.com/decaporg/decap-cms/issues/6663), [#6695](https://github.com/decaporg/decap-cms/issues/6695), [#6697](https://github.com/decaporg/decap-cms/issues/6697), [#6764](https://github.com/decaporg/decap-cms/issues/6764), [#6765](https://github.com/decaporg/decap-cms/issues/6765), [#6835](https://github.com/decaporg/decap-cms/issues/6835), [#6983](https://github.com/decaporg/decap-cms/issues/6983), [#7205](https://github.com/decaporg/decap-cms/issues/7205), [#7450](https://github.com/decaporg/decap-cms/issues/7450), [#7453](https://github.com/decaporg/decap-cms/issues/7453), [#7572](https://github.com/decaporg/decap-cms/issues/7572), [#7602](https://github.com/decaporg/decap-cms/issues/7602), [#7655](https://github.com/decaporg/decap-cms/issues/7655)
2377
2429
 
2378
- [^113]: 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), [#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), [#7244](https://github.com/decaporg/decap-cms/issues/7244), [#7278](https://github.com/decaporg/decap-cms/issues/7278), [#7301](https://github.com/decaporg/decap-cms/issues/7301), [#7342](https://github.com/decaporg/decap-cms/issues/7342), [#7348](https://github.com/decaporg/decap-cms/issues/7348), [#7354](https://github.com/decaporg/decap-cms/issues/7354), [#7376](https://github.com/decaporg/decap-cms/issues/7376), [#7408](https://github.com/decaporg/decap-cms/issues/7408), [#7412](https://github.com/decaporg/decap-cms/issues/7412), [#7413](https://github.com/decaporg/decap-cms/issues/7413), [#7422](https://github.com/decaporg/decap-cms/issues/7422), [#7427](https://github.com/decaporg/decap-cms/issues/7427), [#7434](https://github.com/decaporg/decap-cms/issues/7434), [#7438](https://github.com/decaporg/decap-cms/issues/7438), [#7454](https://github.com/decaporg/decap-cms/issues/7454), [#7464](https://github.com/decaporg/decap-cms/issues/7464), [#7471](https://github.com/decaporg/decap-cms/issues/7471), [#7485](https://github.com/decaporg/decap-cms/issues/7485), [#7499](https://github.com/decaporg/decap-cms/issues/7499), [#7515](https://github.com/decaporg/decap-cms/issues/7515), [#7564](https://github.com/decaporg/decap-cms/issues/7564), [#7571](https://github.com/decaporg/decap-cms/issues/7571), [#7574](https://github.com/decaporg/decap-cms/issues/7574), [#7580](https://github.com/decaporg/decap-cms/issues/7580), [#7583](https://github.com/decaporg/decap-cms/issues/7583), [#7589](https://github.com/decaporg/decap-cms/issues/7589), [#7593](https://github.com/decaporg/decap-cms/issues/7593), [#7595](https://github.com/decaporg/decap-cms/issues/7595), [#7601](https://github.com/decaporg/decap-cms/issues/7601), [#7610](https://github.com/decaporg/decap-cms/issues/7610), [#7614](https://github.com/decaporg/decap-cms/issues/7614), [#7620](https://github.com/decaporg/decap-cms/issues/7620), [#7621](https://github.com/decaporg/decap-cms/issues/7621), [#7622](https://github.com/decaporg/decap-cms/issues/7622), [#7631](https://github.com/decaporg/decap-cms/issues/7631), [#7643](https://github.com/decaporg/decap-cms/issues/7643), [#7644](https://github.com/decaporg/decap-cms/issues/7644), [#7648](https://github.com/decaporg/decap-cms/issues/7648), [#7669](https://github.com/decaporg/decap-cms/issues/7669), [#7688](https://github.com/decaporg/decap-cms/issues/7688), [#7689](https://github.com/decaporg/decap-cms/issues/7689) — These `removeChild` crashes are common in React apps, likely caused by a [browser extension](https://github.com/facebook/react/issues/17256) or [Google Translate](https://github.com/facebook/react/issues/11538).
2430
+ [^113]: 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), [#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), [#7244](https://github.com/decaporg/decap-cms/issues/7244), [#7278](https://github.com/decaporg/decap-cms/issues/7278), [#7301](https://github.com/decaporg/decap-cms/issues/7301), [#7342](https://github.com/decaporg/decap-cms/issues/7342), [#7348](https://github.com/decaporg/decap-cms/issues/7348), [#7354](https://github.com/decaporg/decap-cms/issues/7354), [#7376](https://github.com/decaporg/decap-cms/issues/7376), [#7408](https://github.com/decaporg/decap-cms/issues/7408), [#7412](https://github.com/decaporg/decap-cms/issues/7412), [#7413](https://github.com/decaporg/decap-cms/issues/7413), [#7422](https://github.com/decaporg/decap-cms/issues/7422), [#7427](https://github.com/decaporg/decap-cms/issues/7427), [#7434](https://github.com/decaporg/decap-cms/issues/7434), [#7438](https://github.com/decaporg/decap-cms/issues/7438), [#7454](https://github.com/decaporg/decap-cms/issues/7454), [#7464](https://github.com/decaporg/decap-cms/issues/7464), [#7471](https://github.com/decaporg/decap-cms/issues/7471), [#7485](https://github.com/decaporg/decap-cms/issues/7485), [#7499](https://github.com/decaporg/decap-cms/issues/7499), [#7515](https://github.com/decaporg/decap-cms/issues/7515), [#7564](https://github.com/decaporg/decap-cms/issues/7564), [#7571](https://github.com/decaporg/decap-cms/issues/7571), [#7574](https://github.com/decaporg/decap-cms/issues/7574), [#7580](https://github.com/decaporg/decap-cms/issues/7580), [#7583](https://github.com/decaporg/decap-cms/issues/7583), [#7589](https://github.com/decaporg/decap-cms/issues/7589), [#7593](https://github.com/decaporg/decap-cms/issues/7593), [#7595](https://github.com/decaporg/decap-cms/issues/7595), [#7601](https://github.com/decaporg/decap-cms/issues/7601), [#7610](https://github.com/decaporg/decap-cms/issues/7610), [#7614](https://github.com/decaporg/decap-cms/issues/7614), [#7620](https://github.com/decaporg/decap-cms/issues/7620), [#7621](https://github.com/decaporg/decap-cms/issues/7621), [#7622](https://github.com/decaporg/decap-cms/issues/7622), [#7631](https://github.com/decaporg/decap-cms/issues/7631), [#7643](https://github.com/decaporg/decap-cms/issues/7643), [#7644](https://github.com/decaporg/decap-cms/issues/7644), [#7648](https://github.com/decaporg/decap-cms/issues/7648), [#7669](https://github.com/decaporg/decap-cms/issues/7669), [#7688](https://github.com/decaporg/decap-cms/issues/7688), [#7689](https://github.com/decaporg/decap-cms/issues/7689), [#7690](https://github.com/decaporg/decap-cms/issues/7690) — These `removeChild` crashes are common in React apps, likely caused by a [browser extension](https://github.com/facebook/react/issues/17256) or [Google Translate](https://github.com/facebook/react/issues/11538).
2379
2431
 
2380
2432
  [^114]: Netlify/Decap CMS [#5029](https://github.com/decaporg/decap-cms/issues/5029), [#5048](https://github.com/decaporg/decap-cms/issues/5048)
2381
2433
 
@@ -2770,3 +2822,9 @@ This project would not have been possible without the open source Netlify CMS pr
2770
2822
  [^313]: Netlify/Decap CMS [#542](https://github.com/decaporg/decap-cms/issues/542)
2771
2823
 
2772
2824
  [^314]: Netlify/Decap CMS [#3719](https://github.com/decaporg/decap-cms/issues/3719)
2825
+
2826
+ [^315]: Netlify/Decap CMS [#2035](https://github.com/decaporg/decap-cms/issues/2035), [#7362](https://github.com/decaporg/decap-cms/issues/7362), [#7543](https://github.com/decaporg/decap-cms/issues/7543)
2827
+
2828
+ [^316]: Netlify/Decap CMS [#1152](https://github.com/decaporg/decap-cms/issues/1152)
2829
+
2830
+ [^317]: Netlify/Decap CMS [#1464](https://github.com/decaporg/decap-cms/issues/1464)