{"id": "changelog:id29", "page": "changelog", "ref": "id29", "title": "0.57.1 (2021-06-08)", "content": "Fixed visual display glitch with global navigation menu. ( #1367 ) \n \n \n No longer truncates the list of table columns displayed on the /database page. ( #1364 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1367\", \"label\": \"#1367\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1364\", \"label\": \"#1364\"}]"} {"id": "changelog:id3", "page": "changelog", "ref": "id3", "title": "0.64.5 (2023-10-08)", "content": "Dropped dependency on click-default-group-wheel , which could cause a dependency conflict. ( #2197 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/2197\", \"label\": \"#2197\"}]"} {"id": "changelog:id30", "page": "changelog", "ref": "id30", "title": "0.57 (2021-06-05)", "content": "This release fixes a reflected cross-site scripting security hole with the ?_trace=1 feature. You should upgrade to this version, or to Datasette 0.56.1, as soon as possible. ( #1360 ) \n \n In addition to the security fix, this release includes ?_col= and ?_nocol= options for controlling which columns are displayed for a table, ?_facet_size= for increasing the number of facet results returned, re-display of your SQL query should an error occur and numerous bug fixes.", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://owasp.org/www-community/attacks/xss/#reflected-xss-attacks\", \"label\": \"reflected cross-site scripting\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1360\", \"label\": \"#1360\"}]"} {"id": "changelog:id31", "page": "changelog", "ref": "id31", "title": "0.56.1 (2021-06-05)", "content": "This release fixes a reflected cross-site scripting security hole with the ?_trace=1 feature. You should upgrade to this version, or to Datasette 0.57, as soon as possible. ( #1360 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://owasp.org/www-community/attacks/xss/#reflected-xss-attacks\", \"label\": \"reflected cross-site scripting\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1360\", \"label\": \"#1360\"}]"} {"id": "changelog:id32", "page": "changelog", "ref": "id32", "title": "0.56 (2021-03-28)", "content": "Documentation improvements, bug fixes and support for SpatiaLite 5. \n \n \n The SQL editor can now be resized by dragging a handle. ( #1236 ) \n \n \n Fixed a bug with JSON faceting and the __arraycontains filter caused by tables with spaces in their names. ( #1239 ) \n \n \n Upgraded httpx dependency. ( #1005 ) \n \n \n JSON faceting is now suggested even if a column contains blank strings. ( #1246 ) \n \n \n New datasette.add_memory_database() method. ( #1247 ) \n \n \n The Response.asgi_send() method is now documented. ( #1266 ) \n \n \n The official Datasette Docker image now bundles SpatiaLite version 5. ( #1278 ) \n \n \n Fixed a no such table: pragma_database_list bug when running Datasette against SQLite versions prior to SQLite 3.16.0. ( #1276 ) \n \n \n HTML lists displayed in table cells are now styled correctly. Thanks, Bob Whitelock. ( #1141 , #1252 ) \n \n \n Configuration directory mode now correctly serves immutable databases that are listed in inspect-data.json . Thanks Campbell Allen and Frankie Robertson. ( #1031 , #1229 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1236\", \"label\": \"#1236\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1239\", \"label\": \"#1239\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1005\", \"label\": \"#1005\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1246\", \"label\": \"#1246\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1247\", \"label\": \"#1247\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1266\", \"label\": \"#1266\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1278\", \"label\": \"#1278\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1276\", \"label\": \"#1276\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1141\", \"label\": \"#1141\"}, {\"href\": \"https://github.com/simonw/datasette/pull/1252\", \"label\": \"#1252\"}, {\"href\": \"https://github.com/simonw/datasette/pull/1031\", \"label\": \"#1031\"}, {\"href\": \"https://github.com/simonw/datasette/pull/1229\", \"label\": \"#1229\"}]"} {"id": "changelog:id33", "page": "changelog", "ref": "id33", "title": "0.55 (2021-02-18)", "content": "Support for cross-database SQL queries and built-in support for serving via HTTPS. \n \n \n The new --crossdb command-line option causes Datasette to attach up to ten database files to the same /_memory database connection. This enables cross-database SQL queries, including the ability to use joins and unions to combine data from tables that exist in different database files. See Cross-database queries for details. ( #283 ) \n \n \n --ssl-keyfile and --ssl-certfile options can be used to specify a TLS certificate, allowing Datasette to serve traffic over https:// without needing to run it behind a separate proxy. ( #1221 ) \n \n \n The /:memory: page has been renamed (and redirected) to /_memory for consistency with the new /_internal database introduced in Datasette 0.54. ( #1205 ) \n \n \n Added plugin testing documentation on Using pdb for errors thrown inside Datasette . ( #1207 ) \n \n \n The official Datasette Docker image now uses Python 3.7.10, applying the latest security fix for that Python version. ( #1235 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/283\", \"label\": \"#283\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1221\", \"label\": \"#1221\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1205\", \"label\": \"#1205\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1207\", \"label\": \"#1207\"}, {\"href\": \"https://hub.docker.com/r/datasetteproject/datasette\", \"label\": \"official Datasette Docker image\"}, {\"href\": \"https://www.python.org/downloads/release/python-3710/\", \"label\": \"the latest security fix\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1235\", \"label\": \"#1235\"}]"} {"id": "changelog:id34", "page": "changelog", "ref": "id34", "title": "0.54.1 (2021-02-02)", "content": "Fixed a bug where ?_search= and ?_sort= parameters were incorrectly duplicated when the filter form on the table page was re-submitted. ( #1214 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1214\", \"label\": \"#1214\"}]"} {"id": "changelog:id35", "page": "changelog", "ref": "id35", "title": "0.54 (2021-01-25)", "content": "The two big new features in this release are the _internal SQLite in-memory database storing details of all connected databases and tables, and support for JavaScript modules in plugins and additional scripts. \n For additional commentary on this release, see Datasette 0.54, the annotated release notes .", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://simonwillison.net/2021/Jan/25/datasette/\", \"label\": \"Datasette 0.54, the annotated release notes\"}]"} {"id": "changelog:id36", "page": "changelog", "ref": "id36", "title": "Other changes", "content": "Datasette can now open multiple database files with the same name, e.g. if you run datasette path/to/one.db path/to/other/one.db . ( #509 ) \n \n \n datasette publish cloudrun now sets force_https_urls for every deployment, fixing some incorrect http:// links. ( #1178 ) \n \n \n Fixed a bug in the example nginx configuration in Running Datasette behind a proxy . ( #1091 ) \n \n \n The Datasette Ecosystem documentation page has been reduced in size in favour of the datasette.io tools and plugins directories. ( #1182 ) \n \n \n The request object now provides a request.full_path property, which returns the path including any query string. ( #1184 ) \n \n \n Better error message for disallowed PRAGMA clauses in SQL queries. ( #1185 ) \n \n \n datasette publish heroku now deploys using python-3.8.7 . \n \n \n New plugin testing documentation on Testing outbound HTTP calls with pytest-httpx . ( #1198 ) \n \n \n All ?_* query string parameters passed to the table page are now persisted in hidden form fields, so parameters such as ?_size=10 will be correctly passed to the next page when query filters are changed. ( #1194 ) \n \n \n Fixed a bug loading a database file called test-database (1).sqlite . ( #1181 )", "breadcrumbs": "[\"Changelog\", \"0.54 (2021-01-25)\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/509\", \"label\": \"#509\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1178\", \"label\": \"#1178\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1091\", \"label\": \"#1091\"}, {\"href\": \"https://datasette.io/tools\", \"label\": \"tools\"}, {\"href\": \"https://datasette.io/plugins\", \"label\": \"plugins\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1182\", \"label\": \"#1182\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1184\", \"label\": \"#1184\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1185\", \"label\": \"#1185\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1198\", \"label\": \"#1198\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1194\", \"label\": \"#1194\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1181\", \"label\": \"#1181\"}]"} {"id": "changelog:id37", "page": "changelog", "ref": "id37", "title": "0.53 (2020-12-10)", "content": "Datasette has an official project website now, at https://datasette.io/ . This release mainly updates the documentation to reflect the new site. \n \n \n New ?column__arraynotcontains= table filter. ( #1132 ) \n \n \n datasette serve has a new --create option, which will create blank database files if they do not already exist rather than exiting with an error. ( #1135 ) \n \n \n New ?_header=off option for CSV export which omits the CSV header row, documented here . ( #1133 ) \n \n \n \"Powered by Datasette\" link in the footer now links to https://datasette.io/ . ( #1138 ) \n \n \n Project news no longer lives in the README - it can now be found at https://datasette.io/news . ( #1137 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://datasette.io/\", \"label\": \"https://datasette.io/\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1132\", \"label\": \"#1132\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1135\", \"label\": \"#1135\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1133\", \"label\": \"#1133\"}, {\"href\": \"https://datasette.io/\", \"label\": \"https://datasette.io/\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1138\", \"label\": \"#1138\"}, {\"href\": \"https://datasette.io/news\", \"label\": \"https://datasette.io/news\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1137\", \"label\": \"#1137\"}]"} {"id": "changelog:id38", "page": "changelog", "ref": "id38", "title": "0.52.5 (2020-12-09)", "content": "Fix for error caused by combining the _searchmode=raw and ?_search_COLUMN parameters. ( #1134 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1134\", \"label\": \"#1134\"}]"} {"id": "changelog:id39", "page": "changelog", "ref": "id39", "title": "0.52.4 (2020-12-05)", "content": "Show pysqlite3 version on /-/versions , if installed. ( #1125 ) \n \n \n Errors output by Datasette (e.g. for invalid SQL queries) now go to stderr , not stdout . ( #1131 ) \n \n \n Fix for a startup error on windows caused by unnecessary from os import EX_CANTCREAT - thanks, Abdussamet Ko\u00e7ak. ( #1094 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/coleifer/pysqlite3\", \"label\": \"pysqlite3\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1125\", \"label\": \"#1125\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1131\", \"label\": \"#1131\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1094\", \"label\": \"#1094\"}]"} {"id": "changelog:id4", "page": "changelog", "ref": "id4", "title": "0.64.4 (2023-09-21)", "content": "Fix for a crashing bug caused by viewing the table page for a named in-memory database. ( #2189 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/2189\", \"label\": \"#2189\"}]"} {"id": "changelog:id40", "page": "changelog", "ref": "id40", "title": "0.52.3 (2020-12-03)", "content": "Fixed bug where static assets would 404 for Datasette installed on ARM Amazon Linux. ( #1124 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1124\", \"label\": \"#1124\"}]"} {"id": "changelog:id41", "page": "changelog", "ref": "id41", "title": "0.52.2 (2020-12-02)", "content": "Generated columns from SQLite 3.31.0 or higher are now correctly displayed. ( #1116 ) \n \n \n 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 ) \n \n \n OPTIONS requests against the /database page no longer raise a 500 error. ( #1100 ) \n \n \n Databases larger than 32MB that are published to Cloud Run can now be downloaded. ( #749 ) \n \n \n Fix for misaligned cog icon on table and database pages. Thanks, Abdussamet Ko\u00e7ak. ( #1121 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"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\"}]"} {"id": "changelog:id42", "page": "changelog", "ref": "id42", "title": "0.52.1 (2020-11-29)", "content": "Documentation on Testing plugins now recommends using datasette.client . ( #1102 ) \n \n \n Fix bug where compound foreign keys produced broken links. ( #1098 ) \n \n \n datasette --load-module=spatialite now also checks for /usr/local/lib/mod_spatialite.so . Thanks, Dan Peterson. ( #1114 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/1102\", \"label\": \"#1102\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1098\", \"label\": \"#1098\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1114\", \"label\": \"#1114\"}]"} {"id": "changelog:id43", "page": "changelog", "ref": "id43", "title": "0.52 (2020-11-28)", "content": "This release includes a number of changes relating to an internal rebranding effort: Datasette's configuration mechanism (things like datasette --config default_page_size:10 ) has been renamed to settings . \n \n \n New --setting default_page_size 10 option as a replacement for --config default_page_size:10 (note the lack of a colon). The --config option is deprecated but will continue working until Datasette 1.0. ( #992 ) \n \n \n The /-/config introspection page is now /-/settings , and the previous page redirects to the new one. ( #1103 ) \n \n \n The config.json file in Configuration directory mode is now called settings.json . ( #1104 ) \n \n \n The undocumented datasette.config() internal method has been replaced by a documented .setting(key) method. ( #1107 ) \n \n \n Also in this release: \n \n \n New plugin hook: database_actions(datasette, actor, database, request) , which adds menu items to a new cog menu shown at the top of the database page. ( #1077 ) \n \n \n datasette publish cloudrun has a new --apt-get-install option that can be used to install additional Ubuntu packages as part of the deployment. This is useful for deploying the new datasette-ripgrep plugin . ( #1110 ) \n \n \n Swept the documentation to remove words that minimize involved difficulty. ( #1089 ) \n \n \n And some bug fixes: \n \n \n Foreign keys linking to rows with blank label columns now display as a hyphen, allowing those links to be clicked. ( #1086 ) \n \n \n Fixed bug where row pages could sometimes 500 if the underlying queries exceeded a time limit. ( #1088 ) \n \n \n Fixed a bug where the table action menu could appear partially obscured by the edge of the page. ( #1084 )", "breadcrumbs": "[\"Changelog\"]", "references": "[{\"href\": \"https://github.com/simonw/datasette/issues/992\", \"label\": \"#992\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1103\", \"label\": \"#1103\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1104\", \"label\": \"#1104\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1107\", \"label\": \"#1107\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1077\", \"label\": \"#1077\"}, {\"href\": \"https://github.com/simonw/datasette-ripgrep\", \"label\": \"datasette-ripgrep plugin\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1110\", \"label\": \"#1110\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1089\", \"label\": \"#1089\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1086\", \"label\": \"#1086\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1088\", \"label\": \"#1088\"}, {\"href\": \"https://github.com/simonw/datasette/issues/1084\", \"label\": \"#1084\"}]"} {"id": "changelog:id44", "page": "changelog", "ref": "id44", "title": "0.51.1 (2020-10-31)", "content": "Improvements to the new Binary data documentation page.", "breadcrumbs": "[\"Changelog\"]", "references": "[]"} {"id": "changelog:id45", "page": "changelog", "ref": "id45", "title": "0.51 (2020-10-31)", "content": "A new visual design, plugin hooks for adding navigation options, better handling of binary data, URL building utility methods and better support for running Datasette behind a proxy.", "breadcrumbs": "[\"Changelog\"]", "references": "[]"} {"id": "changelog:id46", "page": "changelog", "ref": "id46", "title": "Smaller changes", "content": "Wide tables shown within Datasette now scroll horizontally ( #998 ). This is achieved using a new