html_url,id,node_id,tag_name,target_commitish,name,draft,author,author_label,prerelease,created_at,published_at,body,repo,repo_label,reactions https://github.com/simonw/datasette/releases/tag/0.46,29489364,MDc6UmVsZWFzZTI5NDg5MzY0,0.46,main,0.46,0,9599,simonw,0,2020-08-09T16:09:07Z,2020-08-09T16:10:47Z,"**Warning:** This release contains a security fix related to authenticated writable canned queries. If you are using this feature you should upgrade as soon as possible. - **Security fix:** CSRF tokens were incorrectly included in read-only canned query forms, which could allow them to be leaked to a sophisticated attacker. See [issue 918](https://github.com/simonw/datasette/issues/918) for details. - Datasette now supports GraphQL via the new [datasette-graphql](https://github.com/simonw/datasette-graphql) plugin - see [GraphQL in Datasette with the new datasette-graphql plugin](https://simonwillison.net/2020/Aug/7/datasette-graphql/). - Principle git branch has been renamed from `master` to `main`. ([#849](https://github.com/simonw/datasette/issues/849)) - New debugging tool: `/-/allow-debug tool` ([demo here](https://latest.datasette.io/-/allow-debug)) helps test allow blocks against actors, as described in [Defining permissions with ""allow"" blocks](https://datasette.readthedocs.io/en/stable/authentication.html#authentication-permissions-allow). ([#908](https://github.com/simonw/datasette/issues/908)) - New logo for the documentation, and a new project tagline: ""An open source multi-tool for exploring and publishing data"". - Whitespace in column values is now respected on display, using `white-space: pre-wrap`. ([#896](https://github.com/simonw/datasette/issues/896)) - New `await request.post_body()` method for accessing the raw POST body, see [Request object](https://datasette.readthedocs.io/en/stable/internals.html#internals-request). ([#897](https://github.com/simonw/datasette/issues/897)) - Database file downloads now include a `content-length` HTTP header, enabling download progress bars. ([#905](https://github.com/simonw/datasette/issues/905)) - File downloads now also correctly set the suggested file name using a `content-disposition` HTTP header. ([#909](https://github.com/simonw/datasette/issues/909)) - `tests` are now excluded from the Datasette package properly - thanks, abeyerpath. ([#456](https://github.com/simonw/datasette/issues/456)) - The Datasette package published to PyPI now includes `sdist` as well as `bdist_wheel`. - Better titles for canned query pages. ([#887](https://github.com/simonw/datasette/issues/887)) - Now only loads Python files from a directory passed using the `--plugins-dir` option - thanks, Amjith Ramanujam. ([#890](https://github.com/simonw/datasette/pull/890)) - New documentation section on [Publishing to Vercel](https://datasette.readthedocs.io/en/stable/publish.html#publish-vercel).",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.47,29585154,MDc6UmVsZWFzZTI5NTg1MTU0,0.47,main,0.47,0,9599,simonw,0,2020-08-12T00:42:47Z,2020-08-12T00:44:52Z,"- Datasette now has [a GitHub discussions forum](https://github.com/simonw/datasette/discussions) for conversations about the project that go beyond just bug reports and issues. - Datasette can now be installed on macOS using Homebrew! Run `brew install simonw/datasette/datasette`. See [Using Homebrew](https://datasette.readthedocs.io/en/stable/installation.html#installation-homebrew). ([#335](https://github.com/simonw/datasette/issues/335)) - Two new commands: `datasette install name-of-plugin` and `datasette uninstall name-of-plugin`. These are equivalent to `pip install` and `pip uninstall` but automatically run in the same virtual environment as Datasette, so users don't have to figure out where that virtual environment is - useful for installations created using Homebrew or `pipx`. See [Installing plugins](https://datasette.readthedocs.io/en/stable/plugins.html#plugins-installing). ([#925](https://github.com/simonw/datasette/issues/925)) - A new command-line option, `datasette --get`, accepts a path to a URL within the Datasette instance. It will run that request through Datasette (without starting a web server) and print out the repsonse. See [datasette --get](https://datasette.readthedocs.io/en/stable/getting_started.html#getting-started-datasette-get) for an example. ([#926](https://github.com/simonw/datasette/issues/926))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.47.1,29587652,MDc6UmVsZWFzZTI5NTg3NjUy,0.47.1,main,0.47.1,0,9599,simonw,0,2020-08-12T02:37:24Z,2020-08-12T02:38:00Z,- Fixed a bug where the `sdist` distribution of Datasette was not correctly including the template files. ([#930](https://github.com/simonw/datasette/issues/930)),107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.47.2,29625082,MDc6UmVsZWFzZTI5NjI1MDgy,0.47.2,main,0.47.2,0,9599,simonw,0,2020-08-12T20:54:33Z,2020-08-12T20:55:28Z,- Fixed an issue with the Docker image [published to Docker Hub](https://hub.docker.com/r/datasetteproject/datasette). ([#931](https://github.com/simonw/datasette/issues/931)),107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.47.3,29738457,MDc6UmVsZWFzZTI5NzM4NDU3,0.47.3,main,0.47.3,0,9599,simonw,0,2020-08-15T20:56:08Z,2020-08-15T21:03:58Z,- The `datasette --get` command-line mechanism now ensures any plugins using the `startup()` hook are correctly executed. ([#934](https://github.com/simonw/datasette/issues/934)),107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.48,29749566,MDc6UmVsZWFzZTI5NzQ5NTY2,0.48,main,0.48,0,9599,simonw,0,2020-08-16T18:56:31Z,2020-08-16T18:58:34Z,"- Datasette documentation now lives at [docs.datasette.io](https://docs.datasette.io/). - `db.is_mutable` property is now documented and tested, see [Database introspection](https://docs.datasette.io/en/stable/internals.html#internals-database-introspection). - The `extra_template_vars`, `extra_css_urls`, `extra_js_urls` and `extra_body_script` plugin hooks now all accept the same arguments. See [extra_template_vars(template, database, table, columns, view_name, request, datasette)](https://docs.datasette.io/en/stable/plugin_hooks.html#plugin-hook-extra-template-vars) for details. ([#939](https://github.com/simonw/datasette/issues/939)) - Those hooks now accept a new `columns` argument detailing the table columns that will be rendered on that page. ([#938](https://github.com/simonw/datasette/issues/938)) - Fixed bug where plugins calling `db.execute_write_fn()` could hang Datasette if the connection failed. ([#935](https://github.com/simonw/datasette/issues/935)) - Fixed bug with the `?_nl=on` output option and binary data. ([#914](https://github.com/simonw/datasette/issues/914))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.49,31288240,MDc6UmVsZWFzZTMxMjg4MjQw,0.49,main,0.49,0,9599,simonw,0,2020-09-14T21:38:24Z,2020-09-14T21:40:11Z,"- Writable canned queries now expose a JSON API, see [JSON API for writable canned queries](https://docs.datasette.io/en/stable/sql_queries.html#canned-queries-json-api). ([#880](https://github.com/simonw/datasette/issues/880)) - New mechanism for defining page templates with custom path parameters - a template file called `pages/about/{slug}.html` will be used to render any requests to `/about/something`. See [Path parameters for pages](https://docs.datasette.io/en/stable/custom_templates.html#custom-pages-parameters). ([#944](https://github.com/simonw/datasette/issues/944)) - `register_output_renderer()` render functions can now return a `Response`. ([#953](https://github.com/simonw/datasette/issues/953)) - New `--upgrade` option for `datasette install`. ([#945](https://github.com/simonw/datasette/issues/945)) - New `datasette --pdb` option. ([#962](https://github.com/simonw/datasette/issues/962)) - `datasette --get` exit code now reflects the internal HTTP status code. ([#947](https://github.com/simonw/datasette/issues/947)) - New `raise_404()` template function for returning 404 errors. ([#964](https://github.com/simonw/datasette/issues/964)) - `datasette publish heroku` now deploys using Python 3.8.5 - Upgraded [CodeMirror](https://codemirror.net/) to 5.57.0. ([#948](https://github.com/simonw/datasette/issues/948)) - Upgraded code style to Black 20.8b1. ([#958](https://github.com/simonw/datasette/issues/958)) - Fixed bug where selected facets were not correctly persisted in hidden form fields on the table page. ([#963](https://github.com/simonw/datasette/issues/963)) - Renamed the default error template from `500.html` to `error.html`. - Custom error pages are now documented, see [Custom error pages](https://docs.datasette.io/en/stable/custom_templates.html#custom-pages-errors). ([#965](https://github.com/simonw/datasette/issues/965))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.49.1,31354944,MDc6UmVsZWFzZTMxMzU0OTQ0,0.49.1,main,0.49.1,0,9599,simonw,0,2020-09-15T20:20:15Z,2020-09-15T20:21:16Z,"- Fixed a bug with writable canned queries that use magic parameters but accept no non-magic arguments. (#967) ",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.49a0,30353073,MDc6UmVsZWFzZTMwMzUzMDcz,0.49a0,main,0.49a0,0,9599,simonw,1,2020-08-28T23:12:47Z,2020-08-28T23:18:09Z,"- `register_output_renderer()` render functions can now return a `Response`. ([#953](https://github.com/simonw/datasette/issues/953)) - New `--upgrade` option for `datasette install`. ([#945](https://github.com/simonw/datasette/issues/945)) - `datasette publish heroku` now deploys using Python 3.8.5",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.49a1,31227999,MDc6UmVsZWFzZTMxMjI3OTk5,0.49a1,main,0.49a1,0,9599,simonw,1,2020-09-14T02:47:21Z,2020-09-14T02:48:19Z,"- Upgraded [CodeMirror](https://codemirror.net/) to 5.57.0. ([#948](https://github.com/simonw/datasette/issues/948)) - Upgraded code style to Black 20.8b1. ([#958](https://github.com/simonw/datasette/issues/958)) - New `datasette --pdb` option. ([#962](https://github.com/simonw/datasette/issues/962)) - `datasette --get` exit code now reflects the internal HTTP status code. ([#947](https://github.com/simonw/datasette/issues/947)) - Fixed bug where selected facets were not correctly persisted in hidden form fields on the table page. ([#963](https://github.com/simonw/datasette/issues/963)) - New mechanism for defining page templates with custom path parameters. ([#944](https://github.com/simonw/datasette/issues/944))",107914493,datasette, https://github.com/dogsheep/dogsheep-beta/releases/tag/0.4a0,30632372,MDc6UmVsZWFzZTMwNjMyMzcy,0.4a0,main,0.4a0,0,9599,simonw,1,2020-09-03T03:53:29Z,2020-09-03T03:54:23Z,"- Incomplete preview of the `/-/beta` search interface. #3 #9 ",197431109,dogsheep-beta, https://github.com/dogsheep/dogsheep-beta/releases/tag/0.4a1,30678449,MDc6UmVsZWFzZTMwNjc4NDQ5,0.4a1,main,0.4a1,0,9599,simonw,1,2020-09-03T18:03:15Z,2020-09-03T18:03:50Z,"- Added `received` category. #10 - New `is_public` column. #11",197431109,dogsheep-beta, https://github.com/dogsheep/twitter-to-sqlite/releases/tag/0.5,19889174,MDc6UmVsZWFzZTE5ODg5MTc0,0.5,master,0.5,0,9599,simonw,0,2019-09-10T17:38:46Z,2019-09-10T17:39:47Z,* Added `followers-ids` and `friends-ids` subcommands,206156866,twitter-to-sqlite, https://github.com/dogsheep/github-to-sqlite/releases/tag/0.5,20663605,MDc6UmVsZWFzZTIwNjYzNjA1,0.5,master,0.5,0,9599,simonw,0,2019-10-13T05:28:24Z,2019-10-13T05:30:05Z,"* New command: `github-to-sqlite issue-comments` for importing comments on issues - #7 * `github-to-sqlite issues` now accepts optional `--issue=1` argument * Fixed bug inserting users into already-created table with wrong columns - #6",207052882,github-to-sqlite, https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.5,24953710,MDc6UmVsZWFzZTI0OTUzNzEw,0.5,master,0.5,0,9599,simonw,0,2020-03-28T01:50:51Z,2020-03-28T01:55:19Z,* Upgraded to latest sqlite-utils,197882382,healthkit-to-sqlite, https://github.com/dogsheep/dogsheep-beta/releases/tag/0.5,30699190,MDc6UmVsZWFzZTMwNjk5MTkw,0.5,main,0.5,0,9599,simonw,0,2020-09-04T01:45:35Z,2020-09-04T01:46:16Z,- Custom template displays can now render a point on a map. #12,197431109,dogsheep-beta, https://github.com/simonw/datasette/releases/tag/0.50,32384200,MDc6UmVsZWFzZTMyMzg0MjAw,0.50,main,0.50,0,9599,simonw,0,2020-10-09T17:57:55Z,2020-10-09T17:58:27Z,"The key new feature in this release is the **column actions** menu on the table page ([#891](https://github.com/simonw/datasette/issues/891)). This can be used to sort a column in ascending or descending order, facet data by that column or filter the table to just rows that have a value for that column. Plugin authors can use the new [datasette.client](https://docs.datasette.io/en/stable/internals.html#internals-datasette-client) object to make internal HTTP requests from their plugins, allowing them to make use of Datasette's JSON API. ([#943](https://github.com/simonw/datasette/issues/943)) New [Deploying Datasette](https://docs.datasette.io/en/stable/deploying.html#deploying) documentation with guides for deploying Datasette on a Linux server [using systemd](https://docs.datasette.io/en/stable/deploying.html#deploying-systemd) or to hosting providers [that support buildpacks](https://docs.datasette.io/en/stable/deploying.html#deploying-buildpacks). ([#514](https://github.com/simonw/datasette/issues/514), [#997](https://github.com/simonw/datasette/issues/997)) Other improvements in this release: - [Publishing to Google Cloud Run](https://docs.datasette.io/en/stable/publish.html#publish-cloud-run) documentation now covers Google Cloud SDK options. Thanks, Geoffrey Hing. ([#995](https://github.com/simonw/datasette/pull/995)) - New `datasette -o` option which opens your browser as soon as Datasette starts up. ([#970](https://github.com/simonw/datasette/issues/970)) - Datasette now sets `sqlite3.enable_callback_tracebacks(True)` so that errors in custom SQL functions will display tracebacks. ([#891](https://github.com/simonw/datasette/issues/891)) - Fixed two rendering bugs with column headers in portrait mobile view. ([#978](https://github.com/simonw/datasette/issues/978), [#980](https://github.com/simonw/datasette/issues/980)) - New `db.table_column_details(table)` introspection method for retrieving full details of the columns in a specific table, see [Database introspection](https://docs.datasette.io/en/stable/internals.html#internals-database-introspection). - Fixed a routing bug with custom page wildcard templates. ([#996](https://github.com/simonw/datasette/issues/996)) - `datasette publish heroku` now deploys using Python 3.8.6. - New `datasette publish heroku --tar=` option. ([#969](https://github.com/simonw/datasette/issues/969)) - `OPTIONS` requests against HTML pages no longer return a 500 error. ([#1001](https://github.com/simonw/datasette/issues/1001)) - Datasette now supports Python 3.9.",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.50.1,32395303,MDc6UmVsZWFzZTMyMzk1MzAz,0.50.1,main,0.50.1,0,9599,simonw,0,2020-10-10T00:41:35Z,2020-10-10T00:44:23Z,"- Fixed a bug introduced in 0.50 where the export as JSON/CSV links on the table, row and query pages were broken. (#1010) ",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.50.2,32397338,MDc6UmVsZWFzZTMyMzk3MzM4,0.50.2,main,0.50.2,0,9599,simonw,0,2020-10-10T03:53:47Z,2020-10-10T03:59:18Z,"* Fixed another bug introduced in 0.50 where column header links on the table page were broken. (#1011) ",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.50a0,32072114,MDc6UmVsZWFzZTMyMDcyMTE0,0.50a0,main,0.50a0,0,9599,simonw,1,2020-10-01T23:35:04Z,2020-10-01T23:35:54Z,"- New column action menu - table columns now show a cog icon which provides a contextual menu for that column. ([#981](https://github.com/simonw/datasette/issues/981)) - New `datasette -o` option which opens your browser as soon as Datasette starts up. ([#970](https://github.com/simonw/datasette/issues/970) - `sqlite3.enable_callback_tracebacks(True)` so errors in custom SQL functions will now display tracebacks. ([#891](https://github.com/simonw/datasette/issues/891)) - Fixed two rendering bugs with column headers in portrait mobile view. ([#978](https://github.com/simonw/datasette/issues/978), [#980](https://github.com/simonw/datasette/issues/980))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.50a1,32238807,MDc6UmVsZWFzZTMyMjM4ODA3,0.50a1,main,0.50a1,0,9599,simonw,1,2020-10-06T20:50:54Z,2020-10-06T20:52:49Z,"- Column action menu now shows the column type. ([#993](https://github.com/simonw/datasette/issues/993)) - Column action sort links now correctly link to the first page of sorted results. ([#989](https://github.com/simonw/datasette/issues/989)) - [Publishing to Google Cloud Run](https://docs.datasette.io/en/latest/publish.html#publish-cloud-run) documentation now covers Google Cloud SDK options. Thanks, Geoffrey Hing. ([#995](https://github.com/simonw/datasette/pull/995))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.51,33311677,MDc6UmVsZWFzZTMzMzExNjc3,0.51,main,0.51,0,9599,simonw,0,2020-10-31T22:24:54Z,2020-10-31T22:29:33Z,"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. ### New visual design Datasette is no longer white and grey with blue and purple links! [Natalie Downe](https://twitter.com/natbat) has been working on a visual refresh, the first iteration of which is included in this release. ([#1056](https://github.com/simonw/datasette/pull/1056)) ![datasette-0 51](https://user-images.githubusercontent.com/9599/97791267-d9011e80-1b8d-11eb-9b1b-42908266f36f.png) ### Plugins can now add links within Datasette A number of existing Datasette plugins add new pages to the Datasette interface, providig tools for things like [uploading CSVs](https://github.com/simonw/datasette-upload-csvs), [editing table schemas](https://github.com/simonw/datasette-edit-schema) or [configuring full-text search](https://github.com/simonw/datasette-configure-fts). Plugins like this can now link to themselves from other parts of Datasette interface. The [menu_links(datasette, actor)](https://docs.datasette.io/en/stable/plugin_hooks.html#plugin-hook-menu-links) hook ([#1064](https://github.com/simonw/datasette/issues/1064)) lets plugins add links to Datasette's new top-right application menu, and the [table_actions(datasette, actor, database, table)](https://docs.datasette.io/en/stable/plugin_hooks.html#plugin-hook-table-actions) hook ([#1066](https://github.com/simonw/datasette/issues/1066)) adds links to a new ""table actions"" menu on the table page. The demo at [latest.datasette.io](https://latest.datasette.io/) now includes some example plugins. To see the new table actions menu first [sign into that demo as root](https://latest.datasette.io/login-as-root) and then visit the [facetable](https://latest.datasette.io/fixtures/facetable) table to see the new cog icon menu at the top of the page. ### Binary data SQLite tables can contain binary data in `BLOB` columns. Datasette now provides links for users to download this data directly from Datasette, and uses those links to make binary data available from CSV exports. See [Binary data](https://docs.datasette.io/en/stable/binary_data.html#binary) for more details. ([#1036](https://github.com/simonw/datasette/issues/1036) and [#1034](https://github.com/simonw/datasette/issues/1034)). ### URL building The new [datasette.urls](https://docs.datasette.io/en/stable/internals.html#internals-datasette-urls) family of methods can be used to generate URLs to key pages within the Datasette interface, both within custom templates and Datasette plugins. See [Building URLs within plugins](https://docs.datasette.io/en/stable/writing_plugins.html#writing-plugins-building-urls) for more details. ([#904](https://github.com/simonw/datasette/issues/904)) ### Running Datasette behind a proxy The [base_url](https://docs.datasette.io/en/stable/config.html#config-base-url) configuration option is designed to help run Datasette on a specific path behind a proxy - for example if you want to run an instance of Datasette at `/my-datasette/` within your existing site's URL hierarchy, proxied behind nginx or Apache. Support for this configuration option has been greatly improved ([#1023](https://github.com/simonw/datasette/issues/1023)), and guidelines for using it are now available in a new documentation section on [Running Datasette behind a proxy](https://docs.datasette.io/en/stable/deploying.html#deploying-proxy). ([#1027](https://github.com/simonw/datasette/issues/1027)) ### Smaller changes - Wide tables shown within Datasette now scroll horizontally ([#998](https://github.com/simonw/datasette/issues/998)). This is achieved using a new `
` element which may impact the implementation of some plugins (for example [this change to datasette-cluster-map](https://github.com/simonw/datasette-cluster-map/commit/fcb4abbe7df9071c5ab57defd39147de7145b34e)). - New [debug-menu](https://docs.datasette.io/en/stable/authentication.html#permissions-debug-menu) permission. ([#1068](https://github.com/simonw/datasette/issues/1068)) - Removed `--debug` option, which didn't do anything. ([#814](https://github.com/simonw/datasette/issues/814)) - `Link:` HTTP header pagination. ([#1014](https://github.com/simonw/datasette/issues/1014)) - `x` button for clearing filters. ([#1016](https://github.com/simonw/datasette/issues/1016)) - Edit SQL button on canned queries, ([#1019](https://github.com/simonw/datasette/issues/1019)) - `--load-extension=spatialite` shortcut. ([#1028](https://github.com/simonw/datasette/issues/1028)) - scale-in animation for column action menu. ([#1039](https://github.com/simonw/datasette/issues/1039)) - Option to pass a list of templates to `.render_template()` is now documented. ([#1045](https://github.com/simonw/datasette/issues/1045)) - New `datasette.urls.static_plugins()` method. ([#1033](https://github.com/simonw/datasette/issues/1033)) - `datasette -o` option now opens the most relevant page. ([#976](https://github.com/simonw/datasette/issues/976)) - `datasette --cors` option now enables access to `/database.db` downloads. ([#1057](https://github.com/simonw/datasette/issues/1057)) - Database file downloads now implement cascading permissions, so you can download a database if you have `view-database-download` permission even if you do not have permission to access the Datasette instance. ([#1058](https://github.com/simonw/datasette/issues/1058)) - New documentation on [Designing URLs for your plugin](https://docs.datasette.io/en/stable/writing_plugins.html#writing-plugins-designing-urls). ([#1053](https://github.com/simonw/datasette/issues/1053))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.51.1,33314301,MDc6UmVsZWFzZTMzMzE0MzAx,0.51.1,main,0.51.1,0,9599,simonw,0,2020-11-01T03:33:47Z,2020-11-01T03:34:36Z,- Improvements to the new [Binary data](https://docs.datasette.io/en/stable/binary_data.html#binary) documentation page.,107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.51a0,32791115,MDc6UmVsZWFzZTMyNzkxMTE1,0.51a0,main,0.51a0,0,9599,simonw,1,2020-10-20T05:31:14Z,2020-10-20T05:33:01Z,"- Fixed a bunch of issues relating to the [base_url](https://docs.datasette.io/en/latest/config.html#config-base-url) setting. ([#1023](https://github.com/simonw/datasette/issues/1023)) - New `datasette.urls` URL builder for plugins, see [Building URLs within plugins](https://docs.datasette.io/en/latest/writing_plugins.html#writing-plugins-building-urls). ([#904](https://github.com/simonw/datasette/issues/904)) - Removed `--debug` option, which didn't do anything. ([#814](https://github.com/simonw/datasette/issues/814)) - `Link:` HTTP header pagination. ([#1014](https://github.com/simonw/datasette/issues/1014)) - `x` button for clearing filters. ([#1016](https://github.com/simonw/datasette/issues/1016)) - Edit SQL button on canned queries, ([#1019](https://github.com/simonw/datasette/issues/1019)) - `--load-extension=spatialite` shortcut. ([#1028](https://github.com/simonw/datasette/issues/1028))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.51a1,33253780,MDc6UmVsZWFzZTMzMjUzNzgw,0.51a1,main,0.51a1,0,9599,simonw,1,2020-10-30T05:35:23Z,2020-10-30T05:37:34Z,"- New colour scheme and improved visual design, courtesy of Natalie Downe. ([#1056](https://github.com/simonw/datasette/pull/1056)) - scale-in animation for column action menu. ([#1039](https://github.com/simonw/datasette/issues/1039)) - Wide tables now scroll horizontally. ([#998](https://github.com/simonw/datasette/issues/998)) - Option to pass a list of templates to `.render_template()` is now documented. ([#1045](https://github.com/simonw/datasette/issues/1045)) - New `datasette.urls.static_plugins()` method. ([#1033](https://github.com/simonw/datasette/issues/1033)) - `BLOB` column values can now be downloaded directly from the Datasette UI. ([#1036](https://github.com/simonw/datasette/issues/1036)) - `.csv` exports now link to direct `BLOB` downloads. ([#1034](https://github.com/simonw/datasette/issues/1034)) - `datasette -o` option now opens the most relevant page. ([#976](https://github.com/simonw/datasette/issues/976)) - `datasette --cors` option now enables access to `/database.db` downloads. ([#1057](https://github.com/simonw/datasette/issues/1057)) - Database file downloads now implement cascading permissions, so you can download a database if you have `view-database-download` permission even if you do not have permission to access the Datasette instance. ([#1058](https://github.com/simonw/datasette/issues/1058)) - New documentation on [Designing URLs for your plugin](https://docs.datasette.io/en/latest/writing_plugins.html#writing-plugins-designing-urls). ([#1053](https://github.com/simonw/datasette/issues/1053)) - New navigation menu plus a [menu_links(datasette, actor)](https://docs.datasette.io/en/latest/plugin_hooks.html#plugin-hook-menu-links) plugin hook to customize it. ([#1064](https://github.com/simonw/datasette/issues/1064)) - [table_actions(datasette, actor, database, table)](https://docs.datasette.io/en/latest/plugin_hooks.html#plugin-hook-table-actions) plugin hook for the new table actions menu. ([#1066](https://github.com/simonw/datasette/issues/1066))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.51a2,33284522,MDc6UmVsZWFzZTMzMjg0NTIy,0.51a2,main,0.51a2,0,9599,simonw,1,2020-10-30T17:56:02Z,2020-10-30T17:57:53Z,"- New [load_template(template, request, datasette)](https://docs.datasette.io/en/latest/plugin_hooks.html#plugin-hook-load-template) plugin hook. ([#1042](https://github.com/simonw/datasette/issues/1042)) - New [debug-menu](https://docs.datasette.io/en/latest/authentication.html#permissions-debug-menu) permission. ([#1068](https://github.com/simonw/datasette/issues/1068))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52,34539374,MDc6UmVsZWFzZTM0NTM5Mzc0,0.52,main,0.52,0,9599,simonw,0,2020-11-28T23:54:35Z,2020-11-28T23:57:12Z,"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**. - 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](https://github.com/simonw/datasette/issues/992)) - The `/-/config` introspection page is now `/-/settings`, and the previous page redirects to the new one. ([#1103](https://github.com/simonw/datasette/issues/1103)) - The `config.json` file in [Configuration directory mode](https://docs.datasette.io/en/stable/settings.html#config-dir) is now called `settings.json`. ([#1104](https://github.com/simonw/datasette/issues/1104)) - The undocumented `datasette.config()` internal method has been replaced by a documented [.setting(key)](https://docs.datasette.io/en/stable/internals.html#datasette-setting) method. ([#1107](https://github.com/simonw/datasette/issues/1107)) Also in this release: - New plugin hook: [database_actions(datasette, actor, database)](https://docs.datasette.io/en/stable/plugin_hooks.html#plugin-hook-database-actions), which adds menu items to a new cog menu shown at the top of the database page. ([#1077](https://github.com/simonw/datasette/issues/1077)) - `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](https://github.com/simonw/datasette-ripgrep). ([#1110](https://github.com/simonw/datasette/issues/1110)) - Swept the documentation to remove words that minimize involved difficulty. ([#1089](https://github.com/simonw/datasette/issues/1089)) And some bug fixes: - Foreign keys linking to rows with blank label columns now display as a hyphen, allowing those links to be clicked. ([#1086](https://github.com/simonw/datasette/issues/1086)) - Fixed bug where row pages could sometimes 500 if the underlying queries exceeded a time limit. ([#1088](https://github.com/simonw/datasette/issues/1088)) - Fixed a bug where the table action menu could appear partially obscured by the edge of the page. ([#1084](https://github.com/simonw/datasette/issues/1084))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52.1,34551688,MDc6UmVsZWFzZTM0NTUxNjg4,0.52.1,main,0.52.1,0,9599,simonw,0,2020-11-29T19:38:29Z,2020-11-29T19:39:52Z,"- Documentation on [Testing plugins](https://docs.datasette.io/en/stable/testing_plugins.html#testing-plugins) now recommends using [datasette.client](https://docs.datasette.io/en/stable/internals.html#internals-datasette-client). ([#1102](https://github.com/simonw/datasette/issues/1102)) - Fix bug where compound foreign keys produced broken links. ([#1098](https://github.com/simonw/datasette/issues/1098)) - `datasette --load-module=spatialite` now also checks for `/usr/local/lib/mod_spatialite.so`. Thanks, Dan Peterson. ([#1114](https://github.com/simonw/datasette/issues/1114))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52.2,34725716,MDc6UmVsZWFzZTM0NzI1NzE2,0.52.2,main,0.52.2,0,9599,simonw,0,2020-12-03T00:57:40Z,2020-12-03T00:58:43Z,"- Generated columns from SQLite 3.31.0 or higher are now correctly displayed. ([#1116](https://github.com/simonw/datasette/issues/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](https://github.com/simonw/datasette/issues/1115)) - `OPTIONS` requests against the `/database` page no longer raise a 500 error. ([#1100](https://github.com/simonw/datasette/issues/1100)) - Databases larger than 32MB that are published to Cloud Run can now be downloaded. ([#749](https://github.com/simonw/datasette/issues/749)) - Fix for misaligned cog icon on table and database pages. Thanks, Abdussamet Koçak. ([#1121](https://github.com/simonw/datasette/issues/1121))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52.3,34782337,MDc6UmVsZWFzZTM0NzgyMzM3,0.52.3,main,0.52.3,0,9599,simonw,0,2020-12-03T19:07:05Z,2020-12-03T19:08:29Z,- Fixed bug where static assets would 404 for Datasette installed on ARM Amazon Linux. ([#1124](https://github.com/simonw/datasette/issues/1124>)),107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52.4,34882011,MDc6UmVsZWFzZTM0ODgyMDEx,0.52.4,main,0.52.4,0,9599,simonw,0,2020-12-05T19:42:42Z,2020-12-05T19:42:57Z,"- Show [pysqlite3](https://github.com/coleifer/pysqlite3) version on `/-/versions`, if installed. ([#1125](https://github.com/simonw/datasette/issues/1125)) - Errors output by Datasette (e.g. for invalid SQL queries) now go to `stderr`, not `stdout`. ([#1131](https://github.com/simonw/datasette/issues/1131)) - Fix for a startup error on windows caused by unnecessary `from os import EX_CANTCREAT` - thanks, Abdussamet Koçak. ([#1094](https://github.com/simonw/datasette/issues/1094))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.52.5,35063580,MDc6UmVsZWFzZTM1MDYzNTgw,0.52.5,0.52.x,0.52.5,0,9599,simonw,0,2020-12-09T20:03:44Z,2020-12-09T20:10:23Z,- Fix for error caused by combining the `_searchmode=raw` and `?_search_COLUMN` parameters. ([#1134](https://github.com/simonw/datasette/issues/1134)),107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.53,35131848,MDc6UmVsZWFzZTM1MTMxODQ4,0.53,main,0.53,0,9599,simonw,0,2020-12-11T01:44:36Z,2020-12-11T01:46:44Z,"Datasette has an official project website now, at . This release mainly updates the documentation to reflect the new site. - New `?column__arraynotcontains=` table filter. ([#1132](https://github.com/simonw/datasette/issues/1132)) - `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](https://github.com/simonw/datasette/issues/1135)) - New `?_header=off` option for CSV export which omits the CSV header row, [documented here](https://docs.datasette.io/en/stable/csv_export.html#csv-export-url-parameters). ([#1133](https://github.com/simonw/datasette/issues/1133)) - ""Powered by Datasette"" link in the footer now links to . ([#1138](https://github.com/simonw/datasette/issues/1138)) - Project news no longer lives in the README - it can now be found at . ([#1137](https://github.com/simonw/datasette/issues/1137))",107914493,datasette, https://github.com/simonw/datasette/releases/tag/0.54,36871901,MDc6UmVsZWFzZTM2ODcxOTAx,0.54,main,0.54,0,9599,simonw,0,2021-01-25T17:35:06Z,2021-01-25T17:36:30Z,"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. For additional commentary on this release, see [Datasette 0.54, the annotated release notes](https://simonwillison.net/2021/Jan/25/datasette/). ### The _internal database As part of ongoing work to help Datasette handle much larger numbers of connected databases and tables (see [Datasette Library](https://github.com/simonw/datasette/issues/417)) Datasette now maintains an in-memory SQLite database with details of all of the attached databases, tables, columns, indexes and foreign keys. ([#1150](https://github.com/simonw/datasette/issues/1150)) This will support future improvements such as a searchable, paginated homepage of all available tables. You can explore an example of this database by [signing in as root](https://latest.datasette.io/login-as-root) to the `latest.datasette.io` demo instance and then navigating to [latest.datasette.io/_internal](https://latest.datasette.io/_internal). Plugins can use these tables to introspect attached data in an efficient way. Plugin authors should note that this is not yet considered a stable interface, so any plugins that use this may need to make changes prior to Datasette 1.0 if the `_internal` table schemas change. ### Named in-memory database support As part of the work building the `_internal` database, Datasette now supports named in-memory databases that can be shared across multiple connections. This allows plugins to create in-memory databases which will persist data for the lifetime of the Datasette server process. ([#1151](https://github.com/simonw/datasette/issues/1151)) The new `memory_name=` parameter to the [Database class](https://docs.datasette.io/en/stable/internals.html#internals-database) can be used to create named, shared in-memory databases. ### JavaScript modules [JavaScript modules](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules) were introduced in ECMAScript 2015 and provide native browser support for the `import` and `export` keywords. To use modules, JavaScript needs to be included in `