All Versions
Latest Version
Avg Release Cycle
71 days
Latest Release
1035 days ago

Changelog History
Page 2

  • v2.0.3 Changes

    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 Changes

    August 12, 2018

    🚀 Released: 2018-08-12

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

    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 Changes

    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
  • v2.0.0-beta.3 Changes

    April 07, 2018

    🚀 Third beta release of Pico's second major release. This is a pre-release!

    * [Changed] Add ``, `` and `` of main repo
                to pre-bundled releases, keep `.gitignore`
    * [Changed] Deny access to a possibly existing `composer.phar` in `.htaccess`
    * [Changed] Disallow the use of the `callback` filter for the `url_param` and
                `form_param` Twig functions
    * [Changed] Improve documentation
    * [Fixed] Fix page tree when sorting pages by arbitrary values
    * [Fixed] Fix sorting of `Pico::$nativePlugins`
  • v2.0.0-beta.2 Changes

    January 21, 2018

    🚀 Second beta release of Pico's second major release. This is a pre-release!

    * [New] Improve release & build process and move most build tools to the new
            `picocms/ci-tools` repo, allowing them to be used by other projects
    * [New] Add page tree; refer to the `Pico::buildPageTree()` method for more
            details; also see the `onPageTreeBuilt` event
    * [Changed] Update dependencies: Twig 1.35
    * [Changed] ! Improve `.htaccess` and deny access to all dot files by default
    * [Changed] ! Throw a `RuntimeException` when non-native plugins are loaded,
                but Pico's `PicoDeprecated` plugin is not loaded
    * [Changed] ! Change `AbstractPicoPlugin::$enabled`'s behavior: setting it to
                TRUE now leads to throwing a `RuntimeException` when the plugin's
                dependencies aren't fulfilled; use NULL to maintain old behavior
    * [Changed] ! Force themes to use `.twig` as file extension for Twig templates
    * [Changed] Improve PHP class docs
    * [Changed] Various small improvements
  • v2.0.0-beta.1 Changes

    November 05, 2017

    🚀 First beta release of Pico's second major release. This is a pre-release!

    * [New] Pico is on its way to its second major release!
    * [New] Improve Pico's release & build process
    * [New] Add "Developer Certificate of Origin" to ``
    * [New] Add license & copyright header to all relevant files
    * [New] Add Pico version constants (`Pico::VERSION` and `Pico::VERSION_ID`),
            and add a `version` Twig variable and `%version%` Markdown placeholder
    * [New] Add Pico API versioning for plugins (see `Pico::API_VERSION` constant);
            Pico now triggers events on plugins using the latest API version only
            ("native" plugins), `PicoDeprecated` takes care of all other plugins;
            as a result, old plugin's always depend on `PicoDeprecated` now
    * [New] Add a theme and plugin installer for composer; Pico now additionally
            uses the new `vendor/pico-plugin.php` file to discover plugins
            installed by composer and loads them using composer's autoloader;
            see the `picocms/composer-installer` repo for more details; Pico
            loads plugins installed by composer first and ignores conflicting
            plugins in Pico's `plugins/` dir
    * [New] Add `$enableLocalPlugins` parameter to `Pico::__construct()` to allow
            website developers to disable local plugin discovery by scanning the
            `plugins/` dir (i.e. load plugins from `vendor/pico-plugin.php` only)
    * [New] Add public `AbstractPicoPlugin::getPluginConfig()` method
    * [New] Add public `Pico::loadPlugin()` method and the corresponding
            `onPluginManuallyLoaded` event
    * [New] Add public `Pico::resolveFilePath()` method (replaces the protected
            `Pico::discoverRequestFile()` method)
    * [New] Add public `Pico::is404Content()` method
    * [New] Add public `Pico::getYamlParser()` method and the corresponding
            `onYamlParserRegistered` event
    * [New] Add public `Pico::substituteFileContent()` method
    * [New] Add public `Pico::getPageId()` method
    * [New] Add public `Pico::getFilesGlob()` method
    * [New] Add public `Pico::getVendorDir()` method, returning Pico's installation
            directory (i.e. `/var/www/pico/vendor/picocms/pico`); don't confuse
            this with composer's `vendor/` dir!
    * [New] Add `$default` parameter to `Pico::getConfig()` method
    * [New] Add empty `assets/` and `content/` dirs
    * [New] #305: Add `url_param` and `form_param` Twig functions, and the public
            `Pico::getUrlParameter()` and `Pico::getFormParameter()` methods,
            allowing theme developers to access URL GET and HTTP POST parameters
    * [New] Add `$meta` parameter to `markdown` Twig filter
    * [New] Add `remove` fallback to `sort_by` Twig filter
    * [New] Add `theme_url` config parameter
    * [New] Add public `Pico::getBaseThemeUrl()` method
    * [New] Add `REQUEST_URI` routing method, allowing one to simply rewrite all
            requests to `index.php` (e.g. use `FallbackResource` or `mod_rewrite`
            in your `.htaccess` for Apache, or use `try_files` for nginx)
    * [New] #299: Add built-in 404 page as fallback when no `` is found
    * [New] Allow sorting pages by arbitrary meta values
    * [New] Add `onSinglePageLoading` event, allowing one to skip a page
    * [New] Add `onSinglePageContent` event
    * [New] Add some config parameters to change Parsedown's behavior
    * [Changed] ! Disallow running the same Pico instance multiple times by
                throwing a `RuntimeException` when calling `Pico::run()`
    * [Changed] ! #203: Load plugins from `plugins/<plugin name>/<plugin name>.php`
                and `plugins/<plugin name>.php` only (directory and file name must
                match case-sensitive), and throw a `RuntimeException` when Pico is
                unable to load a plugin; also throw a `RuntimeException` when
                superfluous files or directories in `plugins/` are found; use a
                scope-isolated `require()` to include plugin files
    * [Changed] ! Use a plugin dependency topology to sort `Pico::$plugins`,
                changing the execution order of plugins so that plugins, on which
                other plugins depend, are always executed before their dependants
    * [Changed] ! Don't pass `$plugins` parameter to `onPluginsLoaded` event by
                reference anymore; use `Pico::loadPlugin()` instead
    * [Changed] ! Leave `Pico::$pages` unsorted when a unknown sort method was
                configured; this usually means that a plugin wants to sort it
    * [Changed] Overhaul page discovery events: add `onPagesDiscovered` event which
                is triggered right before `Pico::$pages` is sorted and move the
                `$currentPage`, `$previousPage` and `$nextPage` parameters of the
                `onPagesLoaded` event to the new `onCurrentPageDiscovered` event
    * [Changed] Move the `$twig` parameter of the `onPageRendering` event to the
                `onTwigRegistered` event, replacing the `onTwigRegistration` event
    * [Changed] Unify the `onParsedownRegistration` event by renaming it to
                `onParsedownRegistered` and add the `$parsedown` parameter
    * [Changed] #330: Replace `config/config.php` by a modular YAML-based approach;
                you can now use a arbitrary number of `config/*.yml` files to
                configure Pico
    * [Changed] ! When trying to auto-detect Pico's `content` dir, Pico no longer
                searches just for a (possibly empty) directory, but rather checks
                whether a `` exists in this directory
    * [Changed] ! Use the relative path between `index.php` and `Pico::$themesDir`
                for Pico's theme URL (also refer to the new `theme_url` config and
                the public `Pico::getBaseThemeUrl()` method for more details)
    * [Changed] #347: Drop the superfluous trailing "/index" from Pico's URLs
    * [Changed] Flip registered meta headers array, so that the array key is used
                to search for a meta value and the array value is used to store the
                found meta value (previously it was the other way round)
    * [Changed] ! Add lazy loading for `Pico::$yamlParser`, `Pico::$parsedown` and
                `Pico::$twig`; the corresponding events are no longer part of
                Pico's event flow and are triggered on demand
    * [Changed] ! Trigger the `onMetaHeaders` event just once; the event is no
                longer part of Pico's event flow and is triggered on demand
    * [Changed] Don't lower meta headers on the first level of a page's meta data
                (i.e. `SomeKey: value` is accessible using `$meta['SomeKey']`)
    * [Changed] Don't compare registered meta headers case-insensitive, require
                matching case
    * [Changed] Allow users to explicitly set values for the `date_formatted` and
                `time` meta headers in a page's YAML front matter
    * [Changed] Add page siblings for all pages
    * [Changed] ! Treat pages or directories that are prefixed by `_` as hidden;
                when requesting a hidden page, Pico responds with a 404 page;
                hidden pages are still in `Pico::$pages`, but are moved to the end
                of the pages array when sorted alphabetically or by date
    * [Changed] ! Don't treat explicit requests to a 404 page as successful request
    * [Changed] Change method visibility of `Pico::getFiles()` to public
    * [Changed] Change method visibility of `Pico::triggerEvent()` to public;
                at first glance this method triggers events on native plugins only,
                however, `PicoDeprecated` takes care of triggering events for other
                plugins, thus you can use this method to trigger (custom) events on
                all plugins; never use it to trigger Pico core events!
    * [Changed] Move Pico's default theme to the new `picocms/pico-theme` repo; the
                theme was completely rewritten from scratch and is a much better
                starting point for creating your own theme; refer to the theme's
                `` for more details
    * [Changed] Move `PicoDeprecated` plugin to the new `picocms/pico-deprecated`
                repo; refer to the plugin's `` for more details
    * [Changed] Update dependencies: Twig 1.34, Symfony YAML 2.8, Parsedown 1.6
    * [Changed] Improve Pico docs and PHP class docs
    * [Changed] A vast number of small improvements and changes...
    * [Removed] ! Remove `PicoParsePagesContent` plugin
    * [Removed] ! Remove `PicoExcerpt` plugin
    * [Removed] Remove `rewrite_url` and `is_front_page` Twig variables
    * [Removed] Remove superfluous parameters of various events to reduce Pico's
                error-proneness (plugins hopefully interfere with each other less)
  • v1.0.6 Changes

    July 25, 2017

    🚀 Released: 2017-07-25

    * [Changed] Improve documentation
    * [Changed] Improve handling of Pico's Twig config (`$config['twig_config']`)
    * [Changed] Improve PHP platform requirement checks
  • v1.0.5 Changes

    🚀 Released: 2017-05-02

    * [Changed] Improve documentation
    * [Fixed] Improve hostname detection with proxies
    * [Fixed] Fix detection of Windows-based server environments
    * [Removed] Remove Twitter links
  • v1.0.4 Changes

    🚀 Released: 2016-10-04

    * [New] Add Pico's social icons to default theme
    * [Changed] Improve documentation
    * [Changed] Add CSS flexbox rules to default theme
    * [Fixed] Fix handling of non-YAML 1-line front matters
    * [Fixed] Fix responsiveness in default theme