{"html_url": "https://github.com/simonw/datasette/releases/tag/0.55", "id": 38264801, "node_id": "MDc6UmVsZWFzZTM4MjY0ODAx", "tag_name": "0.55", "target_commitish": "main", "name": "0.55", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-19T02:01:06Z", "published_at": "2021-02-19T02:02:29Z", "body": "Support for cross-database SQL queries and built-in support for serving via HTTPS.\r\n\r\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](https://docs.datasette.io/en/stable/sql_queries.html#cross-database-queries) for details. ([#283](https://github.com/simonw/datasette/issues/283))\r\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](https://github.com/simonw/datasette/issues/1221))\r\n- The `/:memory:` page has been renamed (and redirected) to `/_memory` for consistency with the new `/_internal` database introduced in Datasette 0.54. ([#1205](https://github.com/simonw/datasette/issues/1205))\r\n- Added plugin testing documentation on [Using pdb for errors thrown inside Datasette](https://docs.datasette.io/en/stable//testing_plugins.html#testing-plugins-pdb). ([#1207](https://github.com/simonw/datasette/issues/1207))\r\n- The [official Datasette Docker image](https://hub.docker.com/r/datasetteproject/datasette) now uses Python 3.7.10, applying [the latest security fix](https://www.python.org/downloads/release/python-3710/) for that Python version. ([#1235](https://github.com/simonw/datasette/issues/1235))", "repo": {"value": 107914493, "label": "datasette"}, "reactions": null} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/3.5", "id": 38037267, "node_id": "MDc6UmVsZWFzZTM4MDM3MjY3", "tag_name": "3.5", "target_commitish": "main", "name": "3.5", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-14T22:43:06Z", "published_at": "2021-02-14T22:44:21Z", "body": "- `sqlite-utils insert --sniff` option for detecting the delimiter and quote character used by a CSV file, see [Alternative delimiters and quote characters](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-delimiter). ([#230](https://github.com/simonw/sqlite-utils/issues/230))\r\n- The `table.rows_where()`, `table.search()` and `table.search_sql()` methods all now take optional `offset=` and `limit=` arguments. ([#231](https://github.com/simonw/sqlite-utils/issues/231))\r\n- New `--no-headers` option for `sqlite-utils insert --csv` to handle CSV files that are missing the header row, see [CSV files without a header row](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-no-header). ([#228](https://github.com/simonw/sqlite-utils/issues/228))\r\n- Fixed bug where inserting data with extra columns in subsequent chunks would throw an error. Thanks [@nieuwenhoven](https://github.com/nieuwenhoven) for the fix. ([#234](https://github.com/simonw/sqlite-utils/issues/234))\r\n- Fixed bug importing CSV files with columns containing more than 128KB of data. ([#229](https://github.com/simonw/sqlite-utils/issues/229))\r\n- Test suite now runs in CI against Ubuntu, macOS and Windows. Thanks [@nieuwenhoven](https://github.com/nieuwenhoven) for the Windows test fixes. ([#232](https://github.com/simonw/sqlite-utils/issues/232))", "repo": {"value": 140912432, "label": "sqlite-utils"}, "reactions": null} {"html_url": "https://github.com/dogsheep/evernote-to-sqlite/releases/tag/0.3.1", "id": 37947725, "node_id": "MDc6UmVsZWFzZTM3OTQ3NzI1", "tag_name": "0.3.1", "target_commitish": "main", "name": "0.3.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-11T22:38:21Z", "published_at": "2021-02-11T22:40:40Z", "body": "- Explicitly open file using utf-8 encoding - thanks, RiverZhou. [#10](https://github.com/dogsheep/evernote-to-sqlite/pull/10)\r\n- Fix import error if note has no \"updated\" element - thanks, Matej Korosec. [#8](https://github.com/dogsheep/evernote-to-sqlite/pull/8)\r\n", "repo": {"value": 303218369, "label": "evernote-to-sqlite"}, "reactions": null} {"html_url": "https://github.com/dogsheep/evernote-to-sqlite/releases/tag/0.3", "id": 37946829, "node_id": "MDc6UmVsZWFzZTM3OTQ2ODI5", "tag_name": "0.3", "target_commitish": "main", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-11T22:14:01Z", "published_at": "2021-02-11T22:16:20Z", "body": "- Correctly handle entities in XHTML notes. [#9](https://github.com/dogsheep/evernote-to-sqlite/issues/9)\r\n- Fixed a bug importing ENEX files on Windows. Thanks, [dskrad](https://github.com/dskrad). [#11](https://github.com/dogsheep/evernote-to-sqlite/issues/11)\r\n", "repo": {"value": 303218369, "label": "evernote-to-sqlite"}, "reactions": null} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/3.4.1", "id": 37438817, "node_id": "MDc6UmVsZWFzZTM3NDM4ODE3", "tag_name": "3.4.1", "target_commitish": "main", "name": "3.4.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-06T02:10:04Z", "published_at": "2021-02-06T02:11:15Z", "body": "- Fixed a code import bug that slipped in to 3.4. ([#226](https://github.com/simonw/sqlite-utils/issues/226))", "repo": {"value": 140912432, "label": "sqlite-utils"}, "reactions": null} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/3.4", "id": 37437744, "node_id": "MDc6UmVsZWFzZTM3NDM3NzQ0", "tag_name": "3.4", "target_commitish": "main", "name": "3.4", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-06T01:37:27Z", "published_at": "2021-02-06T01:38:26Z", "body": "- `sqlite-utils insert --csv` now accepts optional `--delimiter` and `--quotechar` options. See [Alternative delimiters and quote characters](https://sqlite-utils.datasette.io/en/stable/cli.html#cli-insert-csv-tsv-delimiter). ([#223](https://github.com/simonw/sqlite-utils/issues/223))", "repo": {"value": 140912432, "label": "sqlite-utils"}, "reactions": null} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.54.1", "id": 37262719, "node_id": "MDc6UmVsZWFzZTM3MjYyNzE5", "tag_name": "0.54.1", "target_commitish": "0.54.x", "name": "0.54.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-02-02T21:23:39Z", "published_at": "2021-02-02T21:30:12Z", "body": "- Fixed a bug where `?_search=` and `?_sort=` parameters were incorrectly duplicated when the filter form on the table page was re-submitted. ([#1214](https://github.com/simonw/datasette/issues/1214))", "repo": {"value": 107914493, "label": "datasette"}, "reactions": null} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.54", "id": 36871901, "node_id": "MDc6UmVsZWFzZTM2ODcxOTAx", "tag_name": "0.54", "target_commitish": "main", "name": "0.54", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2021-01-25T17:35:06Z", "published_at": "2021-01-25T17:36:30Z", "body": "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.\r\n\r\nFor additional commentary on this release, see [Datasette 0.54, the annotated release notes](https://simonwillison.net/2021/Jan/25/datasette/).\r\n\r\n### The _internal database\r\n\r\nAs 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))\r\n\r\nThis will support future improvements such as a searchable, paginated homepage of all available tables.\r\n\r\nYou 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).\r\n\r\nPlugins 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.\r\n\r\n### Named in-memory database support\r\n\r\nAs 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))\r\n\r\nThe 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.\r\n\r\n### JavaScript modules\r\n\r\n[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.\r\n\r\nTo use modules, JavaScript needs to be included in `