All Versions
Latest Version
Avg Release Cycle
68 days
Latest Release
28 days ago

Changelog History
Page 1

  • v2.1.1

    December 31, 2019

    🚀 Released: 2019-12-31

    * [Fixed] Require Parsedown 1.8.0-beta-7 and Parsedown Extra 0.8.0-beta-1 due
              to changes in Parsedown and Parsedown Extra breaking BC beyond repair
    * [Changed] #523: Check for hidden pages based on page ID instead of full paths
    * [Changed] Improve Pico docs
  • v2.1.0

    November 25, 2019

    This is Pico 2.1 - small, but mighty! 🎉 🎊

    🚀 If you want to upgrade to Pico 2.1, simply follow the usual upgrade instructions for minor releases. Installing Pico is as easy as before. You can find more extensive upgrade instructions as well as a complete list of all additions and changes in Pico's upgrade docs - even though this is a minor release, it's still a lot of new and improved stuff! 💓

    🔌 You might also want to give Pico CMS for Nextcloud 1.0 a try - it's now an official part of Pico. You can find more info at

    🚀 For a complete list of all changes compared to Pico 2.0, please refer to Pico's (including the beta release v2.1.0-beta.1).

    * [Changed] Add Pico's official logo and tagline to `content-sample/`
    * [Changed] Improve `content-sample/` to show Pico's official logo and
                the usage of the new image utility classes of Pico's default theme
    * [Changed] Improve Pico docs and PHPDoc class docs
  • v2.1.0-beta.1

    November 04, 2019

    🚀 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/` 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()`
  • v2.0.5

    January 03, 2019
    * [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
  • v2.0.5-beta.1

    January 03, 2019

    🚀 Released: 2019-01-03

    * [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
  • v2.0.4

    December 17, 2018

    🚀 Released: 2018-12-17

    * [Fixed] Proberly handle hostnames with ports in `Pico::getBaseUrl()`
    * [Changed] Improve documentation
  • v2.0.3

    December 03, 2018

    🚀 Released: 2018-12-03

    * [Fixed] Support alternative server ports in `Pico::getBaseUrl()`
    * [Changed] Don't require server environment variables to be configured
    * [Changed] Improve release & build process
    * [Changed] Improve documentation
    * [Changed] Improve PHP class docs
    * [Changed] Various small improvements
  • v2.0.2

    August 12, 2018

    🚀 Released: 2018-08-12

    * [Fixed] Support Windows paths (`\` instead of `/`) in `Pico::evaluateRequestUrl()`
  • v2.0.1

    July 29, 2018

    🚀 Released: 2018-07-29

    * [Changed] Improve documentation
    * [Changed] Add missing "Formatted Date", "Time" and "Hidden" meta headers; use
                the "Hidden" meta header to manually hide a page in the pages list
  • v2.0.0

    July 01, 2018

    🚀 This is Pico's second major release! 🎉

    🚀 For a complete list of all changes compared to Pico 1.0, please refer to Pico's (including the three beta releases v2.0.0-beta.1, v2.0.0-beta.2 and v2.0.0-beta.3).

    ⬆️ Please refer to Pico's new upgrade docs to find out what has changed and how to upgrade your Pico 1.0 installation to Pico 2.0.

    * [New] Add Bountysource
    * [Changed] Improve documentation
    * [Changed] Improve release & build process
    * [Changed] Add `Pico::setConfig()` example to `index.php.dist`
    * [Fixed] Don't load `config/config.yml` multiple times