{"html_url": "https://github.com/simonw/datasette/releases/tag/0.12", "id": 8546575, "node_id": "MDc6UmVsZWFzZTg1NDY1NzU=", "tag_name": "0.12", "target_commitish": "master", "name": "Datasette 0.12", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-16T15:37:46Z", "published_at": "2017-11-16T16:01:35Z", "assets": "[]", "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\\]", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.3", "id": 8556054, "node_id": "MDc6UmVsZWFzZTg1NTYwNTQ=", "tag_name": "0.3", "target_commitish": "master", "name": "csvs-to-sqlite 0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-17T05:26:07Z", "published_at": "2017-11-17T05:33:39Z", "assets": "[]", "body": "- **Mechanism for converting columns into separate tables**\r\n\r\n Let's say you have a CSV file that looks like this:\r\n \r\n county,precinct,office,district,party,candidate,votes\r\n Clark,1,President,,REP,John R. Kasich,5\r\n Clark,2,President,,REP,John R. Kasich,0\r\n Clark,3,President,,REP,John R. Kasich,7\r\n \r\n (Real example from https://github.com/openelections/openelections-data-sd/blob/ master/2016/20160607__sd__primary__clark__precinct.csv )\r\n \r\n You can now convert selected columns into separate lookup tables using the new\r\n --extract-column option (shortname: -c) - for example:\r\n \r\n csvs-to-sqlite openelections-data-*/*.csv \\\r\n -c county:County:name \\\r\n -c precinct:Precinct:name \\\r\n -c office -c district -c party -c candidate \\\r\n openelections.db\r\n \r\n The format is as follows:\r\n \r\n column_name:optional_table_name:optional_table_value_column_name\r\n \r\n If you just specify the column name e.g. `-c office`, the following table will\r\n be created:\r\n \r\n CREATE TABLE \"party\" (\r\n \"id\" INTEGER PRIMARY KEY,\r\n \"value\" TEXT\r\n );\r\n \r\n If you specify all three options, e.g. `-c precinct:Precinct:name` the table\r\n will look like this:\r\n \r\n CREATE TABLE \"Precinct\" (\r\n \"id\" INTEGER PRIMARY KEY,\r\n \"name\" TEXT\r\n );\r\n \r\n The original tables will be created like this:\r\n \r\n CREATE TABLE \"ca__primary__san_francisco__precinct\" (\r\n \"county\" INTEGER,\r\n \"precinct\" INTEGER,\r\n \"office\" INTEGER,\r\n \"district\" INTEGER,\r\n \"party\" INTEGER,\r\n \"candidate\" INTEGER,\r\n \"votes\" INTEGER,\r\n FOREIGN KEY (county) REFERENCES County(id),\r\n FOREIGN KEY (party) REFERENCES party(id),\r\n FOREIGN KEY (precinct) REFERENCES Precinct(id),\r\n FOREIGN KEY (office) REFERENCES office(id),\r\n FOREIGN KEY (candidate) REFERENCES candidate(id)\r\n );\r\n \r\n They will be populated with IDs that reference the new derived tables.\r\n \r\n Closes #2\r\n", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.5", "id": 8575785, "node_id": "MDc6UmVsZWFzZTg1NzU3ODU=", "tag_name": "0.5", "target_commitish": "master", "name": "csvs-to-sqlite 0.5", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-19T05:11:27Z", "published_at": "2017-11-19T05:53:25Z", "assets": "[]", "body": "## Now handles columns with integers and nulls in correctly\r\n\r\nPandas does a good job of figuring out which SQLite column types should be\r\nused for a DataFrame - with one exception: due to a limitation of NumPy it\r\ntreats columns containing a mixture of integers and NaN (blank values) as\r\nbeing of type float64, which means they end up as REAL columns in SQLite.\r\n\r\nhttp://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na\r\n\r\nTo fix this, we now check to see if a float64 column actually consists solely\r\nof NaN and integer-valued floats (checked using v.is_integer() in Python). If\r\nthat is the case, we over-ride the column type to be INTEGER instead.\r\n\r\nSee #5 - also a8ab524 and 0997b7b", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.6", "id": 8651869, "node_id": "MDc6UmVsZWFzZTg2NTE4Njk=", "tag_name": "0.6", "target_commitish": "master", "name": "csvs-to-sqlite 0.6", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-24T23:12:10Z", "published_at": "2017-11-24T23:16:45Z", "assets": "[]", "body": "## SQLite full-text search support\r\n\r\n- Added `--fts` option for setting up SQLite full-text search.\r\n\r\n The `--fts` option will create a corresponding SQLite FTS virtual table, using\r\n the best available version of the FTS module.\r\n\r\n https://sqlite.org/fts5.html\r\n https://www.sqlite.org/fts3.html\r\n\r\n Usage:\r\n\r\n csvs-to-sqlite my-csv.csv output.db -f column1 -f column2\r\n\r\n Example generated with this option: https://sf-trees-search.now.sh/\r\n\r\n Example search: https://sf-trees-search.now.sh/sf-trees-search-a899b92?sql=select+*+from+Street_Tree_List+where+rowid+in+%28select+rowid+from+Street_Tree_List_fts+where+Street_Tree_List_fts+match+%27grove+london+dpw%27%29%0D%0A\r\n\r\n Will be used in https://github.com/simonw/datasette/issues/131\r\n- `--fts` and `--extract-column` now cooperate.\r\n\r\n If you extract a column and then specify that same column in the `--fts` list,\r\n `csvs-to-sqlite` now uses the original value of that column in the index.\r\n\r\n Example using CSV from https://data.sfgov.org/City-Infrastructure/Street-Tree-List/tkzw-k3nq\r\n\r\n csvs-to-sqlite Street_Tree_List.csv trees-fts.db \\\r\n -c qLegalStatus -c qSpecies -c qSiteInfo \\\r\n -c PlantType -c qCaretaker -c qCareAssistant \\\r\n -f qLegalStatus -f qSpecies -f qAddress \\\r\n -f qSiteInfo -f PlantType -f qCaretaker \\\r\n -f qCareAssistant -f PermitNotes\r\n\r\n Closes #9\r\n- Handle column names with spaces in them.\r\n- Added `csvs-to-sqlite --version` option.\r\n\r\n Using http://click.pocoo.org/5/api/#click.version_option", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.6.1", "id": 8652417, "node_id": "MDc6UmVsZWFzZTg2NTI0MTc=", "tag_name": "0.6.1", "target_commitish": "master", "name": "csvs-to-sqlite 0.6.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-25T02:57:01Z", "published_at": "2017-11-25T02:58:25Z", "assets": "[]", "body": "- `-f and -c` now work for single table multiple columns.\r\n\r\n Fixes #12\r\n", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.13", "id": 8652546, "node_id": "MDc6UmVsZWFzZTg2NTI1NDY=", "tag_name": "0.13", "target_commitish": "master", "name": "Datasette 0.13: foreign key, search and filters", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-25T03:33:39Z", "published_at": "2017-11-25T03:44:46Z", "assets": "[]", "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", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.7", "id": 8656486, "node_id": "MDc6UmVsZWFzZTg2NTY0ODY=", "tag_name": "0.7", "target_commitish": "master", "name": "csvs-to-sqlite 0.7", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-11-26T03:11:33Z", "published_at": "2017-11-26T03:14:11Z", "assets": "[]", "body": "- Add -s option to specify input field separator (#13) [Jani Monoses]", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.14", "id": 8841695, "node_id": "MDc6UmVsZWFzZTg4NDE2OTU=", "tag_name": "0.14", "target_commitish": "master", "name": "Datasette 0.14: customization edition", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2017-12-10T01:33:24Z", "published_at": "2017-12-10T01:41:14Z", "assets": "[]", "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\nsupport", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-02T04:10:17Z", "published_at": "2019-01-02T04:17:15Z", "assets": "[]", "body": "\r\nYou can use `{\"pre\": \"text\"}` to render text in a `` HTML tag:\r\n\r\n {\r\n \"pre\": \"This\\nhas\\nnewlines\"\r\n }\r\n\r\nProduces:\r\n\r\nThis\r\n has\r\n newlines\r\n\r\nIf the value attached to the `\"pre\"` key is itself a JSON object, that JSON will be pretty-printed:\r\n\r\n {\r\n \"pre\": {\r\n \"this\": {\r\n \"object\": [\"is\", \"nested\"]\r\n }\r\n }\r\n }\r\n\r\nProduces:\r\n\r\n{\r\n "this": {\r\n "object": [\r\n "is",\r\n "nested"\r\n ]\r\n }\r\n }", "repo": {"value": 142967347, "label": "datasette-json-html"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.26", "id": 14914779, "node_id": "MDc6UmVsZWFzZTE0OTE0Nzc5", "tag_name": "0.26", "target_commitish": "master", "name": "Datasette 0.26", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-03T02:53:59Z", "published_at": "2019-01-10T21:41:00Z", "assets": "[]", "body": "[Datasette 0.26 release notes](https://datasette.readthedocs.io/en/stable/changelog.html#v0-26)", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.9", "id": 15022807, "node_id": "MDc6UmVsZWFzZTE1MDIyODA3", "tag_name": "0.9", "target_commitish": "master", "name": "csvs-to-sqlite 0.9", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-17T05:17:02Z", "published_at": "2019-01-17T05:20:23Z", "assets": "[]", "body": "- Support for loading CSVs directly from URLs, thanks @betatim - #38\r\n- New -pk/--primary-key options, closes #22\r\n- Create FTS index for extracted column values\r\n- Added --no-fulltext-fks option, closes #32\r\n- Now using black for code formatting\r\n- Bumped versions of dependencies", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.7", "id": 15175633, "node_id": "MDc6UmVsZWFzZTE1MTc1NjMz", "tag_name": "0.7", "target_commitish": "master", "name": "0.7", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-25T07:20:49Z", "published_at": "2019-01-25T07:27:57Z", "assets": "[]", "body": "Release notes are here: https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-7", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.26.1", "id": 15206659, "node_id": "MDc6UmVsZWFzZTE1MjA2NjU5", "tag_name": "0.26.1", "target_commitish": "master", "name": "Datasette 0.26.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-11T00:51:38Z", "published_at": "2019-01-28T01:50:45Z", "assets": "[]", "body": "Release notes: https://datasette.readthedocs.io/en/stable/changelog.html#v0-26-1", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.8", "id": 15208430, "node_id": "MDc6UmVsZWFzZTE1MjA4NDMw", "tag_name": "0.8", "target_commitish": "master", "name": "0.8", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-26T02:13:29Z", "published_at": "2019-01-28T06:28:12Z", "assets": "[]", "body": "Two new commands: `sqlite-utils csv` and `sqlite-utils json`\r\n\r\nhttps://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-8", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.9", "id": 15243253, "node_id": "MDc6UmVsZWFzZTE1MjQzMjUz", "tag_name": "0.9", "target_commitish": "master", "name": "0.9", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-01-28T06:34:33Z", "published_at": "2019-01-29T15:30:48Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-9", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.27", "id": 15389392, "node_id": "MDc6UmVsZWFzZTE1Mzg5Mzky", "tag_name": "0.27", "target_commitish": "master", "name": "Datasette 0.27", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-01T03:47:05Z", "published_at": "2019-02-06T05:10:20Z", "assets": "[]", "body": "https://datasette.readthedocs.io/en/stable/changelog.html#v0-27", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.10", "id": 15439849, "node_id": "MDc6UmVsZWFzZTE1NDM5ODQ5", "tag_name": "0.10", "target_commitish": "master", "name": "0.10", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-07T05:17:52Z", "published_at": "2019-02-08T05:19:33Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-10", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.2", "id": 15440165, "node_id": "MDc6UmVsZWFzZTE1NDQwMTY1", "tag_name": "0.2", "target_commitish": "master", "name": "0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-08T06:01:44Z", "published_at": "2019-02-08T06:07:36Z", "assets": "[]", "body": "`--all` option can now be used to duplicate an entire database, including detecting foreign key relationships.\r\n\r\n`--table` option called without `--sql` will now mirror the specified table.", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.11", "id": 15731282, "node_id": "MDc6UmVsZWFzZTE1NzMxMjgy", "tag_name": "0.11", "target_commitish": "master", "name": "0.11", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-08T05:23:50Z", "published_at": "2019-02-23T02:15:34Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-11", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.12", "id": 15731354, "node_id": "MDc6UmVsZWFzZTE1NzMxMzU0", "tag_name": "0.12", "target_commitish": "master", "name": "0.12", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-23T02:22:28Z", "published_at": "2019-02-23T02:31:29Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-12", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.13", "id": 15739051, "node_id": "MDc6UmVsZWFzZTE1NzM5MDUx", "tag_name": "0.13", "target_commitish": "master", "name": "0.13", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-24T06:54:43Z", "published_at": "2019-02-24T07:00:14Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-13", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/0.14", "id": 15744513, "node_id": "MDc6UmVsZWFzZTE1NzQ0NTEz", "tag_name": "0.14", "target_commitish": "master", "name": "0.14", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-24T23:11:51Z", "published_at": "2019-02-24T23:15:16Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v0-14", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/datasette-render-html/releases/tag/0.1", "id": 17055917, "node_id": "MDc6UmVsZWFzZTE3MDU1OTE3", "tag_name": "0.1", "target_commitish": "master", "name": "", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-04-30T01:55:11Z", "published_at": "2019-04-30T01:59:32Z", "assets": "[]", "body": "", "repo": {"value": 184168864, "label": "datasette-render-html"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.28", "id": 17450414, "node_id": "MDc6UmVsZWFzZTE3NDUwNDE0", "tag_name": "0.28", "target_commitish": "master", "name": "Datasette 0.28", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-05-19T21:37:49Z", "published_at": "2019-05-19T21:42:28Z", "assets": "[]", "body": "[Datasette 0.28](https://datasette.readthedocs.io/en/stable/changelog.html#v0-28) - a salmagundi of new features!\r\n * No longer immutable! Datasette now supports [databases that change](https://datasette.readthedocs.io/en/stable/changelog.html#supporting-databases-that-change).\r\n * [Faceting improvements](https://datasette.readthedocs.io/en/stable/changelog.html#faceting-improvements-and-faceting-plugins) including facet-by-JSON-array and the ability to define custom faceting using plugins.\r\n * [datasette publish cloudrun](https://datasette.readthedocs.io/en/stable/changelog.html#datasette-publish-cloudrun) lets you publish databasese to Google's new Cloud Run hosting service.\r\n * New [register_output_renderer](https://datasette.readthedocs.io/en/stable/changelog.html#register-output-renderer-plugins) plugin hook for adding custom output extensions to Datasette in addition to the default `.json` and `.csv`.\r\n * Dozens of other smaller features and tweaks - see [the release notes](https://datasette.readthedocs.io/en/stable/changelog.html#v0-28) for full details.", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.0", "id": 17583581, "node_id": "MDc6UmVsZWFzZTE3NTgzNTgx", "tag_name": "1.0", "target_commitish": "master", "name": "1.0", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-05-25T01:06:38Z", "published_at": "2019-05-25T01:19:21Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-0", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.0.1", "id": 17616531, "node_id": "MDc6UmVsZWFzZTE3NjE2NTMx", "tag_name": "1.0.1", "target_commitish": "master", "name": "1.0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-05-28T00:50:28Z", "published_at": "2019-05-28T00:51:21Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-0-1", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.1", "id": 17645877, "node_id": "MDc6UmVsZWFzZTE3NjQ1ODc3", "tag_name": "1.1", "target_commitish": "master", "name": "1.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-05-29T05:12:03Z", "published_at": "2019-05-29T05:15:22Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-1\r\n\r\n* Support for `ignore=True` / `--ignore` for ignoring inserted records if the primary key alread exists (#21)\r\n* Ability to add a column that is a foreign key reference using `fk=...` / `--fk` (#16)\r\n", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/datasette-bplist/releases/tag/0.1", "id": 17870990, "node_id": "MDc6UmVsZWFzZTE3ODcwOTkw", "tag_name": "0.1", "target_commitish": "master", "name": "0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-09T01:14:22Z", "published_at": "2019-06-09T01:19:55Z", "assets": "[]", "body": "Initial release.", "repo": {"value": 190950781, "label": "datasette-bplist"}} {"html_url": "https://github.com/simonw/datasette-render-binary/releases/tag/0.1", "id": 17874587, "node_id": "MDc6UmVsZWFzZTE3ODc0NTg3", "tag_name": "0.1", "target_commitish": "master", "name": "0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-09T16:01:27Z", "published_at": "2019-06-09T16:10:36Z", "assets": "[]", "body": "", "repo": {"value": 191022928, "label": "datasette-render-binary"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.2", "id": 17961871, "node_id": "MDc6UmVsZWFzZTE3OTYxODcx", "tag_name": "1.2", "target_commitish": "master", "name": "1.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-13T06:39:59Z", "published_at": "2019-06-13T06:42:21Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-2", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/datasette-render-binary/releases/tag/0.2", "id": 17976835, "node_id": "MDc6UmVsZWFzZTE3OTc2ODM1", "tag_name": "0.2", "target_commitish": "master", "name": "0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-09T16:20:28Z", "published_at": "2019-06-13T16:14:52Z", "assets": "[]", "body": "Added screenshot.", "repo": {"value": 191022928, "label": "datasette-render-binary"}} {"html_url": "https://github.com/simonw/datasette-render-binary/releases/tag/0.3", "id": 17976887, "node_id": "MDc6UmVsZWFzZTE3OTc2ODg3", "tag_name": "0.3", "target_commitish": "master", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-13T16:14:18Z", "published_at": "2019-06-13T16:16:36Z", "assets": "[]", "body": "Now uses the [filetype](https://pypi.org/project/filetype/) module to suggest a possible format.\r\n\r\n\r\n", "repo": {"value": 191022928, "label": "datasette-render-binary"}} {"html_url": "https://github.com/simonw/datasette-json-html/releases/tag/0.5", "id": 17987324, "node_id": "MDc6UmVsZWFzZTE3OTg3MzI0", "tag_name": "0.5", "target_commitish": "master", "name": "0.5 - tooltips and demos", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-14T01:29:34Z", "published_at": "2019-06-14T01:33:44Z", "assets": "[]", "body": "Links can now have tooltips (#2):\r\n```\r\n{\r\n \"href\": \"https://simonwillison.net/\",\r\n \"label\": \"Simon Willison\",\r\n \"title\": \"My blog\"\r\n}\r\n```\r\nAlso added [a live demo](https://datasette-json-html.datasette.io/demo?sql=select+%27%7B%0D%0A++++%22href%22%3A+%22https%3A%2F%2Fsimonwillison.net%2F%22%2C%0D%0A++++%22label%22%3A+%22Simon+Willison%22%2C%0D%0A++++%22title%22%3A+%22My+blog%22%0D%0A%7D%27) and linked to it throughout the README (#3, #1)", "repo": {"value": 142967347, "label": "datasette-json-html"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.2.1", "id": 18132566, "node_id": "MDc6UmVsZWFzZTE4MTMyNTY2", "tag_name": "1.2.1", "target_commitish": "master", "name": "1.2.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-21T00:01:24Z", "published_at": "2019-06-21T00:06:29Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-2-1", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/yaml-to-sqlite/releases/tag/0.2", "id": 18169270, "node_id": "MDc6UmVsZWFzZTE4MTY5Mjcw", "tag_name": "0.2", "target_commitish": "master", "name": "0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-23T22:55:32Z", "published_at": "2019-06-23T22:55:50Z", "assets": "[]", "body": "Better README", "repo": {"value": 175550127, "label": "yaml-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.9.1", "id": 18185234, "node_id": "MDc6UmVsZWFzZTE4MTg1MjM0", "tag_name": "0.9.1", "target_commitish": "master", "name": "csvs-to-sqlite 0.9.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-24T15:16:54Z", "published_at": "2019-06-24T15:21:12Z", "assets": "[]", "body": "* Fixed bug where `-f` option used FTS4 even when FTS5 was available (#41)", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.2.2", "id": 18226656, "node_id": "MDc6UmVsZWFzZTE4MjI2NjU2", "tag_name": "1.2.2", "target_commitish": "master", "name": "1.2.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-26T04:20:55Z", "published_at": "2019-06-26T04:24:33Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-2-2", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.3", "id": 18242211, "node_id": "MDc6UmVsZWFzZTE4MjQyMjEx", "tag_name": "0.3", "target_commitish": "master", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-24T21:59:42Z", "published_at": "2019-06-26T15:54:56Z", "assets": "[]", "body": "Anchor to sqlite-utils==0.13 to pick up a breaking change.", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.4", "id": 18242248, "node_id": "MDc6UmVsZWFzZTE4MjQyMjQ4", "tag_name": "0.4", "target_commitish": "master", "name": "0.4", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-02-24T23:44:01Z", "published_at": "2019-06-26T15:55:54Z", "assets": "[]", "body": "* Create `--all` tables in toposort order\r\n* Depend on sqlite-utils version 0.14 or higher\r\n", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.5", "id": 18242294, "node_id": "MDc6UmVsZWFzZTE4MjQyMjk0", "tag_name": "0.5", "target_commitish": "master", "name": "0.5", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-26T15:44:35Z", "published_at": "2019-06-26T15:57:17Z", "assets": "[]", "body": "* Foreign keys are now all added at the end, which means we can support circular foreign key references #1\r\n* Dropped dependency on `toposort`\r\n* Added `--all --skip=table` option for skipping one or more tables when running `--all`", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.3", "id": 18307928, "node_id": "MDc6UmVsZWFzZTE4MzA3OTI4", "tag_name": "1.3", "target_commitish": "master", "name": "1.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-29T06:32:36Z", "published_at": "2019-06-29T06:39:32Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-3", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.6", "id": 18310609, "node_id": "MDc6UmVsZWFzZTE4MzEwNjA5", "tag_name": "0.6", "target_commitish": "master", "name": "0.6", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-29T15:18:30Z", "published_at": "2019-06-29T15:27:18Z", "assets": "[]", "body": "- `--all` can now add many foreign key relationships without a `VACUUM` between each one, #8\r\n- Added unit tests against MySQL, refs #5", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.7", "id": 18312451, "node_id": "MDc6UmVsZWFzZTE4MzEyNDUx", "tag_name": "0.7", "target_commitish": "master", "name": "0.7", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-29T21:27:30Z", "published_at": "2019-06-29T21:31:00Z", "assets": "[]", "body": "- Support `pip install db-to-sqlite[postgresql]` #4 \r\n- Documentation for both that and `pip install db-to-sqlite[mysql]`", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/0.8", "id": 18312546, "node_id": "MDc6UmVsZWFzZTE4MzEyNTQ2", "tag_name": "0.8", "target_commitish": "master", "name": "0.8", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-06-29T21:52:48Z", "published_at": "2019-06-29T21:53:58Z", "assets": "[]", "body": "* Added `--progress` option to show progress bars during import - #7 ", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/1.0", "id": 18320205, "node_id": "MDc6UmVsZWFzZTE4MzIwMjA1", "tag_name": "1.0", "target_commitish": "master", "name": "1.0", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-01T01:23:17Z", "published_at": "2019-07-01T01:32:47Z", "assets": "[]", "body": "See the [README](https://github.com/simonw/db-to-sqlite/blob/1.0/README.md) for full usage instructions.\r\n\r\n* Instead of using `--connection` the connection string is now a required positional argument, #14\r\n* `--sql` must now be accompanied by `--output` specifying the table the query results should be written to\r\n* `--redact tablename columnname` option can be used to redact values, #2\r\n* Foreign keys are now created with indexes, use `--no-index-fks` to disable this, #12\r\n* `--table` can now be used multiple times, #6\r\n* README and `--help` now include example connection strings\r\n* README also details how this can be used with Heroku Postgres", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/1.0.1", "id": 18321523, "node_id": "MDc6UmVsZWFzZTE4MzIxNTIz", "tag_name": "1.0.1", "target_commitish": "master", "name": "1.0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-01T04:08:01Z", "published_at": "2019-07-01T04:09:04Z", "assets": "[]", "body": "* Improvements to README", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/0.9.2", "id": 18377238, "node_id": "MDc6UmVsZWFzZTE4Mzc3MjM4", "tag_name": "0.9.2", "target_commitish": "master", "name": "csvs-to-sqlite 0.9.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-03T04:36:26Z", "published_at": "2019-07-03T04:37:15Z", "assets": "[]", "body": "Bumped dependencies and pinned pytest to version 4 (5 is incompatible with Python 2.7).", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.1", "id": 18441103, "node_id": "MDc6UmVsZWFzZTE4NDQxMTAz", "tag_name": "0.1", "target_commitish": "master", "name": "0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-04T15:05:34Z", "published_at": "2019-07-05T15:58:24Z", "assets": "[]", "body": "Initial working release.", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.1.1", "id": 18441133, "node_id": "MDc6UmVsZWFzZTE4NDQxMTMz", "tag_name": "0.1.1", "target_commitish": "master", "name": "0.1.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-05T15:58:48Z", "published_at": "2019-07-05T16:00:07Z", "assets": "[]", "body": "Outbound calls to the GitHub API are now non-blocking (using [http3](https://github.com/encode/http3)) - #8", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.2", "id": 18451662, "node_id": "MDc6UmVsZWFzZTE4NDUxNjYy", "tag_name": "0.2", "target_commitish": "master", "name": "0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-06T17:11:39Z", "published_at": "2019-07-06T17:14:02Z", "assets": "[]", "body": "* `/-/logout` URL for logging out #7\r\n* Custom navigation showing login state #5\r\n* Restored ASGI lifespan support #10\r\n* `disable_auto_login` setting #9\r\n* `Cache-Control: private` #6", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.3", "id": 18451672, "node_id": "MDc6UmVsZWFzZTE4NDUxNjcy", "tag_name": "0.3", "target_commitish": "master", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-06T17:14:58Z", "published_at": "2019-07-06T17:15:29Z", "assets": "[]", "body": "* Ability to restrict access to specific users or members of specific GitHub organizations #4", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.3.1", "id": 18451716, "node_id": "MDc6UmVsZWFzZTE4NDUxNzE2", "tag_name": "0.3.1", "target_commitish": "master", "name": "0.3.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-06T17:27:03Z", "published_at": "2019-07-06T17:27:46Z", "assets": "[]", "body": "* Fixed bug where we were requesting the incorrect OAuth scope when using `allow_orgs` #14 ", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.3.2", "id": 18452996, "node_id": "MDc6UmVsZWFzZTE4NDUyOTk2", "tag_name": "0.3.2", "target_commitish": "master", "name": "0.3.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-06T20:18:37Z", "published_at": "2019-07-06T22:01:45Z", "assets": "[]", "body": "* Fixed bug where custom template was not correctly included in the package #15", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.4", "id": 18453004, "node_id": "MDc6UmVsZWFzZTE4NDUzMDA0", "tag_name": "0.4", "target_commitish": "master", "name": "0.4", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-06T22:02:38Z", "published_at": "2019-07-06T22:03:41Z", "assets": "[]", "body": "* More compact JSON encoding for authentication cookie value\r\n* Support single string values for `allow_users`/`allow_orgs` options, #16 ", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.5", "id": 18453939, "node_id": "MDc6UmVsZWFzZTE4NDUzOTM5", "tag_name": "0.5", "target_commitish": "master", "name": "0.5", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-07T02:35:09Z", "published_at": "2019-07-07T02:37:16Z", "assets": "[]", "body": "* New `allow_teams` configuration option for restricting access to members of a GitHub team - #11\r\n* Signed cookies expire after a TTL (customize with new `cooke_ttl` setting) - #22\r\n* Documentation on using this as ASGI middleware - #19\r\n* Avoid 404 on `/-/auth-callback` if user is logged in - #24\r\n* Added `cookie_version` setting for invalidating all cookies - #18", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.6", "id": 18458558, "node_id": "MDc6UmVsZWFzZTE4NDU4NTU4", "tag_name": "0.6", "target_commitish": "master", "name": "0.6", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-07T19:41:27Z", "published_at": "2019-07-07T19:41:47Z", "assets": "[]", "body": "* Redirects back to where you were after you login, using a new `asgi_auth_redirect` cookie - #26\r\n* Unset asgi_auth_logout cookie when you sign in again - #28\r\n* Fixed bug where API call to GitHub intermittently failed with `ConnectionResetError` - #27\r\n* More robust creation of derived cookie signing secret using `hashlib.pbkdf2_hmac`\r\n* HTML pages now served with `charset=UTF-8` - #30\r\n", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.6.1", "id": 18458837, "node_id": "MDc6UmVsZWFzZTE4NDU4ODM3", "tag_name": "0.6.1", "target_commitish": "master", "name": "0.6.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-07T20:38:42Z", "published_at": "2019-07-07T20:39:19Z", "assets": "[]", "body": "Minor code clean-up and updated one-line description for PyPI / README.", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.29", "id": 18461320, "node_id": "MDc6UmVsZWFzZTE4NDYxMzIw", "tag_name": "0.29", "target_commitish": "master", "name": "Datasette 0.29", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-08T03:14:27Z", "published_at": "2019-07-08T03:43:13Z", "assets": "[]", "body": "ASGI, new plugin hooks, facet by date and much, much more\u2026 See [the release notes](https://datasette.readthedocs.io/en/stable/changelog.html#v0-29) for full details.", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.6.2", "id": 18461352, "node_id": "MDc6UmVsZWFzZTE4NDYxMzUy", "tag_name": "0.6.2", "target_commitish": "master", "name": "0.6.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-08T03:47:16Z", "published_at": "2019-07-08T03:47:38Z", "assets": "[]", "body": "Updated README for PyPI", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.6.3", "id": 18476766, "node_id": "MDc6UmVsZWFzZTE4NDc2NzY2", "tag_name": "0.6.3", "target_commitish": "master", "name": "0.6.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-08T16:51:01Z", "published_at": "2019-07-08T16:51:39Z", "assets": "[]", "body": "Additional documentation on `scope[\"auth\"]` when using as ASGI middleware.", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-cors/releases/tag/0.3", "id": 18542137, "node_id": "MDc6UmVsZWFzZTE4NTQyMTM3", "tag_name": "0.3", "target_commitish": "master", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-11T04:40:37Z", "published_at": "2019-07-11T04:43:24Z", "assets": "[]", "body": "Now with unit tests! #1", "repo": {"value": 195696804, "label": "datasette-cors"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.7", "id": 18555982, "node_id": "MDc6UmVsZWFzZTE4NTU1OTgy", "tag_name": "0.7", "target_commitish": "master", "name": "0.7", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-11T15:05:54Z", "published_at": "2019-07-11T15:07:15Z", "assets": "[]", "body": "* New `require_auth` configuration option. This defaults to `True` (reflecting existing behaviour) when `datasette-auth-github` is used as a Datasette plugin, but it defaults to `False` if you use the wrapper ASGI middleware class directly. #37", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.8", "id": 18596695, "node_id": "MDc6UmVsZWFzZTE4NTk2Njk1", "tag_name": "0.8", "target_commitish": "master", "name": "0.8", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-13T18:39:34Z", "published_at": "2019-07-13T18:43:06Z", "assets": "[]", "body": "Now compatible with Python 3.5, which means it can run on Glitch! https://datasette-auth-github-demo.glitch.me/ #38\r\n\r\nThis also means we now have no installation dependencies, since the code now uses the standard library to make API calls instead of depending on [http3](https://github.com/encode/http3). #40", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.9", "id": 18598299, "node_id": "MDc6UmVsZWFzZTE4NTk4Mjk5", "tag_name": "0.9", "target_commitish": "master", "name": "0.9", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-14T00:40:16Z", "published_at": "2019-07-14T00:41:33Z", "assets": "[]", "body": "- Explicit log in screen now includes SVG GitHub logo on the button - #42 \r\n- Default signed cookie TTL is now 1 hour, not 24 hours - #43", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette-auth-github/releases/tag/0.9.1", "id": 18598348, "node_id": "MDc6UmVsZWFzZTE4NTk4MzQ4", "tag_name": "0.9.1", "target_commitish": "master", "name": "0.9.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-14T00:58:35Z", "published_at": "2019-07-14T00:59:24Z", "assets": "[]", "body": "- Updated documentation to reflect new one hour `cookie_ttl` default - #43", "repo": {"value": 195087137, "label": "datasette-auth-github"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.29.1", "id": 18598489, "node_id": "MDc6UmVsZWFzZTE4NTk4NDg5", "tag_name": "0.29.1", "target_commitish": "master", "name": "0.29.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-11T16:17:55Z", "published_at": "2019-07-14T01:43:44Z", "assets": "[]", "body": "- Fixed bug with static mounts using relative paths which could lead to traversal exploits (#555) - thanks Abdussamet Kocak!\r\n\r\nhttps://datasette.readthedocs.io/en/stable/changelog.html#v0-29-1", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.6", "id": 18723202, "node_id": "MDc6UmVsZWFzZTE4NzIzMjAy", "tag_name": "1.6", "target_commitish": "master", "name": "1.6", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-19T04:51:21Z", "published_at": "2019-07-19T05:36:48Z", "assets": "[]", "body": "- `sqlite-utils insert` can now accept TSV data via the new `--tsv` option (#41)\r\n", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.1", "id": 18750551, "node_id": "MDc6UmVsZWFzZTE4NzUwNTUx", "tag_name": "0.1", "target_commitish": "master", "name": "Initial release", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-20T06:22:57Z", "published_at": "2019-07-20T16:43:09Z", "assets": "[]", "body": "", "repo": {"value": 197882382, "label": "healthkit-to-sqlite"}} {"html_url": "https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.2", "id": 18750559, "node_id": "MDc6UmVsZWFzZTE4NzUwNTU5", "tag_name": "0.2", "target_commitish": "master", "name": "0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-20T16:44:05Z", "published_at": "2019-07-20T16:44:41Z", "assets": "[]", "body": "Fixed a bug where duplicate records could crash the import.", "repo": {"value": 197882382, "label": "healthkit-to-sqlite"}} {"html_url": "https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.3", "id": 18762495, "node_id": "MDc6UmVsZWFzZTE4NzYyNDk1", "tag_name": "0.3", "target_commitish": "master", "name": "0.3", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-22T03:31:54Z", "published_at": "2019-07-22T03:33:32Z", "assets": "[]", "body": "- Tool now displays a progress bar during import - you can disable it with `--silent` #5\r\n- You can pass a path to a decompressed XML file instead of a zip file, using `--xml`\r\n- Records table is now broken up into different tables for each type of recorded data #6", "repo": {"value": 197882382, "label": "healthkit-to-sqlite"}} {"html_url": "https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.3.1", "id": 18823859, "node_id": "MDc6UmVsZWFzZTE4ODIzODU5", "tag_name": "0.3.1", "target_commitish": "master", "name": "0.3.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-24T06:33:22Z", "published_at": "2019-07-24T06:38:36Z", "assets": "[]", "body": "Uses less RAM - see #7 ", "repo": {"value": 197882382, "label": "healthkit-to-sqlite"}} {"html_url": "https://github.com/dogsheep/healthkit-to-sqlite/releases/tag/0.3.2", "id": 18881253, "node_id": "MDc6UmVsZWFzZTE4ODgxMjUz", "tag_name": "0.3.2", "target_commitish": "master", "name": "0.3.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-26T06:02:30Z", "published_at": "2019-07-26T06:12:12Z", "assets": "[]", "body": "Fix for #9 - Too many SQL variables bug", "repo": {"value": 197882382, "label": "healthkit-to-sqlite"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.7", "id": 18911392, "node_id": "MDc6UmVsZWFzZTE4OTExMzky", "tag_name": "1.7", "target_commitish": "master", "name": "1.7", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-24T06:50:41Z", "published_at": "2019-07-28T12:03:21Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-7", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.7.1", "id": 18911404, "node_id": "MDc6UmVsZWFzZTE4OTExNDA0", "tag_name": "1.7.1", "target_commitish": "master", "name": "1.7.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-28T12:00:51Z", "published_at": "2019-07-28T12:05:36Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/latest/changelog.html#v1-7-1", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/db-to-sqlite/releases/tag/1.0.2", "id": 19054897, "node_id": "MDc6UmVsZWFzZTE5MDU0ODk3", "tag_name": "1.0.2", "target_commitish": "master", "name": "1.0.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-08-03T04:01:00Z", "published_at": "2019-08-03T04:09:41Z", "assets": "[]", "body": "Fix for #18 - no longer throws error on empty tables", "repo": {"value": 166159072, "label": "db-to-sqlite"}} {"html_url": "https://github.com/simonw/csvs-to-sqlite/releases/tag/1.0", "id": 19056866, "node_id": "MDc6UmVsZWFzZTE5MDU2ODY2", "tag_name": "1.0", "target_commitish": "master", "name": "csvs-to-sqlite 1.0", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-08-03T10:50:48Z", "published_at": "2019-08-03T10:58:15Z", "assets": "[]", "body": "This release drops support for Python 2.x #55", "repo": {"value": 110509816, "label": "csvs-to-sqlite"}} {"html_url": "https://github.com/dogsheep/swarm-to-sqlite/releases/tag/0.1", "id": 19669553, "node_id": "MDc6UmVsZWFzZTE5NjY5NTUz", "tag_name": "0.1", "target_commitish": "master", "name": "0.1", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-08-31T02:46:58Z", "published_at": "2019-08-31T02:58:32Z", "assets": "[]", "body": "First usable release.", "repo": {"value": 205429375, "label": "swarm-to-sqlite"}} {"html_url": "https://github.com/simonw/datasette/releases/tag/0.29.2", "id": 19704661, "node_id": "MDc6UmVsZWFzZTE5NzA0NjYx", "tag_name": "0.29.2", "target_commitish": "master", "name": "0.29.2", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-14T03:04:05Z", "published_at": "2019-09-03T00:33:35Z", "assets": "[]", "body": "* Bumped Uvicorn to 0.8.4, fixing a bug where the querystring was not included in the server logs. (#559)\r\n* Fixed bug where the navigation breadcrumbs were not displayed correctly on the page for a custom query. (#558)\r\n* Fixed bug where custom query names containing unicode characters caused errors.\r\n\r\nhttps://datasette.readthedocs.io/en/stable/changelog.html#v0-29-2", "repo": {"value": 107914493, "label": "datasette"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.8", "id": 19704736, "node_id": "MDc6UmVsZWFzZTE5NzA0NzM2", "tag_name": "1.8", "target_commitish": "master", "name": "1.8", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-07-28T15:41:42Z", "published_at": "2019-09-03T00:45:42Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/stable/changelog.html#v1-8", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.9", "id": 19704739, "node_id": "MDc6UmVsZWFzZTE5NzA0NzM5", "tag_name": "1.9", "target_commitish": "master", "name": "1.9", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-08-04T03:35:30Z", "published_at": "2019-09-03T00:46:02Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/stable/changelog.html#v1-9", "repo": {"value": 140912432, "label": "sqlite-utils"}} {"html_url": "https://github.com/simonw/sqlite-utils/releases/tag/1.10", "id": 19704743, "node_id": "MDc6UmVsZWFzZTE5NzA0NzQz", "tag_name": "1.10", "target_commitish": "master", "name": "1.10", "draft": 0, "author": {"value": 9599, "label": "simonw"}, "prerelease": 0, "created_at": "2019-08-23T12:24:04Z", "published_at": "2019-09-03T00:46:27Z", "assets": "[]", "body": "https://sqlite-utils.readthedocs.io/en/stable/changelog.html#v1-10", "repo": {"value": 140912432, "label": "sqlite-utils"}}