Skip to content

Releases: simonw/datasette

1.0a19

22 Apr 05:39
Compare
Choose a tag to compare
1.0a19 Pre-release
Pre-release
  • Tiny cosmetic bug fix for mobile display of table rows. #2479

1.0a18

17 Apr 05:18
Compare
Choose a tag to compare
1.0a18 Pre-release
Pre-release
  • Fix for incorrect foreign key references in the internal database schema. #2466
  • The prepare_connection() hook no longer runs for the internal database. #2468
  • Fixed bug where link: HTTP headers used invalid syntax. #2470
  • No longer tested against Python 3.8. Now tests against Python 3.13.
  • FTS tables are now hidden by default if they correspond to a content table. #2477
  • Fixed bug with foreign key links to rows in databases with filenames containing a special character. Thanks, Jack Stratton. #2476

1.0a17

06 Feb 19:14
Compare
Choose a tag to compare
1.0a17 Pre-release
Pre-release
  • DATASETTE_SSL_KEYFILE and DATASETTE_SSL_CERTFILE environment variables as alternatives to --ssl-keyfile and --ssl-certfile. Thanks, Alex Garcia. (#2422)
  • SQLITE_EXTENSIONS environment variable has been renamed to DATASETTE_LOAD_EXTENSION. (#2424)
  • datasette serve environment variables are now documented here.
  • The register_magic_parameters(datasette) plugin hook can now register async functions. (#2441)
  • Datasette is now tested against Python 3.13.
  • Breadcrumbs on database and table pages now include a consistent self-link for resetting query string parameters. (#2454)
  • Fixed issue where Datasette could crash on metadata.json with nested values. (#2455)
  • New internal methods datasette.set_actor_cookie() and datasette.delete_actor_cookie(), described here. (#1690)
  • /-/permissions page now shows a list of all permissions registered by plugins. (#1943)
  • If a table has a single unique text column Datasette now detects that as the foreign key label for that table. (#2458)
  • The /-/permissions page now includes options for filtering or exclude permission checks recorded against the current user. (#2460)
  • Fixed a bug where replacing a database with a new one with the same name did not pick up the new database correctly. (#2465)

0.65.1

29 Nov 01:13
Compare
Choose a tag to compare
  • Fixed bug with upgraded HTTPX 0.28.0 dependency. #2443

0.65

07 Oct 17:38
Compare
Choose a tag to compare
  • Upgrade for compatibility with Python 3.13 (by vendoring Pint dependency). (#2434)
  • Dropped support for Python 3.8.

1.0a16

06 Sep 03:58
Compare
Choose a tag to compare
1.0a16 Pre-release
Pre-release

This release focuses on performance, in particular against large tables, and introduces some minor breaking changes for CSS styling in Datasette plugins.

  • Removed the unit conversions feature and its dependency, Pint. This means Datasette is now compatible with the upcoming Python 3.13. (#2400, #2320)
  • The datasette --pdb option now uses the ipdb debugger if it is installed. You can install it using datasette install ipdb. Thanks, Tiago Ilieve. (#2342)
  • Fixed a confusing error that occurred if metadata.json contained nested objects. (#2403)
  • Fixed a bug with ?_trace=1 where it returned a blank page if the response was larger than 256KB. (#2404)
  • Tracing mechanism now also displays SQL queries that returned errors or ran out of time. datasette-pretty-traces 0.5 includes support for displaying this new type of trace. (#2405)
  • Fixed a text spacing with table descriptions on the homepage. (#2399)
  • Performance improvements for large tables:
    • Suggested facets now only consider the first 1000 rows. (#2406)
    • Improved performance of date facet suggestion against large tables. (#2407)
    • Row counts stop at 10,000 rows when listing tables. (#2398)
    • On table page the count stops at 10,000 rows too, with a "count all" button to execute the full count. (#2408)
  • New .dicts() internal method on Results that returns a list of dictionaries representing the results from a SQL query: (#2414)
    rows  =  (await  db.execute("select * from t")).dicts()
  • Default Datasette core CSS that styles inputs and buttons now requires a class of "core" on the element or a containing element, for example <form class="core">. (#2415)
  • Similarly, default table styles now only apply to <table class="rows-and-columns">. (#2420)

1.0a15

16 Aug 05:05
Compare
Choose a tag to compare
1.0a15 Pre-release
Pre-release
  • Datasette now defaults to hiding SQLite "shadow" tables, as seen in extensions such as SQLite FTS and sqlite-vec. Virtual tables that it makes sense to display, such as FTS core tables, are no longer hidden. Thanks, Alex Garcia. (#2296)
  • Fixed bug where running Datasette with one or more -s/--setting options could over-ride settings that were present in datasette.yml. (#2389)
  • The Datasette homepage is now duplicated at /-/, using the default index.html template. This ensures that the information on that page is still accessible even if the Datasette homepage has been customized using a custom index.html template, for example on sites like datasette.io. (#2393)
  • Failed CSRF checks now display a more user-friendly error page. (#2390)
  • Fixed a bug where the json1 extension was not correctly detected on the /-/versions page. Thanks, Seb Bacon. (#2326)
  • Fixed a bug where the Datasette write API did not correctly accept Content-Type: application/json; charset=utf-8. (#2384)
  • Fixed a bug where Datasette would fail to start if metadata.yml contained a queries block. (#2386)

1.0a14

05 Aug 21:31
Compare
Choose a tag to compare
1.0a14 Pre-release
Pre-release

This alpha introduces significant changes to Datasette's Metadata system, some of which represent breaking changes in advance of the full 1.0 release. The new Upgrade guide document provides detailed coverage of those breaking changes and how they affect plugin authors and Datasette API consumers.

  • The /databasename?sql= interface and JSON API for executing arbitrary SQL queries can now be found at /databasename/-/query?sql=. Requests with a ?sql= parameter to the old endpoints will be redirected. Thanks, Alex Garcia. (#2360)
  • Metadata about tables, databases, instances and columns is now stored in Datasette's internal database. Thanks, Alex Garcia. (#2341)
  • Database write connections now execute using the IMMEDIATE isolation level for SQLite. This should help avoid a rare SQLITE_BUSY error that could occur when a transaction upgraded to a write mid-flight. (#2358)
  • Fix for a bug where canned queries with named parameters could fail against SQLite 3.46. (#2353)
  • Datasette now serves E-Tag headers for static files. Thanks, Agustin Bacigalup. (#2306)
  • Dropdown menus now use a z-index that should avoid them being hidden by plugins. (#2311)
  • Incorrect table and row names are no longer reflected back on the resulting 404 page. (#2359)
  • Improved documentation for async usage of the track_event(datasette, event) hook. (#2319)
  • Fixed some HTTPX deprecation warnings. (#2307)
  • Datasette now serves a <html lange="en"> attribute. Thanks, Charles Nepote. (#2348)
  • Datasette's automated tests now run against the maximum and minimum supported versions of SQLite: 3.25 (from September 2018) and 3.46 (from May 2024). Thanks, Alex Garcia. (#2352)
  • Fixed an issue where clicking twice on the URL output by datasette --root produced a confusing error. (#2375)

0.64.8

21 Jun 23:42
Compare
Choose a tag to compare
  • Security improvement: 404 pages used to reflect content from the URL path, which could be used to display misleading information to Datasette users. 404 errors no longer display additional information from the URL. (#2359)
  • Backported a better fix for correctly extracting named parameters from canned query SQL against SQLite 3.46.0. (#2353)

0.64.7

12 Jun 23:09
Compare
Choose a tag to compare
  • Fixed a bug where canned queries with named parameters threw an error when run against SQLite 3.46.0. (#2353)