Plain is headed towards 1.0! Subscribe for development updates →

Dev updates

davegaeddert
davegaeddert
3 hours ago

plain.pytest 0.8.0 includes a new testbrowser fixture — this brings together playwright, pytest-playwright, and gunicorn to start running browser tests with no additional setup

davegaeddert
davegaeddert
2 weeks ago

The plain-importmap package is being removed for now. The implementation wasn't quite right, and it's not totally clear that it's actually needed.

In practice, plain-esbuild (bundling) has been more useful, and plain-vendor can be used when creating importmaps manually.

davegaeddert
davegaeddert
4 weeks ago

Elements are getting a syntax update! Now it looks more like jsx, with single braces to distinguish Python variables.

davegaeddert

The plain fix command now uses Biome to lint and format javascript, json, and css files. Combined with ruff for python, it's an all-in-one preconfigured toolset for code formatting.

davegaeddert

The updated admin toolbar

  • goes full width
  • shows request, url, and view info
  • tracks sql queries across requests
  • can show custom panels
davegaeddert

More breaking changes! The request GET and POST have been replaced by query_params and data (which can now parse JSON).

davegaeddert

The plain.api package is being reworked!

Plain itself is even more JSON-friendly than before, and the new plain.api views bring it all together with API keys and (optional) OpenAPI/swagger.json generation

davegaeddert

The first plainx community package is plainx-sentry (integration with Sentry).

We aren't planning to maintain official, first-party integrations for other commercial services... but we could provide some kind of vetted directory that includes them!

davegaeddert

Third-party packages will use the plainx namespace (instead of plain). This should help distinguish between official and community, and remove some decision making around naming.

Both use PEP 420 "implicit namespaces" so the end result is a clean from plainx import {pkg}