← Back to topics
2 tool-launch Simon Willison single-source 5 articles

datasette 1.0a27

Datasette 1.0a27 drops Django-style CSRF tokens and adds a RenameTableEvent for plugin developers.

datasette 1.0a27
via Simon Willison

📰 The headlines

🔍 Let's dive in

Datasette 1.0a27 ships two headline changes: CSRF protection now relies on modern browser headers rather than Django-style form tokens, and a new RenameTableEvent fires when tables are renamed inside SQLite transactions. The event lets plugins like datasette-comments stay in sync when the tables they reference get renamed.

The CSRF shift had immediate downstream effects — the datasette-export-database plugin required a compatibility patch (0.3a1) because it had depended on the now-removed ds_csrftoken cookie for signed URLs. A follow-up alpha, 1.0a28, also landed quickly to fix accidental breakages introduced in a27, including a bug in execute_write_fn() callbacks and a new datasette.close() method to prevent file descriptor exhaustion in test suites.

Around the same release window, Willison published patterns for querying Datasette directly from Google Sheets via importdata(), named functions, and Apps Script, and built a Claude-assisted preview tool for the datasette.io news YAML file.

Synthesized across 1 sources · regenerate

🕰 The timeline · 5 sources

Simon Willison first-party · 2d ago · 2/5

SQL functions in Google Sheets to fetch data from Datasette ↗

Simon Willison has published patterns for integrating Datasette with Google Sheets, enabling direct SQL queries from spreadsheets. The guide covers three approaches: using importdata(), creating named functions, and leveraging Google Apps Script for authenticated requests. An example sheet demonstrates all three methods in practice.

I've been experimenting with ways to fetch data from Datasette and display it in Google Sheets.
— Simon Willison
Simon Willison first-party · 5d ago · 2/5

datasette 1.0a28 ↗

Datasette 1.0a28 addresses accidental breakages introduced in the previous alpha, including a compatibility bug in execute_write_fn() callbacks and improvements to database connection shutdown. The release adds a new datasette.close() method and a pytest plugin that automatically cleans up temporary instances, helping prevent file descriptor exhaustion in test suites. The changes were implemented using Claude Code and Claude Opus 4.7.

Most of the changes in this release were implemented using Claude Code and the newly released Claude Opus 4.7.
— Simon Willison
Simon Willison first-party · 6d ago · 1/5

datasette.io news preview ↗

Simon Willison used Claude to build a custom preview interface for the datasette.io news section, which is maintained in a YAML file in the project's GitHub repository. The tool allows users to paste YAML content and see how it will render on the homepage while catching markdown and YAML errors. Willison leveraged Claude's ability to clone GitHub repos and analyze file content within a regular chat conversation.

The editor loads the current news.yaml file from GitHub and provides immediate feedback on formatting errors, link validation, and markdown syntax issues.
— Simon Willison
I built it using standard claude.ai and Claude Artifacts, taking advantage of Claude's ability to clone GitHub repos and look at their content as part of a regular chat.
— Simon Willison
Simon Willison first-party · 6d ago · 1/5

datasette-export-database 0.3a1 ↗

Simon Willison released datasette-export-database 0.3a1, an alpha version of a Datasette plugin. The update addresses compatibility with Datasette 1.0a27, which no longer sets the ds_csrftoken cookie that the plugin previously relied on for signed URLs. The release ensures the plugin continues to function with the latest Datasette version.

This plugin was using the ds_csrftoken cookie as part of a custom signed URL, which needed upgrading now that Datasette 1.0a27 no longer sets that cookie.
— Simon Willison
Simon Willison first-party · 6d ago · 2/5

datasette 1.0a27 ↗

Datasette 1.0a27 alpha has been released with two major changes: removal of Django-style CSRF form tokens in favor of modern browser headers, and a new RenameTableEvent fired when tables are renamed during SQLite transactions. The event system allows plugins like datasette-comments to react appropriately when tables they reference are renamed. Additional improvements include new actor parameters for testing, temporary disk database options, and API consistency enhancements.

Datasette no longer uses Django-style CSRF form tokens, instead using modern browser headers
— Simon Willison
Datasette now fires a new RenameTableEvent any time a table is renamed during a SQLite transaction
— Simon Willison

🏷 Tags

ClaudeClaude Code

🔧 Debug

Cluster ID
3e359b6522
Importance (max)
2
Members
5
Sources
Simon Willison
Earliest
2026-04-15T23:16:34.000Z
Latest
2026-04-20T02:33:58.000Z
Lead URL
https://simonwillison.net/2026/Apr/15/datasette