Pico v2.1.0-beta.1 Release NotesRelease Date: 2019-11-04 // 18 days ago
🚀 First beta release of Pico v2.1. This is a pre-release!
* [New] Add `assets_dir`, `assets_url` and `plugins_url` config params * [New] Add `%config.*%` Markdown placeholders for scalar config params and the `%assets_url%`, `%themes_url%` and `%plugins_url%` placeholders * [New] Add `content-sample/theme.md` for theme testing purposes * [New] Introduce API versioning for themes and support theme-specific configs using the new `pico-theme.yml` in a theme's directory; `pico-theme.yml` allows a theme to influence Pico's Twig config, to register known meta headers and to provide defaults for theme config params * [New] Add `assets_url`, `themes_url` and `plugins_url` Twig variables * [New] Add `pages` Twig function to deal with Pico's page tree; this function replaces the raw usage of Pico's `pages` array in themes * [New] Add `url` Twig filter to replace URL placeholders (e.g. `%base_url%`) in strings using the new `Pico::substituteUrl()` method * [New] Add `onThemeLoading` and `onThemeLoaded` events * [New] Add `debug` config param and the `Pico::isDebugModeEnabled()` method, cehcking the `PICO_DEBUG` environment variable, to enable debugging * [New] Add new `Pico::getNormalizedPath()` method to normalize a path; this method should be used to prevent content dir breakouts when dealing with paths provided by user input * [New] Add new `Pico::getUrlFromPath()` method to guess a URL from a file path * [New] Add new `Pico::getAbsoluteUrl()` method to make a relative URL absolute * [New] #505: Create pre-built `.zip` release archives * [Fixed] #461: Proberly handle content files with a UTF-8 BOM * [Changed] Introduce API version 3 * [Changed] Rename `theme_url` config param to `themes_url`; the `theme_url` Twig variable and Markdown placeholder are kept unchanged * [Changed] Update to Parsedown Extra 0.8 and Parsedown 1.8 (both still beta) * [Changed] Enable Twig's `autoescape` feature by default; outputting a variable now causes Twig to escape HTML markup; Pico's `content` variable is a notable exception, as it is marked as being HTML safe * [Changed] Rename `prev_page` Twig variable to `previous_page` * [Changed] Mark `markdown` and `content` Twig filters as being HTML safe * [Changed] Add `$singleLine` param to `markdown` Twig filter as well as the `Pico::parseFileContent()` method to parse just a single line of Markdown input * [Changed] Add `AbstractPicoPlugin::configEnabled()` method to check whether a plugin should be enabled or disabled based on Pico's config * [Changed] Deprecate the use of `AbstractPicoPlugin::__call()`, use `PicoPluginInterface::getPico()` instead * [Changed] Update to Twig 1.36 as last version supporting PHP 5.3, use a Composer-based installation to use a newer Twig version * [Changed] Add `$basePath` and `$endSlash` params to `Pico::getAbsolutePath()` * [Changed] Deprecate `Pico::getBaseThemeUrl()` * [Changed] Replace various `file_exists` calls with proper `is_file` calls * [Changed] Refactor release & build system * [Changed] Improve PHP class docs * [Changed] Various small improvements * [Removed] Remove superfluous `base_dir` and `theme_dir` Twig variables * [Removed] Remove `PicoPluginInterface::__construct()`
Previous changes from v2.0.5
* [New] Add PHP 7.3 tests * [New] Add `2.0.x-dev` alias for master branch to `composer.json` * [Changed] Update to Parsedown Extra 0.8 and Parsedown 1.8 (both still beta) * [Changed] Improve release & build process