{"data": {"releases": {"totalCount": 344, "pageInfo": {"hasNextPage": true, "endCursor": "11087850"}, "nodes": [{"html_url": "https://github.com/simonw/datasette/releases/tag/0.12", "id": 8546575, "node_id": "MDc6UmVsZWFzZTg1NDY1NzU=", "tag_name": "0.12", "target_commitish": "main", "name": "Datasette 0.12", "draft": 0, "prerelease": 0, "created_at": "2017-11-16T15:37:46Z", "published_at": "2017-11-16T16:01:35Z", "body": "- Added `__version__`, now displayed as tooltip in page footer\r\n (#108).\r\n- Added initial docs, including a changelog (#99).\r\n- Turned on auto-escaping in Jinja.\r\n- Added a UI for editing named parameters (#96).\r\n\r\n You can now construct a custom SQL statement using SQLite named parameters (e.g. `:name`) and datasette will display form fields for editing those parameters. [Here's an example](https://australian-dogs.now.sh/australian-dogs-3ba9628?sql=select+name%2C+count%28*%29+as+n+from+%28%0D%0A%0D%0Aselect+upper%28%22Animal+name%22%29+as+name+from+%5BAdelaide-City-Council-dog-registrations-2013%5D+where+Breed+like+%3Abreed%0D%0A%0D%0Aunion+all%0D%0A%0D%0Aselect+upper%28Animal_Name%29+as+name+from+%5BAdelaide-City-Council-dog-registrations-2014%5D+where+Breed_Description+like+%3Abreed%0D%0A%0D%0Aunion+all+%0D%0A%0D%0Aselect+upper%28Animal_Name%29+as+name+from+%5BAdelaide-City-Council-dog-registrations-2015%5D+where+Breed_Description+like+%3Abreed%0D%0A%0D%0Aunion+all%0D%0A%0D%0Aselect+upper%28%22AnimalName%22%29+as+name+from+%5BCity-of-Port-Adelaide-Enfield-Dog_Registrations_2016%5D+where+AnimalBreed+like+%3Abreed%0D%0A%0D%0Aunion+all%0D%0A%0D%0Aselect+upper%28%22Animal+Name%22%29+as+name+from+%5BMitcham-dog-registrations-2015%5D+where+Breed+like+%3Abreed%0D%0A%0D%0Aunion+all%0D%0A%0D%0Aselect+upper%28%22DOG_NAME%22%29+as+name+from+%5Bburnside-dog-registrations-2015%5D+where+DOG_BREED+like+%3Abreed%0D%0A%0D%0Aunion+all+%0D%0A%0D%0Aselect+upper%28%22Animal_Name%22%29+as+name+from+%5Bcity-of-playford-2015-dog-registration%5D+where+Breed_Description+like+%3Abreed%0D%0A%0D%0Aunion+all%0D%0A%0D%0Aselect+upper%28%22Animal+Name%22%29+as+name+from+%5Bcity-of-prospect-dog-registration-details-2016%5D+where%22Breed+Description%22+like+%3Abreed%0D%0A%0D%0A%29+group+by+name+order+by+n+desc%3B&breed=pug) which lets you see the most popular names for dogs of different species registered through various dog registration schemes in Australia.\r\n- Pin to specific Jinja version. (#100).\r\n- Default to 127.0.0.1 not 0.0.0.0. (#98).\r\n- Added extra metadata options to publish and package commands.\r\n (#92).\r\n\r\n You can now run these commands like so:\r\n\r\n datasette now publish mydb.db \\\r\n --title=\"My Title\" \\\r\n --source=\"Source\" \\\r\n --source_url=\"http://www.example.com/\" \\\r\n --license=\"CC0\" \\\r\n --license_url=\"https://creativecommons.org/publicdomain/zero/1.0/\"\r\n\r\n This will write those values into the metadata.json that is packaged\r\n with the app. If you also pass `--metadata=metadata.json` that file\r\n will be updated with the extra values before being written into the\r\n Docker image.\r\n\r\n- Added simple production-ready Dockerfile (#94) \\[Andrew Cutler\\]\r\n- New `?_sql_time_limit_ms=10` argument to database and table page\r\n (#95)\r\n- SQL syntax highlighting with Codemirror (#89) \\[Tom Dyson\\]", "author": {"id": 9599, "name": "simonw"}, "repo": {"id": 107914493, "name": "datasette"}}, {"html_url": "https://github.com/simonw/datasette/releases/tag/0.13", "id": 8652546, "node_id": "MDc6UmVsZWFzZTg2NTI1NDY=", "tag_name": "0.13", "target_commitish": "main", "name": "Datasette 0.13: foreign key, search and filters", "draft": 0, "prerelease": 0, "created_at": "2017-11-25T03:33:39Z", "published_at": "2017-11-25T03:44:46Z", "body": "# 0.13 (2017-11-24)\r\n\r\n - Search now applies to current filters.\r\n \r\n Combined search into the same form as filters.\r\n \r\n Closes [\\#133](https://github.com/simonw/datasette/issues/133)\r\n\r\n - Much tidier design for table view header.\r\n \r\n Closes [\\#147](https://github.com/simonw/datasette/issues/147)\r\n\r\n - Added `?column__not=blah` filter.\r\n \r\n Closes [\\#148](https://github.c)\r\n\r\n - Row page now resolves foreign keys.\r\n \r\n Closes [\\#132]()\r\n\r\n - Further tweaks to select/input filter styling.\r\n \r\n Refs [\\#86]() - thanks for the help, @natbat\\!\r\n\r\n - Show linked foreign key in table cells.\r\n\r\n - Added UI for editing table filters.\r\n \r\n Refs [\\#86]()\r\n\r\n - Hide FTS-created tables on index pages.\r\n \r\n Closes [\\#129]()\r\n\r\n - Add publish to heroku support \\[Jacob Kaplan-Moss\\]\r\n \r\n `datasette publish heroku mydb.db`\r\n \r\n Pull request [\\#104]()\r\n\r\n - Initial implementation of `?_group_count=column`.\r\n \r\n URL shortcut for counting rows grouped by one or more columns.\r\n \r\n `?_group_count=column1&_group_count=column2` works as well.\r\n \r\n SQL generated looks like this:\r\n \r\n select \"qSpecies\", count(*) as \"count\"\r\n from Street_Tree_List\r\n group by \"qSpecies\"\r\n order by \"count\" desc limit 100\r\n \r\n Or for two columns like this:\r\n \r\n select \"qSpecies\", \"qSiteInfo\", count(*) as \"count\"\r\n from Street_Tree_List\r\n group by \"qSpecies\", \"qSiteInfo\"\r\n order by \"count\" desc limit 100\r\n \r\n Refs [\\#44]()\r\n\r\n - Added `--build=master` option to datasette publish and package.\r\n \r\n The `datasette publish` and `datasette package` commands both now\r\n accept an optional `--build` argument. If provided, this can be used\r\n to specify a branch published to GitHub that should be built into\r\n the container.\r\n \r\n This makes it easier to test code that has not yet been officially\r\n released to PyPI, e.g.:\r\n \r\n datasette publish now mydb.db --branch=master\r\n\r\n - Implemented `?_search=XXX` + UI if a FTS table is detected.\r\n \r\n Closes [\\#131]()\r\n\r\n - Added `datasette --version` support.\r\n\r\n - Table views now show expanded foreign key references, if possible.\r\n \r\n If a table has foreign key columns, and those foreign key tables\r\n have `label_columns`, the TableView will now query those other\r\n tables for the corresponding values and display those values as\r\n links in the corresponding table cells.\r\n \r\n label\\_columns are currently detected by the `inspect()` function,\r\n which looks for any table that has just two columns - an ID column\r\n and one other - and sets the `label_column` to be that second non-ID\r\n column.\r\n\r\n - Don't prevent tabbing to \"Run SQL\" button ([\\#117]()) \\[Robert\r\n Gieseke\\]\r\n \r\n See comment in [\\#115]()\r\n\r\n - Add keyboard shortcut to execute SQL query ([\\#115]()) \\[Robert\r\n Gieseke\\]\r\n\r\n - Allow `--load-extension` to be set via environment variable.\r\n\r\n - Add support for `?field__isnull=1` ([\\#107]()) \\[Ray N\\]\r\n\r\n - Add spatialite, switch to debian and local build ([\\#114]()) \\[Ariel\r\n N\u00fa\u00f1ez\\]\r\n\r\n - Added `--load-extension` argument to datasette serve.\r\n \r\n Allows loading of SQLite extensions. Refs [\\#110]().\r\n", "author": {"id": 9599, "name": "simonw"}, "repo": {"id": 107914493, "name": "datasette"}}, {"html_url": "https://github.com/simonw/datasette/releases/tag/0.14", "id": 8841695, "node_id": "MDc6UmVsZWFzZTg4NDE2OTU=", "tag_name": "0.14", "target_commitish": "main", "name": "Datasette 0.14: customization edition", "draft": 0, "prerelease": 0, "created_at": "2017-12-10T01:33:24Z", "published_at": "2017-12-10T01:41:14Z", "body": "The theme of this release is customization: Datasette now allows every aspect of its presentation [to be customized](http://datasette.readthedocs.io/en/latest/custom_templates.html) either using additional CSS or by providing entirely new templates.\r\n\r\nDatasette's [metadata.json format](http://datasette.readthedocs.io/en/latest/metadata.html) has also been expanded, to allow per-database and per-table metadata. A new `datasette skeleton` command can be used to generate a skeleton JSON file ready to be filled in with per-database and per-table details.\r\n\r\nThe `metadata.json` file can also be used to define [canned queries](http://datasette.readthedocs.io/en/latest/sql_queries.html#canned-queries), as a more powerful alternative to SQL views.\r\n\r\n - `extra_css_urls`/`extra_js_urls` in metadata\r\n \r\n A mechanism in the `metadata.json` format for adding custom CSS and JS urls.\r\n \r\n Create a `metadata.json` file that looks like this:\r\n \r\n {\r\n \"extra_css_urls\": [\r\n \"https://simonwillison.net/static/css/all.bf8cd891642c.css\"\r\n ],\r\n \"extra_js_urls\": [\r\n \"https://code.jquery.com/jquery-3.2.1.slim.min.js\"\r\n ]\r\n }\r\n \r\n Then start datasette like this:\r\n \r\n datasette mydb.db --metadata=metadata.json\r\n \r\n The CSS and JavaScript files will be linked in the `
` of every page.\r\n \r\n You can also specify a SRI (subresource integrity hash) for these assets:\r\n \r\n {\r\n \"extra_css_urls\": [\r\n {\r\n \"url\": \"https://simonwillison.net/static/css/all.bf8cd891642c.css\",\r\n \"sri\": \"sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI\"\r\n }\r\n ],\r\n \"extra_js_urls\": [\r\n {\r\n \"url\": \"https://code.jquery.com/jquery-3.2.1.slim.min.js\",\r\n \"sri\": \"sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g=\"\r\n }\r\n ]\r\n }\r\n \r\n Modern browsers will only execute the stylesheet or JavaScript if the SRI hash matches the content served. You can generate hashes usingThis line renders the original block:
\r\n {{ super() }}\r\n {% endblock %}\r\n\r\n - `--static` option for datasette serve ([\\#160](https://github.com/simonw/datasette/issues/160))\r\n \r\n You can now tell Datasette to serve static files from a specific location at a specific mountpoint.\r\n \r\n For example:\r\n \r\n datasette serve mydb.db --static extra-css:/tmp/static/css\r\n \r\n Now if you visit this URL:\r\n \r\n http://localhost:8001/extra-css/blah.css\r\n \r\n The following file will be served:\r\n \r\n /tmp/static/css/blah.css\r\n\r\n - Canned query support.\r\n \r\n Named canned queries can now be defined in `metadata.json` like this:\r\n \r\n {\r\n \"databases\": {\r\n \"timezones\": {\r\n \"queries\": {\r\n \"timezone_for_point\": \"select tzid from timezones ...\"\r\n }\r\n }\r\n }\r\n }\r\n \r\n These will be shown in a new \"Queries\" section beneath \"Views\" on the database page.\r\n\r\n - New `datasette skeleton` command for generating `metadata.json` ([\\#164](https://github.com/simonw/datasette/issues/164))\r\n\r\n - `metadata.json` support for per-table/per-database metadata ([\\#165](https://github.com/simonw/datasette/issues/165))\r\n \r\n Also added support for descriptions and HTML descriptions.\r\n \r\n Here's an example metadata.json file illustrating custom per-database and per-table metadata:\r\n \r\n {\r\n \"title\": \"Overall datasette title\",\r\n \"description_html\": \"This is a description with HTML.\",\r\n \"databases\": {\r\n \"db1\": {\r\n \"title\": \"First database\",\r\n \"description\": \"This is a string description & has no HTML\",\r\n \"license_url\": \"http://example.com/\",\r\n \"license\": \"The example license\",\r\n \"queries\": {\r\n \"canned_query\": \"select * from table1 limit 3;\"\r\n },\r\n \"tables\": {\r\n \"table1\": {\r\n \"title\": \"Custom title for table1\",\r\n \"description\": \"Tables can have descriptions too\",\r\n \"source\": \"This has a custom source\",\r\n \"source_url\": \"http://example.com/\"\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n - Renamed `datasette build` command to `datasette inspect` ([\\#130](https://github.com/simonw/datasette/issues/130))\r\n\r\n - Upgrade to Sanic 0.7.0 ([\\#168](https://github.com/simonw/datasette/issues/168))\r\n \r\n