Publ: Development Blog

News and updates about Publ

Publ v0.8.19 released

Posted Thursday, September 24 at 7:10 PM (a month ago)

Wow, it’s been a while since I’ve posted a release announcement, huh.

A lot has changed since the last announcement. Here’s a short-ish version of what’s changed:

  • Update the minimum Python version to 3.10
  • Remove the old/broken publ.__version__ mechanism
  • Improve how entry plaintext output works
  • Fix how <br> works in HTML sanitization
  • Remove a bunch of deprecated stuff
  • Stop trying to infer a timezone, which was causing more problems than it helped with (see note)
  • Change the browser-side caching behavior to be more in line with modern standards
  • Simplify crawler bot detection and detect new bots more generally
  • Fix missing headers on certain error response pages (particularly Retry-After for 429 and 503), and generally clean up error handling
  • Remove a useless old dependency on awesome-slugify
  • Massively improve the publ normalize tool to make it actually useful (see note)
  • Provide correct Content-Type headers for alternate error pages (e.g. via Accept)
  • Improve the way that the Content-Type header is formed, and only force a utf-8 charset on text/* and if a charset isn’t already specified there

Publ v0.8.8 released

Posted Thursday, February 26 at 1:36 PM (8 months ago)

I’ve released Publ v0.8.8. It adds one new feature, namely the user object now has an is_bot flag to indicate whether the site is being perused by a declared bot.

This functionality is particularly useful for implementing crawler mitigations, which have been quite effective with the current onslaught of badly-behaved crawlers.

I have also finally begun to collect some useful recipes.

v0.8.6 released

Posted Thursday, January 8 at 2:22 AM (10 months ago)

Publ v0.8.6 is out; in this release I just added a better default token store for authentication, which will now work correctly in a multiprocess configuration (as opposed to the old default which would work with multiple threads but not multiple processes).

I’ve also finally documented how to provide your own token store for more exotic configurations, although that, much like Sam Reich, has been here the whole time.