Pico v1.0.0-beta.1 Release Notes

  • 🚀 Released: 2015-11-06

    * [Security] (9e2604a) Prevent content_dir breakouts using malicious URLs
    * [New] Pico is on its way to its first stable release!
    * [New] Provide pre-bundled releases
    * [New] Heavily expanded documentation (inline code docs, user docs, dev docs)
    * [New] New routing system using the QUERY_STRING method; Pico now works
            out-of-the-box with any webserver and without URL rewriting; use
            `%base_url%?sub/page` in markdown files and `{{ "sub/page"|link }}`
            in Twig templates to declare internal links
    * [New] Brand new plugin system with dependencies (see `PicoPluginInterface`
            and `AbstractPicoPlugin`); if you're plugin dev, you really should
            take a look at the UPGRADE section of the docs!
    * [New] Introducing the `PicoDeprecated` plugin to maintain full backward
            compatibility with Pico 0.9 and Pico 0.8
    * [New] Support YAML-style meta header comments (`---`)
    * [New] Various new placeholders to use in content files (e.g. `%site_title%`)
    * [New] Provide access to all meta headers in content files (`%meta.*%`)
    * [New] Provide access to meta headers in `$page` arrays (`$page['meta']`)
    * [New] The file extension of content files is now configurable
    * [New] Add `Pico::setConfig()` method to predefine config variables
    * [New] Supporting per-directory `404.md` files
    * [New] #103: Providing access to `sub.md` even when the `sub` directory
            exists, provided that there is no `sub/index.md`
    * [New] #249: Support the `.twig` file extension for templates
    * [New] #268, 269: Now using Travis CI; performing basic code tests and
            implementing an automatic release process
    * [Changed] Complete code refactoring
    * [Changed] Source code now follows PSR code styling
    * [Changed] Replacing constants (e.g. `ROOT_DIR`) with constructor parameters
    * [Changed] Paths (e.g. `content_dir`) are now relative to Pico's root dir
    * [Changed] Adding `Pico::run()` method that performs Pico's processing and
                returns the rendered contents
    * [Changed] Renaming all plugin events; adding some new events
    * [Changed] `Pico_Plugin` is now the fully documented `DummyPlugin`
    * [Changed] Meta data must start on the first line of the file now
    * [Changed] Dropping the need to register meta headers for the convenience of
                users and pure (!) theme devs; plugin devs are still REQUIRED to
                register their meta headers during `onMetaHeaders`
    * [Changed] Exclude inaccessible files from pages list
    * [Changed] With alphabetical order, index files (e.g. `sub/index.md`) are
                now always placed before their sub pages (e.g. `sub/foo.md`)
    * [Changed] Pico requires PHP >= 5.3.6 (due to `erusev/parsedown-extra`)
    * [Changed] Pico now implicitly uses a existing `content` directory without
                the need to configure this in the `config/config.php` explicitly
    * [Changed] Composer: Require a v0.7 release of `erusev/parsedown-extra`
    * [Changed] Moving `license.txt` to `LICENSE`
    * [Changed] Moving and reformatting `changelog.txt` to `CHANGELOG.md`
    * [Changed] #116: Parse meta headers using the Symfony YAML component
    * [Changed] #244: Replace opendir() with scandir()
    * [Changed] #246: Move `config.php` to `config/` directory
    * [Changed] #253: Assume HTTPS if page is requested through port 443
    * [Changed] A vast number of small improvements and changes...
    * [Fixed] Sorting by date now uses timestamps and works as expected
    * [Fixed] Fixing `$currentPage`, `$nextPage` and `$previousPage`
    * [Fixed] #99: Support content filenames with spaces
    * [Fixed] #140, #241: Use file paths as page identifiers rather than titles
    * [Fixed] #248: Always set a timezone; adding `$config['timezone']` option
    * [Fixed] A vast number of small bugs...
    * [Removed] Removing the default Twig cache dir
    * [Removed] Removing various empty `index.html` files
    * [Removed] Removing `$pageData['excerpt']`; recoverable with `PicoExcerpt`
    * [Removed] #93, #158: Pico doesn't parse all content files anymore; moved to
                `PicoParsePagesContent`; i.e. `$pageData['content']` doesn't exist
                anymore, use `$pageData['raw_content']` when possible; otherwise
                use Twigs new `content` filter (e.g. `{{ "sub/page"|content }}`)