{"sha": "d18086ae016caf14be0da7154ad92cf9d7bec060", "message": "Changelog badge", "author_date": "2020-04-30T18:31:35Z", "committer_date": "2020-04-30T18:31:35Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "25014ca25eb70b4c1217558ebd14db2845973bfb", "message": "Configuration directory mode, closes #731", "author_date": "2020-04-27T16:30:24Z", "committer_date": "2020-04-27T16:30:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "304e7b1d9fd904ae1c35600bc03662eb90eeeae0", "message": "Mechanism for creating custom pages using templates\n\nCloses #648", "author_date": "2020-04-26T18:46:43Z", "committer_date": "2020-04-26T18:46:43Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "227bb3e91fe34811a9374150798643a5af98ed79", "message": "Added more example plugins", "author_date": "2020-04-22T13:47:20Z", "committer_date": "2020-04-22T13:47:20Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "6717c719dd36dc2adc0f9da38a8c8e08129e96b4", "message": "--metadata accepts YAML as well as JSON - closes #713", "author_date": "2020-04-02T19:30:53Z", "committer_date": "2020-04-02T19:30:53Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7", "message": "base_url configuration setting, closes #394\n\n* base_url configuration setting\r\n* base_url works for static assets as well", "author_date": "2020-03-25T00:18:43Z", "committer_date": "2020-03-25T00:18:43Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "fd2a74dc09e585802ecec76c1a20a9c5a839a36a", "message": "Updated publish_subcommand example", "author_date": "2020-03-19T00:47:53Z", "committer_date": "2020-03-19T00:47:53Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7508477a96492caa1893c52411405656c50d30f9", "message": "Link to Datasette Writes blog entry", "author_date": "2020-03-08T17:23:51Z", "committer_date": "2020-03-08T17:23:51Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4933035b75607e60dc63f7977e2bd4fa771d8898", "message": "RST fix", "author_date": "2020-03-02T16:10:16Z", "committer_date": "2020-03-02T16:10:16Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "613f6fad7249da547c06ebc46616aba0f74259a4", "message": "Improved extra_template_vars documentation", "author_date": "2020-03-02T15:12:34Z", "committer_date": "2020-03-02T15:12:34Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7f5a330377fd7db1f6d1efa5686d183bcaf89217", "message": "Don't count rows on homepage for DBs > 100MB (#688)\n\nCloses #649.", "author_date": "2020-02-29T01:08:29Z", "committer_date": "2020-02-29T01:08:29Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "0f8e91c68f2d2ad48efc8324b12762bf8b58facd", "message": "Documentation fix", "author_date": "2020-02-26T07:13:39Z", "committer_date": "2020-02-26T07:13:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "1a77f30d3c40b1a6812da5d27ab35fa1acbd988b", "message": "Fixed typo", "author_date": "2020-02-26T07:11:19Z", "committer_date": "2020-02-26T07:11:19Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3041c6b6412bbe317f8b9afd6529a15954f2c47e", "message": "Use inspect-file, if possible, for total row count (#666)\n\nFor large tables, counting the number of rows in the table can take a\r\nsignificant amount of time. Instead, where an inspect-file is provided\r\nfor an immutable database, look up the row-count for a plain count(*).\r\n\r\nThanks, @kevindkeogh", "author_date": "2020-02-25T20:19:29Z", "committer_date": "2020-02-25T20:19:29Z", "raw_author": {"value": "0f68d17313c6f4ccbf0c24a3883444b5263f5648", "label": "Kevin Keogh"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 13896256, "label": "kevindkeogh"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "6cb65555f46456eb31b62e855e21b1d8c809b1a2", "message": "?_searchmode=raw option (#686)", "author_date": "2020-02-25T05:56:03Z", "committer_date": "2020-02-25T05:56:03Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a093c5f79fa034a97d2ad8b606745dd3b80365af", "message": ".execute_write() and .execute_write_fn() methods on Database (#683)\n\nCloses #682.", "author_date": "2020-02-25T04:45:08Z", "committer_date": "2020-02-25T04:45:07Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "be2265b0e811d0ac2875c2f748125c17b0f9289e", "message": "Fix db-to-sqlite command in ecosystem doc page (#669)\n\nThanks, @adipasquale", "author_date": "2020-02-22T02:32:17Z", "committer_date": "2020-02-22T02:32:17Z", "raw_author": {"value": "bd53542d6923dd8fcfd93cd43a925e6e8acd6e80", "label": "Adrien Di Pasquale"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 883348, "label": "adipasquale"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "33a12c8ae526afb40a7819c9ca411c9d3c41219b", "message": "Allow leading comments in SQL input field (#653)\n\nThanks, @jaywgraves!", "author_date": "2020-02-05T02:13:24Z", "committer_date": "2020-02-05T02:13:24Z", "raw_author": {"value": "6410ac01839c113476668eeff88d60a0a2c6eb7a", "label": "Jay Graves"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 418191, "label": "jaywgraves"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4d7dae9eb75e5430c3ee3c369bb5cd9ba0a148bc", "message": "Added a bunch more plugins to the Ecosystem page", "author_date": "2020-02-04T20:49:41Z", "committer_date": "2020-02-04T20:49:41Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "70b915fb4bc214f9d064179f87671f8a378aa127", "message": "Datasette.render_template() method, closes #577\n\nPull request #664.", "author_date": "2020-02-04T20:26:17Z", "committer_date": "2020-02-04T20:26:17Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "286ed286b68793532c2a38436a08343b45cfbc91", "message": "geojson-to-sqlite", "author_date": "2020-01-31T07:09:56Z", "committer_date": "2020-01-31T07:09:56Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "67fc9c5720ed1fcd62b116481f70d4e80b403a22", "message": "--port argument for datasette package, plus tests - closes #661\n\nFrom pull request #663", "author_date": "2020-01-29T22:46:43Z", "committer_date": "2020-01-29T22:46:43Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "2039e78e589ae7c60f404fe84fb75eda1630104e", "message": "Added Niche Museums to News", "author_date": "2019-12-03T06:53:59Z", "committer_date": "2019-12-03T06:53:59Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f9d0ce4233b29a8a90b9d87e18aacdeefde2e022", "message": "Added datasette-haversine to plugins list", "author_date": "2019-11-27T14:04:32Z", "committer_date": "2019-11-27T14:04:32Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c16be14517414a94e1fdbd888e8a3ad0669e3bca", "message": "How to upgrade using Docker", "author_date": "2019-11-20T18:02:07Z", "committer_date": "2019-11-20T18:02:07Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "8fc9a5d877d26dbf2654e125f407ddd2fd767335", "message": "Datasette 0.32 and datasette-template-sql in news", "author_date": "2019-11-14T23:46:37Z", "committer_date": "2019-11-14T23:46:37Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "8c642f04e0608bf537fdd1f76d64c2367fb04d57", "message": "Render templates using Jinja async mode\n\nCloses #628", "author_date": "2019-11-14T23:14:22Z", "committer_date": "2019-11-14T23:14:22Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "bbd00e903cdd49067ecdbdb60a4d225833a44b05", "message": "Badge linking to datasette on hub.docker.com", "author_date": "2019-11-13T02:38:13Z", "committer_date": "2019-11-13T02:38:13Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "d977fbadf70a96bf2eea1407d01f99d98e092dec", "message": "datasette publish uses python:3.8 base Docker image, closes #629", "author_date": "2019-11-12T06:03:09Z", "committer_date": "2019-11-12T06:03:09Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f554be39fc14ddc18921ca29d3920d55aad03d46", "message": "ReST fix", "author_date": "2019-11-12T06:00:13Z", "committer_date": "2019-11-12T06:00:13Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "1c518680e9692a9a77022af54f3de3e77fb1aaf4", "message": "Final steps: build stable branch of Read The Docs", "author_date": "2019-11-12T05:57:48Z", "committer_date": "2019-11-12T05:57:48Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "cf7776d36fbacefa874cbd6e5fcdc9fff7661203", "message": "Support Python 3.8, stop supporting Python 3.5 (#627)\n\n* Upgrade to uvicorn 0.10.4\r\n* Drop support for Python 3.5\r\n* Bump all dependencies to latest releases\r\n* Update docs to reflect we no longer support 3.5\r\n* Removed code that skipped black unit test on 3.5\r\n\r\nCloses #622", "author_date": "2019-11-12T05:09:11Z", "committer_date": "2019-11-12T05:09:11Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "42ee3e16a9ba7cc513b8da944cc1609a5407cf42", "message": "Bump pint to 0.9 (#624)\n\nThis fixes 2 deprecation warnings in Python 3.8 - refs #623 #622", "author_date": "2019-11-11T04:19:01Z", "committer_date": "2019-11-11T04:19:01Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "1c063fae9dba70f70244db010d55a18846640f07", "message": "Test against Python 3.8 in Travis (#623)\n\n* Test against Python 3.8 in Travis\r\n* Avoid current_task warnings in Python 3.8", "author_date": "2019-11-11T03:45:34Z", "committer_date": "2019-11-11T03:45:34Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "10b9d85edaaf198879344aa1c498000cfb27dff8", "message": "datasette-csvs on Glitch now uses sqlite-utils\n\nIt previously used csvs-to-sqlite but that had heavy dependencies.\r\n\r\nSee https://support.glitch.com/t/can-you-upgrade-python-to-latest-version/7980/33", "author_date": "2019-11-09T02:15:13Z", "committer_date": "2019-11-09T02:15:13Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "9f5d19c254d1bfbd99f576dff47a6e32e01c76ed", "message": "Improved documentation for \"publish cloudrun\"", "author_date": "2019-11-09T02:12:20Z", "committer_date": "2019-11-09T02:12:20Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "5dd4d2b2d3abcfd507a6df47e7c2fbad3c552fd8", "message": "Update to latest black (#609)", "author_date": "2019-10-30T18:49:01Z", "committer_date": "2019-10-30T18:49:01Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "e877b1cb12076946fdbec7ca2fbfbfc75c1c2a28", "message": "Don't auto-format SQL on page load (#601)\n\nCloses #600", "author_date": "2019-10-18T23:56:44Z", "committer_date": "2019-10-18T23:56:44Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "b647b5efc29300f715ba656e41b0591f342938e1", "message": "Fix for /foo v.s. /foo-bar issue, closes #597\n\nPull request #599", "author_date": "2019-10-18T22:51:07Z", "committer_date": "2019-10-18T22:51:07Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "9366d0bf191daccee6093c54ed51a2855d129cd8", "message": "Add Python versions badge", "author_date": "2019-10-14T22:29:16Z", "committer_date": "2019-10-14T22:29:16Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "2dc5c8dc259a0606162673d394ba8cc1c6f54428", "message": "detect_fts now works with alternative table escaping (#571)\n\nFixes #570. See also https://github.com/simonw/sqlite-utils/pull/57", "author_date": "2019-09-03T00:32:27Z", "committer_date": "2019-09-03T00:32:27Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "afc2e4260ab8b28e132c834185c5294fb27543f1", "message": "News: Single sign-on against GitHub using ASGI middleware", "author_date": "2019-07-14T01:42:35Z", "committer_date": "2019-07-14T01:42:35Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11", "message": "Bump to uvicorn 0.8.4 (#559)\n\nhttps://github.com/encode/uvicorn/commits/0.8.4\r\n\r\nQuery strings will now be included in log files: https://github.com/encode/uvicorn/pull/384", "author_date": "2019-07-13T22:34:57Z", "committer_date": "2019-07-13T22:34:57Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "81fa8b6cdc5457b42a224779e5291952314e8d20", "message": "News: Datasette 0.29, datasette-auth-github, datasette-cors", "author_date": "2019-07-08T04:36:27Z", "committer_date": "2019-07-08T04:36:27Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "973f8f139df6ad425354711052cfc2256de2e522", "message": "--plugin-secret option for datasette publish\n\nCloses #543\r\n\r\nAlso added new --show-files option to publish now and publish cloudrun - handy for debugging.", "author_date": "2019-07-08T02:06:31Z", "committer_date": "2019-07-08T02:06:31Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "fcfcae21e67cc15090942b1d2a47b5f016279337", "message": "extra_template_vars plugin hook (#542)\n\n* extra_template_vars plugin hook\r\n\r\nCloses #541\r\n\r\n* Workaround for cwd bug\r\n\r\nBased on https://github.com/pytest-dev/pytest/issues/1235#issuecomment-175295691", "author_date": "2019-07-06T00:05:56Z", "committer_date": "2019-07-06T00:05:56Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a2d45931935f6bb73605a94afedf9e78308c95d6", "message": "Secret plugin configuration options (#539)\n\nCloses #538", "author_date": "2019-07-04T05:36:44Z", "committer_date": "2019-07-04T05:36:44Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f0d32da0a9af87bcb15e34e35424f0c0053be83a", "message": "Switch to ~= dependencies, closes #532 (#536)\n\n* Switch to ~= dependencies, closes #532\r\n* Bump click and click-default-group\r\n* imp. is deprecated, use types.ModuleType instead - thanks https://stackoverflow.com/a/32175781\r\n* Upgrade to pytest 5", "author_date": "2019-07-03T04:32:55Z", "committer_date": "2019-07-03T04:32:55Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "76882830548e16905348ee75acb0044cb8e1fd20", "message": "Typo", "author_date": "2019-06-25T15:36:39Z", "committer_date": "2019-06-25T15:36:39Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "34e292d24dc2b8376236472bec3cce1c556ddfe5", "message": "Porting Datasette to ASGI, and Turtles all the way down", "author_date": "2019-06-24T05:28:37Z", "committer_date": "2019-06-24T05:28:37Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "cdd24f3eaa207f67d948c1876725b0f84654a623", "message": "Added datasette-doublemetaphone to list of plugins", "author_date": "2019-06-24T04:23:24Z", "committer_date": "2019-06-24T04:23:24Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a5591236c46f507b9e46b1b52e51d5f46ffd6913", "message": "Install test dependencies so deploy can work\n\npython tests/fixtures.py needs asgiref or it fails with an error", "author_date": "2019-06-24T03:23:07Z", "committer_date": "2019-06-24T03:23:07Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ba8db9679f3bd2454c9e76e7e6c352126848b57a", "message": "Port Datasette from Sanic to ASGI + Uvicorn (#518)\n\nDatasette now uses ASGI internally, and no longer depends on Sanic.\r\n\r\nIt now uses Uvicorn as the underlying HTTP server.\r\n\r\nThis was thirteen months in the making... for full details see the issue:\r\n\r\nhttps://github.com/simonw/datasette/issues/272\r\n\r\nAnd for a full sequence of commits plus commentary, see the pull request:\r\n\r\nhttps://github.com/simonw/datasette/pull/518", "author_date": "2019-06-24T03:13:09Z", "committer_date": "2019-06-24T03:13:09Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "6ccfcefb782bbf86b87bf047d01b979782aa6d97", "message": " Added datasette-render-binary plugin to ecosystem", "author_date": "2019-06-09T16:49:06Z", "committer_date": "2019-06-09T16:49:06Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "0c756b8cd948bd69b7342c0d0e93bad4ff4e97b2", "message": "Added datasette-bplist plugin to ecosystem", "author_date": "2019-06-09T02:11:59Z", "committer_date": "2019-06-09T02:11:59Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945", "message": "Upgrade pytest to 4.6.1, pluggy to 0.12.0 (#497)", "author_date": "2019-06-03T02:06:26Z", "committer_date": "2019-06-03T02:06:26Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "803f750309bf0cd5b7501228c1efcf9a35686d74", "message": "Added datasette-jq plugin to ecosystem", "author_date": "2019-05-30T01:51:10Z", "committer_date": "2019-05-30T01:51:10Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "c902590ada636098a705502d78f51b2f92973350", "message": "Stack Overflow survey added to news", "author_date": "2019-05-21T18:47:28Z", "committer_date": "2019-05-21T18:47:28Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f12220b17de426a356a716c58768071fce1f741a", "message": "Link to blog post about 0.28", "author_date": "2019-05-21T16:33:57Z", "committer_date": "2019-05-21T16:33:57Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4246e138f9512686413e97878659ef953337e57b", "message": "Typo fix", "author_date": "2019-05-19T23:14:09Z", "committer_date": "2019-05-19T23:14:09Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "afd0480d3f88012ef062ac82c67a995d6bfc5080", "message": "Tidy up README, reducing duplication with docs\n\nRefs #451", "author_date": "2019-05-19T21:31:03Z", "committer_date": "2019-05-19T21:31:03Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "19370267666164ebf7e46aeb284a343f34bc03bd", "message": "Removed accidental R", "author_date": "2019-05-16T13:27:08Z", "committer_date": "2019-05-16T13:27:08Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "f31b9fe5ca3363ec56a44cb4e29c8b531e562067", "message": "Another link to Glitch", "author_date": "2019-05-16T13:26:46Z", "committer_date": "2019-05-16T13:26:46Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "7c79eb974b3bd4fff2bf23c00d0c17958b5b7567", "message": "It's 2019 now", "author_date": "2019-05-16T10:20:08Z", "committer_date": "2019-05-16T10:20:08Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a4645944752e713ff4acf946c1ee824be2e30963", "message": "Added inline contents for installation page", "author_date": "2019-05-16T10:15:03Z", "committer_date": "2019-05-16T10:15:03Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "e7b31ae8c1a28cab9db8e165b3f21407c2e581e6", "message": "Use now --target production instead of now alias\n\nFix for this error:\r\n\r\n $ now alias --token=$NOW_TOKEN\r\n > WARN! The `now alias` command (no arguments) was deprecated in favour of `now --target production`.\r\n > Error! Couldn't find a deployment to alias. Please provide one as an argument.\r\n The command \"now alias --token=$NOW_TOKEN\" exited with 1.\r\n\r\nhttps://travis-ci.org/simonw/datasette/jobs/530597261", "author_date": "2019-05-11T17:06:23Z", "committer_date": "2019-05-11T17:06:23Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "bfa2ae0d16d39bb82dbe4da4f3fdc3c7f6257418", "message": "Promote Glitch instead of Datasette Publish\n\nDatasette Publish is currently broken due to Zeit API and platform changes.", "author_date": "2019-05-09T00:02:47Z", "committer_date": "2019-05-09T00:02:47Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "55643430f7ac8d27e99b00e7cf79db741003e811", "message": "Added Code style: black badge", "author_date": "2019-05-04T02:21:21Z", "committer_date": "2019-05-04T02:21:21Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "35d6ee2790e41e96f243c1ff58be0c9c0519a8ce", "message": "Apply black to everything, enforce via unit tests (#449)\n\nI've run the black code formatting tool against everything:\r\n\r\n black tests datasette setup.py\r\n\r\nI also added a new unit test, in tests/test_black.py, which will fail if the code does not\r\nconform to black's exacting standards.\r\n\r\nThis unit test only runs on Python 3.6 or higher, because black itself doesn't run on 3.5.", "author_date": "2019-05-04T02:15:14Z", "committer_date": "2019-05-04T02:15:14Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "553314dcd699a84aa7cc806377150ca0d57a6024", "message": "Use dist: xenial and python: 3.7 on Travis (#447)", "author_date": "2019-05-03T18:16:52Z", "committer_date": "2019-05-03T18:16:52Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ea66c45df96479ef66a89caa71fff1a97a862646", "message": "Extract facet code out into a new plugin hook, closes #427 (#445)\n\nDatasette previously only supported one type of faceting: exact column value counting.\r\n\r\nWith this change, faceting logic is extracted out into one or more separate classes which can implement other patterns of faceting - this is discussed in #427, but potential upcoming facet types include facet-by-date, facet-by-JSON-array, facet-by-many-2-many and more.\r\n\r\nA new plugin hook, register_facet_classes, can be used by plugins to add in additional facet classes.\r\n\r\nEach class must implement two methods: suggest(), which scans columns in the table to decide if they might be worth suggesting for faceting, and facet_results(), which executes the facet operation and returns results ready to be displayed in the UI.", "author_date": "2019-05-03T00:11:26Z", "committer_date": "2019-05-03T00:11:26Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "31f36e1b97ccc3f4387c80698d018a69798b6228", "message": "Added some guidelines\n\nMainly to remind me that master needs to be releasable at all times!", "author_date": "2019-04-20T18:32:40Z", "committer_date": "2019-04-20T18:32:40Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "9dc7a1824be0a876b8f54e0edd4467d9a357e0cb", "message": "Slightly more interesting example link", "author_date": "2019-04-13T22:49:07Z", "committer_date": "2019-04-13T22:49:07Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "bc6a9b45646610f362b4287bc4110440991aa4d6", "message": "?_where= parameter on table views, closes #429\n\nFrom pull request #430", "author_date": "2019-04-13T01:37:22Z", "committer_date": "2019-04-13T01:37:22Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "9cd3b44277e6a8ea9273bf659379ff0414e0b8ae", "message": "Upgrade to Jinja2==2.10.1 (#426)", "author_date": "2019-04-10T23:13:30Z", "committer_date": "2019-04-10T23:13:30Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "6f6d0ff2b41f1cacaf42287b1b230b646bcba9ee", "message": "URL hashing is now off by default - closes #418\n\nPrior to this commit Datasette would calculate the content hash of every\r\ndatabase and redirect to a URL containing that hash, like so:\r\n\r\n https://v0-27.datasette.io/fixtures => https://v0-27.datasette.io/fixtures-dd88475\r\n\r\nThis assumed that all databases were opened in immutable mode and were not\r\nexpected to change.\r\n\r\nThis will be changing as a result of #419 - so this commit takes the first step\r\nin implementing that change by changing this default behaviour. Datasette will\r\nnow only redirect hash-free URLs under two circumstances:\r\n\r\n* The new `hash_urls` config option is set to true (it defaults to false).\r\n* The user passes `?_hash=1` in the URL", "author_date": "2019-03-17T22:55:04Z", "committer_date": "2019-03-17T22:55:04Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "41744d76908bbef0edc038a5050a709cdd26e529", "message": "Added datasette-jellyfish", "author_date": "2019-03-09T18:43:12Z", "committer_date": "2019-03-09T18:43:12Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4147c388cbb9b14d137dd5229ae3f574ee6a25fe", "message": "Link to sqlite-utils blog entry", "author_date": "2019-03-08T04:30:21Z", "committer_date": "2019-03-08T04:30:21Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "5b3af3d015a6048a3977234bf46d20905ce720c0", "message": "Added sqlite-utils blog entry to news section", "author_date": "2019-02-25T03:47:11Z", "committer_date": "2019-02-25T03:47:11Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "1f91065b20cbc691f464bccfd8eef7d1ce4b14a8", "message": "Added socrata2sql to the ecosystem page\n\nA fantastic new tool created by @achavez at the Dallas Morning News.", "author_date": "2019-02-08T16:06:10Z", "committer_date": "2019-02-08T16:06:10Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "d5d39da12b26c06a426e97872bce4e94248db42d", "message": "Expanded section on db-to-sqlite", "author_date": "2019-02-08T06:23:27Z", "committer_date": "2019-02-08T06:23:27Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "195a5b36349d0d24a6bbb758cebb719b6de303b6", "message": "Heroku --include-vcs-ignore (#407)\n\nMeans `datasette publish heroku` can work under Travis, unlike this failure:\r\n\r\nhttps://travis-ci.org/simonw/fivethirtyeight-datasette/builds/488047550\r\n\r\n```\r\n2.25s$ datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette\r\ntar: unrecognized option '--exclude-vcs-ignores'\r\nTry 'tar --help' or 'tar --usage' for more information.\r\n \u25b8 Command failed: tar cz -C /tmp/tmpuaxm7i8f --exclude-vcs-ignores --exclude\r\n \u25b8 .git --exclude .gitmodules . >\r\n \u25b8 /tmp/f49440e0-1bf3-4d3f-9eb0-fbc2967d1fd4.tar.gz\r\n \u25b8 tar: unrecognized option '--exclude-vcs-ignores'\r\n \u25b8 Try 'tar --help' or 'tar --usage' for more information.\r\n \u25b8 \r\nThe command \"datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette\" exited with 0.\r\n```\r\n\r\nThe fix for that issue is to call the heroku command like this:\r\n\r\n heroku builds:create -a app_name --include-vcs-ignore", "author_date": "2019-02-06T04:15:46Z", "committer_date": "2019-02-06T04:15:46Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "5b026115126bedbb66457767e169139146d1c9fd", "message": "Corrected import path in plugin docs", "author_date": "2019-01-09T00:25:29Z", "committer_date": "2019-01-09T00:25:29Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "b65d97792a53f78cb14b226231063209d22c4602", "message": "Switch to using PYPI_PASSWORD env var in Travis", "author_date": "2019-01-03T03:14:21Z", "committer_date": "2019-01-03T03:14:21Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "a2bfcfc1b1c60dac3526364af17c2fa2f3d41a0a", "message": "Fix some regex DeprecationWarnings (#392)", "author_date": "2018-12-29T02:22:27Z", "committer_date": "2018-12-29T02:22:27Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "48d24c6589f214c7e1bab21d32e2f35a0038e71f", "message": "Link to new tutorial from the README", "author_date": "2018-12-19T05:39:35Z", "committer_date": "2018-12-19T05:39:35Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "74ad06e1283615cceb49fd95929b60329d47d3d4", "message": "Updated notes on FTS5 v.s. FTS4", "author_date": "2018-12-18T21:49:51Z", "committer_date": "2018-12-18T21:49:51Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "595da9054e391b05a59b57c0c0a4487ea10062ce", "message": "Better example commit\n\nThis one updates the README news section as well", "author_date": "2018-12-16T22:56:56Z", "committer_date": "2018-12-16T22:56:56Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "5e3a432a0caa23837fa58134f69e2f82e4f632a6", "message": "How to activate your virtual environment", "author_date": "2018-11-15T00:54:54Z", "committer_date": "2018-11-15T00:54:54Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "24cea271961077a63bc834a2aab3de777491a9c9", "message": "Link to \"The interesting ideas in Datasette\"", "author_date": "2018-10-04T02:40:04Z", "committer_date": "2018-10-04T02:40:04Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "aae49fef3b75848628d824077ec063834e3e5167", "message": " Import pysqlite3 if available, closes #360 (#361)", "author_date": "2018-08-16T00:58:56Z", "committer_date": "2018-08-16T00:58:56Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "e1db8194e8c1d7f361fd0c1c3fc1b91d6aa920e5", "message": "Bump versions of pytest, pluggy and beautifulsoup4 (#358)", "author_date": "2018-08-08T01:11:12Z", "committer_date": "2018-08-08T01:11:12Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "4ac913224061f2dc4f673efab1a5ac6bc748854f", "message": "render_cell(value) plugin hook, closes #352\n\nNew plugin hook for customizing the way cells values are rendered in HTML.\r\n\r\nThe first full example of this hook in use is https://github.com/simonw/datasette-json-html", "author_date": "2018-08-05T00:14:56Z", "committer_date": "2018-08-05T00:14:56Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "dbbe707841973b50a76d2703003ae2c40e7ad1fd", "message": "publish_subcommand hook + default plugins mechanism, used for publish heroku/now (#349)\n\nThis change introduces a new plugin hook, publish_subcommand, which can be\r\nused to implement new subcommands for the \"datasette publish\" command family.\r\n\r\nI've used this new hook to refactor out the \"publish now\" and \"publish heroku\"\r\nimplementations into separate modules. I've also added unit tests for these\r\ntwo publishers, mocking the subprocess.call and subprocess.check_output\r\nfunctions.\r\n\r\nAs part of this, I introduced a mechanism for loading default plugins. These\r\nare defined in the new \"default_plugins\" list inside datasette/app.py\r\n\r\nCloses #217 (Plugin support for datasette publish)\r\nCloses #348 (Unit tests for \"datasette publish\")\r\nRefs #14, #59, #102, #103, #146, #236, #347", "author_date": "2018-07-26T05:15:59Z", "committer_date": "2018-07-26T05:15:59Z", "raw_author": {"value": "2946d096d0cdefdc017559e6b57e87658736e843", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "ba64cfb4bc8ff79086e3f61d9be3eaf35cc44c84", "message": "Fix for Python 3.5\n\nhttps://stackoverflow.com/a/42694113/6083", "author_date": "2018-07-25T17:20:56Z", "committer_date": "2018-07-25T17:20:56Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "3a46d5e3c4278e74c3694f36995ea134bff800bc", "message": "Removed docker -e flag\n\ndocker -e flag is now deprecated: https://docs.docker.com/engine/deprecated/#-e-and---email-flags-on-docker-login", "author_date": "2018-07-24T04:48:36Z", "committer_date": "2018-07-24T04:48:36Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "2bdab66772dca51b0c729b4e1063610cb2edd890", "message": "Build and push new tagged releases to Docker Hub\n\nBased on method described in https://sebest.github.io/post/using-travis-ci-to-build-docker-images/", "author_date": "2018-07-24T04:17:57Z", "committer_date": "2018-07-24T04:17:57Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "130dc8823ebdcc1834fc7c4a03c996b13fc1e444", "message": "Run Travis CI against Python 3.7 as well", "author_date": "2018-07-12T17:36:00Z", "committer_date": "2018-07-12T17:36:00Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "24af1004a42029f5a2f1a50541780814e9e2578a", "message": "Added datasette-vega to news section", "author_date": "2018-06-29T14:53:36Z", "committer_date": "2018-06-29T14:53:36Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}} {"sha": "29bd6065147818263fb7c19e0cfc5228c5cf7fb4", "message": "Documentation typo", "author_date": "2018-06-28T05:09:03Z", "committer_date": "2018-06-28T05:09:03Z", "raw_author": {"value": "13ae486343ea6454a93114c6f558ffea2f2c6874", "label": "Simon Willison"}, "raw_committer": {"value": "cd792325681cbad9f663f2879d8b69f1edbb678f", "label": "GitHub"}, "repo": {"value": 107914493, "label": "datasette"}, "author": {"value": 9599, "label": "simonw"}, "committer": {"value": 19864447, "label": "web-flow"}}