Fixed a bug where datasette --root, when running in Docker, would only output the URL to sign in as root when the server shut down, not when it started up. (#1958)
You no longer need to ensure await datasette.invoke_startup() has been called in order for Datasette to start correctly serving requests - this is now handled automatically the first time the server receives a request. This fixes a bug experienced when Datasette is served directly by an ASGI application server such as Uvicorn or Gunicorn. It also fixes a bug with the datasette-gunicorn plugin. (#1955)
0.63.2
Fixed a bug in datasette publish heroku where deployments failed due to an older version of Python being requested. (#1905)
New datasette publish heroku --generate-dir <dir> option for generating a Heroku deployment directory without deploying it.
0.63.1
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 <textarea> if a query exceeds a time limit. (#1876)
Fixed an intermittent "Too many open files" error while running the test suite. (#1843)
Fixed a bug where datasette --root, when running in Docker, would only output the URL to sign in root when the server shut down, not when it started up. (:issue:1958)
You no longer need to ensure await datasette.invoke_startup() has been called in order for Datasette to start correctly serving requests - this is now handled automatically the first time the server receives a request. This fixes a bug experienced when Datasette is served directly by an ASGI application server such as Uvicorn or Gunicorn. It also fixes a bug with the datasette-gunicorn <https://datasette.io/plugins/datasette-gunicorn>__ plugin. (:issue:1955)
.. _v1_0_a2:
1.0a2 (2022-12-14)
The third Datasette 1.0 alpha release adds upsert support to the JSON API, plus the ability to specify finely grained permissions when creating an API token.
See Datasette 1.0a2: Upserts and finely grained permissions <https://simonwillison.net/2022/Dec/15/datasette-1a2/>__ for an extended, annotated version of these release notes.
New /db/table/-/upsert API, :ref:documented here <TableUpsertView>. upsert is an update-or-insert: existing rows will have specified keys updated, but if no row matches the incoming primary key a brand new row will be inserted instead. (:issue:1878)
New :ref:plugin_register_permissions plugin hook. Plugins can now register named permissions, which will then be listed in various interfaces that show available permissions. (:issue:1940)
The /db/-/create API for :ref:creating a table <TableCreateView> now accepts "ignore": true and "replace": true options when called with the "rows" property that creates a new table based on an example set of rows. This means the API can be called multiple times with different rows, setting rules for what should happen if a primary key collides with an existing row. (:issue:1927)
Arbitrary permissions can now be configured at the instance, database and resource (table, SQL view or canned query) level in Datasette's :ref:metadata JSON and YAML files. The new "permissions" key can be used to specify which actors should have which permissions. See :ref:authentication_permissions_other for details. (:issue:1636)
The /-/create-token page can now be used to create API tokens which are restricted to just a subset of actions, including against specific databases or resources. See :ref:CreateTokenView for details. (:issue:1947)
Likewise, the datasette create-token CLI command can now create tokens with :ref:a subset of permissions <authentication_cli_create_token_restrict>. (:issue:1855)
New :ref:datasette.create_token() API method <datasette_create_token> for programmatically creating signed API tokens. (:issue:1951)
/db/-/create API now requires actor to have insert-row permission in order to use the "row" or "rows" properties. (:issue:1937)
.. _v1_0_a1:
1.0a1 (2022-12-01)
Write APIs now serve correct CORS headers if Datasette is started in --cors mode. See the full list of :ref:CORS headers <json_api> in the documentation. (:issue:1922)
Fixed a bug where the _memory database could be written to even though writes were not persisted. (:issue:1917)
The https://latest.datasette.io/ demo instance now includes an ephemeral database which can be used to test Datasette's write APIs, using the new datasette-ephemeral-tables <https://datasette.io/plugins/datasette-ephemeral-tables>_ plugin to drop any created tables after five minutes. This database is only available if you sign in as the root user using the link on the homepage. (:issue:1915)
Fixed a bug where hitting the write endpoints with a GET request returned a 500 error. It now returns a 405 (method not allowed) error instead. (:issue:1916)
The list of endpoints in the API explorer now lists mutable databases first. (:issue:1918)
The "ignore": true and "replace": true options for the insert API are :ref:now documented <TableInsertView>. (:issue:1924)
.. _v1_0_a0:
1.0a0 (2022-11-29)
This first alpha release of Datasette 1.0 introduces a brand new collection of APIs for writing to the database (:issue:1850), as well as a new API token mechanism baked into Datasette core. Previously, API tokens have only been supported by installing additional plugins.
This is very much a preview: expect many more backwards incompatible API changes prior to the full 1.0 release.
Feedback enthusiastically welcomed, either through issue comments <https://github.com/simonw/datasette/issues/1850>__ or via the Datasette Discord <https://datasette.io/discord>__ community.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps datasette from 0.63 to 0.63.3.
Release notes
Sourced from datasette's releases.
Changelog
Sourced from datasette's changelog.
... (truncated)
Commits
e05998b
Added missing word, refs #1963a9ffcbd
Release 0.63.3d93f975
On publish run tests same way as for teste6d94f9
Run new HTTPS test in CI, refs #19550bd3eaa
Move HTTPS test to a bash script5649e54
Put AsgiLifestyle back so server starts up again, refs #195596b3a86
Replace AsgiLifespan with AsgiRunOnFirstRequest, refs #19554ba8d57
Try click.echo() insteadd67f812
Release 0.63.2c4d002f
Pin httpx in Pyodide test, refs #1904Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)