.. _changelog: ========= Changelog ========= .. _v0_58a0: 0.58a0 (2021-06-09) ------------------- - The :ref:`menu_links() `, :ref:`table_actions() ` and :ref:`database_actions() ` plugin hooks all gained a new optional ``request`` argument providing access to the current request. (:issue:`1371`) .. _v0_57_1: 0.57.1 (2021-06-08) ------------------- - Fixed visual display glitch with global navigation menu. (:issue:`1367`) - No longer truncates the list of table columns displayed on the ``/database`` page. (:issue:`1364`) .. _v0_57: 0.57 (2021-06-05) ----------------- .. warning:: 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. (:issue:`1360`) 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. New features ~~~~~~~~~~~~ - If an error occurs while executing a user-provided SQL query, that query is now re-displayed in an editable form along with the error message. (:issue:`619`) - New ``?_col=`` and ``?_nocol=`` parameters to show and hide columns in a table, plus an interface for hiding and showing columns in the column cog menu. (:issue:`615`) - A new ``?_facet_size=`` parameter for customizing the number of facet results returned on a table or view page. (:issue:`1332`) - ``?_facet_size=max`` sets that to the maximum, which defaults to 1,000 and is controlled by the the :ref:`setting_max_returned_rows` setting. If facet results are truncated the … at the bottom of the facet list now links to this parameter. (:issue:`1337`) - ``?_nofacet=1`` option to disable all facet calculations on a page, used as a performance optimization for CSV exports and ``?_shape=array/object``. (:issue:`1349`, :issue:`263`) - ``?_nocount=1`` option to disable full query result counts. (:issue:`1353`) - ``?_trace=1`` debugging option is now controlled by the new :ref:`setting_trace_debug` setting, which is turned off by default. (:issue:`1359`) Bug fixes and other improvements ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - :ref:`custom_pages` now work correctly when combined with the :ref:`setting_base_url` setting. (:issue:`1238`) - Fixed intermittent error displaying the index page when the user did not have permission to access one of the tables. Thanks, Guy Freeman. (:issue:`1305`) - Columns with the name "Link" are no longer incorrectly displayed in bold. (:issue:`1308`) - Fixed error caused by tables with a single quote in their names. (:issue:`1257`) - Updated dependencies: ``pytest-asyncio``, ``Black``, ``jinja2``, ``aiofiles``, ``click``, and ``itsdangerous``. - The official Datasette Docker image now supports ``apt-get install``. (:issue:`1320`) - The Heroku runtime used by ``datasette publish heroku`` is now ``python-3.8.10``. .. _v0_56_1: 0.56.1 (2021-06-05) ------------------- .. warning:: 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. (:issue:`1360`) .. _v0_56: 0.56 (2021-03-28) ----------------- Documentation improvements, bug fixes and support for SpatiaLite 5. - The SQL editor can now be resized by dragging a handle. (:issue:`1236`) - Fixed a bug with JSON faceting and the ``__arraycontains`` filter caused by tables with spaces in their names. (:issue:`1239`) - Upgraded ``httpx`` dependency. (:issue:`1005`) - JSON faceting is now suggested even if a column contains blank strings. (:issue:`1246`) - New :ref:`datasette.add_memory_database() ` method. (:issue:`1247`) - The :ref:`Response.asgi_send() ` method is now documented. (:issue:`1266`) - The official Datasette Docker image now bundles SpatiaLite version 5. (:issue:`1278`) - Fixed a ``no such table: pragma_database_list`` bug when running Datasette against SQLite versions prior to SQLite 3.16.0. (:issue:`1276`) - HTML lists displayed in table cells are now styled correctly. Thanks, Bob Whitelock. (:issue:`1141`, `#1252 `__) - Configuration directory mode now correctly serves immutable databases that are listed in ``inspect-data.json``. Thanks Campbell Allen and Frankie Robertson. (`#1031 `__, `#1229 `__) .. _v0_55: 0.55 (2021-02-18) ----------------- Support for cross-database SQL queries and built-in support for serving via HTTPS. - 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 :ref:`cross_database_queries` for details. (:issue:`283`) - ``--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. (:issue:`1221`) - The ``/:memory:`` page has been renamed (and redirected) to ``/_memory`` for consistency with the new ``/_internal`` database introduced in Datasette 0.54. (:issue:`1205`) - Added plugin testing documentation on :ref:`testing_plugins_pdb`. (:issue:`1207`) - The `official Datasette Docker image `__ now uses Python 3.7.10, applying `the latest security fix `__ for that Python version. (:issue:`1235`) .. _v0_54_1: 0.54.1 (2021-02-02) ------------------- - Fixed a bug where ``?_search=`` and ``?_sort=`` parameters were incorrectly duplicated when the filter form on the table page was re-submitted. (:issue:`1214`) .. _v0_54: 0.54 (2021-01-25) ----------------- 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 `__. The _internal database ~~~~~~~~~~~~~~~~~~~~~~ As part of ongoing work to help Datasette handle much larger numbers of connected databases and tables (see `Datasette Library `__) Datasette now maintains an in-memory SQLite database with details of all of the attached databases, tables, columns, indexes and foreign keys. (:issue:`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 `__ to the ``latest.datasette.io`` demo instance and then navigating to `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. (:issue:`1151`) The new ``memory_name=`` parameter to the :ref:`internals_database` can be used to create named, shared in-memory databases. JavaScript modules ~~~~~~~~~~~~~~~~~~ `JavaScript 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 ``