Ponzu v0.9.3 Release Notes

Release Date: 2017-08-14 // over 6 years ago
  • woah

    In celebration of the 3,000 stars (!) Ponzu has received to-date, we're releasing v0.9.3 ...we are far past due for a release. Lots has happened since releasing v0.9.2, including:

    ๐Ÿ”จ @martint17r's fantastic refactoring of our CLI, now using the legendary cobra package by @spf13. This will make it much easier for others to contribute to the CLI, not to mention the organizational benefits it offers. Huge thank you to @martint17r for taking the lead on this.

    ๐Ÿ”€ @torniker's fix for some really pesky bugs that would occur when using multiple selects or repeaters - this one saved me a huge headache on a real project, and I imagine tons of others. Additionally, @torniker fixed a number of bugs in the approve handlers when merging externally created content. Thank you @torniker for your work on these!

    ๐Ÿ’ป @guycalledseven fixed the system and database initialization steps which had a conflict when Ponzu users implemented the search.Searchable interface on their content types and were using UI-enabled addons. This was really tricky and took a lot of work.. especially in undocumented territory - so thank you, @guycalledseven! More to come from us on the addon user and developer experience, so keep an eye out.

    ๐Ÿ“ˆ @tom-f responded to my issue / feature request to add a crucial search index backup routine in the same vain as the system / analytics / uploads backups via HTTP. This included a nice abstraction of file system archival which is now available in the system/backup package. Big thank you to @tom-f for helping on this!

    ๐Ÿ’ป A handy CSV export feature from the admin UI. Just implement the CSVFormattable interface and you get a nice export / download button for your admins to use. This is part of the new family of Format interfaces which can be extended to add various export formats.

    There were many more contributions (listed below) made by community members and all of them are truly appreciated - thank you all!

    ๐Ÿš€ This release includes contributions from: @torniker, @tom-f, @bradleyfalzon, @guycalledseven, @ivanov, @martint17r, @nilslice


    Everything new in v0.9.3:

    • ๐Ÿ”’ [f43c8b9] include .gitignore in new projects, add hostname default to init, security enhancement, HTML unescape reference options
    • [a931ae0] add --bind option to run cmd on CLI to set address of listener
    • โšก๏ธ [3734011] update addon api to support non-domain bind addresses
    • ๐Ÿ›  [abd0e59] fixed approve handler losing data for string slices - thank you @torniker!
    • [efbc295] fix issues #59 and #167 regarding multiple repeaters and data inconsistency - thank you @torniker!
    • [0a1d7d9] add backup routine for search indexes - thanks @tom-f!
    • ๐Ÿ“ฆ [30dea40] create filesystem backup/archive abstraction package - thanks @tom-f!
    • [f4c5d79] fix for db initialization and addon compatibility when using full-text search indexing - thanks to @guycalledseven!
    • ๐Ÿ“„ [e3fb3ab] provide --docs & --docs-port flags to run local docs server
    • [1b15bb3] hydrate item with data in Hookable methods - thanks to @ivanov!
    • ๐Ÿ”จ [fa6a490] refactor for unix consistency and to use @spf13/cobra package - thanks to @martint17r!
    • ๐Ÿ“„ [f176e7d] add CSV export support with new CSVFormattable](https://docs.ponzu-cms.org/Interfaces/Format/#formatcsvformattable) interface
    • ๐Ÿ›  [70a0164] docs typo fixes - thanks to @bradleyfalzon!
    • [ed0922f] Included video walkthrough / introduction to Ponzu

    ๐Ÿ’ฅ Breaking Changes:

    • ๐Ÿ“š item.Pushable & item.Omittable now have slightly different method sets. See the updated documentation here: https://docs.ponzu-cms.org/Interfaces/Item

      type Pushable interface { // the values contained in []string fields returned by Push must be URL pathsPush(http.ResponseWriter, *http.Request) ([]string, error) }

      type Omittable interface { Omit(http.ResponseWriter, *http.Request) ([]string, error) }

    With these changes, you can now intercept the request/response from within your implementation and act accordingly. For example, you may want to omit a field only if the request contains certain data.