datasette 1.0a27 · Simon Willison's Weblog
Science, Technology & Innovation · Apr 15, 2026
Datasette now fires a dedicated RenameTableEvent during SQLite transactions so plugins can subscribe and update name-keyed metadata (e.g., datasette-comments) to avoid stale or orphaned references after table renames.
datasette 1.0a27 · Simon Willison's Weblog
Science, Technology & Innovation · Apr 15, 2026
Datasette now rejects upsert rows with null primary keys at the /<database>/<table>/-/upsert endpoint and updated API explorer examples, so clients must supply non-null primary keys or their upsert requests will fail.
datasette 1.0a27 · Simon Willison's Weblog
Science, Technology & Innovation · Apr 15, 2026
This release adds an actor= parameter to datasette.client to make internal requests as a specific actor for deterministic permission-context testing, and a Database(is_temp_disk=True) option to use an on-disk temporary internal DB to reduce intermittent “database locked” errors and lower CI/runtime flakiness.
datasette 1.0a27 · Simon Willison's Weblog
Science, Technology & Innovation · Apr 15, 2026
Datasette's alpha replaces Django-style CSRF form tokens with browser-supplied headers (per Filippo Valsorda), changing how write operations are protected and requiring plugins, test harnesses, and embedded deployments that relied on token-based CSRF to verify and adapt before upgrading.
datasette 1.0a27 · Simon Willison's Weblog
Science, Technology & Innovation · Apr 15, 2026
Datasette’s alpha standardizes developer-facing behavior by adding an "ok": true key to /<database>.json responses and documenting call_with_supported_arguments() as a supported public API, yielding a more predictable contract for machines, plugins, and lower integration maintenance.