id,page,ref,title,content,breadcrumbs,references changelog:id43,changelog,id43,0.52.2 (2020-12-02),"Generated columns from SQLite 3.31.0 or higher are now correctly displayed. ( #1116 ) Error message if you attempt to open a SpatiaLite database now suggests using --load-extension=spatialite if it detects that the extension is available in a common location. ( #1115 ) OPTIONS requests against the /database page no longer raise a 500 error. ( #1100 ) Databases larger than 32MB that are published to Cloud Run can now be downloaded. ( #749 ) Fix for misaligned cog icon on table and database pages. Thanks, Abdussamet Koçak. ( #1121 )","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1116"", ""label"": ""#1116""}, {""href"": ""https://github.com/simonw/datasette/issues/1115"", ""label"": ""#1115""}, {""href"": ""https://github.com/simonw/datasette/issues/1100"", ""label"": ""#1100""}, {""href"": ""https://github.com/simonw/datasette/issues/749"", ""label"": ""#749""}, {""href"": ""https://github.com/simonw/datasette/issues/1121"", ""label"": ""#1121""}]" changelog:v0-28-databases-that-change,changelog,v0-28-databases-that-change,Supporting databases that change,"From the beginning of the project, Datasette has been designed with read-only databases in mind. If a database is guaranteed not to change it opens up all kinds of interesting opportunities - from taking advantage of SQLite immutable mode and HTTP caching to bundling static copies of the database directly in a Docker container. The interesting ideas in Datasette explores this idea in detail. As my goals for the project have developed, I realized that read-only databases are no longer the right default. SQLite actually supports concurrent access very well provided only one thread attempts to write to a database at a time, and I keep encountering sensible use-cases for running Datasette on top of a database that is processing inserts and updates. So, as-of version 0.28 Datasette no longer assumes that a database file will not change. It is now safe to point Datasette at a SQLite database which is being updated by another process. Making this change was a lot of work - see tracking tickets #418 , #419 and #420 . It required new thinking around how Datasette should calculate table counts (an expensive operation against a large, changing database) and also meant reconsidering the ""content hash"" URLs Datasette has used in the past to optimize the performance of HTTP caches. Datasette can still run against immutable files and gains numerous performance benefits from doing so, but this is no longer the default behaviour. Take a look at the new Performance and caching documentation section for details on how to make the most of Datasette against data that you know will be staying read-only and immutable.","[""Changelog"", ""0.28 (2019-05-19)""]","[{""href"": ""https://simonwillison.net/2018/Oct/4/datasette-ideas/"", ""label"": ""The interesting ideas in Datasette""}, {""href"": ""https://github.com/simonw/datasette/issues/418"", ""label"": ""#418""}, {""href"": ""https://github.com/simonw/datasette/issues/419"", ""label"": ""#419""}, {""href"": ""https://github.com/simonw/datasette/issues/420"", ""label"": ""#420""}]" changelog:id31,changelog,id31,0.57.1 (2021-06-08),"Fixed visual display glitch with global navigation menu. ( #1367 ) No longer truncates the list of table columns displayed on the /database page. ( #1364 )","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1367"", ""label"": ""#1367""}, {""href"": ""https://github.com/simonw/datasette/issues/1364"", ""label"": ""#1364""}]" changelog:id25,changelog,id25,0.59.3 (2021-11-20),"Fixed numerous bugs when running Datasette behind a proxy with a prefix URL path using the base_url setting. A live demo of this mode is now available at datasette-apache-proxy-demo.datasette.io/prefix/ . ( #1519 , #838 ) ?column__arraycontains= and ?column__arraynotcontains= table parameters now also work against SQL views. ( #448 ) ?_facet_array=column no longer returns incorrect counts if columns contain the same value more than once.","[""Changelog""]","[{""href"": ""https://datasette-apache-proxy-demo.datasette.io/prefix/"", ""label"": ""datasette-apache-proxy-demo.datasette.io/prefix/""}, {""href"": ""https://github.com/simonw/datasette/issues/1519"", ""label"": ""#1519""}, {""href"": ""https://github.com/simonw/datasette/issues/838"", ""label"": ""#838""}, {""href"": ""https://github.com/simonw/datasette/issues/448"", ""label"": ""#448""}]" changelog:id83,changelog,id83,0.29.3 (2019-09-02),"Fixed implementation of CodeMirror on database page ( #560 ) Documentation typo fixes - thanks, Min ho Kim ( #561 ) Mechanism for detecting if a table has FTS enabled now works if the table name used alternative escaping mechanisms ( #570 ) - for compatibility with a recent change to sqlite-utils .","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/560"", ""label"": ""#560""}, {""href"": ""https://github.com/simonw/datasette/pull/561"", ""label"": ""#561""}, {""href"": ""https://github.com/simonw/datasette/issues/570"", ""label"": ""#570""}, {""href"": ""https://github.com/simonw/sqlite-utils/pull/57"", ""label"": ""a recent change to sqlite-utils""}]" changelog:id85,changelog,id85,0.29.1 (2019-07-11),"Fixed bug with static mounts using relative paths which could lead to traversal exploits ( #555 ) - thanks Abdussamet Kocak! Datasette can now be run as a module: python -m datasette ( #556 ) - thanks, Abdussamet Kocak!","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/555"", ""label"": ""#555""}, {""href"": ""https://github.com/simonw/datasette/issues/556"", ""label"": ""#556""}]" changelog:id42,changelog,id42,0.52.3 (2020-12-03),Fixed bug where static assets would 404 for Datasette installed on ARM Amazon Linux. ( #1124 ),"[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1124"", ""label"": ""#1124""}]" changelog:id24,changelog,id24,0.59.4 (2021-11-29),"Fixed bug where columns with a leading underscore could not be removed from the interactive filters list. ( #1527 ) Fixed bug where columns with a leading underscore were not correctly linked to by the ""Links from other tables"" interface on the row page. ( #1525 ) Upgraded dependencies aiofiles , black and janus .","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1527"", ""label"": ""#1527""}, {""href"": ""https://github.com/simonw/datasette/issues/1525"", ""label"": ""#1525""}]" changelog:id81,changelog,id81,0.30.1 (2019-10-30),"Fixed bug where ?_where= parameter was not persisted in hidden form fields ( #604 ) Fixed bug with .JSON representation of row pages - thanks, Chris Shaw ( #603 )","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/604"", ""label"": ""#604""}, {""href"": ""https://github.com/simonw/datasette/issues/603"", ""label"": ""#603""}]" changelog:id49,changelog,id49,0.50.2 (2020-10-09),Fixed another bug introduced in 0.50 where column header links on the table page were broken. ( #1011 ),"[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1011"", ""label"": ""#1011""}]" changelog:id56,changelog,id56,0.47.2 (2020-08-12),Fixed an issue with the Docker image published to Docker Hub . ( #931 ),"[""Changelog""]","[{""href"": ""https://hub.docker.com/r/datasetteproject/datasette"", ""label"": ""published to Docker Hub""}, {""href"": ""https://github.com/simonw/datasette/issues/931"", ""label"": ""#931""}]" changelog:id52,changelog,id52,0.49.1 (2020-09-15),Fixed a bug with writable canned queries that use magic parameters but accept no non-magic arguments. ( #967 ),"[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/967"", ""label"": ""#967""}]" changelog:id7,changelog,id7,0.64.2 (2023-03-08),"Fixed a bug with datasette publish cloudrun where deploys all used the same Docker image tag. This was mostly inconsequential as the service is deployed as soon as the image has been pushed to the registry, but could result in the incorrect image being deployed if two different deploys for two separate services ran at exactly the same time. ( #2036 )","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/2036"", ""label"": ""#2036""}]" changelog:id57,changelog,id57,0.47.1 (2020-08-11),Fixed a bug where the sdist distribution of Datasette was not correctly including the template files. ( #930 ),"[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/930"", ""label"": ""#930""}]" changelog:id22,changelog,id22,0.60.1 (2022-01-20),"Fixed a bug where installation on Python 3.6 stopped working due to a change to an underlying dependency. This release can now be installed on Python 3.6, but is the last release of Datasette that will support anything less than Python 3.7. ( #1609 )","[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/1609"", ""label"": ""#1609""}]" changelog:id19,changelog,id19,0.61.1 (2022-03-23),Fixed a bug where databases with a different route from their name (as used by the datasette-hashed-urls plugin ) returned errors when executing custom SQL queries. ( #1682 ),"[""Changelog""]","[{""href"": ""https://datasette.io/plugins/datasette-hashed-urls"", ""label"": ""datasette-hashed-urls plugin""}, {""href"": ""https://github.com/simonw/datasette/issues/1682"", ""label"": ""#1682""}]" changelog:id3,changelog,id3,0.64.7 (2023-06-12),Fixed a bug where canned queries with named parameters threw an error when run against SQLite 3.46.0. ( #2353 ),"[""Changelog""]","[{""href"": ""https://github.com/simonw/datasette/issues/2353"", ""label"": ""#2353""}]" changelog:id12,changelog,id12,0.63.1 (2022-11-10),"Fixed a bug where Datasette's table filter form would not redirect correctly when run behind a proxy using the base_url setting. ( #1883 ) SQL query is now shown wrapped in a