Upgrade to 1.0.32

Concerns: pushword/admin, pushword/api, pushword/conversation, pushword/core, pushword/flat, pushword/static-generator

Dates keep their offset

Exported page files now write publishedAt and holdPublicationAt with an offset, '2026-09-30 14:00+00:00'; a file gains it on its next export. A date written with an offset, in a file or through the API, is now stored at that instant, where 14:00+02:00 used to land at 14:00 server time. Messages and reviews, from conversation.csv or the conversation API, too.

Sites that wrote dates with an offset. Those pages and messages still hold the shifted time: correct and save them again.

Dates without an offset follow editorial_timezone

A date written without an offset, in a file or through the API, is now read in the new editorial_timezone, the admin shows and edits dates on that clock, and the page API returns publishedAt and holdPublicationAt on it. Unset, it is the server timezone and nothing changes.

Sites setting editorial_timezone. Set it last, or a file exported before this release shifts on its next import: pw:flat:sync to take in pending file edits, pw:flat:sync --mode=export --force to write every date with its offset, then the key.

The 404 page stays out of the index

The 404 page, and its <locale>/404 translation, now carries noindex whatever its robots field says, leaves the sitemap, the feeds, the search index and pages_list(), and answers 404 at its own URL: in the app, in the generated .htaccess and .Caddyfile, and in cache mode, which no longer caches it.

Static sites: regenerate with pw:static to get the new server rules. Cache-mode sites: pw:cache:clear drops the 404.html already cached. Themes overriding the robots block: print page.metaRobotsContent, not page.metaRobots.