Ponzu Versions Save

Headless CMS with automatic JSON API. Featuring auto-HTTPS from Let's Encrypt, HTTP/2 Server Push, and flexible server framework written in Go.

v0.11.0

4 years ago

This release includes new features.

  1. Snap support. Install Ponzu CMS as a snap. See #313 & #307. Thanks @igorljubuncic

  2. Editable slug. Ponzu users can now maintain the slug as part of their item maintenance. See #309. Thanks @junnotantra

  3. BeforeAPIResponse and AfterAPIResponse hooks added offering opportunities to modify API response. See #305

v0.10.1

5 years ago

Big thanks to @olliephillips for fixing the admin asset delete issue in #262.

v0.10.0

5 years ago

Happy New Year

Thanks to everyone’s contributions over the past months! This release includes a number of fixes, documentation updates and more from folks including:

@mavimo, @lucperkins, @torniker, @nanohard, @fedir, & @vkuznecovas

Thanks to the @ponzu-cms/team for the continued support with issue management. Your help is very much appreciated.

Cheers!

0.9.4

6 years ago

Ponzu's ACME implementation to integrate with Let's Encrypt needed to be updated (based on the acme/autocert package) to meet the required "http-01" challenge. For more background, read: https://community.letsencrypt.org/t/2018-01-11-update-regarding-acme-tls-sni-and-shared-hosting-infrastructure/50188

0.9.3

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:

  1. @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.

  2. @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!

  3. @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.

  4. @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!

  5. 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:

type Pushable interface {
    // the values contained in []string fields returned by Push must be URL paths
    Push(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.

0.9.2

6 years ago

It's been a busy few weeks with lots of great stuff added and fixed. We've had some fantastic contributions from the community for features ranging from core enhancements to HTTP backup efficiency to Docker support.

I'm excited to announce the official Ponzu documentation site: https://docs.ponzu-cms.org (Source)

Thank you to everyone who helped by contributing code, comments, thoughts and participated in the discussions on the issue tracker.

New in 0.9.2:

  • [#140] Generate content references from the CLI
  • [#138] More hooks added to item.Hookable:
    • Admin triggered by CMS actions: {Before|After}Admin{Create|Update|Delete}
    • Addon triggered by status change: {Before|After}Addon{Enable|Disable}
      • allows addons to do setup/teardown during runtime
  • [#137] File Metadata API
  • [#132] Context Cancellation for backup routines (by @eticzon)
  • [#131] Race condition fix in configCache map (thank you @golang race detector!)
  • [#126] Reserved names fix in CLI (bug reported by @gedw99)
  • [#123] Performance improvement to sort and storage (by @kkeuning)
  • [#116] Full-text search using Bleve for any content type (disabled by default, single-method to enable)
  • [#115] Dockerfile and example app (by @krismeister)
  • [#107] Add optional input view specifier in CLI for each field

0.9.1

7 years ago

This is a minor release to fix a bug in the CMS editor - which would ignore changes made to content if a field was not present in the POST request (such as unchecking a checkbox), but there was intent to overwrite the value in the database.

In this release, we have separated the functionality of merging data (such as in the Update method in the Updatedable interface), into it's own exported function within the system/db package: UpdateContent(target string, data url.Values) (int, error) . It is now solely responsible for merging fields into existing data in the database, whereas SetContent(target string, data url.Values) (int, error) will exclusively insert or replace data into the database.

This way Ponzu developers have access to both of these individually to use as needed, rather than hiding them inside the HTTP handlers.

To get the latest version:

$ go get -u github.com/ponzu-cms/ponzu/...
$ cd $PROJ
$ ponzu upgrade

0.9.0

7 years ago

This is an important release! v0.9.0 is introducing some breaking changes. If you have been using the api.Externalable interface to accept content from external clients, you will need to update a couple methods and change some client code for API endpoints.

  1. Huge thanks to @kkeuning for his work on the api.Updateable interface, enabling outside clients to update content via the Content API. This allows Ponzu systems to handle POST requests to /api/content/update?type=<Type>&id=<id> and will merge in updated fields to the database.

  2. A new api.Deleteable interface is available, with a single method: Delete(http.ResponseWriter, *http.Request) error - this enables external clients to delete content from the database via the Content API endpoint: /api/content/delete?type=<Type>&id=<id>

    Note: along with both of the additions above come item.Hookable methods so Ponzu users can hook into the req/res lifecycle and do validation, logging, trigger notifications, modify data etc.

  3. BREAKING CHANGE: api.Externalable and its method Accept(http.ResponseWriter, *http.Request) error have been renamed to follow the convention set with Updateable and Deleteable, and are now api.Createable and Create(http.ResponseWriter, *http.Request) error

    This also means that the Content API endpoint for creating content from external clients is now /api/content/create?type=<Type> instead of /api/content/external?type=<Type>

I apologize for any inconvenience this brings, and for making breaking changes, but the clarity and consistency this adds are nicer to work with. I believe it will set a precedence for naming patterns that will keep the codebase cleaner and easier to pick up down the line.

From here, we have only a bit of clean-up, a Filterable interface (#86) proposed by @olliephillips which acts as a stored procedure of sorts, and optimizations to the db.SortContent function which is causing issues when large amounts of external content is created at once. Unless there are other suggestions that would change the overall Ponzu API, completion of these items and more testing should allow us to hit the v1.0.0 mark!

To get the latest release:

$ go get -u github.com/ponzu-cms/ponzu/...
$ cd $PROJ
$ ponzu upgrade

0.8.5

7 years ago

This release is made possible by several contributions from @Sirikon, @olliephillips, @rohanpai

#78 adds better Windows support & fixes an issue with the CLI

#87 includes a new CLI command $ponzu add <import path> to go get & copy addon packages into a Ponzu project

Additionally, there was a bug in the internal omit func called during the contentsHandler of the content API. This is now fixed, and we advise everyone to upgrade your projects to v0.8.5 after updating your ponzu package.

To get the latest release:

$ go get -u github.com/ponzu-cms/ponzu/...
$ cd $PROJ
$ ponzu upgrade

0.8.4

7 years ago

With a new system/item package interface, item.Omittable, Ponzu content API responses can now be told to keep arbitrary struct fields from being exposed. The Omit method implements this interface by returning a []string containing the names of the JSON struct tags for the type whose fields you want omitted.

type Omittable interface {
    Omit() []string
}

As usual, upgrade by:

$ go get -u github.com/ponzu-cms/ponzu/...
$ cd $PROJ && ponzu upgrade