{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Cecil - News",
  "home_page_url": "https://main.cecil.app/news/",
  "feed_url": "https://main.cecil.app/news/feed.json",
  "description": "News about Cecil.",
  "icon": "https://main.cecil.app/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "favicon": "https://main.cecil.app/thumbnails/64x/favicon.7ff4b89eec6dad139a7d2d6561543285.png",
  "language": "en",
  "items": [
    {
      "id": "https://main.cecil.app/news/2026/10/07/documentation-restructured/",
      "url": "https://main.cecil.app/news/2026/10/07/documentation-restructured/",
      "title": "A restructured documentation",
      "summary": "The documentation is now organized into sections and short pages, easier to browse and to search.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2026-10-07T00:00:00+00:00","content_text": "The documentation has been restructured: the long single pages (some of them over 1,500 lines!) have been split into sections made of shorter, focused pages.\nThis restructuring was made possible by the nested sections introduced in Cecil 9: any folder containing an index.md file becomes a sub-section of its parent section, with its own pages, layout fallback and breadcrumb. This website is built with Cecil, so the documentation is the first to benefit from it!\nNew structure\nThe documentation is now organized into 8 sections:\n\nGetting started: quick start, installation, directory structure and starter kits\nContent: pages, front matter, Markdown, multilingual and dynamic content\nTemplates: lookup rules, variables, components, localization, cache, extension, and a reference of functions and filters\nAssets: images, processing and CDN providers (a brand new section, previously part of Templates)\nConfiguration: one page per configuration topic (site, languages, pages, assets, output, cache, server, etc.)\nCommands: new:site, new:page, serve, build and doctor\nDeploy: Jamstack platforms, continuous deployment and static hosting\nDevelopers: extend Cecil, use it as a library and understand its architecture\n\nEasier navigation\n\nA navigation tree in the sidebar shows where you are and lets you unfold each section.\nEach section's home page lists its pages with a short description.\nThe search now indexes every page and its introduction, so results point directly to the right topic.\n\nThe documentation is available in English and French. If you spot something wrong or missing, use the “Suggest a modification” link at the bottom of each page.",
      "content_html": "<p>The <a href=\"/documentation/\"><strong>documentation</strong></a> has been restructured: the long single pages (some of them over 1,500 lines!) have been split into <strong>sections</strong> made of shorter, focused pages.</p>\n<p>This restructuring was made possible by the <a href=\"/documentation/content/pages/#sub-section\"><strong>nested sections</strong></a> introduced in <a href=\"/news/2026/08/27/cecil-9.0.0-released/\">Cecil 9</a>: any folder containing an <code translate=\"no\">index.md</code> file becomes a sub-section of its parent section, with its own pages, layout fallback and breadcrumb. This website is built with Cecil, so the documentation is the first to benefit from it!</p>\n<h3 id=\"new-structure\">New structure</h3>\n<p>The documentation is now organized into 8 sections:</p>\n<ol>\n<li><a href=\"/documentation/getting-started/\"><strong>Getting started</strong></a>: quick start, installation, directory structure and starter kits</li>\n<li><a href=\"/documentation/content/\"><strong>Content</strong></a>: pages, front matter, Markdown, multilingual and dynamic content</li>\n<li><a href=\"/documentation/templates/\"><strong>Templates</strong></a>: lookup rules, variables, components, localization, cache, extension, and a reference of <a href=\"/documentation/templates/reference/\">functions and filters</a></li>\n<li><a href=\"/documentation/assets/\"><strong>Assets</strong></a>: images, processing and CDN providers (a brand new section, previously part of <em>Templates</em>)</li>\n<li><a href=\"/documentation/configuration/\"><strong>Configuration</strong></a>: one page per configuration topic (site, languages, pages, assets, output, cache, server, etc.)</li>\n<li><a href=\"/documentation/commands/\"><strong>Commands</strong></a>: <code translate=\"no\">new:site</code>, <code translate=\"no\">new:page</code>, <code translate=\"no\">serve</code>, <code translate=\"no\">build</code> and <code translate=\"no\">doctor</code></li>\n<li><a href=\"/documentation/deploy/\"><strong>Deploy</strong></a>: Jamstack platforms, continuous deployment and static hosting</li>\n<li><a href=\"/documentation/developers/\"><strong>Developers</strong></a>: extend Cecil, use it as a library and understand its architecture</li>\n</ol>\n<h3 id=\"easier-navigation\">Easier navigation</h3>\n<ul>\n<li>A <strong>navigation tree</strong> in the sidebar shows where you are and lets you unfold each section.</li>\n<li>Each section's home page lists its pages with a short description.</li>\n<li>The search now indexes every page and its introduction, so results point directly to the right topic.</li>\n</ul>\n<p>The documentation is available in English and French. If you spot something wrong or missing, use the “Suggest a modification” link at the bottom of each page.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2026/10/02/introducing-the-showcase/",
      "url": "https://main.cecil.app/news/2026/10/02/introducing-the-showcase/",
      "title": "Introducing the showcase",
      "summary": "A new page to discover websites built with Cecil.",
      "image": "https://main.cecil.app/images/showcase/cypht-org-cypht-website.a1427206cd2d7ebddd830d314ae483dc.png",
      "date_published": "2026-10-02T00:00:00+00:00","content_text": "The website now has a Showcase page that lists sites built with Cecil.\nIt currently features 17 websites: open source projects (such as Cypht and libimobiledevice), community sites, personal blogs and portfolios. Each entry includes a screenshot, a short description and, when available, a link to its source code. You can browse them to get inspiration or to see how others structure their Cecil projects.\nAdd your website\nIs your website built with Cecil? Let us know and we will add it to the showcase.",
      "content_html": "<p>The website now has a <a href=\"/showcase/\"><strong>Showcase</strong></a> page that lists sites built with Cecil.</p>\n<p>It currently features 17 websites: open source projects (such as <a href=\"https://cypht.org\" target=\"_blank\" rel=\"noopener noreferrer\">Cypht</a> and <a href=\"https://libimobiledevice.org\" target=\"_blank\" rel=\"noopener noreferrer\">libimobiledevice</a>), community sites, personal blogs and portfolios. Each entry includes a screenshot, a short description and, when available, a link to its source code. You can browse them to get inspiration or to see how others structure their Cecil projects.</p>\n<h3 id=\"add-your-website\">Add your website</h3>\n<p>Is your website built with Cecil? <a href=\"https://github.com/Cecilapp/Cecil/discussions\" target=\"_blank\" rel=\"noopener noreferrer\">Let us know</a> and we will add it to the showcase.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2026/08/27/cecil-9.0.0-released/",
      "url": "https://main.cecil.app/news/2026/08/27/cecil-9.0.0-released/",
      "title": "Cecil 9.0.0 released",
      "summary": "A new nested section hierarchy, breadcrumbs, and the migration to the Intervention Image v4.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2026-08-27T00:00:00+00:00","content_text": "This major release of Cecil introduces a nested section hierarchy and breadcrumb generation to make navigation easier on structured sites.\nImprovements\n\nAdded a nested section hierarchy\nAdded breadcrumbs\nMigrated to the Intervention Image v4\n\nBreaking changes\n\nPHP 8.2 is no longer supported. PHP 8.3 or higher is now required.\n\nFixes\n\nFixed nested markup in list templates\n\nMiscellaneous\n\nAdded unit tests covering several core classes\n\nSee the documentation, download, or update instructions.",
      "content_html": "<p>This major release of Cecil introduces a <strong>nested section hierarchy</strong> and breadcrumb generation to make navigation easier on structured sites.</p>\n<h3 id=\"improvements\">Improvements</h3>\n<ul>\n<li>Added a <a href=\"/documentation/content/#sub-section\">nested section hierarchy</a></li>\n<li>Added <a href=\"/documentation/templates/#nested-sections\">breadcrumbs</a></li>\n<li>Migrated to the <a href=\"https://image.intervention.io/v4\" target=\"_blank\" rel=\"noopener noreferrer\">Intervention Image v4</a></li>\n</ul>\n<h3 id=\"breaking-changes\">Breaking changes</h3>\n<ul>\n<li><strong>PHP 8.2 is no longer supported</strong>. PHP 8.3 or higher is now required.</li>\n</ul>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Fixed nested markup in list templates</li>\n</ul>\n<h3 id=\"miscellaneous\">Miscellaneous</h3>\n<ul>\n<li>Added unit tests covering several core classes</li>\n</ul>\n<p>See the <a href=\"/documentation/\">documentation</a>, <a href=\"/download/\">download</a>, or <a href=\"/download/#update\">update instructions</a>.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2026/06/14/whats-new-since-8.79/",
      "url": "https://main.cecil.app/news/2026/06/14/whats-new-since-8.79/",
      "title": "What's new since version 8.79?",
      "summary": "Summary of major features added between Cecil 8.80.0 and 8.106.0.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2026-06-14T00:00:00+00:00","content_text": "The latest major release is 8.106.0. Here is a focused summary of the main features introduced since Cecil 8.79.0.\nImproved developer experience and performance visibility\n\nBuild progress indicator (8.101.0): build execution now exposes a progress bar, making long-running operations easier to follow.\nExtended metrics output (8.101.0): metrics now include a total duration row with comparisons between runs, which helps track performance changes over time.\nRaw timings and diff metrics (8.87.0): build metrics now expose raw timings and diffs, making regressions and improvements easier to identify.\nBuild\/cache identifier improvements (8.80.x): build IDs are exposed and integrated into cache logic, with updated hashing behavior for better cache consistency.\n\nBetter template rendering\n\nDark-mode image variant support (8.95.0): templates can now handle dedicated image variants for dark mode, improving visual adaptation. (docs)\nlayouts.autoescape option (8.97.0): this setting provides finer control over template escaping behavior. (docs)\nTranslation disabled inside code blocks (8.98.0): inline and fenced code are no longer translated, which helps preserve technical content accurately.\ncache_key Twig helper (8.88.0): templates can generate explicit cache keys for more predictable cache behavior. (docs)\n\nContent and image pipeline improvements\n\nFront matter menu name support (8.90.0): menu entries can now define a dedicated name property. (docs)\nlibvips image driver support (8.91.0): image processing can now use libvips as a driver option. (docs)\nLocalized Markdown image assets (8.92.0): image assets can now be localized for translated pages. (docs)\n\nQuality and diagnostics tooling\n\nNew doctor command (8.103.0): a dedicated diagnostics command was introduced to make project issues easier to identify. (docs)\nNew doctor:seo command (8.105.0): a dedicated SEO audit command was added with matching documentation and tests. (docs)\n\nBetter development workflow\n\nBackground serve mode and stop command (8.104.0): the development server now supports background execution and explicit shutdown through serve:stop. (docs)\n.env loading support (8.106.0): environment configuration can now be loaded through dotenv, simplifying local variable management. (docs)\n\nBreaking change to keep in mind\n\nRemoval of assets.leading_slash option (8.81.0): this option was removed and may require configuration updates.\n",
      "content_html": "<p>The latest major release is <strong>8.106.0</strong>. Here is a focused summary of the main features introduced since <strong>Cecil 8.79.0</strong>.</p>\n<h3 id=\"improved-developer-experience-and-performance-visibility\">Improved developer experience and performance visibility</h3>\n<ul>\n<li><strong>Build progress indicator</strong> (8.101.0): build execution now exposes a progress bar, making long-running operations easier to follow.</li>\n<li><strong>Extended metrics output</strong> (8.101.0): metrics now include a total duration row with comparisons between runs, which helps track performance changes over time.</li>\n<li><strong>Raw timings and diff metrics</strong> (8.87.0): build metrics now expose raw timings and diffs, making regressions and improvements easier to identify.</li>\n<li><strong>Build/cache identifier improvements</strong> (8.80.x): build IDs are exposed and integrated into cache logic, with updated hashing behavior for better cache consistency.</li>\n</ul>\n<h3 id=\"better-template-rendering\">Better template rendering</h3>\n<ul>\n<li><strong>Dark-mode image variant support</strong> (8.95.0): templates can now handle dedicated image variants for dark mode, improving visual adaptation. (<a href=\"https://cecil.app/documentation/configuration/#layouts-images\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong><code translate=\"no\">layouts.autoescape</code> option</strong> (8.97.0): this setting provides finer control over template escaping behavior. (<a href=\"https://cecil.app/documentation/configuration/#layouts-autoescape\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong>Translation disabled inside code blocks</strong> (8.98.0): inline and fenced code are no longer translated, which helps preserve technical content accurately.</li>\n<li><strong><code translate=\"no\">cache_key</code> Twig helper</strong> (8.88.0): templates can generate explicit cache keys for more predictable cache behavior. (<a href=\"https://cecil.app/documentation/templates/#cache-key\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n</ul>\n<h3 id=\"content-and-image-pipeline-improvements\">Content and image pipeline improvements</h3>\n<ul>\n<li><strong>Front matter menu <code translate=\"no\">name</code> support</strong> (8.90.0): menu entries can now define a dedicated <code translate=\"no\">name</code> property. (<a href=\"https://cecil.app/documentation/content/#menu\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong><code translate=\"no\">libvips</code> image driver support</strong> (8.91.0): image processing can now use libvips as a driver option. (<a href=\"https://cecil.app/documentation/content/#images\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong>Localized Markdown image assets</strong> (8.92.0): image assets can now be localized for translated pages. (<a href=\"https://cecil.app/documentation/content/#localized-image\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n</ul>\n<h3 id=\"quality-and-diagnostics-tooling\">Quality and diagnostics tooling</h3>\n<ul>\n<li><strong>New <code translate=\"no\">doctor</code> command</strong> (8.103.0): a dedicated diagnostics command was introduced to make project issues easier to identify. (<a href=\"https://cecil.app/documentation/commands/#doctor\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong>New <code translate=\"no\">doctor:seo</code> command</strong> (8.105.0): a dedicated SEO audit command was added with matching documentation and tests. (<a href=\"https://cecil.app/documentation/commands/#doctor-seo\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n</ul>\n<h3 id=\"better-development-workflow\">Better development workflow</h3>\n<ul>\n<li><strong>Background <code translate=\"no\">serve</code> mode and stop command</strong> (8.104.0): the development server now supports background execution and explicit shutdown through <code translate=\"no\">serve:stop</code>. (<a href=\"https://cecil.app/documentation/commands/#serve\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n<li><strong><code translate=\"no\">.env</code> loading support</strong> (8.106.0): environment configuration can now be loaded through dotenv, simplifying local variable management. (<a href=\"https://cecil.app/documentation/configuration/#environment-variables\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>)</li>\n</ul>\n<h3 id=\"breaking-change-to-keep-in-mind\">Breaking change to keep in mind</h3>\n<ul>\n<li><strong>Removal of <code translate=\"no\">assets.leading_slash</code> option</strong> (8.81.0): this option was removed and may require configuration updates.</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2026/01/14/cecil-8.79.0-released/",
      "url": "https://main.cecil.app/news/2026/01/14/cecil-8.79.0-released/",
      "title": "Cecil 8.79.0 released",
      "summary": "This release improves slugification for multilingual content and refactors related code.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2026-01-14T00:00:00+00:00","content_text": "This release updates the slugification logic to better handle multilingual content, especially Chinese characters, and refactors related code for improved maintainability. It also adds new test fixtures for French and Chinese blog posts to ensure proper handling of non-ASCII characters.\nSlugification improvements\n\nUpdated the Page::slugify method to detect Chinese (Han) characters in the input and apply the Chinese ruleset for slugification when appropriate, improving URL generation for Chinese content.\nRefactored the Url class to delegate slugification to Page::slugify, removing its own slugifier instance and related logic for consistency and code reuse.\n",
      "content_html": "<p>This release updates the slugification logic to better handle multilingual content, especially Chinese characters, and refactors related code for improved maintainability. It also adds new test fixtures for French and Chinese blog posts to ensure proper handling of non-ASCII characters.</p>\n<h3 id=\"slugification-improvements\">Slugification improvements</h3>\n<ul>\n<li>Updated the <code translate=\"no\">Page::slugify</code> method to detect Chinese (Han) characters in the input and apply the Chinese ruleset for slugification when appropriate, improving URL generation for Chinese content.</li>\n<li>Refactored the <code translate=\"no\">Url</code> class to delegate slugification to <code translate=\"no\">Page::slugify</code>, removing its own slugifier instance and related logic for consistency and code reuse.</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2026/01/14/cecil-8.77.0-released/",
      "url": "https://main.cecil.app/news/2026/01/14/cecil-8.77.0-released/",
      "title": "Cecil 8.77.0 released",
      "summary": "Refactors and simplifies image resizing and cropping logic, consolidating functionality into a single, more flexible method.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2026-01-13T00:00:00+00:00","content_text": "This release refactors and simplifies the image resizing and cropping logic, consolidating the functionality into a single, more flexible resize method. It also updates related Twig filters and templates to use the new approach and improves error handling and documentation throughout the image processing.\nImage processing API refactor and simplification\n\nThe cover method for cropping images to specific dimensions has been removed from both the Asset class and the Twig filters. All resizing and cropping operations are now handled via an enhanced resize method that accepts both width and height, and crops the image if both are provided.\nThe resize method in Asset and the corresponding Twig filter now accept both width and height as optional parameters, providing greater flexibility and reducing code duplication.\nThe Image::resize method is updated to handle both resizing and cropping, replacing both the previous resize and cover methods. It now also includes an option to remove animation from images.\n\nTemplate and filter usage updates\n\nThe cover Twig filter is removed, and all usages in templates are updated to use the new resize(width, height) signature.\nThe metatags template now uses the new resize filter for OpenGraph images, passing both width and height where appropriate.\n\nError handling and code clarity\n\nException messages throughout the image processing code have been standardized to include periods at the end and clarify the error context.\nMinor code cleanups and improved documentation for image processing methods.\n\nHTML image rendering improvements\n\nThe sizes attribute for &lt;source&gt; elements is now only included when not empty, preventing invalid HTML.\nThe srcset attribute is only added to images when it is not empty, improving output correctness.\n\nOverall, these changes modernize and streamline image handling, making the API easier to use and maintain.",
      "content_html": "<p>This release refactors and simplifies the image resizing and cropping logic, consolidating the functionality into a single, more flexible <code translate=\"no\">resize</code> method. It also updates related Twig filters and templates to use the new approach and improves error handling and documentation throughout the image processing.</p>\n<h3 id=\"image-processing-api-refactor-and-simplification\">Image processing API refactor and simplification</h3>\n<ul>\n<li>The <code translate=\"no\">cover</code> method for cropping images to specific dimensions has been removed from both the <code translate=\"no\">Asset</code> class and the Twig filters. All resizing and cropping operations are now handled via an enhanced <code translate=\"no\">resize</code> method that accepts both width and height, and crops the image if both are provided.</li>\n<li>The <code translate=\"no\">resize</code> method in <code translate=\"no\">Asset</code> and the corresponding Twig filter now accept both width and height as optional parameters, providing greater flexibility and reducing code duplication.</li>\n<li>The <code translate=\"no\">Image::resize</code> method is updated to handle both resizing and cropping, replacing both the previous <code translate=\"no\">resize</code> and <code translate=\"no\">cover</code> methods. It now also includes an option to remove animation from images.</li>\n</ul>\n<h3 id=\"template-and-filter-usage-updates\">Template and filter usage updates</h3>\n<ul>\n<li>The <code translate=\"no\">cover</code> Twig filter is removed, and all usages in templates are updated to use the new <code translate=\"no\">resize(width, height)</code> signature.</li>\n<li>The metatags template now uses the new <code translate=\"no\">resize</code> filter for OpenGraph images, passing both width and height where appropriate.</li>\n</ul>\n<h3 id=\"error-handling-and-code-clarity\">Error handling and code clarity</h3>\n<ul>\n<li>Exception messages throughout the image processing code have been standardized to include periods at the end and clarify the error context.</li>\n<li>Minor code cleanups and improved documentation for image processing methods.</li>\n</ul>\n<h3 id=\"html-image-rendering-improvements\">HTML image rendering improvements</h3>\n<ul>\n<li>The <code translate=\"no\">sizes</code> attribute for <code translate=\"no\">&lt;source&gt;</code> elements is now only included when not empty, preventing invalid HTML.</li>\n<li>The <code translate=\"no\">srcset</code> attribute is only added to images when it is not empty, improving output correctness.</li>\n</ul>\n<p>Overall, these changes modernize and streamline image handling, making the API easier to use and maintain.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2025/12/31/cecil-8.76.0-released/",
      "url": "https://main.cecil.app/news/2025/12/31/cecil-8.76.0-released/",
      "title": "Cecil 8.76.0 released",
      "summary": "Upgrades minimum PHP version to 8.2, adds desktop notifications, and improves build and test processes.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2025-12-31T00:00:00+00:00","content_text": "This release upgrades the project to require PHP 8.2 or higher. It also introduces support for desktop notifications and improves the build and test process. The most important changes are grouped below.\nPHP Version and Dependency Upgrades\nThe minimum required PHP version is now 8.2 (was 8.1), and support for PHP 8.1 is dropped across all configuration and documentation files, including composer.json, CI\/CD workflows, and documentation.\nSymfony and related PHP package dependencies are updated from version 6.4 to 7.4, and other dependencies are also upgraded. New dependency jolicode\/jolinotif is added, and performing\/twig-components is bumped to ^0.7.\nDocumentation Updates\nAll documentation, including the README and quick start guides, is updated to require PHP 8.2+.\nThe build instructions now include steps for building both PHAR and full packages, and reference the new tools used.\nFeature Additions\nAdds a --notif option to CLI commands, enabling desktop notifications on build completion and server start.",
      "content_html": "<p>This release upgrades the project to require PHP 8.2 or higher. It also introduces support for desktop notifications and improves the build and test process. The most important changes are grouped below.</p>\n<h3 id=\"php-version-and-dependency-upgrades\">PHP Version and Dependency Upgrades</h3>\n<p>The minimum required PHP version is now 8.2 (was 8.1), and support for PHP 8.1 is dropped across all configuration and documentation files, including composer.json, CI/CD workflows, and documentation.<br>\nSymfony and related PHP package dependencies are updated from version 6.4 to 7.4, and other dependencies are also upgraded. New dependency <code translate=\"no\">jolicode/jolinotif</code> is added, and <code translate=\"no\">performing/twig-components</code> is bumped to ^0.7.</p>\n<h3 id=\"documentation-updates\">Documentation Updates</h3>\n<p>All documentation, including the README and quick start guides, is updated to require PHP 8.2+.<br>\nThe build instructions now include steps for building both PHAR and full packages, and reference the new tools used.</p>\n<h3 id=\"feature-additions\">Feature Additions</h3>\n<p>Adds a <code translate=\"no\">--notif</code> option to CLI commands, enabling desktop notifications on build completion and server start.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2025/12/09/cecil-8.75.0-released/",
      "url": "https://main.cecil.app/news/2025/12/09/cecil-8.75.0-released/",
      "title": "Cecil 8.75.0 released",
      "summary": "Enhances the asset handling system, especially for audio and video files.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2025-12-09T00:00:00+00:00","content_text": "This release significantly enhances the asset handling system, especially for audio and video files. The changes include improved extraction and documentation of media metadata, new utility methods for assets, and codebase refactoring for clarity and maintainability.\nAsset Metadata and API Enhancements\n\nAudio and video assets now expose richer metadata: audio assets provide duration, bitrate, and channel, while video assets provide duration, width, and height. These properties are now directly available on asset objects, making them easier to use in templates.\n\nDocumentation Updates\n\nThe documentation for templates and asset usage is updated to reflect new asset properties and usage examples for audio and video files.\n\nThese changes collectively make asset handling more powerful and easier to use, especially for media files, while improving code clarity and maintainability.",
      "content_html": "<p>This release significantly enhances the asset handling system, especially for audio and video files. The changes include improved extraction and documentation of media metadata, new utility methods for assets, and codebase refactoring for clarity and maintainability.</p>\n<h3 id=\"asset-metadata-and-api-enhancements\">Asset Metadata and API Enhancements</h3>\n<ul>\n<li>Audio and video assets now expose richer metadata: audio assets provide <code translate=\"no\">duration</code>, <code translate=\"no\">bitrate</code>, and <code translate=\"no\">channel</code>, while video assets provide <code translate=\"no\">duration</code>, <code translate=\"no\">width</code>, and <code translate=\"no\">height</code>. These properties are now directly available on asset objects, making them easier to use in templates.</li>\n</ul>\n<h3 id=\"documentation-updates\">Documentation Updates</h3>\n<ul>\n<li>The documentation for templates and asset usage is updated to reflect new asset properties and usage examples for audio and video files.</li>\n</ul>\n<p>These changes collectively make asset handling more powerful and easier to use, especially for media files, while improving code clarity and maintainability.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2025/12/03/whats-new-since-8.37/",
      "url": "https://main.cecil.app/news/2025/12/03/whats-new-since-8.37/",
      "title": "What's new since version 8.37?",
      "summary": "List of changes since the release of Cecil 8.37.0.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2025-12-03T00:00:00+00:00","content_text": "The latest version is 8.74, released on December 2, 2025. Here are the main new features and changes since version 8.37.\nMajor new features\n\nImproved support for responsive images — Added support for pixel density (DPR) for responsive images (allows optimization of srcset for high-density screens).\nAbility to override robots.txt — Ability to create a pages\/robots.md page to replace the default robots.txt. Useful for managing indexing exclusions per project.\nImproved post-processing — Continued use of extension\/post-processor capabilities (inherited from the 8.x branch) to enable final output processing.\n\nImprovements &amp; usability\n\nSimplified configuration structure — Options are easier to disable (option: false or option: enabled: false); automatic import of theme configurations via setConfig() \/ setSourceDir().\nRedesigned\/enhanced cache — New, more robust cache mechanism (automatic rebuilding when files change), at the cost of a slight performance hit in some cases.\nImproved error message handling and display — Error messages are clearer to facilitate debugging.\n\nMajor fixes\n\nUpdated remote asset management — Remote assets are better managed (caching, fallback, etc.).\nFixes for templates and filters — Cleanup of deprecated elements\/those left in the documentation (following the 8.0 → 8.x migration) and various fixes related to asset\/template rendering.\n\nBreaking changes &amp; points of attention\n\nRemoval of default taxonomies — tag and category are no longer created automatically: if you were using these taxonomies, you must declare them explicitly in the taxonomies: configuration. There is a risk of broken pages if you update without adapting the configuration.\nRenaming\/moving options — Several options have been renamed or moved (e.g., pagination → pages:pagination, paths → pages:paths, remote_fallback → fallback, force_slash → leading_slash).\nCheck custom templates — Some deprecated Twig files and filters were removed in the 8.x updates; you should review and update your custom templates.\n\n\nRecommended actions for migration\n\nExplicitly add taxonomies: if you plan to use tags\/category.\nCheck and adapt the renamed options (pagination, paths, assets fallback, leading_slash).\nTest the complete build and verify the cache\/remote assets.\nReview the Twig templates (deprecated functions\/filters) and take advantage of new features (DPR\/pixel density in images).\n",
      "content_html": "<p>The latest version is <strong>8.74</strong>, released on December 2, 2025. Here are the main new features and changes since version 8.37.</p>\n<h3 id=\"major-new-features\">Major new features</h3>\n<ul>\n<li><strong>Improved support for responsive images</strong> — Added support for pixel density (DPR) for responsive images (allows optimization of srcset for high-density screens).</li>\n<li><strong>Ability to override robots.txt</strong> — Ability to create a <code translate=\"no\">pages/robots.md</code> page to replace the default <code translate=\"no\">robots.txt</code>. Useful for managing indexing exclusions per project.</li>\n<li><strong>Improved post-processing</strong> — Continued use of extension/post-processor capabilities (inherited from the 8.x branch) to enable final output processing.</li>\n</ul>\n<h3 id=\"improvements-usability\">Improvements &amp; usability</h3>\n<ul>\n<li><strong>Simplified configuration structure</strong> — Options are easier to disable (<code translate=\"no\">option: false</code> or <code translate=\"no\">option: enabled: false</code>); automatic import of theme configurations via <code translate=\"no\">setConfig()</code> / <code translate=\"no\">setSourceDir()</code>.</li>\n<li><strong>Redesigned/enhanced cache</strong> — New, more robust cache mechanism (automatic rebuilding when files change), at the cost of a slight performance hit in some cases.</li>\n<li><strong>Improved error message handling and display</strong> — Error messages are clearer to facilitate debugging.</li>\n</ul>\n<h3 id=\"major-fixes\">Major fixes</h3>\n<ul>\n<li><strong>Updated remote asset management</strong> — Remote assets are better managed (caching, fallback, etc.).</li>\n<li><strong>Fixes for templates and filters</strong> — Cleanup of deprecated elements/those left in the documentation (following the 8.0 → 8.x migration) and various fixes related to asset/template rendering.</li>\n</ul>\n<h3 id=\"breaking-changes-points-of-attention\">Breaking changes &amp; points of attention</h3>\n<ul>\n<li><strong>Removal of default taxonomies</strong> — <code translate=\"no\">tag</code> and <code translate=\"no\">category</code> are no longer created automatically: if you were using these taxonomies, you must <strong>declare them explicitly</strong> in the <code translate=\"no\">taxonomies:</code> configuration. There is a risk of broken pages if you update without adapting the configuration.</li>\n<li><strong>Renaming/moving options</strong> — Several options have been renamed or moved (e.g., <code translate=\"no\">pagination</code> → <code translate=\"no\">pages:pagination</code>, <code translate=\"no\">paths</code> → <code translate=\"no\">pages:paths</code>, <code translate=\"no\">remote_fallback</code> → <code translate=\"no\">fallback</code>, <code translate=\"no\">force_slash</code> → <code translate=\"no\">leading_slash</code>).</li>\n<li><strong>Check custom templates</strong> — Some deprecated Twig files and filters were removed in the 8.x updates; you should review and update your custom templates.</li>\n</ul>\n<hr>\n<h3 id=\"recommended-actions-for-migration\">Recommended actions for migration</h3>\n<ol>\n<li>Explicitly add <code translate=\"no\">taxonomies:</code> if you plan to use <code translate=\"no\">tags</code>/<code translate=\"no\">category</code>.</li>\n<li>Check and adapt the renamed options (pagination, paths, assets fallback, leading_slash).</li>\n<li>Test the complete build and verify the cache/remote assets.</li>\n<li>Review the Twig templates (deprecated functions/filters) and take advantage of new features (DPR/pixel density in images).</li>\n</ol>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2025/04/23/cecil-8.37.0-released/",
      "url": "https://main.cecil.app/news/2025/04/23/cecil-8.37.0-released/",
      "title": "Cecil 8.37.0 released",
      "summary": "Configuration simplified and cache mechanics improved",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2025-04-23T00:00:00+00:00","content_text": "Key changes\n\nsimplification of the configuration structure\ncache enhancement: a little bit less performant but more comfortable\nbetter errors message management\n\nEnhancements\nConfiguration\n\nAn option can be disabled directly with option:false or with the subkey enabled: option:enabled:false\nThemes configuration is automatticaly imported on setConfig() and setSourceDir()\nDeprecated options are now listed in the dedicated file config\/deprecated.php\n\nCache and assets\n\nCache mecachics rebuilded: it's a little bit less performant but it better handle files changed to refresh cache automatically\nRemote files are now cached 7 days\n\nBreaking changes\n\nDefault taxonomies tag and category removed. If you used them, you must add each one to your site configuration\nConfiguration options moved:\npagination -&gt; pages:pagination\npaths -&gt; pages:paths\n\n\nAssets options renamed:\nremote_fallback -&gt; fallback\nforce_slash -&gt; leading_slash\n\n\n",
      "content_html": "<h3 id=\"key-changes\">Key changes</h3>\n<ol>\n<li>simplification of the configuration structure</li>\n<li>cache enhancement: a little bit less performant but more comfortable</li>\n<li>better errors message management</li>\n</ol>\n<h3 id=\"enhancements\">Enhancements</h3>\n<h4>Configuration</h4>\n<ul>\n<li>An option can be disabled directly with <code translate=\"no\">option:false</code> or with the subkey <code translate=\"no\">enabled</code>: <code translate=\"no\">option:enabled:false</code></li>\n<li>Themes configuration is automatticaly imported on <code translate=\"no\">setConfig()</code> and <code translate=\"no\">setSourceDir()</code></li>\n<li>Deprecated options are now listed in the dedicated file <code translate=\"no\">config/deprecated.php</code></li>\n</ul>\n<h4>Cache and assets</h4>\n<ul>\n<li>Cache mecachics rebuilded: it's a little bit less performant but it better handle files changed to refresh cache automatically</li>\n<li>Remote files are now cached 7 days</li>\n</ul>\n<h3 id=\"breaking-changes\">Breaking changes</h3>\n<ul>\n<li>Default taxonomies <code translate=\"no\">tag</code> and <code translate=\"no\">category</code> removed. If you used them, you must add each one to your site configuration</li>\n<li>Configuration options moved:<ul>\n<li><code translate=\"no\">pagination</code> -&gt; <code translate=\"no\">pages:pagination</code></li>\n<li><code translate=\"no\">paths</code> -&gt; <code translate=\"no\">pages:paths</code></li>\n</ul>\n</li>\n<li>Assets options renamed:<ul>\n<li><code translate=\"no\">remote_fallback</code> -&gt; <code translate=\"no\">fallback</code></li>\n<li><code translate=\"no\">force_slash</code> -&gt; <code translate=\"no\">leading_slash</code></li>\n</ul>\n</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/12/08/cecil-8.0.0-released/",
      "url": "https://main.cecil.app/news/2023/12/08/cecil-8.0.0-released/",
      "title": "Cecil 8.0.0 released",
      "summary": "This is a major branch release: its goal is to start the road to PHP 8 🐘",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-12-08T00:00:00+00:00","content_text": "Enhancements\n\nExtends Cecil with output post processors\nCustomized Generator, Postprocessor and Extension class available for themes too\nBetter configuration options hierarchy\nAccess to raw site configuration from a template with config.xxx\nConfiguration validation enhanced\nLogs enhanced\nAsset find file enhanced\n\nBreaking changes\n\nDropping support for PHP 7.x\nNo more legacy support of the content directory: use pages instead\n\nConfiguration options\nfrontmatter:\nbody:\ndefaultpages:\nvirtualpages:\ngenerators:\ntranslations:\nextensions:\npostprocess:\nhave been changed for:\npages:\n  frontmatter:\n  body:\n  default:\n  virtual:\n  generators:\nlayouts:\n  translations:\n  extensions:\noptimize:\nCommands\n\nThe build and serve command option --postprocess have been changed for --optimize\n\nTemplates\n\npagination.html.twig removed (use paginator.html.twig instead)\ngoogleanalytics.js.twig removed\nAll deprecated functions and filters have been removed\n\nFix\n\nFix render default timezone\nFix localizeddate fallback filter\nFix asset() bundle\nFix HTML asset filter with WebP\nFix remote asset fallback\n\nPerformance\n\nCollection item access time enhanced\npost processors class autoloader moved\njsonld.js.twig performances fixed\n\nDocs\n\nDocumentation updated\n\nMiscs\n\nDependencies updated\n\nTests\n\nTest fixtures enhanced\n",
      "content_html": "<h3 id=\"enhancements\">Enhancements</h3>\n<ul>\n<li>Extends Cecil with <a href=\"/documentation/extend/#output-post-processor\">output post processors</a></li>\n<li>Customized <em>Generator</em>, <em>Postprocessor</em> and <em>Extension</em> class available for themes too</li>\n<li>Better configuration options hierarchy</li>\n<li>Access to <em>raw</em> site configuration from a template with <a href=\"/documentation/templates/#site\"><code translate=\"no\">config.xxx</code></a></li>\n<li>Configuration validation enhanced</li>\n<li>Logs enhanced</li>\n<li>Asset find file enhanced</li>\n</ul>\n<h3 id=\"breaking-changes\">Breaking changes</h3>\n<ul>\n<li>Dropping support for PHP 7.x</li>\n<li>No more legacy support of the <code translate=\"no\">content</code> directory: use <code translate=\"no\">pages</code> instead</li>\n</ul>\n<h4>Configuration options</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">frontmatter:</span>\n<span class=\"hljs-attr\">body:</span>\n<span class=\"hljs-attr\">defaultpages:</span>\n<span class=\"hljs-attr\">virtualpages:</span>\n<span class=\"hljs-attr\">generators:</span>\n<span class=\"hljs-attr\">translations:</span>\n<span class=\"hljs-attr\">extensions:</span>\n<span class=\"hljs-attr\">postprocess:</span></code></pre>\n<p>have been changed for:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">pages:</span>\n  <span class=\"hljs-attr\">frontmatter:</span>\n  <span class=\"hljs-attr\">body:</span>\n  <span class=\"hljs-attr\">default:</span>\n  <span class=\"hljs-attr\">virtual:</span>\n  <span class=\"hljs-attr\">generators:</span>\n<span class=\"hljs-attr\">layouts:</span>\n  <span class=\"hljs-attr\">translations:</span>\n  <span class=\"hljs-attr\">extensions:</span>\n<span class=\"hljs-attr\">optimize:</span></code></pre>\n<h4>Commands</h4>\n<ul>\n<li>The <a href=\"/documentation/commands/#build\"><code translate=\"no\">build</code></a> and <a href=\"/documentation/commands/#serve\"><code translate=\"no\">serve</code></a> command option <code translate=\"no\">--postprocess</code> have been changed for <code translate=\"no\">--optimize</code></li>\n</ul>\n<h4>Templates</h4>\n<ul>\n<li><code translate=\"no\">pagination.html.twig</code> removed (use <code translate=\"no\">paginator.html.twig</code> instead)</li>\n<li><code translate=\"no\">googleanalytics.js.twig</code> removed</li>\n<li>All deprecated functions and filters have been removed</li>\n</ul>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix render default timezone</li>\n<li>Fix <code translate=\"no\">localizeddate</code> fallback filter</li>\n<li>Fix <code translate=\"no\">asset()</code> bundle</li>\n<li>Fix HTML asset filter with WebP</li>\n<li>Fix remote asset fallback</li>\n</ul>\n<h3 id=\"performance\">Performance</h3>\n<ul>\n<li>Collection item access time enhanced</li>\n<li><em>post processors</em> class autoloader moved</li>\n<li><code translate=\"no\">jsonld.js.twig</code> performances fixed</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li><a href=\"/documentation/\">Documentation</a> updated</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>\n<h3 id=\"tests\">Tests</h3>\n<ul>\n<li>Test fixtures enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/08/16/cecil-7.45.0-released/",
      "url": "https://main.cecil.app/news/2023/08/16/cecil-7.45.0-released/",
      "title": "Cecil 7.45.0 released",
      "summary": "Get dimensions of a video asset.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-08-16T00:00:00+00:00","content_text": "Features\nGet dimensions of a video asset\n{% set asset = asset('video.mp4') %}\nDimensions: {{ asset.video.width }} x {{ asset.video.height }}\nDocumentation →\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Get dimensions of a video asset</h4>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">set</span></span> asset = asset('video.mp4') %}</span><span class=\"xml\">\nDimensions: </span><span class=\"hljs-template-variable\">{{ asset.video.width }}</span><span class=\"xml\"> x </span><span class=\"hljs-template-variable\">{{ asset.video.height }}</span></code></pre>\n<p><a href=\"/documentation/templates/#asset-attributes\">Documentation →</a></p>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/08/02/cecil-7.44.0-released/",
      "url": "https://main.cecil.app/news/2023/08/02/cecil-7.44.0-released/",
      "title": "Cecil 7.44.0 released",
      "summary": "Disable default metatag image.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-08-02T00:00:00+00:00","content_text": "Features\nDisable default metatag image\nYou can now disable the metatag image (Open Graph and co) with the following option:\n```yaml\nmetatags:\n  image:\n    enabled: false\nDocumentation →\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Disable default metatag image</h4>\n<p>You can now disable the metatag image (Open Graph and co) with the following option:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-string\">```yaml</span>\n<span class=\"hljs-attr\">metatags:</span>\n  <span class=\"hljs-attr\">image:</span>\n    <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">false</span></code></pre>\n<p><a href=\"/documentation/configuration/#metatags-configuration\">Documentation →</a></p>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/06/22/cecil-7.43.0-released/",
      "url": "https://main.cecil.app/news/2023/06/22/cecil-7.43.0-released/",
      "title": "Cecil 7.43.0 released",
      "summary": "New dump function.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-06-22T00:00:00+00:00","content_text": "Features\nNew dump function\nThe d() function is the HTML version of dump() and use the Symfony VarDumper Component behind the scenes.\nDocumentation →\nMiscs\n\nDependencies updated\nSkeleton templates updates\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New dump function</h4>\n<p>The <code translate=\"no\">d()</code> function is the HTML version of <a href=\"https://cecil.app/documentation/templates/#dump\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">dump()</code></a> and use the <a href=\"https://symfony.com/doc/5.4/components/var_dumper.html\" target=\"_blank\" rel=\"noopener noreferrer\">Symfony VarDumper Component</a> behind the scenes.</p>\n<p><a href=\"/documentation/templates/#d\">Documentation →</a></p>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Skeleton templates updates</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/06/04/cecil-7.40.0-released/",
      "url": "https://main.cecil.app/news/2023/06/04/cecil-7.40.0-released/",
      "title": "Cecil 7.40.0 released",
      "summary": "i18n for taxonomy.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-06-04T00:00:00+00:00","content_text": "Features\ni18n for taxonomy\nAdds i18n support to the taxonomy feature: you can use localized vocabularies and terms in your pages.\nConfiguration\ntaxonomies:\n  categories: categorie\nlanguages:\n  - code: en\n    name: English\n    locale: en\n  - code: fr\n    name: Français\n    locale: fr_FR\n    config:\n      taxonomies:\n        catégories: catégorie\nPage\nexample.fr.md:\n---\ncatégories: [Catégorie 1, Catégorie 2]\n---\nTemplate\nvocabulary.html.twig:\n&lt;ul&gt;\n{% for term in page.terms %}\n  &lt;li&gt;\n-    &lt;h2&gt;&lt;a href=\"{{ url(page.path ~ '\/' ~ term.id) }}\"&gt;{{ term.name }}&lt;\/a&gt; ({{ term|length }})&lt;\/h2&gt;\n+    &lt;h2&gt;&lt;a href=\"{{ url(term.id, {language: site.language}) }}\"&gt;{{ term.name }}&lt;\/a&gt; ({{ term|length }})&lt;\/h2&gt;\n  &lt;\/li&gt;\n{% endfor %}\n&lt;\/ul&gt;\nDocumentation →\nFix\n\nDo not remove the sectionvariable of excluded pages\nFix live reload script injection\nFix show:content command\n\nMiscs\n\nDependencies updated\nshow:config command enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>i18n for taxonomy</h4>\n<p>Adds i18n support to the <a href=\"/documentation/content/#taxonomy\">taxonomy</a> feature: you can use localized vocabularies and terms in your pages.</p>\n<h5>Configuration</h5>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">taxonomies:</span>\n  <span class=\"hljs-attr\">categories:</span> <span class=\"hljs-string\">categorie</span>\n<span class=\"hljs-attr\">languages:</span>\n  <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">code:</span> <span class=\"hljs-string\">en</span>\n    <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">English</span>\n    <span class=\"hljs-attr\">locale:</span> <span class=\"hljs-string\">en</span>\n  <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">code:</span> <span class=\"hljs-string\">fr</span>\n    <span class=\"hljs-attr\">name:</span> <span class=\"hljs-string\">Français</span>\n    <span class=\"hljs-attr\">locale:</span> <span class=\"hljs-string\">fr_FR</span>\n    <span class=\"hljs-attr\">config:</span>\n      <span class=\"hljs-attr\">taxonomies:</span>\n        <span class=\"hljs-attr\">catégories:</span> <span class=\"hljs-string\">catégorie</span></code></pre>\n<h5>Page</h5>\n<p><em>example.fr.md:</em></p>\n<pre><code translate=\"no\">---\ncatégories: [Catégorie 1, Catégorie 2]\n---</code></pre>\n<h5>Template</h5>\n<p><em>vocabulary.html.twig:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">ul</span>&gt;</span>\n</span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">for</span></span> term in page.terms %}</span><span class=\"xml\">\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">li</span>&gt;</span>\n-    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h2</span>&gt;</span><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(page.path ~ '/' ~ term.id) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span></span><span class=\"hljs-template-variable\">{{ term.name }}</span><span class=\"xml\"><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span> (</span><span class=\"hljs-template-variable\">{{ term|<span class=\"hljs-keyword\">length</span> }}</span><span class=\"xml\">)<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">h2</span>&gt;</span>\n+    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">h2</span>&gt;</span><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(term.id, {language: site.language}) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span></span><span class=\"hljs-template-variable\">{{ term.name }}</span><span class=\"xml\"><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span> (</span><span class=\"hljs-template-variable\">{{ term|<span class=\"hljs-keyword\">length</span> }}</span><span class=\"xml\">)<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">h2</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">li</span>&gt;</span>\n</span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endfor</span></span> %}</span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">ul</span>&gt;</span></span></code></pre>\n<p><a href=\"/documentation/content/#taxonomy\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Do not remove the <code translate=\"no\">section</code>variable of excluded pages</li>\n<li>Fix live reload script injection</li>\n<li>Fix <code translate=\"no\">show:content</code> command</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li><code translate=\"no\">show:config</code> command enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/05/24/cecil-7.39.0-released/",
      "url": "https://main.cecil.app/news/2023/05/24/cecil-7.39.0-released/",
      "title": "Cecil 7.39.0 released",
      "summary": "Processing time and consumed memory.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-05-24T00:00:00+00:00","content_text": "Features\nProcessing time and consumed memory\nDisplay the processing time and consumed memory on each step, in verbose mode (-vv):\n(...)\n&lt;step name&gt; done in X.XX s (X mb)\n(...)\nMiscs\n\nCode enhanced\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Processing time and consumed memory</h4>\n<p>Display the processing time and consumed memory on each step, in verbose mode (<code translate=\"no\">-vv</code>):</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">(...)\n&lt;step name&gt; <span class=\"hljs-keyword\">done</span> <span class=\"hljs-keyword\">in</span> X.XX s (X mb)\n(...)</code></pre>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code enhanced</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/05/23/cecil-7.38.0-released/",
      "url": "https://main.cecil.app/news/2023/05/23/cecil-7.38.0-released/",
      "title": "Cecil 7.38.0 released",
      "summary": "Changes ID of localized pages.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-05-23T00:00:00+00:00","content_text": "Breaking change\nChanges ID of localized pages\nThe way to define a page ID have been refactored: the language code of a translated page is no more a suffix (page.code) and is now a prefix (code\/page).\nExample: blog\/post-1.fr become fr\/blog\/post-1.\nFix\n\ngetIdWithoutLang() fixed\nPagination sorting fixed\n\nMiscs\n\nnative_function_invocation rule applied for better performance (e.g.: \\is_array() instead of is_array())\nDependencies updated\n",
      "content_html": "<h3 id=\"breaking-change\">Breaking change</h3>\n<h4>Changes ID of localized pages</h4>\n<p>The way to define a page ID have been refactored: the language code of a translated page is no more a suffix (<code translate=\"no\">page.code</code>) and is now a prefix (<code translate=\"no\">code/page</code>).</p>\n<p>Example: <code translate=\"no\">blog/post-1.fr</code> become <code translate=\"no\">fr/blog/post-1</code>.</p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li><code translate=\"no\">getIdWithoutLang()</code> fixed</li>\n<li>Pagination sorting fixed</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li><code translate=\"no\">native_function_invocation</code> rule applied for better performance (e.g.: <code translate=\"no\">\\is_array()</code> instead of <code translate=\"no\">is_array()</code>)</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/05/22/cecil-7.37.0-released/",
      "url": "https://main.cecil.app/news/2023/05/22/cecil-7.37.0-released/",
      "title": "Cecil 7.37.0 released",
      "summary": "New variable `page.paginator.links.path`.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-05-22T00:00:00+00:00","content_text": "Features\nNew variable page.paginator.links.path\nThe paginator variable page.paginator.links.path returns the Page ID without position index.\nExample:\n{% if page.paginator %}\n&lt;div&gt;\n  {% for paginator_index in 1..page.paginator.count %}\n    {# not the current page: URL #}\n    {% if paginator_index != page.paginator.current %}\n      {# the first page #}\n      {% if paginator_index == 1 %}\n  &lt;a href=\"{{ url(page.paginator.links.first) }}\"&gt;{{ paginator_index }}&lt;\/a&gt;\n      {% else %}\n  &lt;a href=\"{{ url(page.paginator.links.path ~ '\/' ~ paginator_index) }}\"&gt;{{ paginator_index }}&lt;\/a&gt;\n      {% endif %}\n    {# the current page: not URL #}\n    {% else %}\n  {{ paginator_index }}\n    {% endif %}\n  {% endfor %}\n&lt;\/div&gt;\n{% endif %}\nDocumentation →\nFix\n\nFix metatags favicon asset\nFix clear-cache command option\nFix console debug mode\nFix logo in JSON-LD template\nFix JSON templates\n&lt;script&gt; tag added to live reload script (by @ahnlak)\n\nMiscs\n\nDependencies updated\nUse Composer dump-autoloaderdirective for better performance\nStep logged messages enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New variable <code translate=\"no\">page.paginator.links.path</code></h4>\n<p>The <em>paginator</em> variable <code translate=\"no\">page.paginator.links.path</code> returns the Page ID without position index.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if</span></span> page.paginator %}</span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div</span>&gt;</span>\n  </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">for</span></span> paginator_index in 1..page.paginator.count %}</span><span class=\"xml\">\n    </span><span class=\"hljs-comment\">{# not the current page: URL #}</span><span class=\"xml\">\n    </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if</span></span> paginator_index != page.paginator.current %}</span><span class=\"xml\">\n      </span><span class=\"hljs-comment\">{# the first page #}</span><span class=\"xml\">\n      </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">if</span></span> paginator_index == 1 %}</span><span class=\"xml\">\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(page.paginator.links.first) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span></span><span class=\"hljs-template-variable\">{{ paginator_index }}</span><span class=\"xml\"><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span>\n      </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\">else</span> %}</span><span class=\"xml\">\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(page.paginator.links.path ~ '/' ~ paginator_index) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span></span><span class=\"hljs-template-variable\">{{ paginator_index }}</span><span class=\"xml\"><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span>\n      </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif</span></span> %}</span><span class=\"xml\">\n    </span><span class=\"hljs-comment\">{# the current page: not URL #}</span><span class=\"xml\">\n    </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\">else</span> %}</span><span class=\"xml\">\n  </span><span class=\"hljs-template-variable\">{{ paginator_index }}</span><span class=\"xml\">\n    </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif</span></span> %}</span><span class=\"xml\">\n  </span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endfor</span></span> %}</span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">div</span>&gt;</span>\n</span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">endif</span></span> %}</span></code></pre>\n<p><a href=\"/documentation/templates/#page-paginator\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix metatags favicon asset</li>\n<li>Fix <code translate=\"no\">clear-cache</code> command option</li>\n<li>Fix console debug mode</li>\n<li>Fix logo in JSON-LD template</li>\n<li>Fix JSON templates</li>\n<li><code translate=\"no\">&lt;script&gt;</code> tag added to live reload script (by <a href=\"https://github.com/ahnlak\" target=\"_blank\" rel=\"noopener noreferrer\">@ahnlak</a>)</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Use Composer <code translate=\"no\">dump-autoloader</code>directive for better performance</li>\n<li>Step logged messages enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/04/15/cecil-7.36.0-released/",
      "url": "https://main.cecil.app/news/2023/04/15/cecil-7.36.0-released/",
      "title": "Cecil 7.36.0 released",
      "summary": "New taxonomy template lookup rule.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-04-15T00:00:00+00:00","content_text": "Features\nNew taxonomy template lookup rule\nYou can now easily create a custom template to list pages of a specific taxonomy term (singular): taxonomy\/&lt;singular&gt;.&lt;format&gt;.twig (Request #1669).\nDocumentation →\nFix\n\nFix favicons generation\nFix html filter in case of class attribute if empty\n\nDocs\n\nDocumentation globally enhanced\n\nMiscs\n\nDependencies updated\nCode coverage: add tests for image asset handling\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New taxonomy template lookup rule</h4>\n<p>You can now easily create a custom template to list pages of a specific taxonomy term (<em>singular</em>): <code translate=\"no\">taxonomy/&lt;singular&gt;.&lt;format&gt;.twig</code> (Request <a href=\"https://github.com/Cecilapp/Cecil/issues/1669\" target=\"_blank\" rel=\"noopener noreferrer\">#1669</a>).</p>\n<p><a href=\"/documentation/templates/#type-term\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix favicons generation</li>\n<li>Fix <code translate=\"no\">html</code> filter in case of <code translate=\"no\">class</code> attribute if empty</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Documentation globally enhanced</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code coverage: add tests for image asset handling</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/04/11/cecil-7.35.0-released/",
      "url": "https://main.cecil.app/news/2023/04/11/cecil-7.35.0-released/",
      "title": "Cecil 7.35.0 released",
      "summary": "New asset filter and functions for images.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-04-11T00:00:00+00:00","content_text": "Features\nNew asset filter and functions for images\nConvert an image to the WebP format:\n{{ asset|webp }}\nDocumentation →\nBuild srcset attribute from an asset and retrieve available sizes for a given class name:\n{{ image_srcset(asset) }}\n{{ image_sizes('class') }}\nDocumentation →\nExample:\n{% set photo = asset('photo.jpg') %}\n&lt;picture&gt;\n  &lt;source type=\"image\/webp\" srcset=\"{{ image_srcset(photo|webp) }}\" sizes=\"{{ image_sizes('photo') }}\"&gt;\n  &lt;img src=\"{{ url(photo) }}\" width=\"{{ photo.width }}\" height=\"{{ photo.height }}\" alt=\"\" class=\"photo\" srcset=\"{{ image_srcset(photo) }}\" sizes=\"{{ image_sizes('photo') }}\"&gt;\n&lt;\/picture&gt;\nFix\n\nDisable dataurl filter for SVG\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New asset filter and functions for images</h4>\n<p>Convert an image to the <a href=\"https://developers.google.com/speed/webp\" target=\"_blank\" rel=\"noopener noreferrer\">WebP</a> format:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ asset|webp }}</span></code></pre>\n<p><a href=\"/documentation/templates/#webp\">Documentation →</a></p>\n<p>Build <code translate=\"no\">srcset</code> attribute from an asset and retrieve available <code translate=\"no\">sizes</code> for a given class name:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ image_srcset(asset) }}</span><span class=\"xml\">\n</span><span class=\"hljs-template-variable\">{{ image_sizes('class') }}</span></code></pre>\n<p><a href=\"/documentation/templates/#image-srcset\">Documentation →</a></p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">set</span></span> photo = asset('photo.jpg') %}</span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">picture</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">source</span> <span class=\"hljs-attr\">type</span>=<span class=\"hljs-string\">\"image/webp\"</span> <span class=\"hljs-attr\">srcset</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image_srcset(photo|webp) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">sizes</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image_sizes('photo') }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(photo) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">width</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ photo.width }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">height</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ photo.height }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">alt</span>=<span class=\"hljs-string\">\"\"</span> <span class=\"hljs-attr\">class</span>=<span class=\"hljs-string\">\"photo\"</span> <span class=\"hljs-attr\">srcset</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image_srcset(photo) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">sizes</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image_sizes('photo') }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">picture</span>&gt;</span></span></code></pre>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Disable <code translate=\"no\">dataurl</code> filter for SVG</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/04/06/cecil-7.34.0-released/",
      "url": "https://main.cecil.app/news/2023/04/06/cecil-7.34.0-released/",
      "title": "Cecil 7.34.0 released",
      "summary": "LQIP filter.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-04-06T00:00:00+00:00","content_text": "Features\nLQIP filter\nThe Twig filter lqip returns a Low Quality Image Placeholder (LQIP) as data URL.\n{{ asset(image_path)|lqip }}\nDocumentation →\nExample:\n{% set photo_full = asset('\/photo.jpeg') %}\n{% set photo = photo_full|resize(640) %}\n&lt;div style=\"background-image:url({{ photo|lqip }});background-repeat:no-repeat;background-position:center;background-size:cover;\"&gt;\n  &lt;a href=\"{{ url(photo_full) }}\"&gt;{{ photo|html }}&lt;\/a&gt;\n&lt;\/div&gt;\nExample of progressive loading of images gallery:\n\n\n\n\n\n\nImages are not loaded, only LQIP are visible in background.\n\n\n\n\n\n\n\nImages completely loaded.\n\nDocs\n\nimgix CDN configuration added\n\nMiscs\n\nDependencies updated\nBetter image handling\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>LQIP filter</h4>\n<p>The Twig filter <code translate=\"no\">lqip</code> returns a <a href=\"https://www.guypo.com/introducing-lqip-low-quality-image-placeholders\" target=\"_blank\" rel=\"noopener noreferrer\">Low Quality Image Placeholder</a> (LQIP) as data URL.</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ asset(image_path)|lqip }}</span></code></pre>\n<p><a href=\"/documentation/templates/#lqip\">Documentation →</a></p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\">{% set photo_full = asset('/photo.jpeg') %}\n{% set photo = photo_full|resize(640) %}\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">div</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">\"background-image:url({{ photo|lqip }});background-repeat:no-repeat;background-position:center;background-size:cover;\"</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"{{ url(photo_full) }}\"</span>&gt;</span>{{ photo|html }}<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">div</span>&gt;</span></code></pre>\n<p><em>Example of progressive loading of <a href=\"https://photo-stream-demo.cecil.app/\" target=\"_blank\" rel=\"noopener noreferrer\">images gallery</a>:</em></p>\n<figure>\n<picture title=\"Images are not loaded, only LQIP are visible in background.\">\n<source type=\"image/avif\" srcset=\"/thumbnails/480x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.avif 480w, /thumbnails/768x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.avif 768w, /thumbnails/1024x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.avif 1024w\" width=\"1024\" height=\"613\" sizes=\"100vw\">\n<source type=\"image/webp\" srcset=\"/thumbnails/480x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.webp 480w, /thumbnails/768x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.webp 768w, /thumbnails/1024x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.webp 1024w\" width=\"1024\" height=\"613\" sizes=\"100vw\">\n<img src=\"/thumbnails/1024x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.png\" alt=\"LQIP low quality images\" loading=\"lazy\" decoding=\"async\" class=\"dark:brightness-90\" width=\"1024\" height=\"613\" style=\";max-width:100%;height:auto;background-image:url(data:image/png;base64,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);background-repeat:no-repeat;background-position:center;background-size:cover;\" srcset=\"/thumbnails/480x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.png 480w, /thumbnails/768x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.png 768w, /thumbnails/1024x/images/news/LQIP-low-quality-images.ff6cec9c126d936ee05a742063a8ffc3.png 1024w\" sizes=\"100vw\">\n</picture>\n<figcaption>Images are not loaded, only LQIP are visible in background.</figcaption>\n</figure>\n<figure>\n<picture title=\"Images completely loaded.\">\n<source type=\"image/avif\" srcset=\"/thumbnails/480x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.avif 480w, /thumbnails/768x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.avif 768w, /thumbnails/1024x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.avif 1024w\" width=\"1024\" height=\"613\" sizes=\"100vw\">\n<source type=\"image/webp\" srcset=\"/thumbnails/480x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.webp 480w, /thumbnails/768x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.webp 768w, /thumbnails/1024x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.webp 1024w\" width=\"1024\" height=\"613\" sizes=\"100vw\">\n<img src=\"/thumbnails/1024x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.png\" alt=\"Images loaded\" loading=\"lazy\" decoding=\"async\" class=\"dark:brightness-90\" width=\"1024\" height=\"613\" style=\";max-width:100%;height:auto;background-image:url(data:image/png;base64,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);background-repeat:no-repeat;background-position:center;background-size:cover;\" srcset=\"/thumbnails/480x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.png 480w, /thumbnails/768x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.png 768w, /thumbnails/1024x/images/news/LQIP-images-loaded.383b5f23525048692e47552e92d50f25.png 1024w\" sizes=\"100vw\">\n</picture>\n<figcaption>Images completely loaded.</figcaption>\n</figure>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li><em>imgix</em> CDN configuration added</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Better image handling</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/03/20/cecil-7.33.0-released/",
      "url": "https://main.cecil.app/news/2023/03/20/cecil-7.33.0-released/",
      "title": "Cecil 7.33.0 released",
      "summary": "Support of image CDN.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-03-20T00:00:00+00:00","content_text": "Features\nSupport of image CDN\nYou can easily use a CDN to provide the images of your site, for example:\nassets:\n  images:\n    cdn:\n      enabled: true\n      # Cloudimage\n      account: 'xxxx'\n      url: 'https:\/\/%account%.cloudimg.io\/%image_url%?w=%width%&amp;q=%quality%&amp;force_format=%format%'\nCDN providers →\nDocumentation →\nFix\n\nFix link to Markdown file, with anchor\nFix duplicated responsive image\n\nDocs\n\nCommands list updated\nImages documentation enhanced\n\nMiscs\n\nAssets and WebP converter code refactored\nAdd auto-refresh to 404 locally served page\nBetter responsive widths\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Support of image CDN</h4>\n<p>You can easily use a CDN to provide the images of your site, for example:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">assets:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">cdn:</span>\n      <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span>\n      <span class=\"hljs-comment\"># Cloudimage</span>\n      <span class=\"hljs-attr\">account:</span> <span class=\"hljs-string\">'xxxx'</span>\n      <span class=\"hljs-attr\">url:</span> <span class=\"hljs-string\">'https://%account%.cloudimg.io/%image_url%?w=%width%&amp;q=%quality%&amp;force_format=%format%'</span></code></pre>\n<p><a href=\"/documentation/configuration/cdn-providers/\">CDN providers →</a></p>\n<p><a href=\"/documentation/configuration/#image-cdn\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix link to Markdown file, with anchor</li>\n<li>Fix duplicated responsive image</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Commands list updated</li>\n<li>Images documentation enhanced</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Assets and WebP converter code refactored</li>\n<li>Add auto-refresh to 404 locally served page</li>\n<li>Better responsive widths</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/03/09/cecil-7.32.0-released/",
      "url": "https://main.cecil.app/news/2023/03/09/cecil-7.32.0-released/",
      "title": "Cecil 7.32.0 released",
      "summary": "`decoding=\"async\"` added to images.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-03-09T00:00:00+00:00","content_text": "Features\ndecoding=\"async\" added to images\nThe attribute decoding=\"async\" is automatically added to Markdown images.\nExample:\n![](\/image.jpg)\nIs converted to:\n&lt;img src=\"\/image.jpg\" decoding=\"async\"&gt;\nDocumentation →\nFix\n\nFix default class in Markdown images\nFix configuration error messages\n\nDocs\n\nUpdate metatags configuration\n\nMiscs\n\nDependencies updated\nCode coverage enhanced\nPrint a message if the EXIF extension is loaded\nexif_read_data error handler refactored\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4><code translate=\"no\">decoding=\"async\"</code> added to images</h4>\n<p>The attribute <code translate=\"no\">decoding=\"async\"</code> is automatically added to Markdown images.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![](/image.jpg)</code></pre>\n<p>Is converted to:</p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/image.jpg\"</span> <span class=\"hljs-attr\">decoding</span>=<span class=\"hljs-string\">\"async\"</span>&gt;</span></code></pre>\n<p><a href=\"/documentation/content/#decoding\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix default class in Markdown images</li>\n<li>Fix configuration error messages</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Update <code translate=\"no\">metatags</code> configuration</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code coverage enhanced</li>\n<li>Print a message if the EXIF extension is loaded</li>\n<li><code translate=\"no\">exif_read_data</code> error handler refactored</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/03/07/cecil-7.31.0-released/",
      "url": "https://main.cecil.app/news/2023/03/07/cecil-7.31.0-released/",
      "title": "Cecil 7.31.0 released",
      "summary": "EXIF and audio data.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-03-07T00:00:00+00:00","content_text": "Features\nEXIF and audio data\nEXIF and audio data are available for static files and asset.\nEXIF Example:\n# photo's date in seconds\n{{ asset('photo.jpeg').exif.DateTimeOriginal|date('U') }}\nFix\n\nFix cache tag for image quality\nFix default layout page CSS\nFix url(page) default output format\n\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>EXIF and audio data</h4>\n<p>EXIF and audio data are available for <a href=\"/documentation/templates/#site-static\">static files</a> and <a href=\"/documentation/templates/#asset-attributes\">asset</a>.</p>\n<p><em>EXIF Example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"xml\"># photo's date in seconds\n</span><span class=\"hljs-template-variable\">{{ asset('photo.jpeg').exif.DateTimeOriginal|<span class=\"hljs-keyword\">date</span>('U') }}</span></code></pre>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix cache tag for image quality</li>\n<li>Fix default layout page CSS</li>\n<li>Fix <code translate=\"no\">url(page)</code> default output format</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/02/23/cecil-7.30.0-released/",
      "url": "https://main.cecil.app/news/2023/02/23/cecil-7.30.0-released/",
      "title": "Cecil 7.30.0 released",
      "summary": "Add base page URL to TOC anchor.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-02-23T00:00:00+00:00","content_text": "Features\nAdd base page URL to TOC anchor\nExample:\n{{ page.body|toc('html', 'https:\/\/example.com\/page\/') }}\n{{ page.body|toc(url=url(page)) }}\nDocumentation →\nFix\n\nFix sort_by_date filter\nFix default page layout\nFix Markdown image title\nFix path in case of only one page is loaded\n\nDocs\n\nRemove Forestry references (because Forestry is dead)\nUpdate Deploy\nUpdate templates\n\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Add base page URL to TOC anchor</h4>\n<p><em>Example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ page.body|toc('html', 'https://example.com/page/') }}</span><span class=\"xml\">\n</span><span class=\"hljs-template-variable\">{{ page.body|toc(url=url(page)) }}</span></code></pre>\n<p><a href=\"/documentation/templates/#toc\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix <a href=\"/documentation/templates/#sort-by-date\"><code translate=\"no\">sort_by_date</code></a> filter</li>\n<li>Fix default page layout</li>\n<li>Fix Markdown image title</li>\n<li>Fix path in case of only one page is loaded</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Remove Forestry references (because <a href=\"https://tina.io/forestry/\" target=\"_blank\" rel=\"noopener noreferrer\">Forestry is dead</a>)</li>\n<li>Update <a href=\"/documentation/deploy/\"><em>Deploy</em></a></li>\n<li>Update templates</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2023/01/04/cecil-7.29.0-released/",
      "url": "https://main.cecil.app/news/2023/01/04/cecil-7.29.0-released/",
      "title": "Cecil 7.29.0 released",
      "summary": "JSON Feed output format.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2023-01-04T00:00:00+00:00","content_text": "Features\nJSON Feed output format\nAdd support of JSON Feed as output format.\noutput:\n  pagetypeformats:\n    section: ['html', 'atom', 'jsonfeed']\nDocumentation →\nFix\n\nEnforcing runtime checks for required PHP extensions (by @benjaminhirsch)\nFix pages filter and map in render step\n\nMiscs\n\nCode enhanced\nDependencies updated\nsymfony\/polyfill-intl-icu added\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>JSON Feed output format</h4>\n<p>Add support of <a href=\"https://www.jsonfeed.org/\" target=\"_blank\" rel=\"noopener noreferrer\">JSON Feed</a> as output format.</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">output:</span>\n  <span class=\"hljs-attr\">pagetypeformats:</span>\n    <span class=\"hljs-attr\">section:</span> <span class=\"hljs-string\">['html',</span> <span class=\"hljs-string\">'atom'</span><span class=\"hljs-string\">,</span> <span class=\"hljs-string\">'jsonfeed'</span><span class=\"hljs-string\">]</span></code></pre>\n<p><a href=\"/documentation/configuration/#pagetypeformats\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Enforcing runtime checks for required PHP extensions (by <a href=\"https://github.com/benjaminhirsch\" target=\"_blank\" rel=\"noopener noreferrer\">@benjaminhirsch</a>)</li>\n<li>Fix pages filter and map in render step</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code enhanced</li>\n<li>Dependencies updated</li>\n<li><code translate=\"no\">symfony/polyfill-intl-icu</code> added</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/11/25/cecil-7.28.0-released/",
      "url": "https://main.cecil.app/news/2022/11/25/cecil-7.28.0-released/",
      "title": "Cecil 7.28.0 released",
      "summary": "Feeds links available from pages in a section.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-11-25T00:00:00+00:00","content_text": "Features\n\nFeeds links available from pages in a section\nCecil is now available through Homebrew\n\nFix\n\nFix French translation\nFix remote asset files handling\nHandling of video files by the local server\nFix homepage generator if no other pages\n\nDocs\n\nMinor updates\n\nMiscs\n\nFeeds XSL refactored\nBetter local server 404 page\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<ul>\n<li>Feeds links available from pages in a section</li>\n<li>Cecil is now available through <a href=\"/download/#macos\">Homebrew</a></li>\n</ul>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix French translation</li>\n<li>Fix remote asset files handling</li>\n<li>Handling of video files by the local server</li>\n<li>Fix homepage generator if no other pages</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Minor updates</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Feeds XSL refactored</li>\n<li>Better local server 404 page</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/11/05/cecil-7.27.0-released/",
      "url": "https://main.cecil.app/news/2022/11/05/cecil-7.27.0-released/",
      "title": "Cecil 7.27.0 released",
      "summary": "Remove cache files by regular expression.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-11-05T00:00:00+00:00","content_text": "Features\nRemove cache files by regular expression\nExample:\nphp cecil.phar serve --clear-cache=\"\\.css\"\n\nRemoves cached CSS files and preserves the rest of the cache.\n\nDocumentation →\nFix\n\nPattern used in cache prune method\nShould not convert a line link in block\nFix favicon sizes attribute\nMinor fix on Markdown convertor\n\nDocs\n\nContent page updated\n\nMiscs\n\nCode commented\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Remove cache files by regular expression</h4>\n<p><em>Example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar serve --clear-cache=<span class=\"hljs-string\">\"\\.css\"</span></code></pre>\n<blockquote>\n<p>Removes cached CSS files and preserves the rest of the cache.</p>\n</blockquote>\n<p><a href=\"/documentation/commands/#serve\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Pattern used in cache prune method</li>\n<li>Should not convert a line link in block</li>\n<li>Fix favicon sizes attribute</li>\n<li>Minor fix on Markdown convertor</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Content page updated</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code commented</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/31/cecil-7.25.0-released/",
      "url": "https://main.cecil.app/news/2022/10/31/cecil-7.25.0-released/",
      "title": "Cecil 7.25.0 released",
      "summary": "Custom responsive image `sizes`.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-31T00:00:00+00:00","content_text": "Features\nCustom responsive image sizes\n&lt;img src=\"\/assets\/thumbnails\/800\/image.jpg\" width=\"800\" height=\"600\"\n  srcset=\"\/assets\/thumbnails\/320\/image.jpg 320w,\n          \/assets\/thumbnails\/640\/image.jpg 640w,\n          \/assets\/thumbnails\/800\/image.jpg 800w\"\n  sizes=\"100vw\"\n&gt;\nThe sizes attribute take the value of the assets.images.responsive.sizes.default configuration option by default, and can be customized by creating a new entry named with the class name added to the image.\nExample:\nassets:\n  images:\n    responsive:\n      sizes:\n        default: 100vw\n        my_class: \"(max-width: 800px) 768px, 1024px\"\n![](\/image.jpg){.my_class}\nDocumentation →\nFix\n\nNormalize page path to build\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Custom responsive image <code translate=\"no\">sizes</code></h4>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/assets/thumbnails/800/image.jpg\"</span> <span class=\"hljs-attr\">width</span>=<span class=\"hljs-string\">\"800\"</span> <span class=\"hljs-attr\">height</span>=<span class=\"hljs-string\">\"600\"</span>\n  <span class=\"hljs-attr\">srcset</span>=<span class=\"hljs-string\">\"/assets/thumbnails/320/image.jpg 320w,\n          /assets/thumbnails/640/image.jpg 640w,\n          /assets/thumbnails/800/image.jpg 800w\"</span>\n  <span class=\"hljs-attr\">sizes</span>=<span class=\"hljs-string\">\"100vw\"</span>\n&gt;</span></code></pre>\n<p>The <code translate=\"no\">sizes</code> attribute take the value of the <code translate=\"no\">assets.images.responsive.sizes.default</code> configuration option by default, and can be customized by creating a new entry named with the class name added to the image.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">assets:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">responsive:</span>\n      <span class=\"hljs-attr\">sizes:</span>\n        <span class=\"hljs-attr\">default:</span> <span class=\"hljs-string\">100vw</span>\n        <span class=\"hljs-attr\">my_class:</span> <span class=\"hljs-string\">\"(max-width: 800px) 768px, 1024px\"</span></code></pre>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![](/image.jpg){.my_class}</code></pre>\n<p><a href=\"/documentation/configuration/#assets\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Normalize page path to build</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/31/cecil-7.26.0-released/",
      "url": "https://main.cecil.app/news/2022/10/31/cecil-7.26.0-released/",
      "title": "Cecil 7.26.0 released",
      "summary": "Create caption for images and embed links having a title.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-31T00:00:00+00:00","content_text": "Features\nCreate caption for images and embed links having a title\nThe optional title can be used to create a caption (figcaption) automatically by enabling the caption option.\nExample:\n![](\/images\/img.jpg \"Title\")\nIs converted to:\n&lt;figure&gt;\n  &lt;img src=\"\/image.jpg\" title=\"Title\"&gt;\n  &lt;figcaption&gt;Title&lt;\/figcaption&gt;\n&lt;\/figure&gt;\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Create caption for images and embed links having a title</h4>\n<p>The optional title can be used to create a caption (<code translate=\"no\">figcaption</code>) automatically by enabling the <a href=\"/documentation/configuration/#body\"><code translate=\"no\">caption</code> option</a>.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![](/images/img.jpg \"Title\")</code></pre>\n<p>Is converted to:</p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">figure</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/image.jpg\"</span> <span class=\"hljs-attr\">title</span>=<span class=\"hljs-string\">\"Title\"</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">figcaption</span>&gt;</span>Title<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">figcaption</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">figure</span>&gt;</span></code></pre>\n<p><a href=\"/documentation/content/#caption\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/30/cecil-7.24.0-released/",
      "url": "https://main.cecil.app/news/2022/10/30/cecil-7.24.0-released/",
      "title": "Cecil 7.24.0 released",
      "summary": "Turn a link into a video or audio element.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-30T00:00:00+00:00","content_text": "Features\nTurn a link into a video or audio element\n[The video](\/video\/test.mp4){controls poster=\/images\/video-test.png style=\"width:100%;\"}\n&lt;video src=\"\/video\/test.mp4\" controls poster=\"\/images\/video-test.png\" style=\"width:100%;\"&gt;&lt;\/video&gt;\nDocumentation →\nFix\n\nConverts page even it contain a wrong language code\n\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Turn a link into a video or audio element</h4>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">[<span class=\"hljs-string\">The video</span>](<span class=\"hljs-link\">/video/test.mp4</span>){controls poster=/images/video-test.png style=\"width:100%;\"}</code></pre>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">video</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/video/test.mp4\"</span> <span class=\"hljs-attr\">controls</span> <span class=\"hljs-attr\">poster</span>=<span class=\"hljs-string\">\"/images/video-test.png\"</span> <span class=\"hljs-attr\">style</span>=<span class=\"hljs-string\">\"width:100%;\"</span>&gt;</span><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">video</span>&gt;</span></code></pre>\n<p><a href=\"/documentation/content/#embedded-links\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Converts page even it contain a wrong language code</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/29/cecil-7.23.0-released/",
      "url": "https://main.cecil.app/news/2022/10/29/cecil-7.23.0-released/",
      "title": "Cecil 7.23.0 released",
      "summary": "New option to add default class to body images.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-29T00:00:00+00:00","content_text": "Features\nNew option to add default class to body images\nbody:\n  images:\n    class: '' # put default class to each image (empty by default)\nDocumentation →\nFix\n\nFix Twitter account in metatags template\nFix embedded links disable option\nApply custom path before the convert step (create)\n\nDocs\n\nContent page updated\n\nMiscs\n\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New option to add default class to body images</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">body:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">class:</span> <span class=\"hljs-string\">''</span> <span class=\"hljs-comment\"># put default class to each image (empty by default)</span></code></pre>\n<p><a href=\"/documentation/configuration/#body\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix Twitter account in <a href=\"/documentation/configuration/#metatags\"><em>metatags</em></a> template</li>\n<li>Fix embedded links disable option</li>\n<li>Apply custom path before the convert step (create)</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Content page updated</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/25/cecil-7.20.0-released/",
      "url": "https://main.cecil.app/news/2022/10/25/cecil-7.20.0-released/",
      "title": "Cecil 7.20.0 released",
      "summary": "New variable to override the canonical URL.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-25T00:00:00+00:00",
      "date_modified": "2023-10-26T00:00:00+00:00","content_text": "Features\nNew canonical variable to override the generated canonical URL\nIf the partial metatags.html.twig is included in your main template, a canonical URL is automatically added to the page &lt;head&gt;.\nWith the canonical variable (set in page front matter) you can override the canonical URL and the canonical title:\ncanonical:\n  url: &lt;URL&gt;\n  title: \"&lt;URL title&gt;\" # optional\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New <code translate=\"no\">canonical</code> variable to override the generated canonical URL</h4>\n<p>If the partial <code translate=\"no\">metatags.html.twig</code> is included in your main template, a canonical URL is automatically added to the page <code translate=\"no\">&lt;head&gt;</code>.<br>\nWith the <code translate=\"no\">canonical</code> variable (set in page <a href=\"/documentation/content/#front-matter\">front matter</a>) you can override the canonical URL and the canonical title:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">canonical:</span>\n  <span class=\"hljs-attr\">url:</span> <span class=\"hljs-string\">&lt;URL&gt;</span>\n  <span class=\"hljs-attr\">title:</span> <span class=\"hljs-string\">\"&lt;URL title&gt;\"</span> <span class=\"hljs-comment\"># optional</span></code></pre>\n<p><a href=\"/documentation/configuration/#metatags-options-and-front-matter\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/25/cecil-7.21.0-released/",
      "url": "https://main.cecil.app/news/2022/10/25/cecil-7.21.0-released/",
      "title": "Cecil 7.21.0 released",
      "summary": "Local fallback for remote images.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-25T00:00:00+00:00","content_text": "Features\nLocal fallback for remote images\nYou can specify a – generic – fallback image in case of remote images are not available.\nbody:\n  images:\n    remote:\n      enabled: true\n      fallback:\n        enabled: true # enables a fallback if remote image is not found (false by default)\n        path: 'images\/no-image.png' # path to the fallback image, stored in `assets` dir (empty by default)\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Local fallback for remote images</h4>\n<p>You can specify a – generic – fallback image in case of remote images are not available.</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">body:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">remote:</span>\n      <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span>\n      <span class=\"hljs-attr\">fallback:</span>\n        <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span> <span class=\"hljs-comment\"># enables a fallback if remote image is not found (false by default)</span>\n        <span class=\"hljs-attr\">path:</span> <span class=\"hljs-string\">'images/no-image.png'</span> <span class=\"hljs-comment\"># path to the fallback image, stored in `assets` dir (empty by default)</span></code></pre>\n<p><a href=\"/documentation/configuration/#body\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/25/cecil-7.22.0-released/",
      "url": "https://main.cecil.app/news/2022/10/25/cecil-7.22.0-released/",
      "title": "Cecil 7.22.0 released",
      "summary": "Support of embed GitHub Gist link.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-25T00:00:00+00:00","content_text": "Features\nSupport of embed GitHub Gist link\nGitHub Gist can be easly embed by adding the {embed} attribute.\n[Cecil build script](https:\/\/gist.github.com\/ArnaudLigny\/6b2aa9e6b25581c96435e9296efe0c0e){embed}\n\nDocumentation →\nMiscs\n\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Support of embed GitHub Gist link</h4>\n<p>GitHub Gist can be easly embed by adding the <code translate=\"no\">{embed}</code> attribute.</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">[<span class=\"hljs-string\">Cecil build script</span>](<span class=\"hljs-link\">https://gist.github.com/ArnaudLigny/6b2aa9e6b25581c96435e9296efe0c0e</span>){embed}</code></pre>\n<p><script src=\"https://gist.github.com/ArnaudLigny/6b2aa9e6b25581c96435e9296efe0c0e.js\"></p>\n<p><a href=\"/documentation/content/#embedded-links\">Documentation →</a></p>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/24/cecil-7.19.0-released/",
      "url": "https://main.cecil.app/news/2022/10/24/cecil-7.19.0-released/",
      "title": "Cecil 7.19.0 released",
      "summary": "Link to a page in a markdown link.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-24T00:00:00+00:00","content_text": "Features\nLink to a page in a markdown link\nYou can easily create a link to a page with the syntax [Page title](page:page-id).\nExample:\n[Link to a blog post](page:blog\/post-1)\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Link to a page in a markdown link</h4>\n<p>You can easily create a link to a page with the syntax <code translate=\"no\">[Page title](page:page-id)</code>.</p>\n<p>Example:</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">[<span class=\"hljs-string\">Link to a blog post</span>](<span class=\"hljs-link\">page:blog/post-1</span>)</code></pre>\n<p><a href=\"/documentation/content/#link-to-a-page\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/23/cecil-7.18.0-released/",
      "url": "https://main.cecil.app/news/2022/10/23/cecil-7.18.0-released/",
      "title": "Cecil 7.18.0 released",
      "summary": "Embed a YouTube video from a Markdown link.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-23T00:00:00+00:00","content_text": "Features\nEmbed a YouTube video from a Markdown link\nYou can let Cecil tries to turns a link into an embedded content by using the {embed=true}:\nExample:\n[An example YouTube video](https:\/\/www.youtube.com\/watch?v=Dj-rKHmLp5w){embed=true}\nDocumentation →\nFix\n\nFix image figure caption\nDo not double sub slug prefix\nFix generator meta if there is no spaces before\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Embed a YouTube video from a Markdown link</h4>\n<p>You can let Cecil tries to turns a link into an embedded content by using the <code translate=\"no\">{embed=true}</code>:</p>\n<p>Example:</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">[<span class=\"hljs-string\">An example YouTube video</span>](<span class=\"hljs-link\">https://www.youtube.com/watch?v=Dj-rKHmLp5w</span>){embed=true}</code></pre>\n<p><a href=\"/documentation/content/#embedded-links\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix image figure caption</li>\n<li>Do not double sub slug prefix</li>\n<li>Fix generator meta if there is no spaces before</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/19/cecil-7.17.0-released/",
      "url": "https://main.cecil.app/news/2022/10/19/cecil-7.17.0-released/",
      "title": "Cecil 7.17.0 released",
      "summary": "Normalize asset path in Markdown.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-19T00:00:00+00:00","content_text": "Features\nNormalize asset path in Markdown\nA static or asset file relative path is automatically normalized.\nExample:\n![](..\/..\/assets\/images\/image.jpeg)\nBecome:\n&lt;img src=\"\/images\/image.jpeg\"&gt;\nFix\n\nFix path to assets cache directory\nError if wrong relative to parent asset path\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Normalize asset path in Markdown</h4>\n<p>A static or asset file relative path is automatically normalized.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![](../../assets/images/image.jpeg)</code></pre>\n<p>Become:</p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/images/image.jpeg\"</span>&gt;</span></code></pre>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix path to assets cache directory</li>\n<li>Error if wrong relative to parent asset path</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/16/cecil-7.16.0-released/",
      "url": "https://main.cecil.app/news/2022/10/16/cecil-7.16.0-released/",
      "title": "Cecil 7.16.0 released",
      "summary": "Support of Markdown in `<figcaption>` of an image.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-16T00:00:00+00:00","content_text": "Features\nSupport of Markdown in &lt;figcaption&gt; of an image\nExample:\n![Alternative description](\/image.jpg \"Photo about [Cecil](https:\/\/cecil.app)\")\n&lt;figure&gt;\n  &lt;img src=\"\/image.jpg\" alt=\"Alternative description\" title=\"Photo about Cecil\"&gt;\n  &lt;figcaption&gt;Photo about &lt;a href=\"https:\/\/cecil.app\"&gt;Cecil&lt;\/a&gt;&lt;\/figcaption&gt;\n&lt;\/figure&gt;\nDocumentation →\nFix\n\nDo not override image loading attribute\nAdd version to asset cache key\nFix bundle files path\nFix excerpt_html filter options handling\n\nDocs\n\nAdd notice about cache\nUpdate templates\nUpdate content\n\nMiscs\n\nCode cleaned\nException message if theme not installed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Support of Markdown in <code translate=\"no\">&lt;figcaption&gt;</code> of an image</h4>\n<p>Example:</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![<span class=\"hljs-string\">Alternative description</span>](<span class=\"hljs-link\">/image.jpg \"Photo about [Cecil](https://cecil.app</span>)\")</code></pre>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">figure</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"/image.jpg\"</span> <span class=\"hljs-attr\">alt</span>=<span class=\"hljs-string\">\"Alternative description\"</span> <span class=\"hljs-attr\">title</span>=<span class=\"hljs-string\">\"Photo about Cecil\"</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">figcaption</span>&gt;</span>Photo about <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"https://cecil.app\"</span>&gt;</span>Cecil<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">figcaption</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">figure</span>&gt;</span></code></pre>\n<p><a href=\"/documentation/content/#caption\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Do not override image <code translate=\"no\">loading</code> attribute</li>\n<li>Add version to asset cache key</li>\n<li>Fix bundle files path</li>\n<li>Fix <code translate=\"no\">excerpt_html</code> filter options handling</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Add notice about cache</li>\n<li>Update templates</li>\n<li>Update content</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code cleaned</li>\n<li>Exception message if theme not installed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/12/cecil-7.15.0-released/",
      "url": "https://main.cecil.app/news/2022/10/12/cecil-7.15.0-released/",
      "title": "Cecil 7.15.0 released",
      "summary": "Support of custom Twig extensions.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-12T00:00:00+00:00","content_text": "Features\nSupport of custom Twig extensions\nIt is now possible to use custom functions and filters.\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Support of custom Twig extensions</h4>\n<p>It is now possible to use custom functions and filters.</p>\n<p><a href=\"/documentation/templates/#custom-extension\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/11/cecil-7.14.0-released/",
      "url": "https://main.cecil.app/news/2022/10/11/cecil-7.14.0-released/",
      "title": "Cecil 7.14.0 released",
      "summary": "Options for 'sortby' front matter variable.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-11T00:00:00+00:00","content_text": "Features\nOptions for 'sortby' front matter variable\n---\nsortby:\n  variable: date    # date, updated, title or weight\n  desc_title: false # used with date or updated variables to sort by desc title order if items have same date\n  reverse: false    # reversed if true\n---\nDocumentation →\nFix\n\nReverse sort by date if the same date\n\nDocs\n\nUpdate sorts filter\nUpdate templates\n\nMiscs\n\nImages handling enhanced\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Options for 'sortby' front matter variable</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-meta\">---</span>\n<span class=\"hljs-attr\">sortby:</span>\n  <span class=\"hljs-attr\">variable:</span> <span class=\"hljs-string\">date</span>    <span class=\"hljs-comment\"># date, updated, title or weight</span>\n  <span class=\"hljs-attr\">desc_title:</span> <span class=\"hljs-literal\">false</span> <span class=\"hljs-comment\"># used with date or updated variables to sort by desc title order if items have same date</span>\n  <span class=\"hljs-attr\">reverse:</span> <span class=\"hljs-literal\">false</span>    <span class=\"hljs-comment\"># reversed if true</span>\n<span class=\"hljs-meta\">---</span></code></pre>\n<p><a href=\"/documentation/content/#sortby\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Reverse sort by date if the same date</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Update sorts filter</li>\n<li>Update templates</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Images handling enhanced</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/05/cecil-7.13.0-released/",
      "url": "https://main.cecil.app/news/2022/10/05/cecil-7.13.0-released/",
      "title": "Cecil 7.13.0 released",
      "summary": "Fetch the dominant color of an image.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-05T00:00:00+00:00","content_text": "Features\nFetch the dominant color of an image\n{{ asset(image_path)|dominant_color }}\n# #F2D07F\nDocumentation →\nFix\n\nTry to apply responsive on image asset only\nFix JSON internal templates\n\nMiscs\n\nCode enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Fetch the dominant color of an image</h4>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ asset(image_path)|dominant_color }}</span><span class=\"xml\">\n# #F2D07F</span></code></pre>\n<p><a href=\"/documentation/templates/#dominant-color\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Try to apply responsive on image asset only</li>\n<li>Fix JSON internal templates</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Code enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/03/cecil-7.12.0-released/",
      "url": "https://main.cecil.app/news/2022/10/03/cecil-7.12.0-released/",
      "title": "Cecil 7.12.0 released",
      "summary": "New 'toc' template filter.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-03T00:00:00+00:00","content_text": "Features\nNew 'toc' template filter\nExtracts table of content from a Markdown string, in the given format (\"html\" or \"json\", \"html\" by default).\n{{ page.body|toc }}\n{{ page.body|toc('html') }}\n{{ page.body|toc('json') }}\nDocumentation →\nNew formats supported by front matter\n2 new formats are now supported by front matter: JSON and TOML.\nDocumentation →\nFix\n\nFix feeds layout and XSL template\n\nDocs\n\nUpdate documentation about l10n\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New 'toc' template filter</h4>\n<p>Extracts table of content from a Markdown string, in the given format (\"html\" or \"json\", \"html\" by default).</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ page.body|toc }}</span><span class=\"xml\">\n</span><span class=\"hljs-template-variable\">{{ page.body|toc('html') }}</span><span class=\"xml\">\n</span><span class=\"hljs-template-variable\">{{ page.body|toc('json') }}</span></code></pre>\n<p><a href=\"/documentation/templates/#toc\">Documentation →</a></p>\n<h4>New formats supported by front matter</h4>\n<p>2 new formats are now supported by front matter: <a href=\"https://m.wikipedia.org/wiki/JSON\" target=\"_blank\" rel=\"noopener noreferrer\">JSON</a> and <a href=\"https://m.wikipedia.org/wiki/TOML\" target=\"_blank\" rel=\"noopener noreferrer\">TOML</a>.</p>\n<p><a href=\"/documentation/configuration/#frontmatter\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Fix feeds layout and XSL template</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Update documentation about l10n</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/10/02/cecil-7.11.0-released/",
      "url": "https://main.cecil.app/news/2022/10/02/cecil-7.11.0-released/",
      "title": "Cecil 7.11.0 released",
      "summary": "Add 'language' option to template url() function.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-10-02T00:00:00+00:00","content_text": "Features\nAdd 'language' option to template url() function\nExample:\n{{ url('page-id', {'language': 'fr'}) }}\nDocumentation →\nFix\n\nDetection of internal translation file\nPhar must include mo files\nLoad root locale version of a translation if exists\n\nDocs\n\nUpdate templates documentation\n\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Add 'language' option to template url() function</h4>\n<p>Example:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ url('page-id', {'language': 'fr'}) }}</span></code></pre>\n<p><a href=\"/documentation/templates/#url\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Detection of internal translation file</li>\n<li>Phar must include <em>mo</em> files</li>\n<li>Load root locale version of a translation if exists</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Update templates documentation</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/30/cecil-7.9.0-released/",
      "url": "https://main.cecil.app/news/2022/09/30/cecil-7.9.0-released/",
      "title": "Cecil 7.9.0 released",
      "summary": "New command to extract templates.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-30T00:00:00+00:00","content_text": "Features\nNew command to extract templates\nExtracts built-in templates in the \"layouts\" directory of your site.\nUsage:\nphp cecil.phar util:extract\nFix\n\nAsset as string must return a valid URL\nPaginator backward compatibility\n\nDocs\n\nPaginator details updated\n\nMiscs\n\nBuilt-in templates updated\nSkeleton enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New command to extract templates</h4>\n<p>Extracts built-in templates in the \"layouts\" directory of your site.</p>\n<p>Usage:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar util:extract</code></pre>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Asset as string must return a valid URL</li>\n<li>Paginator backward compatibility</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Paginator details updated</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Built-in templates updated</li>\n<li>Skeleton enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/30/cecil-7.10.0-released/",
      "url": "https://main.cecil.app/news/2022/09/30/cecil-7.10.0-released/",
      "title": "Cecil 7.10.0 released",
      "summary": "Internal translations.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-30T00:00:00+00:00","content_text": "Features\nInternal translations\nAdd translation support of internal templates.\nFix\n\nTranslation in feed template\nDo not try to resize missing favicon\n\nMiscs\n\nCleaning internal templates\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Internal translations</h4>\n<p>Add translation support of internal templates.</p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Translation in feed template</li>\n<li>Do not try to resize missing favicon</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Cleaning internal templates</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/28/cecil-7.8.0-released/",
      "url": "https://main.cecil.app/news/2022/09/28/cecil-7.8.0-released/",
      "title": "Cecil 7.8.0 released",
      "summary": "New paginator.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-28T00:00:00+00:00","content_text": "Features\nNew paginator\nPagination now support multilanguages and the dedicated template variable have been renamed: page.paginator.\nFix\n\nRemove duplicated vocabulary terms\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New paginator</h4>\n<p>Pagination now support multilanguages and the dedicated template variable have been renamed: <a href=\"https://cecil.app/documentation/templates/#page-paginator\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">page.paginator</code></a>.</p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Remove duplicated vocabulary terms</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/24/cecil-7.7.0-released/",
      "url": "https://main.cecil.app/news/2022/09/24/cecil-7.7.0-released/",
      "title": "Cecil 7.7.0 released",
      "summary": "Multiple formats translation.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-24T00:00:00+00:00","content_text": "Features\nMultiple formats translation\ntranslations:\n  dir: translations       # translations directory\n  formats: ['yaml', 'mo'] # translations files format (`yaml` and `mo` by default)\nDocumentation →",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Multiple formats translation</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">translations:</span>\n  <span class=\"hljs-attr\">dir:</span> <span class=\"hljs-string\">translations</span>       <span class=\"hljs-comment\"># translations directory</span>\n  <span class=\"hljs-attr\">formats:</span> <span class=\"hljs-string\">['yaml',</span> <span class=\"hljs-string\">'mo'</span><span class=\"hljs-string\">]</span> <span class=\"hljs-comment\"># translations files format (`yaml` and `mo` by default)</span></code></pre>\n<p><a href=\"/documentation/configuration/#translations\">Documentation →</a></p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/23/cecil-7.6.0-released/",
      "url": "https://main.cecil.app/news/2022/09/23/cecil-7.6.0-released/",
      "title": "Cecil 7.6.0 released",
      "summary": "Print memory usage in verbose mode.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-23T00:00:00+00:00","content_text": "Features\nPrint memory usage in verbose mode\nExample:\nphp cecil build -v\nBuilding website...\nPath: \/website\nConfig: \/website\/config.yml\nCache: \/website\/.cache\n 1. Importing themes configuration\n 2. Loading pages\n 3. Creating pages\n 4. Converting pages\n 5. Creating taxonomies\n 6. Generating pages\n 7. Creating menus\n 8. Copying static\n 9. Rendering pages\n10. Saving pages\nBuilt in 14 s (19.67 mb)\nFix\n\nURL must return a string\nSet locale only if Intl ext is loaded\nTemplate filters: turns null value in empty value\n\nDocs\n\nImportant message about Intl and date localization\n\nMiscs\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Print memory usage in verbose mode</h4>\n<p>Example:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil build -v\nBuilding website...\nPath: /website\nConfig: /website/config.yml\nCache: /website/.cache\n 1. Importing themes configuration\n 2. Loading pages\n 3. Creating pages\n 4. Converting pages\n 5. Creating taxonomies\n 6. Generating pages\n 7. Creating menus\n 8. Copying static\n 9. Rendering pages\n10. Saving pages\nBuilt <span class=\"hljs-keyword\">in</span> 14 s (19.67 mb)</code></pre>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>URL must return a string</li>\n<li>Set locale only if Intl ext is loaded</li>\n<li>Template filters: turns null value in empty value</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li>Important message about Intl and <a href=\"/documentation/templates/#date-localization\">date localization</a></li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/19/cecil-7.4.0-released/",
      "url": "https://main.cecil.app/news/2022/09/19/cecil-7.4.0-released/",
      "title": "Cecil 7.4.0 released",
      "summary": "Better prev and next navigation in section.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-19T00:00:00+00:00","content_text": "Features\nBetter prev and next navigation in section\nVariables page.prev and page.next now contains the page item, so it's easier to access of all properties of the page.\nFor example:\n&lt;a href=\"{{ url(page.prev) }}\"&gt;{{ page.prev.title }}&lt;\/a&gt;\nDocumentation →\nFix\n\nThe template filter filter_by must return type::page only\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Better prev and next navigation in section</h4>\n<p>Variables <code translate=\"no\">page.prev</code> and <code translate=\"no\">page.next</code> now contains the page item, so it's easier to access of all properties of the page.</p>\n<p>For example:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"xml\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">a</span> <span class=\"hljs-attr\">href</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ url(page.prev) }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span>&gt;</span></span><span class=\"hljs-template-variable\">{{ page.prev.title }}</span><span class=\"xml\"><span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">a</span>&gt;</span></span></code></pre>\n<p><a href=\"/documentation/templates/#page-prev-next\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>The template filter <code translate=\"no\">filter_by</code> must return <code translate=\"no\">type::page</code> only</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/19/cecil-7.5.0-released/",
      "url": "https://main.cecil.app/news/2022/09/19/cecil-7.5.0-released/",
      "title": "Cecil 7.5.0 released",
      "summary": "Checks default language and locale configuration.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-19T00:00:00+00:00","content_text": "Features\nChecks default language and locale configuration\nChecks if:\n\ndefault language is valid\nlocale of each language is valid\n\nFix\n\nURL must return a string\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Checks default language and locale configuration</h4>\n<p>Checks if:</p>\n<ul>\n<li>default language is valid</li>\n<li>locale of each language is valid</li>\n</ul>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>URL must return a string</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/18/cecil-7.3.0-released/",
      "url": "https://main.cecil.app/news/2022/09/18/cecil-7.3.0-released/",
      "title": "Cecil 7.3.0 released",
      "summary": "Support of custom (localized) `path` for section.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-18T00:00:00+00:00","content_text": "Features\nSupport of custom (localized) path for section\nSections (i.e.: section\/index.md) now support custom path:\npath: custom\/path\/\nDocumentation →\nThe custom path of a section can be different by language:\npaths:\n  - section: &lt;section’s name&gt;\n    language: &lt;language&gt; # optional\n    path: &lt;path of pages, with palceholders&gt;\nDocumentation →\nFix\n\nBetter detection of asset, based on file extension\nCatch error if date is null\n\nDocs\n\nBuild life cycle diagram updated\n\nMiscs\n\nDependencies updated\nCode cleaned and enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Support of custom (localized) <code translate=\"no\">path</code> for section</h4>\n<p>Sections (i.e.: <code translate=\"no\">section/index.md</code>) now support custom <code translate=\"no\">path</code>:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">path:</span> <span class=\"hljs-string\">custom/path/</span></code></pre>\n<p><a href=\"/documentation/content/#predefined-variables\">Documentation →</a></p>\n<p>The custom <code translate=\"no\">path</code> of a section can be different by language:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">paths:</span>\n  <span class=\"hljs-bullet\">-</span> <span class=\"hljs-attr\">section:</span> <span class=\"hljs-string\">&lt;section’s</span> <span class=\"hljs-string\">name&gt;</span>\n    <span class=\"hljs-attr\">language:</span> <span class=\"hljs-string\">&lt;language&gt;</span> <span class=\"hljs-comment\"># optional</span>\n    <span class=\"hljs-attr\">path:</span> <span class=\"hljs-string\">&lt;path</span> <span class=\"hljs-string\">of</span> <span class=\"hljs-string\">pages,</span> <span class=\"hljs-string\">with</span> <span class=\"hljs-string\">palceholders&gt;</span></code></pre>\n<p><a href=\"/documentation/configuration/#paths\">Documentation →</a></p>\n<h3 id=\"fix\">Fix</h3>\n<ul>\n<li>Better detection of asset, based on file extension</li>\n<li>Catch error if date is null</li>\n</ul>\n<h3 id=\"docs\">Docs</h3>\n<ul>\n<li><a href=\"https://github.com/Cecilapp/Cecil/blob/master/docs/charts/cecil-build-life-cycle.png\" target=\"_blank\" rel=\"noopener noreferrer\">Build life cycle diagram</a> updated</li>\n</ul>\n<h3 id=\"miscs\">Miscs</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code cleaned and enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/12/cecil-7.2.0-released/",
      "url": "https://main.cecil.app/news/2022/09/12/cecil-7.2.0-released/",
      "title": "Cecil 7.2.0 released",
      "summary": "Debug output of translations.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-12T00:00:00+00:00","content_text": "Features\nDebug output of translations\nIf build or server command is ran in debug mode (e.g.: php cecil.phar serve -vvv) some details about translations are printed :\nTranslation loader for format \"yaml\" found\nTranslation loader for format \"mo\" found\nTranslation file \"path\/translations\/messages.fr.yaml\" added\nTranslation file \"path\/translations\/messages.fr.mo\" added\nIntl extension is loaded\nIt is useful to know:\n\nwhat translations loaders are used\nwhat files are added to translations catalog\nif the Intl extension is available on the system\n\nFixes\n\nLoads translations even if there is only 1 language configured\nPagination template (partials\/paginator.html.twig) fixed\n\nMisc\n\nDependencies updated\nCode enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Debug output of translations</h4>\n<p>If <em>build</em> or <em>server</em> command is ran in debug mode (e.g.: <code translate=\"no\">php cecil.phar serve -vvv</code>) some details about translations are printed :</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">Translation loader <span class=\"hljs-keyword\">for</span> format <span class=\"hljs-string\">\"yaml\"</span> found\nTranslation loader <span class=\"hljs-keyword\">for</span> format <span class=\"hljs-string\">\"mo\"</span> found\nTranslation file <span class=\"hljs-string\">\"path/translations/messages.fr.yaml\"</span> added\nTranslation file <span class=\"hljs-string\">\"path/translations/messages.fr.mo\"</span> added\nIntl extension is loaded</code></pre>\n<p>It is useful to know:</p>\n<ol>\n<li>what translations loaders are used</li>\n<li>what files are added to translations catalog</li>\n<li>if the Intl extension is available on the system</li>\n</ol>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Loads translations even if there is only 1 language configured</li>\n<li>Pagination template (<code translate=\"no\">partials/paginator.html.twig</code>) fixed</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/08/cecil-7.0.0-released/",
      "url": "https://main.cecil.app/news/2022/09/08/cecil-7.0.0-released/",
      "title": "Cecil 7.0.0 released",
      "summary": "i18n support migrated to Symfony Translation + Twig Intl.",
      "image": "https://main.cecil.app/images/news/cecil-i18n.bbb5dac480ac6b5a85ef0582854d00c2.png",
      "date_published": "2022-09-08T00:00:00+00:00","content_text": "Features\ni18n support migrated to Symfony Translation + Twig Intl\nTwig Extensions have been removed in favor of Symfony Translation and Twig Intl Extension.\nWith Symfony Translation Gettext is no more required.\nBreaking changes about localization:\n\nthe short trans tag {% trans \"text\" %} is no more supported\nvariables must set between %% instead of {{}}\nlocalizeddate filter is replaced by format_date\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>i18n support migrated to Symfony Translation + Twig Intl</h4>\n<p><a href=\"https://github.com/Cecilapp/Twig-extensions\" target=\"_blank\" rel=\"noopener noreferrer\">Twig Extensions</a> have been removed in favor of <a href=\"https://symfony.com/doc/5.4/translation.html\" target=\"_blank\" rel=\"noopener noreferrer\">Symfony Translation</a> and <a href=\"https://github.com/twigphp/intl-extra\" target=\"_blank\" rel=\"noopener noreferrer\">Twig Intl Extension</a>.</p>\n<p>With Symfony Translation <em>Gettext</em> is no more required.</p>\n<p><strong>Breaking changes</strong> about localization:</p>\n<ol>\n<li>the short <em>trans</em> tag <code translate=\"no\">{% trans \"text\" %}</code> is no more supported</li>\n<li>variables must set between <code translate=\"no\">%%</code> instead of <code translate=\"no\">{{}}</code></li>\n<li><code translate=\"no\">localizeddate</code> filter is replaced by <code translate=\"no\">format_date</code></li>\n</ol>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/08/cecil-7.1.0-released/",
      "url": "https://main.cecil.app/news/2022/09/08/cecil-7.1.0-released/",
      "title": "Cecil 7.1.0 released",
      "summary": "Translations configuration options.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-08T00:00:00+00:00","content_text": "Features\nTranslations configuration options\ntranslations:\n  dir: translations       # translations directory\n  formats: ['yaml', 'mo'] # translations files format (`yaml` and `mo` by default)\nRefer to the documentation.\nTranslations cache options\ncache:\n  dir: '.cache' # cache directory\n  translations:\n    dir: 'translations' # translations cache directory\n    enabled: true       # enables translations cache\nRefer to the documentation.\nNew command to clear translations cache\nUse the following command to remove the translations cache directory:\nphp cecil.phar cache:clear:translations\nFixes\n\nCreate a default translator to always support the trans tag or filter, even if there is not translations\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Translations configuration options</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">translations:</span>\n  <span class=\"hljs-attr\">dir:</span> <span class=\"hljs-string\">translations</span>       <span class=\"hljs-comment\"># translations directory</span>\n  <span class=\"hljs-attr\">formats:</span> <span class=\"hljs-string\">['yaml',</span> <span class=\"hljs-string\">'mo'</span><span class=\"hljs-string\">]</span> <span class=\"hljs-comment\"># translations files format (`yaml` and `mo` by default)</span></code></pre>\n<p>Refer to the <a href=\"/documentation/configuration/#translations\">documentation</a>.</p>\n<h4>Translations cache options</h4>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">cache:</span>\n  <span class=\"hljs-attr\">dir:</span> <span class=\"hljs-string\">'.cache'</span> <span class=\"hljs-comment\"># cache directory</span>\n  <span class=\"hljs-attr\">translations:</span>\n    <span class=\"hljs-attr\">dir:</span> <span class=\"hljs-string\">'translations'</span> <span class=\"hljs-comment\"># translations cache directory</span>\n    <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span>       <span class=\"hljs-comment\"># enables translations cache</span></code></pre>\n<p>Refer to the <a href=\"/documentation/configuration/#cache\">documentation</a>.</p>\n<h4>New command to clear translations cache</h4>\n<p>Use the following command to remove the translations cache directory:</p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar cache:clear:translations</code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Create a default <code translate=\"no\">translator</code> to always support the <code translate=\"no\">trans</code> tag or filter, even if there is not translations</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/06/cecil-6.3.0-released/",
      "url": "https://main.cecil.app/news/2022/09/06/cecil-6.3.0-released/",
      "title": "Cecil 6.3.0 released",
      "summary": "Better front matter variables handling and fixes.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-06T00:00:00+00:00","content_text": "Features\nBetter front matter variables handling\nSimple front matter variables (i.e.: title, language, etc.) are stored in a property and complex values (like collections) are stored in a dedicated object attribute.\nThis has no impact on calls within a template.\nExample:\n{{ page.language }} # &lt;=&gt; $page-&gt;getVariable('language');\n{{ page.pages }} # &lt;=&gt; $page-&gt;getPages();\nFixes\n\nMissing end tag for the main element of the default template fixed (by @magentix)\n#1456 fixed (new:page command)\nMenu entry weight is forced to be an integer value\nnew:page filename can now contain several dots in its name\nURL of an alias page is now localized\nThe self-update command works again thanks to laravel-zero\/phar-updater fork\n\nDocumentation\n\nContent documentation updated\n\nMisc\n\nDependencies updated\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Better front matter variables handling</h4>\n<p><em>Simple</em> front matter variables (i.e.: title, language, etc.) are stored in a property and <em>complex</em> values (like collections) are stored in a dedicated object attribute.</p>\n<p>This has no impact on calls within a template.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ page.language }}</span><span class=\"xml\"> # <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">=</span>&gt;</span> $page-&gt;getVariable('language');\n</span><span class=\"hljs-template-variable\">{{ page.pages }}</span><span class=\"xml\"> # <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">=</span>&gt;</span> $page-&gt;getPages();</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Missing end tag for the main element of the default template fixed (by @<a href=\"https://github.com/magentix\" target=\"_blank\" rel=\"noopener noreferrer\">magentix</a>)</li>\n<li><a href=\"https://github.com/Cecilapp/Cecil/issues/1456\" target=\"_blank\" rel=\"noopener noreferrer\">#1456</a> fixed (<code translate=\"no\">new:page</code> command)</li>\n<li>Menu entry weight is forced to be an integer value</li>\n<li><code translate=\"no\">new:page</code> filename can now contain several dots in its name</li>\n<li>URL of an alias page is now localized</li>\n<li>The <code translate=\"no\">self-update</code> command works again thanks to <a href=\"https://github.com/laravel-zero/phar-updater\" target=\"_blank\" rel=\"noopener noreferrer\"><em>laravel-zero/phar-updater</em></a> fork</li>\n</ul>\n<h3 id=\"documentation\">Documentation</h3>\n<ul>\n<li><em>Content</em> documentation updated</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/06/cecil-6.4.0-released/",
      "url": "https://main.cecil.app/news/2022/09/06/cecil-6.4.0-released/",
      "title": "Cecil 6.4.0 released",
      "summary": "I18n feature for home page",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-06T00:00:00+00:00","content_text": "Features\nI18n feature for home page\nPages listed on generated home page are now filtered by language.\nFixes\n\n\"updated\" front matter variable should be converted to Datetime\n\nMisc\n\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>I18n feature for home page</h4>\n<p>Pages listed on generated home page are now filtered by language.</p>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>\"updated\" front matter variable should be converted to <code translate=\"no\">Datetime</code></li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/09/06/cecil-6.5.0-released/",
      "url": "https://main.cecil.app/news/2022/09/06/cecil-6.5.0-released/",
      "title": "Cecil 6.5.0 released",
      "summary": "Sort pages collection by `updated` date.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-09-06T00:00:00+00:00","content_text": "Features\nSort pages collection by updated date\nWhen you applied the sort_by_date filter on a pages collection it use the date variable value by default.\nYou can change this behavior and use updated variable value instead of date:\n{{ pages|sort_by_date }} # filter on \"date\" value\n{{ pages|sort_by_date('updated') }} # filter on \"updated\" value\nFixes\n\nThe default date of a page in now based on file last modified date (PHP getMTime)\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Sort pages collection by <code translate=\"no\">updated</code> date</h4>\n<p>When you applied the <code translate=\"no\">sort_by_date</code> filter on a pages collection it use the <code translate=\"no\">date</code> variable value by default.<br>\nYou can change this behavior and use <code translate=\"no\">updated</code> variable value instead of <code translate=\"no\">date</code>:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ pages|sort_by_date }}</span><span class=\"xml\"> # filter on \"date\" value\n</span><span class=\"hljs-template-variable\">{{ pages|sort_by_date('updated') }}</span><span class=\"xml\"> # filter on \"updated\" value</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>The default date of a page in now based on file last modified date (PHP <code translate=\"no\">getMTime</code>)</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/08/30/cecil-6.2.0-released/",
      "url": "https://main.cecil.app/news/2022/08/30/cecil-6.2.0-released/",
      "title": "Cecil 6.2.0 released",
      "summary": "Localizeddate fallback.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-08-30T00:00:00+00:00","content_text": "Features\nLocalizeddate fallback\nFallback to date() if the localizeddate filter is not available.\nFixes\n\nAn XSL file must be nammed \"xsl\" not \"xslt\"\n\"alt\" attribute removed from audio and video tags\nLocalization of a not found menu entry (404) fixed\nSkeleton: example image URL fixed\nFetch site pages (site.pages) in current language\n\nDocumentation\n\nQuick Start updated\nContent updated\nLanguage section updated\nConfiguration updated\n\nMisc\n\nDependencies updated\nCode enhanced\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Localizeddate fallback</h4>\n<p>Fallback to <code translate=\"no\">date()</code> if the <code translate=\"no\">localizeddate</code> filter is not available.</p>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>An XSL file must be nammed \"xsl\" not \"xslt\"</li>\n<li>\"alt\" attribute removed from audio and video tags</li>\n<li>Localization of a not found menu entry (404) fixed</li>\n<li>Skeleton: example image URL fixed</li>\n<li>Fetch site pages (<code translate=\"no\">site.pages</code>) in current language</li>\n</ul>\n<h3 id=\"documentation\">Documentation</h3>\n<ul>\n<li><em>Quick Start</em> updated</li>\n<li><em>Content</em> updated</li>\n<li>Language section updated</li>\n<li><em>Configuration</em> updated</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code enhanced</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/08/11/cecil-6.1.0-released/",
      "url": "https://main.cecil.app/news/2022/08/11/cecil-6.1.0-released/",
      "title": "Cecil 6.1.0 released",
      "summary": "Markdown files moved from `content` to `pages`.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-08-11T00:00:00+00:00","content_text": "Features\nMarkdown files moved from content to pages\nFor a better understanding of the directories structure, pages (Markdown files) should now be placed in the pages directory instead of content.\nSee documentation.\nDocumentation\n\nThe generators section have been detailed\nAn example of a custom generator have been added\n\nMisc\n\nDependencies updated\nTests fixtures cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Markdown files moved from <code translate=\"no\">content</code> to <code translate=\"no\">pages</code></h4>\n<p>For a better understanding of the directories structure, pages (Markdown files) should now be placed in the <code translate=\"no\">pages</code> directory instead of <code translate=\"no\">content</code>.</p>\n<p>See <a href=\"/documentation/content/\">documentation</a>.</p>\n<h3 id=\"documentation\">Documentation</h3>\n<ul>\n<li>The <a href=\"https://cecil.app/documentation/configuration/#generators\" target=\"_blank\" rel=\"noopener noreferrer\"><code translate=\"no\">generators</code></a> section have been detailed</li>\n<li>An example of a <a href=\"/documentation/configuration/#custom-generator\">custom generator</a> have been added</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Tests fixtures cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/08/04/cecil-6.0.0-released/",
      "url": "https://main.cecil.app/news/2022/08/04/cecil-6.0.0-released/",
      "title": "Cecil 6.0.0 released",
      "summary": "Adds support of PHP 8.1.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-08-04T00:00:00+00:00","content_text": "Features\nAdds support of PHP 8.1\nThis major release adds support of PHP 8.1+ et drop the support of PHP version prior PHP 7.4.\nFixes\n\nDefault media (audio and video) attributes have been removed\nDot files (e.g.: .htaccess) in static directory are now copied\nThe XSLT template (used by RSS and Atom feeds) have been cleaned\nAn error is now printed if the baseurl config variable is not defined\n\nMisc\n\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Adds support of PHP 8.1</h4>\n<p>This major release adds support of PHP 8.1+ et drop the support of PHP version prior PHP 7.4.</p>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Default <a href=\"/documentation/content/#audio-and-video\">media</a> (audio and video) attributes have been removed</li>\n<li>Dot files (e.g.: <code translate=\"no\">.htaccess</code>) in <code translate=\"no\">static</code> directory are now copied</li>\n<li>The XSLT template (used by RSS and Atom feeds) have been cleaned</li>\n<li>An error is now printed if the <code translate=\"no\">baseurl</code> config variable is not defined</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/07/04/cecil-5.104.0-released/",
      "url": "https://main.cecil.app/news/2022/07/04/cecil-5.104.0-released/",
      "title": "Cecil 5.104.0 released",
      "summary": "Adds an XSLT stylesheet to RSS feeds.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-07-04T00:00:00+00:00","content_text": "Features\nAdds an XSLT stylesheet to RSS feeds\nSee Cecil 5.103.0 released.",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Adds an XSLT stylesheet to RSS feeds</h4>\n<p>See <a href=\"/news/2022/06/27/cecil-5.103.0-released/\">Cecil 5.103.0 released</a>.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/06/27/cecil-5.103.0-released/",
      "url": "https://main.cecil.app/news/2022/06/27/cecil-5.103.0-released/",
      "title": "Cecil 5.103.0 released",
      "summary": "Adds an XSLT stylesheet to Atom feeds.",
      "image": "https://main.cecil.app/images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.png",
      "date_published": "2022-06-27T00:00:00+00:00","content_text": "Features\nAdds an XSLT stylesheet to Atom feeds\nExample:\n\n\n\n\n\n\nAtom feed example\n\nFixes\n\nLinks in Markdown fixed\nChecks if baseurl config variable is empty\n\nMisc\n\nDocs enhanced\nNotes (in Markdown) enabled by default\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Adds an XSLT stylesheet to Atom feeds</h4>\n<p><em>Example:</em></p>\n<figure>\n<picture title=\"Atom feed example\">\n<source type=\"image/avif\" srcset=\"/thumbnails/480x/images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.avif 480w, /images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.avif 663w\" width=\"663\" height=\"392\" sizes=\"100vw\">\n<source type=\"image/webp\" srcset=\"/thumbnails/480x/images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.webp 480w, /images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.webp 663w\" width=\"663\" height=\"392\" sizes=\"100vw\">\n<img src=\"/images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.png\" alt=\"Atom feed example\" loading=\"lazy\" decoding=\"async\" class=\"dark:brightness-90\" width=\"663\" height=\"392\" style=\";max-width:100%;height:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAYAAACqNX6+AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEy0lEQVR4nO1bWZbjIAwsEd//PHOAucGcp6P5YBMgFuMlttPVLw3GGGwVJUFM6N/fPwwwGAwAeIPwhsEPXnhjcekLP3jhJ5QbMAwAAoEAgsvb1DZFYAYYhDds0Ztj3tWEIcAY4OU+C7k8AS9DLk8wxtUlAsUuY68EgeSgOAxF/iISlWr5WkMjCDfXTxe9sql27s9yXupJYXvIbO+DwdZoDBBxcm0gxOVJ65OB0ChEe3m1WCW5O0oPXeGkYU/AAjJZESGaPRJjS7xRymdMbWRNxojkeXvJawnWNp4U2aP9COOLDtmyC2LXLqGo4ztQii6NBfTKivxYjWn8s6T0CWGwcyfsjMZONUBJiCclEqEZTkhAtEOiXXmRrgzdCFeCQoinwYjUhJwlgzqEWBREZIM9GN+rhHIX5j6BgMQvpd17+fm++2HkkkgIST0vBUKMcCCMlkI4DYRCHT4v+5GEBJXIT6hdKqMKUtRxFzYALGxeVf/jCYGjhQUpKVgNlEERPtArN5CQAiV6sf1X9qkjCEVOlG4EqxAKzy2QxhKfz0d5GMFUuhOu5PNeAEEIpeQU1PvZWydteLdLwyoEsC7FPZAnJ04vPRlx9lQIovLw3DiXX+q9HRWF/X7yPm/IBQAx7a375XLW7w3W9OWy7kg9KtMhYmrnb4qFxTokBOuwaCiWf0mG1JOTUAhJUlmNOumNsYS5TOJ344qr+YDZNHYKI0SQIohK/bvDuSwWqnBnQr5iblKzc0N0YMSPKuTuWGzin8QZnwjEPP6Ug/FEvbSnEMU9PpUMQLisUiKDqM33Bw20NiaE8oyI57isDDFwjz1hsXQZROGSOgrJr9XIkFU3xbUPoiBkLfKZV72CXqwG7w4ZnpFW3bsKJhCySRk5Gk1IAsdJSRts3eGE070UphVSNcqAUpqkNIgY6lKJO3fCsqsycjRcTkkEiWNaRciTsFohwybSKgrXRCEOuMVnRsgMcqXsSehZQ2M5Zb6YuSvyGxUUEr5VGR6bZ1ldFAuJuIjQCNmrS5YHG9umSv4InKMQB79+COpw35UdoYq7amw5Y4qY+nZLS3j1deoS+/pKWc4aSyF2QHqROMc94i7KIH99HKqQug1IS07EdZVyeFCPcYPEpzIrPsh9naqUje0fohBSck9EopSdWD9IIXKvSpxVkdxOooDD6xg5Hd7zrvolu/Uw2fSuCqlshyjhdrhQPLy1luTA2aqUnRRShrlkYSZX4trl+abprK1DlHJoYJlXykaFeCPXelXKM2nIw7tjD6VsUAhlqXc96eiobCSKuSF/dZZS9sZ6pSytjSWj3eVEhJ8JoKGeS0pjnxvaopRNMUQObrlFwqbuBzXqPcxOjJ+vlOkYos2QvCIYCGT0TX85meCTSplWiKYO7Xz7ZwSz32E9VymBkDVKqatDbnykSrz+VUqr/SmF1CZGLYLyK1pH43ieUjYvDPNfjuVbg1etUZrln8R5Smm+D6n9BE2ek1e3FeLrt2PKHJ6jlNUKyYnoK0TpvHZTQ+WfxPFKmX5juFYhteC+LvD3cH+lnBBDYr2wYFTP/SoF2PmdemvlrpW1iQC+USm7v6DSFFInRVurfLdSDtt1khu6/6Xur1KAM3YuDkF7uu9Uymn7ssbx3Ur5D2v0EEguamfzAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center;background-size:cover;\" srcset=\"/thumbnails/480x/images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.png 480w, /images/news/atom-feed-example.2fe534e0f0c0f44a8a1dc013e667b510.png 663w\" sizes=\"100vw\">\n</picture>\n<figcaption>Atom feed example</figcaption>\n</figure>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Links in Markdown fixed</li>\n<li>Checks if <code translate=\"no\">baseurl</code> config variable is empty</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Docs enhanced</li>\n<li>Notes (in Markdown) enabled by default</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/06/18/cecil-5.102.0-released/",
      "url": "https://main.cecil.app/news/2022/06/18/cecil-5.102.0-released/",
      "title": "Cecil 5.102.0 released",
      "summary": "Adds audio and video media support in Markdown.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-06-18T00:00:00+00:00","content_text": "Features\nAdds audio and video media support in Markdown\nUsage example:\nUse audio keyword in []:\n![audio](\/audio\/test.mp3 \"Audio asset\"){controls}\nUse video keyword in []:\n![video](\/video\/test.mp4 \"Video asset\"){controls poster=\/images\/cecil-logo.png style=\"width:100%;\"}\nFixes\n\nDo not convert a WebP to WebP…\n\nMisc\n\nDependencies updated\nThe exception is catched if webp is not installed\nDocs fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Adds audio and video media support in Markdown</h4>\n<p><em>Usage example:</em></p>\n<p>Use <code translate=\"no\">audio</code> keyword in <code translate=\"no\">[]</code>:</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![<span class=\"hljs-string\">audio</span>](<span class=\"hljs-link\">/audio/test.mp3 \"Audio asset\"</span>){controls}</code></pre>\n<p>Use <code translate=\"no\">video</code> keyword in <code translate=\"no\">[]</code>:</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">![<span class=\"hljs-string\">video</span>](<span class=\"hljs-link\">/video/test.mp4 \"Video asset\"</span>){controls poster=/images/cecil-logo.png style=\"width:100%;\"}</code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Do not convert a WebP to WebP…</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>The exception is catched if <code translate=\"no\">webp</code> is not installed</li>\n<li>Docs fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/06/06/cecil-5.101.0-released/",
      "url": "https://main.cecil.app/news/2022/06/06/cecil-5.101.0-released/",
      "title": "Cecil 5.101.0 released",
      "summary": "Code syntax highlight in Markdown.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-06-06T00:00:00+00:00","content_text": "Features\nCode syntax highlight in Markdown\nCode syntax highlight is now supported natively in Markdown, highlight.js is no more required in template.\nExample:\n&lt;?php\n\/\/ PHP code here\necho \"test\";\nFixes\n\nServe timeout is now set to 2 x 60 seconds\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Code syntax highlight in Markdown</h4>\n<p>Code syntax highlight is now supported natively in <a href=\"/documentation/content/#syntax-highlight\">Markdown</a>, <em>highlight.js</em> is no more required in template.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-php hljs php\" translate=\"no\"><span class=\"hljs-meta\">&lt;?php</span>\n<span class=\"hljs-comment\">// PHP code here</span>\n<span class=\"hljs-keyword\">echo</span> <span class=\"hljs-string\">\"test\"</span>;</code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Serve timeout is now set to 2 x 60 seconds</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/06/05/cecil-5.100.0-released/",
      "url": "https://main.cecil.app/news/2022/06/05/cecil-5.100.0-released/",
      "title": "Cecil 5.100.0 released",
      "summary": "New template filter: `yaml_parse`.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-06-05T00:00:00+00:00","content_text": "Features\nNew template filter: yaml_parse\nUsage example\n{{ '**Bold text**'|yaml_parse }}",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New template filter: <code translate=\"no\">yaml_parse</code></h4>\n<p><em>Usage example</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ '**Bold text**'|yaml_parse }}</span></code></pre>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/06/03/cecil-5.99.0-released/",
      "url": "https://main.cecil.app/news/2022/06/03/cecil-5.99.0-released/",
      "title": "Cecil 5.99.0 released",
      "summary": "Get a page in template.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-06-03T00:00:00+00:00","content_text": "Features\nGet a page in template\nusage example:\n{{ site.page('page-id').title }}\nFixes\n\nAsset image with and height fixed\n\nMisc\n\nCode enhanced\ni18n code cleaned\nDependencies updated\nBetter asset handling error message\nMarkdown (images) fixtures added\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Get a page in template</h4>\n<p><em>usage example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ site.page('page-id').title }}</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Asset image with and height fixed</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Code enhanced</li>\n<li>i18n code cleaned</li>\n<li>Dependencies updated</li>\n<li>Better asset handling error message</li>\n<li>Markdown (images) fixtures added</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/05/24/cecil-5.98.0-released/",
      "url": "https://main.cecil.app/news/2022/05/24/cecil-5.98.0-released/",
      "title": "Cecil 5.98.0 released",
      "summary": "Exclude directories, path or files in content.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-05-24T00:00:00+00:00","content_text": "Features\nExclude directories, path or files in content\nUsage example:\ncontent:\n  dir: content\n  ext: [md]\n  exclude: [dir1, '*.ext'] # list of excluded files (accepts globs, strings and regexes)\nMisc\n\nDocs updated\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Exclude directories, path or files in content</h4>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">content:</span>\n  <span class=\"hljs-attr\">dir:</span> <span class=\"hljs-string\">content</span>\n  <span class=\"hljs-attr\">ext:</span> <span class=\"hljs-string\">[md]</span>\n  <span class=\"hljs-attr\">exclude:</span> <span class=\"hljs-string\">[dir1,</span> <span class=\"hljs-string\">'*.ext'</span><span class=\"hljs-string\">]</span> <span class=\"hljs-comment\"># list of excluded files (accepts globs, strings and regexes)</span></code></pre>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Docs updated</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/05/08/cecil-5.97.0-released/",
      "url": "https://main.cecil.app/news/2022/05/08/cecil-5.97.0-released/",
      "title": "Cecil 5.97.0 released",
      "summary": "Inline \"insert\" Markdown.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-05-23T00:00:00+00:00","content_text": "Features\nInline \"insert\" Markdown\nUsage example:\n++text++\nis converted to:\n&lt;ins&gt;text&lt;\/ins&gt;\nFixes\n\nFootnotes are now removed in excerpt\nChecks if config file is exists \/ is defined\nVariable $layout might not be defined\nstr_replace PHP function is fixed for PHP 8\nbindtextdomain is set only if the locale (l10n) exists\nAsset images optimization fixed\nExtension .ser added to cache files\nAssets resize process fixed\nAssets are optimized on save()\n\nMisc\n\nDependencies updated\nDocs charts updated\ndeclare(strict_types=1) added to all library files\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Inline \"insert\" Markdown</h4>\n<p><em>Usage example</em>:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-string\">++text++</span></code></pre>\n<p>is converted to:</p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">ins</span>&gt;</span>text<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">ins</span>&gt;</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Footnotes are now removed in excerpt</li>\n<li>Checks if config file is exists / is defined</li>\n<li>Variable <code translate=\"no\">$layout</code> might not be defined</li>\n<li><code translate=\"no\">str_replace</code> PHP function is fixed for PHP 8</li>\n<li><code translate=\"no\">bindtextdomain</code> is set only if the <code translate=\"no\">locale</code> (l10n) exists</li>\n<li>Asset images optimization fixed</li>\n<li>Extension <code translate=\"no\">.ser</code> added to cache files</li>\n<li>Assets resize process fixed</li>\n<li>Assets are optimized on <code translate=\"no\">save()</code></li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Docs charts updated</li>\n<li><code translate=\"no\">declare(strict_types=1)</code> added to all library files</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/05/08/cecil-5.96.0-released/",
      "url": "https://main.cecil.app/news/2022/05/08/cecil-5.96.0-released/",
      "title": "Cecil 5.96.0 released",
      "summary": "Define responsive images widths.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-05-08T00:00:00+00:00","content_text": "Features\nDefine responsive images widths\nResponsive images widths are now defined by a list:\nassets:\n  images:\n    responsive:\n      enabled: false\n      widths: [480, 640, 768, 1024, 1366, 1600, 1920]",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Define responsive images widths</h4>\n<p>Responsive images widths are now defined by a list:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">assets:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">responsive:</span>\n      <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">false</span>\n      <span class=\"hljs-attr\">widths:</span> <span class=\"hljs-string\">[480,</span> <span class=\"hljs-number\">640</span><span class=\"hljs-string\">,</span> <span class=\"hljs-number\">768</span><span class=\"hljs-string\">,</span> <span class=\"hljs-number\">1024</span><span class=\"hljs-string\">,</span> <span class=\"hljs-number\">1366</span><span class=\"hljs-string\">,</span> <span class=\"hljs-number\">1600</span><span class=\"hljs-string\">,</span> <span class=\"hljs-number\">1920</span><span class=\"hljs-string\">]</span></code></pre>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/29/cecil-5.95.0-released/",
      "url": "https://main.cecil.app/news/2022/04/29/cecil-5.95.0-released/",
      "title": "Cecil 5.95.0 released",
      "summary": "Converts variables to boolean.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-30T00:00:00+00:00","content_text": "Features\nConverts variables to boolean\nConverts variable's value true, false, on, off, yes, no to boolean (true or false).",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Converts variables to boolean</h4>\n<p>Converts variable's value <code translate=\"no\">true</code>, <code translate=\"no\">false</code>, <code translate=\"no\">on</code>, <code translate=\"no\">off</code>, <code translate=\"no\">yes</code>, <code translate=\"no\">no</code> to boolean (true or false).</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/29/cecil-5.94.0-released/",
      "url": "https://main.cecil.app/news/2022/04/29/cecil-5.94.0-released/",
      "title": "Cecil 5.94.0 released",
      "summary": "Schedule pages publication.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-29T00:00:00+00:00","content_text": "Features\nSchedule pages publication\nNew page's variable: schedule.\nUsage example:\nThe page will be published if current date is &gt;= 2023-02-07:\nschedule:\n  publish: 2023-02-07\nThis page is published if current date is &lt;= 2022-04-28:\nschedule:\n  expiry: 2022-04-28\nFixes\n\nThe taxonomies step is runned only if necessary\nSet baseline should not be set by default\nThe time zone is set only if exists in config\nAsset must be saved in html filter\n\nMisc\n\nDependencies updated\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Schedule pages publication</h4>\n<p>New page's variable: <code translate=\"no\">schedule</code>.</p>\n<p><em>Usage example:</em></p>\n<p>The page will be published if current date is &gt;= 2023-02-07:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">schedule:</span>\n  <span class=\"hljs-attr\">publish:</span> <span class=\"hljs-number\">2023</span><span class=\"hljs-number\">-02</span><span class=\"hljs-number\">-07</span></code></pre>\n<p>This page is published if current date is &lt;= 2022-04-28:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">schedule:</span>\n  <span class=\"hljs-attr\">expiry:</span> <span class=\"hljs-number\">2022</span><span class=\"hljs-number\">-04</span><span class=\"hljs-number\">-28</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>The taxonomies step is runned only if necessary</li>\n<li>Set <code translate=\"no\">baseline</code> should not be set by default</li>\n<li>The time zone is set only if exists in config</li>\n<li>Asset must be saved in <code translate=\"no\">html</code> filter</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/22/cecil-5.93.0-released/",
      "url": "https://main.cecil.app/news/2022/04/22/cecil-5.93.0-released/",
      "title": "Cecil 5.93.0 released",
      "summary": "New template filter: `hex_to_rgb`.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-22T00:00:00+00:00","content_text": "Features\nNew template filter: hex_to_rgb\nThe hex_to_rgb filter converts a hexadecimal color to RGB.\nUsage example:\n{{ '#163C56'|hex_to_rgb }}\nFixes\n\nThe asset path can’t be empty\nWebP optimization quality fixed: 85 to 75\n\nMisc\n\nDependencies updated\nDocs updated \/ fixed\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>New template filter: <code translate=\"no\">hex_to_rgb</code></h4>\n<p>The <a href=\"/documentation/templates/#hex-to-rgb\"><code translate=\"no\">hex_to_rgb</code> filter</a> converts a hexadecimal color to RGB.</p>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-variable\">{{ '#163C56'|hex_to_rgb }}</span></code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>The asset path can’t be empty</li>\n<li>WebP optimization quality fixed: 85 to 75</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Docs updated / fixed</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/06/cecil-5.92.0-released/",
      "url": "https://main.cecil.app/news/2022/04/06/cecil-5.92.0-released/",
      "title": "Cecil 5.92.0 released",
      "summary": "Asking for basic configuration when creating a new site.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-06T00:00:00+00:00","content_text": "Features\nAsking for basic configuration when creating a new site\nUsage example:\nphp cecil.phar new:site\nCreating a new website...\n- title: My website\n- baseline (~ 20 characters): The better website in the world\n- baseurl (e.g.: https:\/\/cecil.local\/): https:\/\/cecil.app\/\n- description (~ 250 characters): This is the long description of my website and I love it.\nDone!\nAdds editor option to new:page command\nUsage example:\nphp cecil.phar new:page --editor=typora\nAdds editor option to open command\nUsage example:\nphp cecil.phar open --editor=code\nMisc\n\nclean alias command removed\nDependencies updated\nCode cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Asking for basic configuration when creating a new site</h4>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar new:site</code></pre>\n<pre><code class=\"language-plaintext hljs plaintext\" translate=\"no\">Creating a new website...\n- title: My website\n- baseline (~ 20 characters): The better website in the world\n- baseurl (e.g.: https://cecil.local/): https://cecil.app/\n- description (~ 250 characters): This is the long description of my website and I love it.\nDone!</code></pre>\n<h4>Adds <code translate=\"no\">editor</code> option to <code translate=\"no\">new:page</code> command</h4>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar new:page --editor=typora</code></pre>\n<h4>Adds <code translate=\"no\">editor</code> option to <code translate=\"no\">open</code> command</h4>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">php cecil.phar open --editor=code</code></pre>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li><code translate=\"no\">clean</code> alias command removed</li>\n<li>Dependencies updated</li>\n<li>Code cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/03/cecil-5.91.0-released/",
      "url": "https://main.cecil.app/news/2022/04/03/cecil-5.91.0-released/",
      "title": "Cecil 5.91.0 released",
      "summary": "Adds support of `SiteNavigationElement` structured data.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-03T00:00:00+00:00","content_text": "Features\nAdds support of SiteNavigationElement structured data\nCecil is able to generate automatically metatags for you, useful for SEO and Open Graph, by including a partial template in HTML &lt;head&gt;:\n{% include 'partials\/metatags.html.twig' %}\nThis template is also able to generate structured data (WebSite, BreadcrumbList and NewsArticle)  by enabling the following option in config:\nmetatags:\n  jsonld:\n    enabled: true \nNow it also support SiteNavigationElement, for example:\n{\n  \"@context\":\"http:\/\/schema.org\",\n  \"@type\":\"ItemList\",\n  \"itemListElement\":[\n    {\n      \"@type\": \"SiteNavigationElement\",\n      \"position\": 1,\n      \"name\": \"News\",\n      \"description\": \"News about Cecil.\",\n      \"url\":\"https:\/\/cecil.app\/news\/\"\n    },\n    {\n      \"@type\": \"SiteNavigationElement\",\n      \"position\": 2,\n      \"name\": \"Docs\",\n      \"description\": \"Official documentation of Cecil.\",\n      \"url\":\"https:\/\/cecil.app\/documentation\/\"\n    },\n    {\n      \"@type\": \"SiteNavigationElement\",\n      \"position\": 3,\n      \"name\": \"Download\",\n      \"description\": \"How to download Cecil.\",\n      \"url\":\"https:\/\/cecil.app\/download\/\"\n    }\n  ]\n}\nMisc\n\nDocumentation updated \/ fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Adds support of <code translate=\"no\">SiteNavigationElement</code> structured data</h4>\n<p>Cecil is able to generate automatically <a href=\"/documentation/configuration#metatags\">metatags</a> for you, useful for SEO and <a href=\"https://ogp.me/\" target=\"_blank\" rel=\"noopener noreferrer\">Open Graph</a>, by including a partial template in HTML <code translate=\"no\">&lt;head&gt;</code>:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">include</span></span> 'partials/metatags.html.twig' %}</span></code></pre>\n<p>This template is also able to generate <a href=\"https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data\" target=\"_blank\" rel=\"noopener noreferrer\">structured data</a> (<code translate=\"no\">WebSite</code>, <code translate=\"no\">BreadcrumbList</code> and <code translate=\"no\">NewsArticle</code>)  by enabling the following option in config:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">metatags:</span>\n  <span class=\"hljs-attr\">jsonld:</span>\n    <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span> </code></pre>\n<p>Now it also support <code translate=\"no\">SiteNavigationElement</code>, for example:</p>\n<pre><code class=\"language-json hljs json\" translate=\"no\">{\n  <span class=\"hljs-attr\">\"@context\"</span>:<span class=\"hljs-string\">\"http://schema.org\"</span>,\n  <span class=\"hljs-attr\">\"@type\"</span>:<span class=\"hljs-string\">\"ItemList\"</span>,\n  <span class=\"hljs-attr\">\"itemListElement\"</span>:[\n    {\n      <span class=\"hljs-attr\">\"@type\"</span>: <span class=\"hljs-string\">\"SiteNavigationElement\"</span>,\n      <span class=\"hljs-attr\">\"position\"</span>: <span class=\"hljs-number\">1</span>,\n      <span class=\"hljs-attr\">\"name\"</span>: <span class=\"hljs-string\">\"News\"</span>,\n      <span class=\"hljs-attr\">\"description\"</span>: <span class=\"hljs-string\">\"News about Cecil.\"</span>,\n      <span class=\"hljs-attr\">\"url\"</span>:<span class=\"hljs-string\">\"https://cecil.app/news/\"</span>\n    },\n    {\n      <span class=\"hljs-attr\">\"@type\"</span>: <span class=\"hljs-string\">\"SiteNavigationElement\"</span>,\n      <span class=\"hljs-attr\">\"position\"</span>: <span class=\"hljs-number\">2</span>,\n      <span class=\"hljs-attr\">\"name\"</span>: <span class=\"hljs-string\">\"Docs\"</span>,\n      <span class=\"hljs-attr\">\"description\"</span>: <span class=\"hljs-string\">\"Official documentation of Cecil.\"</span>,\n      <span class=\"hljs-attr\">\"url\"</span>:<span class=\"hljs-string\">\"https://cecil.app/documentation/\"</span>\n    },\n    {\n      <span class=\"hljs-attr\">\"@type\"</span>: <span class=\"hljs-string\">\"SiteNavigationElement\"</span>,\n      <span class=\"hljs-attr\">\"position\"</span>: <span class=\"hljs-number\">3</span>,\n      <span class=\"hljs-attr\">\"name\"</span>: <span class=\"hljs-string\">\"Download\"</span>,\n      <span class=\"hljs-attr\">\"description\"</span>: <span class=\"hljs-string\">\"How to download Cecil.\"</span>,\n      <span class=\"hljs-attr\">\"url\"</span>:<span class=\"hljs-string\">\"https://cecil.app/download/\"</span>\n    }\n  ]\n}</code></pre>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Documentation updated / fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/04/02/cecil-5.90.0-released/",
      "url": "https://main.cecil.app/news/2022/04/02/cecil-5.90.0-released/",
      "title": "Cecil 5.90.0 released",
      "summary": "Option to disable remote images fetching.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-04-02T00:00:00+00:00","content_text": "Features\nOption to disable remote images fetching\nBefore the 5.90 release, remote (i.e.: external) images used in pages' body (e.g.: ![](https:\/\/example.com\/image.jpg)) were systematically fetched and stored locally, in the _sites\/assets\/ directory.\nHowever, this is not a behavior that Cecil’s users want systematically, that's why we added an option to disable it:\nbody:\n  images:\n    remote:\n      enabled: false\nInfo: If you disable the remote option Cecil can't handle image files (no resize, no optimization, etc.): the URL will be used as is in the &lt;img&gt; tag.\nFixes\n\nOption to disable auto-generated favicons in the metatags template is now working\n\nMisc\n\nBetter commands description\/help\nSkeleton website cleaned\nHTML meta theme-color added to the default page template\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Option to disable remote images fetching</h4>\n<p>Before the 5.90 release, remote (i.e.: external) images used in pages' body (e.g.: <code translate=\"no\">![](https://example.com/image.jpg)</code>) were systematically fetched and stored locally, in the <code translate=\"no\">_sites/assets/</code> directory.<br>\nHowever, this is not a behavior that Cecil’s users want systematically, that's why we added an option to disable it:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">body:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">remote:</span>\n      <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">false</span></code></pre>\n<aside class=\"note note-info\"><p><strong>Info:</strong> If you disable the <em>remote</em> option Cecil can't handle image files (no resize, no optimization, etc.): the URL will be used as is in the <code translate=\"no\">&lt;img&gt;</code> tag.</p></aside>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Option to disable auto-generated favicons in the <a href=\"/documentation/configuration/#metatags-configuration\">metatags</a> template is now working</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Better commands description/help</li>\n<li>Skeleton website cleaned</li>\n<li>HTML meta <code translate=\"no\">theme-color</code> added to the default page template</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/27/cecil-5.89.0-released/",
      "url": "https://main.cecil.app/news/2022/03/27/cecil-5.89.0-released/",
      "title": "Cecil 5.89.0 released",
      "summary": "WebP image optimization.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-03-27T00:00:00+00:00","content_text": "Features\nWebP image optimization\nWebP images can be optimized (compressed) in addition to JPEG, PNG, GIF and SVG formats by enabling the following option in config file:\nassets:\n  images:\n    optimize:\n      enabled: true\nIt works in templates with the asset() function and in pages’ body with the image Markdown tag.\nFixes\n\nA Note must be an aside not a div\n\nMisc\n\nDocumentation fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>WebP image optimization</h4>\n<p><a href=\"https://developers.google.com/speed/webp\" target=\"_blank\" rel=\"noopener noreferrer\">WebP</a> images can be optimized (compressed) in addition to JPEG, PNG, GIF and SVG formats by enabling the following option in config file:</p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">assets:</span>\n  <span class=\"hljs-attr\">images:</span>\n    <span class=\"hljs-attr\">optimize:</span>\n      <span class=\"hljs-attr\">enabled:</span> <span class=\"hljs-literal\">true</span></code></pre>\n<p>It works in templates with the <a href=\"/documentation/templates/#asset\"><code translate=\"no\">asset()</code> function</a> and in <a href=\"/documentation/content#body\">pages’ body</a> with the image Markdown tag.</p>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>A <em>Note</em> must be an <code translate=\"no\">aside</code> not a <code translate=\"no\">div</code></li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Documentation fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/25/cecil-5.88.0-released/",
      "url": "https://main.cecil.app/news/2022/03/25/cecil-5.88.0-released/",
      "title": "Cecil 5.88.0 released",
      "summary": "Get width and height of a SVG.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-03-25T00:00:00+00:00","content_text": "Features\nGet width and height of a SVG\nIf you create an asset from a SVG file you can now get its width and height.\nUsage example:\n{% set image = asset('image.svg') %}\n&lt;img src=\"{{ image|url }}\" width=\"{{ image.width }}\" height=\"{{ image.height }}\" \/&gt;\nSee Templates &gt; asset &gt; Attributes documentation for details.\nMisc\n\nDependencies updated\nDocumentation fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Get width and height of a SVG</h4>\n<p>If you create an <a href=\"/documentation/templates#asset\">asset</a> from a <a href=\"https://developer.mozilla.org/docs/Web/SVG\" target=\"_blank\" rel=\"noopener noreferrer\">SVG</a> file you can now get its width and height.</p>\n<p><em>Usage example:</em></p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">set</span></span> image = asset('image.svg') %}</span><span class=\"xml\">\n<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">img</span> <span class=\"hljs-attr\">src</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image|url }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">width</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image.width }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> <span class=\"hljs-attr\">height</span>=<span class=\"hljs-string\">\"</span></span></span><span class=\"hljs-template-variable\">{{ image.height }}</span><span class=\"xml\"><span class=\"hljs-tag\"><span class=\"hljs-string\">\"</span> /&gt;</span></span></code></pre>\n<p>See <a href=\"/documentation/templates#attributes\">Templates &gt; asset &gt; Attributes documentation</a> for details.</p>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Documentation fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/23/cecil-5.87.0-released/",
      "url": "https://main.cecil.app/news/2022/03/23/cecil-5.87.0-released/",
      "title": "Cecil 5.87.0 released",
      "summary": "Markdown Note block-level element.",
      "image": "https://main.cecil.app/images/news/markdown-notes.1428c6a4f1775ca3e72fe9ebdcd43c4b.png",
      "date_published": "2022-03-23T00:00:00+00:00","content_text": "Features\nMarkdown Note block-level element\nA new Markdown element is available: Note.\nIt encapsulates a Markdown text (Information, tip, important, etc. What you need) in an &lt;aside&gt; element with a dedicated CSS class, named by the type of the note, i.e. class=\"note note-&lt;type&gt;\".\n:::tip\n**Tip:** This is an advice.\n:::\nIs converted to:\n&lt;aside class=\"note note-tip\"&gt;\n  &lt;p&gt;\n    &lt;strong&gt;Tip:&lt;\/strong&gt; This is an advice.\n  &lt;\/p&gt;\n&lt;\/aside&gt;\n\nIn the previous example tip is the type of the note.\n\nExamples in the context of this website:\nTip: This is an advice.\nInfo: This is an information note.\nImportant: This is an important message.\nThis is a note.\nFixes\n\nThe --page command option must support subdirectory\nReload browser on first build\n\nMisc\n\nDependencies updated\nDocumentation updated and fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Markdown <em>Note</em> block-level element</h4>\n<p>A new Markdown element is available: <strong><em>Note</em></strong>.</p>\n<p>It encapsulates a Markdown text (Information, tip, important, etc. What you need) in an <code translate=\"no\">&lt;aside&gt;</code> element with a dedicated CSS class, named by the type of the note, i.e. <code translate=\"no\">class=\"note note-&lt;type&gt;\"</code>.</p>\n<pre><code class=\"language-markdown hljs markdown\" translate=\"no\">:::tip\n<span class=\"hljs-strong\">**Tip:**</span> This is an advice.\n:::</code></pre>\n<p>Is converted to:</p>\n<pre><code class=\"language-html hljs xml\" translate=\"no\"><span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">aside</span> <span class=\"hljs-attr\">class</span>=<span class=\"hljs-string\">\"note note-tip\"</span>&gt;</span>\n  <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">p</span>&gt;</span>\n    <span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">strong</span>&gt;</span>Tip:<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">strong</span>&gt;</span> This is an advice.\n  <span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">p</span>&gt;</span>\n<span class=\"hljs-tag\">&lt;/<span class=\"hljs-name\">aside</span>&gt;</span></code></pre>\n<blockquote>\n<p>In the previous example <code translate=\"no\">tip</code> is the type of the note.</p>\n</blockquote>\n<p>Examples in the context of this website:</p>\n<aside class=\"note note-tip\"><p><strong>Tip:</strong> This is an advice.</p></aside>\n<aside class=\"note note-info\"><p><strong>Info:</strong> This is an information note.</p></aside>\n<aside class=\"note note-important\"><p><strong>Important:</strong> This is an important message.</p></aside>\n<aside class=\"note note-not_styled\"><p>This is a note.</p></aside>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>The <code translate=\"no\">--page</code> command option must support subdirectory</li>\n<li>Reload browser on first build</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Documentation updated and fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/18/cecil-5.85.0-released/",
      "url": "https://main.cecil.app/news/2022/03/18/cecil-5.85.0-released/",
      "title": "Cecil 5.85.0 released",
      "summary": "Build and serve a specific page.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-03-18T00:00:00+00:00","content_text": "Features\nBuild and serve a specific page\nUses the option --page=&lt;file&gt; (alias: -p &lt;file&gt;) with the serve command to build and serve a specific page.\nIt’s useful to speed up the build when you are working on a specific page.\nExample:\ncecil serve --page=about.md\nFixes\n\nClear cache before build (during init phase)\n\nMisc\n\nCode cleaned\nDocs cleaned\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Build and serve a specific page</h4>\n<p>Uses the option <code translate=\"no\">--page=&lt;file&gt;</code> (alias: <code translate=\"no\">-p &lt;file&gt;</code>) with the <code translate=\"no\">serve</code> command to build and serve a specific page.</p>\n<p>It’s useful to speed up the build when you are working on a specific page.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">cecil serve --page=about.md</code></pre>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li>Clear cache before build (during init phase)</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Code cleaned</li>\n<li>Docs cleaned</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/10/cecil-5.84.0-released/",
      "url": "https://main.cecil.app/news/2022/03/10/cecil-5.84.0-released/",
      "title": "Cecil 5.84.0 released",
      "summary": "Open `content` with the configured editor.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-03-10T00:00:00+00:00","content_text": "Features\nOpen content with the configured editor\nUses the command option --open (-o) to open the content directory with the configured editor.\nExample:\ncecil --open\nDefines the editor with the key editor.\nExample:\neditor: typora\nDemo:\n\n\nOpen command demo\n\nFixes\n\nhtml filter fixed with image assets\nnew:page command fixed\nA message is now printed when a Markdown conversion error occur\nAnimated GIF are not converted to WebP\nThe « jsonld » template checks if author exists\n\nMisc\n\nDependencies updated\nDocs updated \/ fixed\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Open <code translate=\"no\">content</code> with the configured editor</h4>\n<p>Uses the command option <code translate=\"no\">--open</code> (<code translate=\"no\">-o</code>) to open the content directory with the configured editor.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-bash hljs bash\" translate=\"no\">cecil --open</code></pre>\n<p>Defines the editor with the key <code translate=\"no\">editor</code>.</p>\n<p><em>Example:</em></p>\n<pre><code class=\"language-yaml hljs yaml\" translate=\"no\"><span class=\"hljs-attr\">editor:</span> <span class=\"hljs-string\">typora</span></code></pre>\n<p><em>Demo:</em></p>\n<p><figure>\n<video title=\"Open command demo\" autoplay=\"\" loop=\"\" source=\"/images/news/cecil-open.webm\" src=\"/images/news/cecil-open.bfb972970f75dbfb51d2861f473bff0e.mp4\" muted=\"\" playsinline=\"\" style=\";max-width:100%;height:auto;background-color:#d8d8d8;\">\n<figcaption>Open command demo</figcaption>\n</figure></p>\n<h3 id=\"fixes\">Fixes</h3>\n<ul>\n<li><code translate=\"no\">html</code> filter fixed with image assets</li>\n<li><code translate=\"no\">new:page</code> command fixed</li>\n<li>A message is now printed when a Markdown conversion error occur</li>\n<li>Animated GIF are not converted to WebP</li>\n<li>The « jsonld » template checks if <code translate=\"no\">author</code> exists</li>\n</ul>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Dependencies updated</li>\n<li>Docs updated / fixed</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/03/04/introducing-the-news-section/",
      "url": "https://main.cecil.app/news/2022/03/04/introducing-the-news-section/",
      "title": "Introducing the News section",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-03-04T00:00:00+00:00",
      "date_modified": "2022-03-14T00:00:00+00:00","content_text": "Since the creation of Cecil the only way to know about new features and other fixes introduced in a new version was the project's Releases page on GitHub.\nNevertheless, the information communicated remained very technical and not always detailed (unless you put your nose in the code itself).\nAlso, we have created the News section in order to be able to communicate with users more explicitly on:\n\nWhat are the new features of a major version?\nWhat bugs are fixed in a minor release?\n\nWe hope you like it 🤵",
      "content_html": "<p>Since the creation of Cecil the only way to know about new features and other fixes introduced in a new version was the project's <a href=\"https://github.com/Cecilapp/Cecil/releases\" target=\"_blank\" rel=\"noopener noreferrer\">Releases page on GitHub</a>.</p>\n<p>Nevertheless, the information communicated remained very technical and not always detailed (unless you put your nose in the code itself).</p>\n<p>Also, we have created the <strong><a href=\"/news/\">News section</a></strong> in order to be able to communicate with users more explicitly on:</p>\n<ol>\n<li>What are the new features of a major version?</li>\n<li>What bugs are fixed in a minor release?</li>\n</ol>\n<p>We hope you like it 🤵</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/01/22/cecil-5.83.0-released/",
      "url": "https://main.cecil.app/news/2022/01/22/cecil-5.83.0-released/",
      "title": "Cecil 5.83.0 released",
      "summary": "Use a custom image variable in metatags.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-01-22T00:00:00+00:00","content_text": "Features\nUse a custom image variable in metatags\nBy default the metatags partial template uses the image variable of the current page, or the global site.image if the page doesn’t have an image.\nSo, if you want to use a custom image variable, you can do it by adding the following code in the template:\n{% set image = page.other_image_variable %}\n{% include 'partials\/metatags.html.twig' %}\nMisc\n\nCode cleaned\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Use a custom image variable in metatags</h4>\n<p>By default the <em><a href=\"/documentation/configuration#metatags\">metatags</a></em> partial template uses the <code translate=\"no\">image</code> variable of the current page, or the global <code translate=\"no\">site.image</code> if the page doesn’t have an image.</p>\n<p>So, if you want to use a custom image variable, you can do it by adding the following code in the template:</p>\n<pre><code class=\"language-twig hljs twig\" translate=\"no\"><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">set</span></span> image = page.other_image_variable %}</span><span class=\"xml\">\n</span><span class=\"hljs-template-tag\">{% <span class=\"hljs-name\"><span class=\"hljs-keyword\">include</span></span> 'partials/metatags.html.twig' %}</span></code></pre>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Code cleaned</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/01/13/cecil-5.82.0-released/",
      "url": "https://main.cecil.app/news/2022/01/13/cecil-5.82.0-released/",
      "title": "Cecil 5.82.0 released",
      "summary": "Load pages from a specific section in homepage.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-01-13T00:00:00+00:00","content_text": "Features\nLoad pages from a specific section in homepage\nBy default homepage page type loads all site pages.\nWith the pagesfrom variable you can specify a section name to load only pages from that section.\nSee documentation for details.",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Load pages from a specific section in <code translate=\"no\">homepage</code></h4>\n<p>By default <code translate=\"no\">homepage</code> page type loads all site pages.</p>\n<p>With the <code translate=\"no\">pagesfrom</code> variable you can specify a section name to load only pages from that section.</p>\n<p><a href=\"/documentation/content/#pagesfrom\">See documentation</a> for details.</p>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2022/01/08/cecil-5.81.0-released/",
      "url": "https://main.cecil.app/news/2022/01/08/cecil-5.81.0-released/",
      "title": "Cecil 5.81.0 released",
      "summary": "Options for `excerpt_html` filter.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2022-01-08T00:00:00+00:00","content_text": "Features\nOptions for excerpt_html filter\nThe excerpt_html filter accepts the 2 following options:\n\nseparator: string to use as separator (excerpt|break by default)\ncapture: string to capture, before (default) or after the separator\n\nSee documentation for details.\nMisc\n\nError messages updated\nDependencies updated\n",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Options for <code translate=\"no\">excerpt_html</code> filter</h4>\n<p>The <code translate=\"no\">excerpt_html</code> filter accepts the 2 following options:</p>\n<ul>\n<li><code translate=\"no\">separator</code>: string to use as separator (<code translate=\"no\">excerpt|break</code> by default)</li>\n<li><code translate=\"no\">capture</code>: string to capture, <code translate=\"no\">before</code> (default) or <code translate=\"no\">after</code> the separator</li>\n</ul>\n<p><a href=\"/documentation/templates/#excerpt-html\">See documentation</a> for details.</p>\n<h3 id=\"misc\">Misc</h3>\n<ul>\n<li>Error messages updated</li>\n<li>Dependencies updated</li>\n</ul>",
      "language": "en"
    },
    {
      "id": "https://main.cecil.app/news/2021/12/14/cecil-5.79.0-released/",
      "url": "https://main.cecil.app/news/2021/12/14/cecil-5.79.0-released/",
      "title": "Cecil 5.79.0 released",
      "summary": "Navigation template.",
      "image": "https://main.cecil.app/images/cecil-card-news.806dacd2b23b200ac8773ac4e7aaba38.png",
      "date_published": "2021-12-14T00:00:00+00:00","content_text": "Features\nNavigation template\nA default navigation component template is now available.\nSee documentation for details.",
      "content_html": "<h3 id=\"features\">Features</h3>\n<h4>Navigation template</h4>\n<p>A default <a href=\"https://github.com/Cecilapp/Cecil/blob/master/resources/layouts/partials/navigation.html.twig\" target=\"_blank\" rel=\"noopener noreferrer\">navigation component template</a> is now available.</p>\n<p><a href=\"/documentation/templates/#component-templates\">See documentation</a> for details.</p>",
      "language": "en"
    }
  ]
}
