sha,message,author_date,committer_date,raw_author,raw_author_label,raw_committer,raw_committer_label,repo,repo_label,author,author_label,committer,committer_label 4df1b4d8b0cd37a880d8a04c823be7783c6d5fad,"Re-arranged full-text search docs Also documented ?_searchmode=raw - closes #748",2020-04-30T21:06:00Z,2020-04-30T21:06:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf2d547ffc9ecee265e09780ad73bcc337ad8ef3,Documentation for #747,2020-04-30T19:02:28Z,2020-04-30T19:02:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1d91ab71d4359741b03bbd4347f4360eb8ca817d,"Directory configuration mode supports metadata.yaml, closes #747",2020-04-30T18:47:21Z,2020-04-30T18:47:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d18086ae016caf14be0da7154ad92cf9d7bec060,Changelog badge,2020-04-30T18:31:35Z,2020-04-30T18:31:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow e37f4077c0f1cd09d4102213d4e2a512af471b8d,"Remove 'Serve!' line from serve CLI output It wasn't adding anything, and it was confusing when run in conjunction with the new config directory mode from #731",2020-04-27T22:02:02Z,2020-04-27T22:02:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 89c4ddd4828623888e91a1d2cb396cba12d4e7b4,"403 for static directory listing, closes #740",2020-04-27T18:29:04Z,2020-04-27T18:29:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 25014ca25eb70b4c1217558ebd14db2845973bfb,"Configuration directory mode, closes #731",2020-04-27T16:30:24Z,2020-04-27T16:30:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1b7b66c465e44025ec73421bd69752e42f108321,"Make request available when rendering custom pages, closes #738",2020-04-26T19:01:46Z,2020-04-26T19:01:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 304e7b1d9fd904ae1c35600bc03662eb90eeeae0,"Mechanism for creating custom pages using templates Closes #648",2020-04-26T18:46:43Z,2020-04-26T18:46:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 227bb3e91fe34811a9374150798643a5af98ed79,Added more example plugins,2020-04-22T13:47:20Z,2020-04-22T13:47:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 8da108193b08abf140716f8ac499f32309dfe9cf,Fixed a couple of spelling errors,2020-04-22T04:06:39Z,2020-04-22T04:06:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw edb39c91f75c97b6b55f1db6b7626e66cb8f2d45,Release Datasette 0.40,2020-04-22T04:00:34Z,2020-04-22T04:00:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 15e232180427e988174fdf88440c84b91d2d98d1,"Extra body CSS class for canned queries, closes #727",2020-04-15T21:06:12Z,2020-04-15T21:07:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d349d57cdf3d577afb62bdf784af342a4d5be660,"Smarter merging of metadata and extra_metadata, closes #724",2020-04-10T18:34:09Z,2020-04-10T18:34:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d55fe8cdfc2ce7bc6960bf2507766c1fcd1d31a7,"Fixed bug with Templates considered comment, closes #689",2020-04-05T19:38:33Z,2020-04-05T19:38:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e89b0ef2f9ae89eb3bde83b694f21452ea4858da,"Expose extra_template_vars in _contex=1, refs #693",2020-04-05T18:49:15Z,2020-04-05T18:49:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 09253817dea3c131553494f9b2eb9c03f94ae761,"Fix for missing view_name bug, closes #716",2020-04-05T18:28:20Z,2020-04-05T18:28:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e0e7a0facfc935a835cd73c720bc46661462f0b1,"Removed Zeit Now v1 support, closes #710",2020-04-04T23:04:33Z,2020-04-04T23:04:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 07e208cc6d9e901b87552c1be2854c220b3f9b6d,"Refactored .custom_sql() method to new QueryView class Refs #698",2020-04-03T01:12:13Z,2020-04-03T01:12:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b07312c2b3bc7e4a9298c1f291f420bd92b6f842,"dedent SQL for neighborhood_search fixture Makes this page a little prettier: https://latest.datasette.io/fixtures/neighborhood_search",2020-04-03T00:54:27Z,2020-04-03T00:54:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6717c719dd36dc2adc0f9da38a8c8e08129e96b4,--metadata accepts YAML as well as JSON - closes #713,2020-04-02T19:30:53Z,2020-04-02T19:30:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2aaad72789c427875426673c1a43e67c86fc970e,"Refactor template setup into Datasette constructor Closes #707",2020-03-27T01:12:43Z,2020-03-27T01:12:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6aa516d82dea9885cb4db8d56ec2ccfd4cd9b840,"Run base_url tests against /fixtures/facetable too, refs #712",2020-03-26T02:31:22Z,2020-03-26T02:31:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 99b1e919651c4be781aea162fe517e45f1f2a9c3,Fixed RST bug,2020-03-25T04:46:52Z,2020-03-25T04:46:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dedd775512daee49925882654f252df61a9e3b6d,Release 0.39,2020-03-25T04:02:37Z,2020-03-25T04:02:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a351d353bc0d6b0f737f789a0c2953e2531ed92d,"Fixed typo in GitHub Action configuration, refs #705",2020-03-25T02:30:50Z,2020-03-25T02:30:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 90015b26895fd2bd29676bc375f096102b0587ed,"Deploy latest.datasett.io to Cloud Run, refs #705",2020-03-25T02:26:02Z,2020-03-25T02:26:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cc4445801eb7c86a686b0e65fbd815d5aef857ec,"Removed deploy to Zeit Now, refs #705",2020-03-25T02:17:27Z,2020-03-25T02:17:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7656fd64d8b6a32ebc34d89c1b8711cc5ea240f7,"base_url configuration setting, closes #394 * base_url configuration setting * base_url works for static assets as well",2020-03-25T00:18:43Z,2020-03-25T00:18:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2a36dfa2a892122029f379722913469d71367925,"Fix for input type=search Webkit styling, closes #701",2020-03-24T22:57:09Z,2020-03-24T22:57:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5f4aeb1f198e2e866a1eed6a7194842d77313ea8,"Removed documentation for Zeit Now v1, refs #710",2020-03-24T22:45:24Z,2020-03-24T22:45:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c0aa929cdd497f0c722e6f4eb17ad5668786a6fd,"Added datasette-publish-fly plugin to docs, closes #704",2020-03-24T22:38:58Z,2020-03-24T22:38:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3b3cb3e8df243408ab4c03b0ea75cadd02bd65dc,"Added example plugins to plugin hooks docs, closes #709",2020-03-24T22:29:34Z,2020-03-24T22:29:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a498d0fe6590f9bdbc4faf9e0dd5faeb3b06002c,"Fix bug with over-riding default sort, closes #702",2020-03-22T02:40:29Z,2020-03-22T02:40:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 236aa065b2ecfbe5a77870689bae432b89a48b23,"""sort"" and ""sort_desc"" metadata properties, closes #702",2020-03-22T02:28:35Z,2020-03-22T02:28:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e1a817411a20e3120943ee407503e53a7445c0db,Bump to click 7.1.1 to fix flaky tests,2020-03-22T01:47:51Z,2020-03-22T01:47:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3d656f4b31e95047e0ffc1eaa7417a303ccce3c1,Updated documentation formatting,2020-03-22T01:31:49Z,2020-03-22T01:31:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2c0e1e09bc833c5939c20b937a2ce8ef997c5f5a,"Show sort arrow on primary key by default Closes #677. Refs #702.",2020-03-21T23:57:37Z,2020-03-21T23:57:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fd2a74dc09e585802ecec76c1a20a9c5a839a36a,Updated publish_subcommand example,2020-03-19T00:47:53Z,2020-03-19T00:47:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a000c80d5036822c8324c1cd037fe7d20e5246b5,"await Request(scope, receive).post_vars() method, closes #700 Needed for #698",2020-03-17T02:47:37Z,2020-03-17T02:47:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7e357abbc38dcc9d19a2f1df3252668a48e941e4,Release 0.38,2020-03-08T23:26:50Z,2020-03-08T23:26:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e1b5339fdfe47474a0d33a400acedefecff6e67e,"Do not look for templates_path in default plugins Closes #697",2020-03-08T23:09:31Z,2020-03-08T23:11:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7508477a96492caa1893c52411405656c50d30f9,Link to Datasette Writes blog entry,2020-03-08T17:23:51Z,2020-03-08T17:23:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f7f31a0223d822f7186c4d20174c002cb723d0f9,"Upgrade Dockerfile to SQLite 3.31.1, closes #695",2020-03-06T06:15:19Z,2020-03-06T06:15:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw af9cd4ca64652fae262e6f7b5d201f6e0adc989b,"Fixes for new --memory option, refs #694",2020-03-05T23:44:15Z,2020-03-05T23:44:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ddd11b3ddd886d16867c134d73105895c5726cc7,"--memory option for publish cloudrun, refs #694",2020-03-05T23:34:21Z,2020-03-05T23:34:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw be20e6991eac2baa9b43e9b26ae209bae805ede5,Changelog for 0.37.1,2020-03-03T03:43:08Z,2020-03-03T03:43:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b796519da27dc6c30d490321bb449091974d3d38,Print exceptions if they occur in the write thread,2020-03-03T01:59:29Z,2020-03-03T01:59:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dc80e779a2e708b2685fc641df99e6aae9ad6f97,"Handle scope path if it is a string I ran into this while running a unit test with httpx.AsyncClient",2020-03-02T20:01:10Z,2020-03-02T23:34:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4933035b75607e60dc63f7977e2bd4fa771d8898,RST fix,2020-03-02T16:10:16Z,2020-03-02T16:10:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 613f6fad7249da547c06ebc46616aba0f74259a4,Improved extra_template_vars documentation,2020-03-02T15:12:34Z,2020-03-02T15:12:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7f5a330377fd7db1f6d1efa5686d183bcaf89217,"Don't count rows on homepage for DBs > 100MB (#688) Closes #649.",2020-02-29T01:08:29Z,2020-02-29T01:08:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 0f8e91c68f2d2ad48efc8324b12762bf8b58facd,Documentation fix,2020-02-26T07:13:39Z,2020-02-26T07:13:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1a77f30d3c40b1a6812da5d27ab35fa1acbd988b,Fixed typo,2020-02-26T07:11:19Z,2020-02-26T07:11:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow c9e6841482b299fceadc5ad548c2dbf58a8f1227,News and release notes for 0.37,2020-02-26T01:22:02Z,2020-02-26T01:22:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 78198df668e189d2c9afe5f922fe4277d84b2f30,Fixed incorrect target name,2020-02-26T01:10:30Z,2020-02-26T01:10:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3041c6b6412bbe317f8b9afd6529a15954f2c47e,"Use inspect-file, if possible, for total row count (#666) For large tables, counting the number of rows in the table can take a significant amount of time. Instead, where an inspect-file is provided for an immutable database, look up the row-count for a plain count(*). Thanks, @kevindkeogh",2020-02-25T20:19:29Z,2020-02-25T20:19:29Z,0f68d17313c6f4ccbf0c24a3883444b5263f5648,Kevin Keogh,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,13896256,kevindkeogh,19864447,web-flow 6cb65555f46456eb31b62e855e21b1d8c809b1a2,?_searchmode=raw option (#686),2020-02-25T05:56:03Z,2020-02-25T05:56:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a093c5f79fa034a97d2ad8b606745dd3b80365af,".execute_write() and .execute_write_fn() methods on Database (#683) Closes #682.",2020-02-25T04:45:08Z,2020-02-25T04:45:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 411056c4c43e74f2b3d0e3bc1175e7998516b1b3,"Only --reload on changes to immutable databases, closes #494",2020-02-24T19:44:59Z,2020-02-24T19:44:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b031fe97636b80b05fec409ee1dffb7d044fd4e9,Updated README news for 0.36,2020-02-22T03:04:46Z,2020-02-22T03:04:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 962a7e16e5e73c000d87815194b8261428e0938e,"Release notes for 0.36, refs #679",2020-02-22T03:01:57Z,2020-02-22T03:01:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d6335f1f3184683b05131dd12a73ff1115aefba3,"Added shapefile-to-sqlite, datasette-mask-columns, datasette-auth-existing-cookies, datasette-auth-existing-cookies Refs #679",2020-02-22T02:53:35Z,2020-02-22T02:53:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw be2265b0e811d0ac2875c2f748125c17b0f9289e,"Fix db-to-sqlite command in ecosystem doc page (#669) Thanks, @adipasquale",2020-02-22T02:32:17Z,2020-02-22T02:32:17Z,bd53542d6923dd8fcfd93cd43a925e6e8acd6e80,Adrien Di Pasquale,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,883348,adipasquale,19864447,web-flow 7c6a9c35299f251f9abfb03fd8e85143e4361709,"Better tests for prepare_connection() plugin hook, refs #678",2020-02-22T02:27:07Z,2020-02-22T02:27:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6303ea50483e432bbef193d1c54c2bf54e53f157,"prepare_connection() now takes datasette and database args, refs #678",2020-02-22T01:32:40Z,2020-02-22T01:32:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d3f2fade88984dc6157b2ff69c24aa5a070f9716,"Refactored run_sanity_checks to check_connection(conn), refs #674",2020-02-15T17:56:48Z,2020-02-15T17:56:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f1442a8151f66ceef6517b6d3d045e2ec1d0f0ec,Replaced self.ds.execute with db.execute in more places,2020-02-14T02:20:05Z,2020-02-14T02:20:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw efa54b439fd0394440c302602b919255047b59c5,"Docs for .render_template(), refs #577 Also improved parameter documentation for other methods, refs #576",2020-02-14T01:58:32Z,2020-02-14T01:58:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3ffb8f3b98252531d11897fd431711e9b8045ace,".add_database() and .remove_database() methods, refs #671 Also made a start on the Datasette class documentation, refs #576",2020-02-14T01:25:27Z,2020-02-14T01:27:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf5f4386ef6fea9179bbaaec2e187917934759d7,"Run black against everything, not just tests and datasette dirs",2020-02-13T23:02:10Z,2020-02-13T23:02:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b38a792ef0fb9c9e4057afd196bb9439edd9c0e9,"Apply Black, update copyright to be 2017-2020",2020-02-13T23:00:35Z,2020-02-13T23:01:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0091dfe3e5a3db94af8881038d3f1b8312bb857d,"More reliable tie-break ordering for facet results I was seeing a weird bug where the order of results running tests on my laptop was inconsistent, causing pytest failures even though the order of tests in Travis CI was fine. I think the fix is to explicitly state how facet ordering ties on the count should be resolved.",2020-02-13T06:36:42Z,2020-02-13T06:36:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 298a899e792ebd0cd82a5f01b613c31f19082e51,Reformatted with black,2020-02-13T06:05:46Z,2020-02-13T06:05:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 30b6f71b306a43605c99bef79302ed5cb22d1924,Updated release notes with #653,2020-02-05T02:17:30Z,2020-02-05T02:17:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 33a12c8ae526afb40a7819c9ca411c9d3c41219b,"Allow leading comments in SQL input field (#653) Thanks, @jaywgraves!",2020-02-05T02:13:24Z,2020-02-05T02:13:24Z,6410ac01839c113476668eeff88d60a0a2c6eb7a,Jay Graves,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,418191,jaywgraves,19864447,web-flow ce12244037b60ba0202c814871218c1dab38d729,Release notes for 0.35,2020-02-05T02:02:32Z,2020-02-05T02:02:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4d7dae9eb75e5430c3ee3c369bb5cd9ba0a148bc,Added a bunch more plugins to the Ecosystem page,2020-02-04T20:49:41Z,2020-02-04T20:49:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 70b915fb4bc214f9d064179f87671f8a378aa127,"Datasette.render_template() method, closes #577 Pull request #664.",2020-02-04T20:26:17Z,2020-02-04T20:26:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 286ed286b68793532c2a38436a08343b45cfbc91,geojson-to-sqlite,2020-01-31T07:09:56Z,2020-01-31T07:09:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow e7f60d2a9b59752e20de8412f7b0a3e9a5359a31,"Release notes for Datasette 0.34, plus news updates",2020-01-30T00:09:01Z,2020-01-30T00:09:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 67fc9c5720ed1fcd62b116481f70d4e80b403a22,"--port argument for datasette package, plus tests - closes #661 From pull request #663",2020-01-29T22:46:43Z,2020-01-29T22:46:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 34d77d780f68b778fd9d6ebbaf69f250436f055f,"gcloud run is now GA, s/beta// (#660) Thanks, @glasnt",2020-01-21T23:28:11Z,2020-01-21T23:28:11Z,f9a18a704545f33349d7b28b24faf7063846ae0a,Katie McLaughlin,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,813732,glasnt,9599,simonw 3c861f363df02a59a67c59036278338e4760d2ed,"_search= queries now correctly escaped, fixes #651 Queries with reserved words or characters according to the SQLite FTS5 query language could cause errors. Queries are now escaped like so: dog cat => ""dog"" ""cat""",2019-12-29T18:48:13Z,2019-12-29T18:48:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 59e7014c8a0f4102d7dc79f517540c55c49e1554,Release 0.33,2019-12-22T16:27:04Z,2019-12-22T16:27:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dc98b0f41defa4eb45d5b88fd9dfcfb1c5bbe144,Link to JSK Medium post from news,2019-12-22T16:16:58Z,2019-12-22T16:16:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d54318fc7f2565e6121920ce1ea9cb8b700e629a,"Added template_debug setting, closes #654",2019-12-22T16:04:45Z,2019-12-22T16:04:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ceef5ce684214a9b55d242043206cb10b13c878a,Documentation for --port=0,2019-12-22T15:42:30Z,2019-12-22T15:42:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 85c19c4037ddc757794c63a04faad07a6ea57ae6,Apply black,2019-12-22T15:34:20Z,2019-12-22T15:34:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9c3f0b73de059ec2b953f952fc1eadecb8f396c5,Bump to uvicorn 0.11,2019-12-22T15:33:04Z,2019-12-22T15:33:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 16665c9ee63df40bc262661ce6ed728a946375db,Better handling of corrupted database files,2019-12-22T15:31:40Z,2019-12-22T15:31:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d6b6c9171f3fd945c4e5e4144923ac831c43c208,Include asyncio task information in /-/threads debug page,2019-12-05T06:46:39Z,2019-12-05T06:47:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2039e78e589ae7c60f404fe84fb75eda1630104e,Added Niche Museums to News,2019-12-03T06:53:59Z,2019-12-03T06:53:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a562f2965552fb2dbbbd74df245c9965ee23d886,Examples of things you can do with plugins,2019-11-27T19:19:11Z,2019-11-27T19:19:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f9d0ce4233b29a8a90b9d87e18aacdeefde2e022,Added datasette-haversine to plugins list,2019-11-27T14:04:32Z,2019-11-27T14:04:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow df2879ee2a88f94ae590067e019237afc2189e00,"Better documentation for --static, closes #641 https://datasette.readthedocs.io/en/stable/custom_templates.html#serving-static-files",2019-11-26T02:31:42Z,2019-11-26T02:31:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aca41618f8761f99c47c8ae8e81b07a6d4af4d7a,index view is also important for plugin hooks,2019-11-25T17:04:39Z,2019-11-25T17:04:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d3e1c3017ee2f606a731208d59fe48805cdc3259,"Display 0 results, closes #637",2019-11-23T06:07:01Z,2019-11-23T06:07:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fd137da7f83c117b18e189707a1039e319dd5c91,"Suggest column facet only if at least one count > 1 Fixes #638",2019-11-22T00:56:55Z,2019-11-22T00:56:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c16be14517414a94e1fdbd888e8a3ad0669e3bca,How to upgrade using Docker,2019-11-20T18:02:07Z,2019-11-20T18:02:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 440a70428c624f6e27b630026acdba2032acc9a7,"Include rowid in filter select, closes #636",2019-11-19T23:01:10Z,2019-11-19T23:01:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a9909c29ccac771c23c2ef22b89d10697b5256b9,"Move .execute() from Datasette to Database Refs #569 - I split this change out from #579",2019-11-15T22:49:45Z,2019-11-15T22:52:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8fc9a5d877d26dbf2654e125f407ddd2fd767335,Datasette 0.32 and datasette-template-sql in news,2019-11-14T23:46:37Z,2019-11-14T23:46:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a95bedb9c423fa6d772c93ef47bc40f13a5bea50,Release notes for 0.32,2019-11-14T23:18:53Z,2019-11-14T23:20:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8c642f04e0608bf537fdd1f76d64c2367fb04d57,"Render templates using Jinja async mode Closes #628",2019-11-14T23:14:22Z,2019-11-14T23:14:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow b51f258d00bb3c3b401f15d46a1fbd50394dbe1c,Release notes for 0.31.2,2019-11-13T16:48:36Z,2019-11-13T16:48:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f52451023025579ae9a13de4a7f00d69200184cd,"Fix ""publish heroku"" + upgrade to use Python 3.8.0 Closes #633. Closes #632.",2019-11-13T16:42:47Z,2019-11-13T16:42:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 848dec4deb0d3c140a4e0394cac45fbb2593349b,"Fix for datasette publish with just --source_url (#631) Closes #572",2019-11-13T04:28:42Z,2019-11-13T04:28:42Z,6c3a98f05c13cf31297e605e4d584d20fc12ab6b,Stanley Zheng,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,3683993,qwo,9599,simonw bbd00e903cdd49067ecdbdb60a4d225833a44b05,Badge linking to datasette on hub.docker.com,2019-11-13T02:38:13Z,2019-11-13T02:38:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a22c7761b61baa61b8e3da7d30887468d61d6b83,Fixed typo in release notes,2019-11-13T02:18:39Z,2019-11-13T02:18:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 16265f6a1a7c547e3925e0fc2d6b88754afb0435,Release notes for 0.31.1,2019-11-13T02:18:04Z,2019-11-13T02:18:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d977fbadf70a96bf2eea1407d01f99d98e092dec,"datasette publish uses python:3.8 base Docker image, closes #629",2019-11-12T06:03:09Z,2019-11-12T06:03:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f554be39fc14ddc18921ca29d3920d55aad03d46,ReST fix,2019-11-12T06:00:13Z,2019-11-12T06:00:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1c518680e9692a9a77022af54f3de3e77fb1aaf4,Final steps: build stable branch of Read The Docs,2019-11-12T05:57:48Z,2019-11-12T05:57:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7f89928062b1a1fdb2625a946f7cd5161e597401,"Removed code that conditionally installs black Since we no longer support Python 3.5 we don't need this any more.",2019-11-12T05:33:51Z,2019-11-12T05:33:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c633c035dc8d4c60f1d13cb074918406bbdb3734,Datasette 0.31 in news section,2019-11-12T05:26:56Z,2019-11-12T05:26:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 76fc6a9c7317ce4fbf3cc3d327c849f7274d960a,Release notes for 0.31,2019-11-12T05:17:59Z,2019-11-12T05:18:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf7776d36fbacefa874cbd6e5fcdc9fff7661203,"Support Python 3.8, stop supporting Python 3.5 (#627) * Upgrade to uvicorn 0.10.4 * Drop support for Python 3.5 * Bump all dependencies to latest releases * Update docs to reflect we no longer support 3.5 * Removed code that skipped black unit test on 3.5 Closes #622",2019-11-12T05:09:11Z,2019-11-12T05:09:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 5bc2570121aea8141ff88790e214765472882b08,"Include uvicorn version in /-/versions, refs #622",2019-11-12T04:45:12Z,2019-11-12T04:45:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 42ee3e16a9ba7cc513b8da944cc1609a5407cf42,"Bump pint to 0.9 (#624) This fixes 2 deprecation warnings in Python 3.8 - refs #623 #622",2019-11-11T04:19:01Z,2019-11-11T04:19:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1c063fae9dba70f70244db010d55a18846640f07,"Test against Python 3.8 in Travis (#623) * Test against Python 3.8 in Travis * Avoid current_task warnings in Python 3.8",2019-11-11T03:45:34Z,2019-11-11T03:45:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 28c4a6db5b5e512db630d7ba6127196185de67c7,"CREATE INDEX statements on table page, closes #618",2019-11-10T01:29:36Z,2019-11-10T01:29:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 10b9d85edaaf198879344aa1c498000cfb27dff8,"datasette-csvs on Glitch now uses sqlite-utils It previously used csvs-to-sqlite but that had heavy dependencies. See https://support.glitch.com/t/can-you-upgrade-python-to-latest-version/7980/33",2019-11-09T02:15:13Z,2019-11-09T02:15:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 9f5d19c254d1bfbd99f576dff47a6e32e01c76ed,"Improved documentation for ""publish cloudrun""",2019-11-09T02:12:20Z,2019-11-09T02:12:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 83fc5165ac724f69cd57d8f15cd3038e7b30f878,"Improved UI for publish cloudrun, closes #608",2019-11-08T02:48:39Z,2019-11-08T02:48:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f9c146b893856a48afa810ebcce1714f30d0d3a2,Removed unused special_args_lists variable,2019-11-07T00:55:44Z,2019-11-07T00:55:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c30f07c58e410ee296b28aeabe4dc461dd40b435,"Removed _group_count=col feature, closes #504",2019-11-06T05:12:55Z,2019-11-06T05:12:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 931bfc66613aa3e22f8314df5c0d0758baf31f38,"Handle spaces in DB names (#590) Closes #503 - thanks, @rixx",2019-11-04T23:16:30Z,2019-11-04T23:16:30Z,b90d9715d7c0881515e9d6aa98923ed89d445945,Tobias Kunze,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,2657547,rixx,9599,simonw 52fa79c6075f0830ff635b81d957c64d877a05aa,"Use select colnames, not select * for table view - refs #615",2019-11-04T23:03:48Z,2019-11-04T23:03:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9db22cdf1809fb78a7b183cd2f617cd5e26efc68,"pk__notin= filter, closes #614",2019-11-04T04:11:55Z,2019-11-04T04:11:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ee330222f4c3ee66c2fe41ebc76fed56b9cb9a00,"Offer to format readonly SQL (#602) Following discussion in #601, this PR adds a ""Format SQL"" button to read-only SQL (if the SQL actually differs from the formatting result). It also removes a console error on readonly SQL queries. Thanks, @rixx!",2019-11-04T02:39:55Z,2019-11-04T02:39:55Z,b90d9715d7c0881515e9d6aa98923ed89d445945,Tobias Kunze,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,2657547,rixx,9599,simonw 2bf7ce5f517d772a16d7855a35a8a75d4456aad7,"Fix CSV export for nullable foreign keys, closes #612",2019-11-02T23:12:46Z,2019-11-02T23:12:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c3181d9a840dff7be8c990b21f5749db393a4ea0,Release notes for 0.30.2,2019-11-02T22:47:20Z,2019-11-02T22:47:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 14da70525b35e1a44cd45c19101385467057f041,"Don't show 'None' as label for nullable foreign key, closes #406",2019-11-02T22:29:40Z,2019-11-02T22:29:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ed57e4f99018c1d520858f55f6eee4eb1cc2af3d,"Plugin static assets support both hyphens and underscores in names Closes #611",2019-11-01T22:15:10Z,2019-11-01T22:15:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ffae2f0ecde1ca92e78d097665df820d3b7861e6,"Better documentation of --host, closes #574",2019-11-01T21:57:49Z,2019-11-01T21:57:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7152e76eda9049574643261e7a471958cc16d0b9,"Don't suggest array facet if column is only [], closes #610",2019-11-01T21:45:59Z,2019-11-01T21:45:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ba5414f16b49781261d0f41a16f2210d5fa3976f,Only inspect first 100 records for #562,2019-11-01T19:38:15Z,2019-11-01T19:38:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50287e7c6bb0987536e5515f05945721c4515e9a,Only suggest array facet for arrays of strings - closes #562,2019-11-01T19:37:46Z,2019-11-01T19:37:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 937828f946238c28e77ba50e0b2e649c874560f7,"Use distinfo.project_name for plugin name if available, closes #606",2019-11-01T05:39:59Z,2019-11-01T05:39:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3ca290e0db03bb4747e24203c445873f74512107,Fixed dumb error,2019-10-30T19:00:21Z,2019-10-30T19:00:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f5f6cbe03cbf05737d848f44779372b5daa79a25,Release 0.30.1,2019-10-30T18:56:04Z,2019-10-30T18:56:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e2c390500e6782aa476a7edc05c46cf907875a6e,"Persist _where= in hidden fields, closes #604",2019-10-30T18:49:26Z,2019-10-30T18:49:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5dd4d2b2d3abcfd507a6df47e7c2fbad3c552fd8,Update to latest black (#609),2019-10-30T18:49:01Z,2019-10-30T18:49:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f4c0830529a9513a83437a9e1550bbe27ebc5c64,"Always pop as_format off args dict (#603) Closes #563. Thanks, @chris48s",2019-10-21T02:03:08Z,2019-10-21T02:03:08Z,5a0a3d8ffa3a5fa7036ede67cc44274222c2f074,chris48s,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,6025893,chris48s,9599,simonw 8050f9e1ece9afd0236ad38c6458c12a4ad917e6,Update news in README,2019-10-19T01:08:04Z,2019-10-19T01:08:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw debea4f971c180af64e16b83be98d830e9dee54f,Release 0.30,2019-10-19T01:05:47Z,2019-10-19T01:06:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e877b1cb12076946fdbec7ca2fbfbfc75c1c2a28,"Don't auto-format SQL on page load (#601) Closes #600",2019-10-18T23:56:44Z,2019-10-18T23:56:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow b647b5efc29300f715ba656e41b0591f342938e1,"Fix for /foo v.s. /foo-bar issue, closes #597 Pull request #599",2019-10-18T22:51:07Z,2019-10-18T22:51:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow b6ad1fdc7068cb8248787843e7438d1f19fa2e3a,"Fixed bug returning non-ascii characters in CSV, closes #584",2019-10-18T05:23:01Z,2019-10-18T05:23:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3e864b1625f3142e6ff084f9b41247f2f9f60f80,"Use --platform=managed for publish cloudrun, closes #587",2019-10-17T21:51:45Z,2019-10-17T21:51:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9366d0bf191daccee6093c54ed51a2855d129cd8,Add Python versions badge,2019-10-14T22:29:16Z,2019-10-14T22:29:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 12cec411cae73ba7211429da12cd32c551fe17b1,"Display metadata footer on custom SQL queries (#589) Closes #408 - thanks, @rixx!",2019-10-14T03:53:21Z,2019-10-14T03:53:21Z,b90d9715d7c0881515e9d6aa98923ed89d445945,Tobias Kunze,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,2657547,rixx,9599,simonw 908fc3999e06f3ccd3bb8ad0539490bbc7809748,"Sort databases on homepage by argument order - #591 Closes #585 - thanks, @rixx!",2019-10-14T03:52:33Z,2019-10-14T03:52:33Z,b90d9715d7c0881515e9d6aa98923ed89d445945,Tobias Kunze,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,2657547,rixx,9599,simonw af2e6a5cf186a7200d76cb67ac30fa59cc24d84e,"Button to format SQL, closes #136 SQL code will be formatted on page load, and can additionally be formatted by clicking the ""Format SQL"" button. Thanks, @rixx!",2019-10-14T03:46:12Z,2019-10-14T03:46:12Z,b90d9715d7c0881515e9d6aa98923ed89d445945,Tobias Kunze,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,2657547,rixx,9599,simonw fffd69ec031b83f46680f192ba57a27f0d1f0b8a,Allow EXPLAIN WITH... - closes #583,2019-10-06T17:23:58Z,2019-10-06T17:23:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a314b761866d250c16f1ff6dd682010cf4181eb4,Added /-/threads debugging page,2019-10-02T15:32:47Z,2019-10-02T15:35:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0fc8afde0eb5ef677f4ac31601540d6168c8208d,Changelog for 0.29.3 release,2019-09-03T00:40:53Z,2019-09-03T00:40:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2dc5c8dc259a0606162673d394ba8cc1c6f54428,"detect_fts now works with alternative table escaping (#571) Fixes #570. See also https://github.com/simonw/sqlite-utils/pull/57",2019-09-03T00:32:27Z,2019-09-03T00:32:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f04deebec4f3842f7bd610cd5859de529f77d50e,Refactored connection logic to database.connect(),2019-07-25T13:07:44Z,2019-07-26T10:22:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 27cb29365c9f5f6f1492968d1268497193ed75a2,"Fix numerous typos (#561) Thanks, @minho42!",2019-07-26T10:25:44Z,2019-07-26T10:25:44Z,710d89efa471054d77ad1b7e2b26e2e78e1153e7,Min ho Kim,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,15278512,minho42,9599,simonw a9453c4dda70bbf5122835e68f63db6ecbe1a6fc,"Fixed CodeMirror on database page, closes #560",2019-07-14T03:38:40Z,2019-07-14T03:38:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6abe6faff6b035e9334dd05f8c741ae9b7a47440,Release 0.9.2,2019-07-14T03:04:05Z,2019-07-14T03:04:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 90d4f497f9b3f6a5882937c91fddb496ac3e7368,"Fix plus test for unicode characters in custom query name, closes #558",2019-07-14T02:49:24Z,2019-07-14T02:49:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5ed450a3328bd6a6a918474eeb5446d8a704df1c,Fixed breadcrumbs on custom query page,2019-07-14T02:05:39Z,2019-07-14T02:05:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw afc2e4260ab8b28e132c834185c5294fb27543f1,News: Single sign-on against GitHub using ASGI middleware,2019-07-14T01:42:35Z,2019-07-14T01:42:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow d224ee2c98ac39c2c6e21a0ac0c62e5c3e1ccd11,"Bump to uvicorn 0.8.4 (#559) https://github.com/encode/uvicorn/commits/0.8.4 Query strings will now be included in log files: https://github.com/encode/uvicorn/pull/384",2019-07-13T22:34:57Z,2019-07-13T22:34:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f2006cca80040871439055ae6ccbc14e589bdf4b,Updated release notes,2019-07-11T16:27:28Z,2019-07-11T16:27:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2a94f3719fb2c4335fcda374fa92f87272b02d34,Release 0.29.1,2019-07-11T16:17:55Z,2019-07-11T16:17:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cc27857c722c172b3c9bd93c92f02e19f2a55d6c,Removed unused variable,2019-07-11T16:14:24Z,2019-07-11T16:14:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 74ecf8a7cc45cabf369e510c7214f5ed85c8c6d8,"Fix static mounts using relative paths and prevent traversal exploits (#554) Thanks, @abdusco! Closes #555",2019-07-11T16:13:19Z,2019-07-11T16:13:19Z,3684ad6084bc36bc5a059f0d6eb929bcf9854536,Abdus,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,3243482,abdusco,9599,simonw 9ca860e54fe480d0a365c0c1d8d085926d12be1e,"Add support for running datasette as a module (#556) python -m datasette Thanks, @abdusco",2019-07-11T16:07:44Z,2019-07-11T16:07:44Z,3684ad6084bc36bc5a059f0d6eb929bcf9854536,Abdus,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,3243482,abdusco,9599,simonw 81fa8b6cdc5457b42a224779e5291952314e8d20,"News: Datasette 0.29, datasette-auth-github, datasette-cors",2019-07-08T04:36:27Z,2019-07-08T04:36:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow fb7ee8e0ad59a15083234a48e935525f6e7257dd,Changelog for 0.29 release,2019-07-08T03:14:27Z,2019-07-08T03:14:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 973f8f139df6ad425354711052cfc2256de2e522,"--plugin-secret option for datasette publish Closes #543 Also added new --show-files option to publish now and publish cloudrun - handy for debugging.",2019-07-08T02:06:31Z,2019-07-08T02:06:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2d04986c4438cdfd3bb9d156d9dfcf830cb87b49,"Added datasette-auth-github and datasette-cors plugins to Ecosystem Closes #548",2019-07-08T02:02:27Z,2019-07-08T02:02:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aa4cc99c0221a98850f8c801c329aac40f243b7b,"Removed facet-by-m2m from docs, refs #550 Will bring this back in #551",2019-07-08T01:22:05Z,2019-07-08T01:22:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c5542abba564a0b320a1201a8cc85b48c743005d,"Removed ManyToManyFacet for the moment, closes #550",2019-07-07T23:21:11Z,2019-07-07T23:21:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9998f92cc05e6061a81af6cf194c3caa4d0759c1,"Updated custom facet docs, closes #482",2019-07-07T23:19:02Z,2019-07-07T23:19:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 912ce848b9fa8b1642c800b446f504518bc39f2a,"Fix nav display on 500 page, closes #545",2019-07-07T20:25:38Z,2019-07-07T20:26:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 787dd427de97dcbd0843611f1aef6d157d8bb0b6,"white-space: pre-wrap for table SQL, closes #505",2019-07-07T20:21:50Z,2019-07-07T20:26:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f80ff9b07b5ecdfeca4aa81f5728812a22bfb019,"min-height on .hd Now it should be the same size on the homepage as it is on pages with breadcrumbs",2019-07-07T20:16:48Z,2019-07-07T20:16:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d95048031edb02bbc9892879507f55a4f29c5459,"Split pypi and docker travis tasks (#480) Thanks @glasnt!",2019-07-07T20:03:19Z,2019-07-07T20:03:19Z,f9a18a704545f33349d7b28b24faf7063846ae0a,Katie McLaughlin,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,813732,glasnt,9599,simonw fcfcae21e67cc15090942b1d2a47b5f016279337,"extra_template_vars plugin hook (#542) * extra_template_vars plugin hook Closes #541 * Workaround for cwd bug Based on https://github.com/pytest-dev/pytest/issues/1235#issuecomment-175295691",2019-07-06T00:05:56Z,2019-07-06T00:05:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a18e0964ecd04593f227616538a80dee08768057,"Refactor templates for better top nav customization, refs #540",2019-07-05T20:34:41Z,2019-07-05T20:34:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 16fdabda978fa659bed0e8670a385dab3c2cd197,Better robustness in face of missing raw_path,2019-07-04T14:03:02Z,2019-07-04T14:03:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 107d47567dedd472eebec7f35bc34f5b58285ba8,Black,2019-07-04T05:56:13Z,2019-07-04T05:56:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 25ff0a8ba6b2e3247a66048ad173ba5ed8a38b80,"Fix for accidentally leaking secrets in /-/metadata, closes #538",2019-07-04T05:47:45Z,2019-07-04T05:47:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a2d45931935f6bb73605a94afedf9e78308c95d6,"Secret plugin configuration options (#539) Closes #538",2019-07-04T05:36:44Z,2019-07-04T05:36:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f0d32da0a9af87bcb15e34e35424f0c0053be83a,"Switch to ~= dependencies, closes #532 (#536) * Switch to ~= dependencies, closes #532 * Bump click and click-default-group * imp. is deprecated, use types.ModuleType instead - thanks https://stackoverflow.com/a/32175781 * Upgrade to pytest 5",2019-07-03T04:32:55Z,2019-07-03T04:32:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4d2fdafe39159c9a8aa83f7e9bfe768bbbbb56a3,"Added asgi_wrapper plugin hook, closes #520",2019-07-03T03:57:28Z,2019-07-03T04:06:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b9ede4c1898616512b5d204f9c941deff473cbe4,"Updated custom template docs, refs #521",2019-07-03T03:13:34Z,2019-07-03T03:23:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 13e4f9a676da91e271a243f18f3a4ebe4f84557a,"Unit test for _table custom template, refs #521",2019-07-03T03:06:22Z,2019-07-03T03:23:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7120d91f6ab7917b57b0e966259082d513c36ee,"Rename _rows_and_columns.html to _table.html, refs #521",2019-07-03T00:50:45Z,2019-07-03T03:23:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c461357b4483f1cc44efb3f12cf91cc1fb45ab1d,"Default to raw value, use Row.display(key) for display, refs #521",2019-06-25T12:21:10Z,2019-07-03T03:23:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 754836eef043676e84626c4fd3cb993eed0d2976,"New experimental Row() for templates, refs #521",2019-06-25T12:02:42Z,2019-07-03T03:23:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 76882830548e16905348ee75acb0044cb8e1fd20,Typo,2019-06-25T15:36:39Z,2019-06-25T15:36:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 9e97b725f11be3f4dca077fe5569078a62ec2761,pip install -e .[docs] for docs dependencies,2019-06-25T12:08:04Z,2019-06-25T12:08:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6341f8cbc7833022012804dea120b838ec1f6558,"Better coverage of sqlite-utils in FTS docs, closes #525",2019-06-24T16:28:42Z,2019-06-24T16:28:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 34e292d24dc2b8376236472bec3cce1c556ddfe5,"Porting Datasette to ASGI, and Turtles all the way down",2019-06-24T05:28:37Z,2019-06-24T05:28:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow cdd24f3eaa207f67d948c1876725b0f84654a623,Added datasette-doublemetaphone to list of plugins,2019-06-24T04:23:24Z,2019-06-24T04:23:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a5591236c46f507b9e46b1b52e51d5f46ffd6913,"Install test dependencies so deploy can work python tests/fixtures.py needs asgiref or it fails with an error",2019-06-24T03:23:07Z,2019-06-24T03:23:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ba8db9679f3bd2454c9e76e7e6c352126848b57a,"Port Datasette from Sanic to ASGI + Uvicorn (#518) Datasette now uses ASGI internally, and no longer depends on Sanic. It now uses Uvicorn as the underlying HTTP server. This was thirteen months in the making... for full details see the issue: https://github.com/simonw/datasette/issues/272 And for a full sequence of commits plus commentary, see the pull request: https://github.com/simonw/datasette/pull/518",2019-06-24T03:13:09Z,2019-06-24T03:13:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 35429f90894321eda7f2db31b9ea7976f31f73ac,"Revert ""New encode/decode_path_component functions"" Refs #272 This reverts commit 9fdb47ca952b93b7b60adddb965ea6642b1ff523. Now that ASGI supports raw_path we don't need our own encoding scheme!",2019-06-19T00:22:26Z,2019-06-19T00:23:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d4df640d187d01a0ee81c238082a690bbefd0800,"Refactored view class hierarchy, refs #272 See https://github.com/simonw/datasette/issues/272#issuecomment-502393107",2019-06-15T19:41:34Z,2019-06-15T19:41:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aa911122feab13f8e65875c98edb00fd3832b7b8,Fix typo in install step: should be install -e (#500),2019-06-11T18:48:40Z,2019-06-11T18:48:40Z,6067f58a7236b3d01e4166f795a161c7469a447c,Tom MacWright,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,32314,tmcw,9599,simonw 6ccfcefb782bbf86b87bf047d01b979782aa6d97, Added datasette-render-binary plugin to ecosystem,2019-06-09T16:49:06Z,2019-06-09T16:49:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 0c756b8cd948bd69b7342c0d0e93bad4ff4e97b2,Added datasette-bplist plugin to ecosystem,2019-06-09T02:11:59Z,2019-06-09T02:11:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 5e8fbf7f6fbc0b63d0479da3806dd9ccd6aaa945,"Upgrade pytest to 4.6.1, pluggy to 0.12.0 (#497)",2019-06-03T02:06:26Z,2019-06-03T02:06:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 803f750309bf0cd5b7501228c1efcf9a35686d74,Added datasette-jq plugin to ecosystem,2019-05-30T01:51:10Z,2019-05-30T01:51:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2a4b892d6c0f6609ea48df0dc393397af2b7b1c1,Tidy up with Black,2019-05-28T02:28:47Z,2019-05-28T02:28:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9c58d048ec4af8a35b680a5654c2a18985704f8b,"Fix pagination when sorted by expanded foreign key Closes #489",2019-05-28T02:23:18Z,2019-05-28T02:23:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f069950a143b97b384ec39a86db28e6f2830947d,Removed obsolete __init__ method,2019-05-28T02:03:36Z,2019-05-28T02:03:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw de92c0513409e72af78e6796c47c8954fd47576e,Fixed duplicate function name,2019-05-28T01:49:57Z,2019-05-28T01:49:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 839e55bf0a5cc2ef4d47074b7d804f7f2d5accb3,"Start of unit tests for Database class, refs #485",2019-05-28T01:42:30Z,2019-05-28T01:42:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bd4dbc8519c24c2799dfa5e69bb3dc37a3f3092e,"Rename InterruptedError => QueryInterrupted, closes #490",2019-05-28T00:16:36Z,2019-05-28T00:16:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw edb36629e7356f70f42b9d37fea5dfe9cc3c364a,"Database.get_outbound_foreign_keys() refactor Following this, the only module that ever makes calls to the low-level execute_against_connection_in_thread() method is datasette/database.py",2019-05-27T18:41:44Z,2019-05-27T18:41:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 20f98c3e20902c62db610e43155c476508ead4a4,"Databse.primary_keys(table) / fts_table(table) refactor, closes #488 Also cleaned up some unused imports spotted by the linter.",2019-05-27T18:27:42Z,2019-05-27T18:27:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3fe21b91bb37b0dded09f73e119b5e1ae5035d85,Typo,2019-05-27T18:27:21Z,2019-05-27T18:27:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6569287d9001fb7e37f99b4bc5eddb78d047fa6f,"Refactored ConnectedDatabase to datasette/database.py Closes #487",2019-05-27T05:07:27Z,2019-05-27T05:07:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 026c84db30bd0a75ecde146a80a5d142078dc299,"Refactor Datasette methods to ConnectedDatabase Refs #487",2019-05-27T04:56:43Z,2019-05-27T04:56:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 182a3017c24e3fa3af60e4ac0c91c7e48f8736fd,Sort keys to past tests in Python 3.5,2019-05-25T16:22:02Z,2019-05-25T16:22:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5ef3b2d6c902622b349a35d33eefc39f2a85e59e,"Don't use -v with pytest in Travis It seems to slow things down more than I expected.",2019-05-25T16:19:30Z,2019-05-25T16:19:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9bd39672dead0da8570a9e68b70f9ca7a2b4e63e,"Better label detection, refs #485 This needs unit tests.",2019-05-25T16:14:57Z,2019-05-25T16:14:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d923d847545e829bf946bb9170bebfc7c3f9d993,"Facet by many-to-many, closes #365",2019-05-25T16:05:52Z,2019-05-25T16:06:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6e79fecf7e57adf89e072c7ce3a70a83d3d10ec4,Travis now uses pytest -v,2019-05-23T05:54:40Z,2019-05-23T05:54:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 172da009d890aa029cff7138b4dcfd4f60948525,"Added ?_through= table argument, closes #355 Also added much more interesting many-to-many fixtures - roadside attractions!",2019-05-23T05:44:34Z,2019-05-23T05:45:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c902590ada636098a705502d78f51b2f92973350,Stack Overflow survey added to news,2019-05-21T18:47:28Z,2019-05-21T18:47:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f12220b17de426a356a716c58768071fce1f741a,Link to blog post about 0.28,2019-05-21T16:33:57Z,2019-05-21T16:33:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 967230c90e7467d4adb5df5a5732ece0247cf536,"Facet by date, closes #481",2019-05-21T06:09:22Z,2019-05-21T06:09:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2d14f21f85d3a1fe0ff914e01fcacd089704f7aa,Updated tests for date(...) lookup,2019-05-21T06:06:19Z,2019-05-21T06:06:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw de4503a136617697648473bc37780c6799eb4d98,Fix ?col__date= for columns with spaces,2019-05-21T05:36:22Z,2019-05-21T05:36:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 70d2858067d3c4da0e17c1d39e03de89190e94b6,Doc typo fix (#479),2019-05-20T16:42:28Z,2019-05-20T16:42:28Z,798007d3f9547f7bcb9228088222d35f30b5b716,Thomas Wood,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,98555,IgnoredAmbience,9599,simonw 4246e138f9512686413e97878659ef953337e57b,Typo fix,2019-05-19T23:14:09Z,2019-05-19T23:14:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow e513a80afba30bca9eeebd71c5e6aa6d8a811f33,"Use -i with datasette publish, closes #469",2019-05-19T22:53:34Z,2019-05-19T22:53:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 48759d3b35de9fa1a89622587e38b286e0484997,New setup.py description,2019-05-19T21:57:47Z,2019-05-19T21:57:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e518f76c5f5dd0138032bfb26387f5bb91086a3f,README for Datasette 0.28 release,2019-05-19T21:37:49Z,2019-05-19T21:37:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw afd0480d3f88012ef062ac82c67a995d6bfc5080,"Tidy up README, reducing duplication with docs Refs #451",2019-05-19T21:31:03Z,2019-05-19T21:31:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 17243fc35546fefbdba7bf7f3bc6ab13b06e39e3,Release notes for 0.28 - closes #463,2019-05-19T21:24:12Z,2019-05-19T21:24:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a9d138702c5b4d1d5d9402272b030c3c3d945593,"Docs for facet-by-JSON-array, closes #477",2019-05-19T21:19:35Z,2019-05-19T21:19:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f4eefdf19330bcd2e6867875a93a948c96912213,Do not allow downloads of mutable databases - closes #474,2019-05-19T20:41:09Z,2019-05-19T20:41:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 88976d6cd6e0f4809023149ce9f75a62975c9beb,"Source, license and about docs - closes #475",2019-05-19T20:13:27Z,2019-05-19T20:13:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 503fee891b81dfe10f4ecd7b6c3a1dca0eb0432b,"Removed 'datasette skeleton', closes #476",2019-05-19T20:05:38Z,2019-05-19T20:05:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 260085838887ee343f4d3b177c422e7aef5ade9d,Fixed some links,2019-05-19T18:17:35Z,2019-05-19T18:17:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 870f6dd55fc5e7bc2f9db4ab22f90b7a734e402a,Replaced a straggling 'datasette publish now' reference,2019-05-19T18:12:53Z,2019-05-19T18:12:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7d8573d6724a13d5003e48d75682323ee1e55692,"Rename ""datasette publish now"" to ""datasette publish nowv1"" Also added an alias so ""datasette publish now"" continues to work. Closes #472",2019-05-19T18:06:51Z,2019-05-19T18:06:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 81ba98a5096e3cded20966b816df6eebfce76f26,"New performance documentation, closes #421",2019-05-19T05:31:03Z,2019-05-19T05:31:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db9dbfb816e1e9e4a0845884035eeaeb3110668e,"?_hash=1 no longer respected for mutable databases Closes #471, refs #419",2019-05-16T15:10:25Z,2019-05-16T15:10:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cccea85be6aaaeadb31f3b588ec7f732628815f5,"/-/databases sorts alphabetically Should fix test failure in Python 3.5",2019-05-16T14:56:13Z,2019-05-16T14:56:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0dad111d24856ee6012850dac19929a48dc0a59f,"New introspection endpoint: /-/databases - closes #470 Refs #419 and #465",2019-05-16T14:49:34Z,2019-05-16T14:49:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 21b57cdf9a4ede0f9444f15a3bd182be3b06f2c0,"serve --inspect-file=X now populates cached table counts Closes #462",2019-05-16T14:30:32Z,2019-05-16T14:30:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 909e66dfdb9b43eed718004eba903497bc67b25a,"Removed .inspect() and /-/inspect.json Refs #462 /-/inspect.json may return in some shape in #465",2019-05-16T14:14:10Z,2019-05-16T14:15:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 19370267666164ebf7e46aeb284a343f34bc03bd,Removed accidental R,2019-05-16T13:27:08Z,2019-05-16T13:27:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f31b9fe5ca3363ec56a44cb4e29c8b531e562067,Another link to Glitch,2019-05-16T13:26:46Z,2019-05-16T13:26:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7c79eb974b3bd4fff2bf23c00d0c17958b5b7567,It's 2019 now,2019-05-16T10:20:08Z,2019-05-16T10:20:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a4645944752e713ff4acf946c1ee824be2e30963,Added inline contents for installation page,2019-05-16T10:15:03Z,2019-05-16T10:15:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a88b599cce14cb10226c846ea93438e80b3b7911,Improved introduction copy on Plugins docs page,2019-05-16T05:18:02Z,2019-05-16T05:18:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 725b5b6a69f7fad9355524948942c632f8411d5b,Re-ordered documentation index page,2019-05-16T05:14:33Z,2019-05-16T05:14:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 12350e8b8a5e55f0fba14bb37ca725d751056c92,Fixed broken link to global-power-plants demo,2019-05-16T05:12:36Z,2019-05-16T05:12:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8461b930d5d4d3a282289b6663b252037ebd45d3,Wording tweaks,2019-05-16T05:09:06Z,2019-05-16T05:09:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8d639dd0966888aacd56cc6fc4b03a6851dd06df,Docs on how to use sphinx-autobuild,2019-05-16T05:03:37Z,2019-05-16T05:03:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 623c552ff4e2eda9cc710063a7cc674aa49264f4,"'Try Datasette without installing anything using Glitch' Also new 'Play with a live demo' section, both at the top of the Getting Started documentation page. https://datasette.readthedocs.io/en/latest/getting_started.html Closes #464",2019-05-16T04:57:26Z,2019-05-16T04:57:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 666c37415a898949fae0437099d62a35b1e9c430,"publish heroku now uses Python 3.6.8 Also refactored temporary_heroku_directory out of utils.py",2019-05-16T04:32:23Z,2019-05-16T04:32:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2ad9d15cd6901654e6801e2faa29e6fc08bae5fa,"Table counts now handles SQL Logic Error too I tried running Datasette against 22 database files at once and ran into a weird error where the table counts broke with an SQL Logic Error exception. Easy fix: catch that exception too and treat it the same as a regular Interrupted error.",2019-05-16T03:55:28Z,2019-05-16T03:55:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b7fe722f0541c8c026e93dc59cfcff6c6201ddfd,Removed rogue print(),2019-05-16T03:25:51Z,2019-05-16T03:25:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw faf33515b2e6ef8b891e7c9693c66aba2a77dc54,"Sometimes sort tables by number of relationships, closes #460",2019-05-16T03:23:33Z,2019-05-16T03:23:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 689cf9c139f57d6a3fd61e0c62fe66c793f234ae,"Index page only shows row counts for smaller databases The index page now only shows row counts for immutable databases OR for databases with less than 30 tables provided it could get a count for each of those tables in less than 10ms. Closes #467, Refs #460",2019-05-16T03:02:33Z,2019-05-16T03:02:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 79303163b249829182f2e8d8c2d45e4526aa174f,"Row count fix + sort index page databases alphabetically Sorting alphabetically should fix a test failure in Python 3.5 Refs #460",2019-05-16T00:40:10Z,2019-05-16T00:40:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5d6b2c30f15c36bcf49906acda7f15ec6232c984,"Include views on homepage, fix table counts If we have less than 5 tables we now also show one or more views in the summary on the homepage. Also corrected the logic for the row counts - we now count hidden and visible tables separately. Closes #373, Refs #460",2019-05-16T00:28:07Z,2019-05-16T00:28:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e04511410f57e88c806455b9182a853bf07122a2,"Don't show hidden tables on index page, closes #455 Refs #460. Also bulked out HTML index page unit tests.",2019-05-14T15:46:57Z,2019-05-14T15:46:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 24bf79d2f01f373eafcb41eaa1279a13711eff25,"Run sanity checks, not .inspect(), on startup Also fixes tests that did NOT like a call to run_until_complete in the Datasette() constructor.",2019-05-11T23:22:55Z,2019-05-11T23:22:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw da0b3ce2b76227f1cd0cfdd3df361712c17ddcd0,"New run_sanity_checks mechanism, for SpatiLite Moved VirtualSpatialIndex check into a new mechanism that should allow us to add further sanity checks in the future. To test this I've had to commit a binary sample SpatiaLite database to the repository. I included a build script for creating that database. Closes #466",2019-05-11T22:55:30Z,2019-05-11T22:55:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c692cd291111050483a32bea1ee08e994a0b781b,Fix test ordering,2019-05-11T22:03:52Z,2019-05-11T22:03:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a187c81e0caf92ed52a380f262b6b5eabb399897,Black + fix broken test,2019-05-11T21:45:59Z,2019-05-11T21:45:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c0d1b4c32297453adaa4c159edee9be0a9617f2b,"""datasette inspect foo.db"" now just calculates table counts Refs #462 * inspect command now just outputs table counts * test_inspect.py is now only tests for that CLI command * Updated some relevant documentation * Removed docs for /-/inspect since that is about to change",2019-05-11T21:36:57Z,2019-05-11T21:36:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ce09e5d2d392634eced44c3c8d603d7c628e2822,Fixed tests relating to #459,2019-05-11T20:58:22Z,2019-05-11T20:58:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 05cabaebd99b4aa388096de0a03fb52d08f6c117,"Pass --token to now alias, refs #459",2019-05-11T20:35:34Z,2019-05-11T20:35:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 09ef305c687399384fe38487c075e8669682deb4,"Fixed ""datasette publish now ... --alias=x"" The --alias argument can now be passed more than once. Also updated our Travis configuration to use this. Fixes #459",2019-05-11T20:20:36Z,2019-05-11T20:20:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a0d444837f6ce3fdaf6b0664605f74dd4a7f8215,"Finished implementation of ?_trace=1 debug tool I redesigned the JSON output and added a handy ""traceback"" key showing three relevant lines of the current traceback for each logged query. Closes #435",2019-05-11T19:06:22Z,2019-05-11T19:06:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 37adf3229038137de82a4e7331075212e7e94367,Changelog for 0.27.1,2019-05-11T18:34:13Z,2019-05-11T18:34:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7b31ae8c1a28cab9db8e165b3f21407c2e581e6,"Use now --target production instead of now alias Fix for this error: $ now alias --token=$NOW_TOKEN > WARN! The `now alias` command (no arguments) was deprecated in favour of `now --target production`. > Error! Couldn't find a deployment to alias. Please provide one as an argument. The command ""now alias --token=$NOW_TOKEN"" exited with 1. https://travis-ci.org/simonw/datasette/jobs/530597261",2019-05-11T17:06:23Z,2019-05-11T17:06:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow de005b9b7d3db72375e6b8b048d1616a98e6347a,Fixed 500 error on homepage,2019-05-10T03:58:19Z,2019-05-10T05:28:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ad789eaaea069046d3b293d2c650a60acd72ced7,Added some things to .gitignore,2019-05-10T03:54:44Z,2019-05-10T05:28:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9f8d9fe262866ff3463f8e61214dcc6897bd5a9c,setup: add tests to package exclusion (#458),2019-05-10T01:54:50Z,2019-05-10T01:54:50Z,5e571aa122bb7440d7e40e22fd627b3fbbf12c38,Veit Heller,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,7725188,hellerve,9599,simonw f825e2012109247fa246e2b938f8174069e574f1,Run black and update docs for #457,2019-05-09T16:47:58Z,2019-05-09T16:48:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b80b03ac9a9b8fc676ae17570b32f5439545198e,"datasette publish cloudrun --service=x, closes #457",2019-05-09T16:45:01Z,2019-05-09T16:45:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2db977d8f30e0eb8b7cda1481a4a8852b414915d,"tests/fixtures.py can now write out plugins too This command: python tests/fixtures.py \ fixtures.db \ metadata.json \ fixtures-plugins/ Will now create the fixtures.db and metadata.json files, AND create a folder called fixtures-plugins/ containing two test plugins. You can then run it like this: datasette fixtures.db \ -m metadata.json --plugins-dir=fixtures-plugins/",2019-05-06T02:50:33Z,2019-05-09T16:44:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9fdb47ca952b93b7b60adddb965ea6642b1ff523,"New encode/decode_path_component functions ASGI cannot differentiate between / and %2F in a URL, so we need an alternative scheme for encoding the names of tables that contain special characters such as / For background, see https://github.com/django/asgiref/issues/51#issuecomment-450603464 Some examples: ""table/and/slashes"" => ""tableU+002FandU+002Fslashes"" ""~table"" => ""U+007Etable"" ""+bobcats!"" => ""U+002Bbobcats!"" ""U+007Etable"" => ""UU+002B007Etable""",2019-05-05T22:36:04Z,2019-05-09T16:44:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bfa2ae0d16d39bb82dbe4da4f3fdc3c7f6257418,"Promote Glitch instead of Datasette Publish Datasette Publish is currently broken due to Zeit API and platform changes.",2019-05-09T00:02:47Z,2019-05-09T00:02:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ec2db345e9465ee4ce3880dc62dcd453e66bcbca,Fixed crash on /:memory: page,2019-05-05T18:01:14Z,2019-05-05T18:01:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9617e92aa819ec7d7f09b9e44656ebba90c67f67,"Removed pointless return variable handle_request() always returns None anyway.",2019-05-05T17:58:35Z,2019-05-05T17:58:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 831515b834b1bf465a5c64e69ce505d22f75b35b,"Respect --cors for error pages, closes #453",2019-05-05T11:59:45Z,2019-05-05T12:12:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 55643430f7ac8d27e99b00e7cf79db741003e811,Added Code style: black badge,2019-05-04T02:21:21Z,2019-05-04T02:21:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 35d6ee2790e41e96f243c1ff58be0c9c0519a8ce,"Apply black to everything, enforce via unit tests (#449) I've run the black code formatting tool against everything: black tests datasette setup.py I also added a new unit test, in tests/test_black.py, which will fail if the code does not conform to black's exacting standards. This unit test only runs on Python 3.6 or higher, because black itself doesn't run on 3.5.",2019-05-04T02:15:14Z,2019-05-04T02:15:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 66c87cee0c7344c7877373c60b180c766c206101,"Mark codemirror files as vendored (#367) This should stop GitHub from incorrectly stating that Datasette is 46% JavaScript.",2019-05-03T21:11:19Z,2019-05-03T21:11:19Z,93b11f15fd4dc15002baf3d9160dc6eb928bd883,Jaap Roes,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,48517,jaap3,9599,simonw 93c65d29ba372fa2262a641c0fecb7a071d998d6,Fixed 500 error on /-/metadata page,2019-05-03T20:40:24Z,2019-05-03T20:42:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f853d5592ec7f901a50381de22a26a9ab098f885,"""python3 -m pip"" is clearer (thanks @jaap3) (#368)",2019-05-03T18:18:42Z,2019-05-03T18:18:42Z,93b11f15fd4dc15002baf3d9160dc6eb928bd883,Jaap Roes,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,48517,jaap3,9599,simonw 553314dcd699a84aa7cc806377150ca0d57a6024,Use dist: xenial and python: 3.7 on Travis (#447),2019-05-03T18:16:52Z,2019-05-03T18:16:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 01b3de5b66742f0f661183e9e2ef66be3600e831,"Unit test for binary data display, refs #442",2019-05-03T16:43:59Z,2019-05-03T16:45:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d555baf508de71a5e3dc9a9aed2c13f6f202956d,"Suppress rendering of binary data - thanks @russss (#442) Binary columns (including spatialite geographies) get shown as ugly binary strings in the HTML by default. Nobody wants to see that mess. Show the size of the column in bytes instead. If you want to decode the binary data, you can use a plugin to do it.",2019-05-03T16:44:48Z,2019-05-03T16:44:48Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,45057,russss,9599,simonw bade9daeb234e35e216adfe5f6d99f489892b2f8,"Docs for 'datasette publish cloudrun', refs #434",2019-05-03T16:16:35Z,2019-05-03T16:16:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 75a21fc2a136ccfc9da7bbf521cf288e63c9707f,"datasette publish cloudrun (#434) - thanks, @rprimet New publish subcommand that publishes using the new Google Cloud Run platform. datasette publish cloudrun database.db",2019-05-03T13:59:01Z,2019-05-03T13:59:01Z,8ff51bbea01fdafe1fb3502111343b563f7d5a1b,Romain Primet,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,10352819,rprimet,9599,simonw bf229c9bd88179c8ec16bd65fd4fb28ab4241c2e,"Pass view_name to extra_body_script hook (#443) At the moment it's not easy to tell whether the hook is being called in (for example) the row or table view, as in both cases the `database` and `table` parameters are provided. This passes the `view_name` added in #441 to the `extra_body_script` hook.",2019-05-03T13:12:19Z,2019-05-03T13:12:19Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,45057,russss,9599,simonw 470cf0b05d4fda0d2563f81c7e32af13fe346ccc,"Add a max-line-length setting for flake8 (#444) This stops my automatic editor linting from flagging lines which are too long. It's been lingering in my checkout for ages. 160 is an arbitrary large number - we could alter it if we have any opinions (but I find the line length limit to be my least favourite part of PEP8).",2019-05-03T13:11:27Z,2019-05-03T13:11:27Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,45057,russss,9599,simonw 53d2f00b732488e0204332da181fc256aa00f41c,"Implemented ArrayFacet, closes #359",2019-05-03T00:21:27Z,2019-05-03T00:21:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ea66c45df96479ef66a89caa71fff1a97a862646,"Extract facet code out into a new plugin hook, closes #427 (#445) Datasette previously only supported one type of faceting: exact column value counting. With 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. A new plugin hook, register_facet_classes, can be used by plugins to add in additional facet classes. Each 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.",2019-05-03T00:11:26Z,2019-05-03T00:11:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow efc93b8ab5a21e3802f75f08d5e41409f5684b5d,"Entirely removed table_rows_count table property We were not displaying this anywhere, and it is now expensive to calculate. Refs #419, #420",2019-05-02T05:29:47Z,2019-05-02T05:29:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3651eedf20b86ad30f510bf762fb25790bb3560c,"Show 'many rows' if count times out, refs #420",2019-05-02T05:20:24Z,2019-05-02T05:20:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ad9de774f75ba41f2a627a9d2cecd61050bac901,"Added missing file, refs #438",2019-05-02T05:10:23Z,2019-05-02T05:10:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f553a670216960043ec7e62ff35d42db78903ff0,"Don't load setuptools plugins during test runs Uses pattern from https://docs.pytest.org/en/latest/example/simple.html#detect-if-running-from-within-a-pytest-run Closes #438",2019-05-02T05:09:03Z,2019-05-02T05:09:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 033cf0bcbbcadd0256d0c43fb7b9d3053727b4fe,"DatabaseView no longer uses .inspect(), closes #420",2019-05-02T01:12:58Z,2019-05-02T01:13:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50d2d1aac985f440b36e6847e3ddacb4a6bf4d4b,Fixed bug where metadata.json hidden tables were ignored,2019-05-02T00:54:48Z,2019-05-02T00:54:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7151ccccf4a0d10e1fcf3832e18c5199c16dea0,"Index page no longer uses inspect data - refs #420 Also introduced a mechanism whereby table counts are calculated against a time limit but immutable databases have their table counts calculated on server startup.",2019-05-02T00:39:39Z,2019-05-02T00:39:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 669fa21a71c9920923df0f64907c095c0e7d889f,Include request duration in traces,2019-05-01T23:16:15Z,2019-05-01T23:27:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf406c075433882b656e340870adf7757976fa4c,"New plugin hook: register_output_renderer hook (#441) Thanks @russss! * Add register_output_renderer hook This changeset refactors out the JSON renderer and then adds a hook and dispatcher system to allow custom output renderers to be registered. The CSV output renderer is untouched because supporting streaming renderers through this system would be significantly more complex, and probably not worthwhile. We can't simply allow hooks to be called at request time because we need a list of supported file extensions when the request is being routed in order to resolve ambiguous database/table names. So, renderers need to be registered at startup. I've tried to make this API independent of Sanic's request/response objects so that this can remain stable during the switch to ASGI. I'm using dictionaries to keep it simple and to make adding additional options in the future easy. Fixes #440",2019-05-01T23:01:56Z,2019-05-01T23:01:56Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,45057,russss,9599,simonw bac4e01f40ae7bd19d1eab1fb9349452c18de8f5,"Ensure sqlite_timelimit correctly clears handler If an error occurred inside the block the progress handler (used to enforce a time limit) was not being correctly cleared, resulting in timeout errors potentially occurring during subsequent SQL queries. The fix is described here: https://docs.python.org/3/library/contextlib.html#contextlib.contextmanager",2019-04-21T19:02:24Z,2019-04-21T19:02:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 11b352b4d52fd02a422776edebb14f12e4994d3b,"Fix for Python 3.5, refs #435",2019-04-21T18:20:20Z,2019-04-21T18:20:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9d73e3c8bd5f3aae24a75b62c420de166992b30c,"Note that trace data format is very likely to change, refs #435",2019-04-21T17:53:28Z,2019-04-21T17:53:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e4e73a537add40b92a02e55af004b0d26a3ccdce,"Test for ?_trace=1, refs #435",2019-04-21T17:46:56Z,2019-04-21T17:46:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 58a862cee4a065d463da0a08b87134efb6b6e18d,"?_trace=1 now adds SQL trace info to JSON/HTML response Also added documentation for it. Refs #435",2019-04-21T17:41:16Z,2019-04-21T17:41:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7d01ca34a10b5f8a993859cfd05790eb2870b94e,"Added ?_trace=1 option to trace SQL Currently just dumps all SQL statements out on the console.",2019-04-21T05:28:15Z,2019-04-21T05:34:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 31f36e1b97ccc3f4387c80698d018a69798b6228,"Added some guidelines Mainly to remind me that master needs to be releasable at all times!",2019-04-20T18:32:40Z,2019-04-20T18:32:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2b11948d7c5f4548325c941d92eaf428852a19d8,"New ConnectedDatabase.mtime_ns property I plan to use this for some clever table count caching tricks",2019-04-20T17:50:45Z,2019-04-20T17:50:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9c77e6e355ec718d76178a7607721d10a66b6aef,"Support multiple filters of the same type Closes #288",2019-04-15T23:44:17Z,2019-04-15T23:44:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 583b22aa28e26c318de0189312350ab2688c90b1,New ?column__date=yyyy-mm-dd filter,2019-04-15T22:54:54Z,2019-04-15T22:54:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1c6649b19b09ea018d91a86db9c019a940fe36fc,"New colname__in=x,y,z filter, closes #433",2019-04-15T22:42:28Z,2019-04-15T22:43:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2c19a27d15a913e5f3dd443f04067169a6f24634,"Documentation for filters, plus new documentation unit test https://simonwillison.net/2018/Jul/28/documentation-unit-tests/",2019-04-15T22:41:11Z,2019-04-15T22:41:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6da567dda953c7ac0e5500f17d8e220467a3499e,"Extract and refactor filters into filters.py This will help in implementing __in as a filter, refs #433",2019-04-15T21:51:20Z,2019-04-15T21:51:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9dc7a1824be0a876b8f54e0edd4467d9a357e0cb,Slightly more interesting example link,2019-04-13T22:49:07Z,2019-04-13T22:49:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow d4bfb8461c68ba2912f6d01fe159ce186a9040c6,Removed accidental extra default plugins module,2019-04-13T19:33:23Z,2019-04-13T19:33:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d1075b8259b06e6002aaecc9a1167a4db9b2c2f4,Cleaned up pylint warnings,2019-04-13T19:20:10Z,2019-04-13T19:20:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 13ee3c222f8ee967a2f716cca11bee4ea51fea46,Moved BaseView.absolute_url() to Datasette,2019-04-13T19:16:05Z,2019-04-13T19:16:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 274ef43bb7b129ddc2e68805b4f4ff3776fb9503,Moved expand_foreign_keys() from TableView to Datasette,2019-04-13T18:48:00Z,2019-04-13T18:48:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f2c767c2221b06c0fb4962cfa430e038359019d3,Fixed broken link in documentation,2019-04-13T01:56:51Z,2019-04-13T01:57:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bc6a9b45646610f362b4287bc4110440991aa4d6,"?_where= parameter on table views, closes #429 From pull request #430",2019-04-13T01:37:22Z,2019-04-13T01:37:22Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow e11cb4c66442abca2a6b6159521a6cf4da8739c1,"Persist show/hide state better, closes #425",2019-04-12T05:00:47Z,2019-04-12T05:00:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db74cf0144df3e2a017c40a3a36ff5e1a78d7e92,"?_fts_table= and ?_fts_pk= arguments, closes #428",2019-04-12T04:21:17Z,2019-04-12T04:21:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9cd3b44277e6a8ea9273bf659379ff0414e0b8ae,Upgrade to Jinja2==2.10.1 (#426),2019-04-10T23:13:30Z,2019-04-10T23:13:30Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 78e45ead4d771007c57b307edf8fc920101f8733,"New ?tags__arraycontains=tag lookup against JSON fields Part one of supporting facet-by-JSON-array, refs #359",2019-04-10T15:17:19Z,2019-04-10T15:27:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3a208a41d4dce35b97eca8b25f37055c3fda5aed,"TableView.data() no longer uses .inspect, refs #420 BUT... it does a count(*) against the whole table which may take unbounded time. Fixing this is part of #422",2019-04-07T03:47:10Z,2019-04-07T03:47:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 36bd6558b00be027bb4b7dba0c8d200da0ca95df,"expandable_columns() no longer uses inspect, refs #420",2019-04-07T03:46:08Z,2019-04-07T03:46:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db02311ebf3711309b231d007967bcf8b026a026,"foreign_key_tables no longer uses inspect, refs #420",2019-04-07T03:23:30Z,2019-04-07T03:23:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f23120a9641e521d669788e9938fb3cf2754d710,RowView.data() no longer uses inspect refs #420,2019-04-07T03:17:47Z,2019-04-07T03:17:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c882e9262f64e0fc7c2fc89c611bdb768c069af7,"display_columns_and_rows() no longer uses inspect, refs #420",2019-04-07T03:11:08Z,2019-04-07T03:11:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 53bf875483d98861314db3a0cdcec8f5ce22ee96,"expand_foreign_keys() no longer uses inspect, refs #420",2019-04-07T02:56:07Z,2019-04-07T02:56:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 97331f3435ba1583a0f9dbcaffc25de8894cf1f8,"sortable_columns_for_table() no longer uses inspect() Refs #420",2019-04-07T01:58:51Z,2019-04-07T01:58:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d8851e0011f256ce52775aa776e0e4323db50c8e,Removed rogue print(),2019-04-07T01:54:51Z,2019-04-07T01:54:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 468c6fd9532f08859c77ae670307fd5f4c6632f5,"DatabaseDownload no longer uses .inspect(), refs #420",2019-04-01T02:04:17Z,2019-04-01T02:04:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 29a3896fe1e09d5c35a90d55690c9f71fae81e24,".database_url(database) no longer needs inspect, refs #420",2019-03-31T23:55:38Z,2019-03-31T23:55:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7d0f668556b6d9a6c3d70a7b8a07a542857bbb56,".resolve_db_name() and .execute() work without inspect Refs #420",2019-03-31T23:51:52Z,2019-03-31T23:51:52Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0209a0a344503157351e625f0629b686961763c9,"table_exists() now uses async SQL, refs #420",2019-03-31T18:02:22Z,2019-03-31T18:02:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 82fec6048148b58748040a7e2caa163387e982a3,"Fix for TypeError File ""../datasette/app.py"", line 138, in __init__ self.files = files + immutables TypeError: can only concatenate tuple (not ""list"") to tuple",2019-03-17T23:36:35Z,2019-03-17T23:36:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 47032636b55718dd711670f19b753f4ada9e8f2f,"'datasette serve -i immutable.db' option, refs #419",2019-03-17T23:25:15Z,2019-03-17T23:25:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6f6d0ff2b41f1cacaf42287b1b230b646bcba9ee,"URL hashing is now off by default - closes #418 Prior to this commit Datasette would calculate the content hash of every database and redirect to a URL containing that hash, like so: https://v0-27.datasette.io/fixtures => https://v0-27.datasette.io/fixtures-dd88475 This assumed that all databases were opened in immutable mode and were not expected to change. This will be changing as a result of #419 - so this commit takes the first step in implementing that change by changing this default behaviour. Datasette will now only redirect hash-free URLs under two circumstances: * The new `hash_urls` config option is set to true (it defaults to false). * The user passes `?_hash=1` in the URL",2019-03-17T22:55:04Z,2019-03-17T22:55:04Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow afe9aa3ae03c485c5d6652741438d09445a486c1,"show/hide link for SQL on custom query page Closes #415",2019-03-15T05:22:24Z,2019-03-15T05:22:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9e8c36793bfbb17c2f67371cc7f9aa8b9202fdc4,"Update spatialite.rst (#413) a line of sql added to create the idx_ in the python recipe",2019-03-15T05:06:45Z,2019-03-15T05:06:45Z,41e868c44ebf155cd4e69182c407f1d278d635ce,joelondon,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,28597217,joelondon,9599,simonw 285566790879b31d2fdd2a8c6f56825162eb71b9,Fix for test failure with Click 7.0,2019-03-15T05:00:13Z,2019-03-15T05:00:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b3e739332624c2d4f2668a105afd727af774100b,"Allow more recent versions of Click Closes #414",2019-03-15T04:41:43Z,2019-03-15T04:41:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9743e1d91b5f0a2b3c1c0bd6ffce8739341f43c4,"Support for :memory: databases If you start Datasette with no files, it will connect to :memory: instead. When starting it with files you can add --memory to also get a :memory: database.",2019-03-14T23:42:38Z,2019-03-15T03:54:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bf6b0f918de4aeee7c1036ac975ce2fb23237da7,about and about_url metadata options,2019-03-10T21:37:11Z,2019-03-15T03:54:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 41744d76908bbef0edc038a5050a709cdd26e529,Added datasette-jellyfish,2019-03-09T18:43:12Z,2019-03-09T18:43:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4147c388cbb9b14d137dd5229ae3f574ee6a25fe,Link to sqlite-utils blog entry,2019-03-08T04:30:21Z,2019-03-08T04:30:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 5b3af3d015a6048a3977234bf46d20905ce720c0,Added sqlite-utils blog entry to news section,2019-02-25T03:47:11Z,2019-02-25T03:47:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1f91065b20cbc691f464bccfd8eef7d1ce4b14a8,"Added socrata2sql to the ecosystem page A fantastic new tool created by @achavez at the Dallas Morning News.",2019-02-08T16:06:10Z,2019-02-08T16:06:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow d5d39da12b26c06a426e97872bce4e94248db42d,Expanded section on db-to-sqlite,2019-02-08T06:23:27Z,2019-02-08T06:23:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4462a5ab2817ac0d9ffe20dafbbf27c5c5b81466,"Show size of database file next to download link, closes #172",2019-02-06T04:53:44Z,2019-02-06T04:58:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 195a5b36349d0d24a6bbb758cebb719b6de303b6,"Heroku --include-vcs-ignore (#407) Means `datasette publish heroku` can work under Travis, unlike this failure: https://travis-ci.org/simonw/fivethirtyeight-datasette/builds/488047550 ``` 2.25s$ datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette tar: unrecognized option '--exclude-vcs-ignores' Try 'tar --help' or 'tar --usage' for more information. ▸ Command failed: tar cz -C /tmp/tmpuaxm7i8f --exclude-vcs-ignores --exclude ▸ .git --exclude .gitmodules . > ▸ /tmp/f49440e0-1bf3-4d3f-9eb0-fbc2967d1fd4.tar.gz ▸ tar: unrecognized option '--exclude-vcs-ignores' ▸ Try 'tar --help' or 'tar --usage' for more information. ▸ The command ""datasette publish heroku fivethirtyeight.db -m metadata.json -n fivethirtyeight-datasette"" exited with 0. ``` The fix for that issue is to call the heroku command like this: heroku builds:create -a app_name --include-vcs-ignore",2019-02-06T04:15:46Z,2019-02-06T04:15:46Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 436b8bc1d17c2ab415800ab209204f94e7f7929e,Datasette 0.27,2019-02-01T03:47:05Z,2019-02-01T03:47:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b944bcd0f0e0914a9f308945faffed88ad6c3b4c,"Added documentation on the Datasette Ecosystem https://datasette.readthedocs.io/en/latest/ecosystem.html",2019-02-01T03:36:07Z,2019-02-01T03:36:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b5dd83981a7dbff571284d4d90a950c740245b05,Export option: _shape=array&_nl=on for newline-delimited JSON,2019-01-28T01:40:23Z,2019-01-28T01:40:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 909cc8fbdfc9c05e447f40e9a73489809602c3cd,New 'datasette plugins' command to list installed plugins,2019-01-26T20:01:16Z,2019-01-26T20:01:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7950105c278b140e6cb665c68b59df219870f9bc,Python 3.7.2 as base for Docker image,2019-01-13T23:33:50Z,2019-01-13T23:33:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a418c8b44f82d456be523c8690cf7236bb648c22,"Expose current git tag to Docker build, closes #399",2019-01-13T23:09:48Z,2019-01-13T23:09:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c3a78eb05c0b146b2eb37b50c1668b9430b8f50a,app_client() fixture doesn't need to take **kwargs,2019-01-13T22:23:44Z,2019-01-13T22:23:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4722acc73ce761556b18f5dcbe36b7fef2ee2c69,Release 0.26.1,2019-01-11T00:51:38Z,2019-01-11T00:51:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50d8d8216dcc5557e6b581a13bb871f033722117,"Dockerfile now builds SQLite 3.26.0, closes #397",2019-01-11T00:47:54Z,2019-01-11T00:47:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c4c970f3c90fa79a6c6527fe963baf9e07b023c8,Bump aiohttp to 3.5.3 to fix a warning,2019-01-11T00:47:15Z,2019-01-11T00:47:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8ce7866312f9b7c873541d6e3662ada3e850fa85,"compile_options output in /-/versions, closes #396",2019-01-11T00:44:37Z,2019-01-11T00:44:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5b026115126bedbb66457767e169139146d1c9fd,Corrected import path in plugin docs,2019-01-09T00:25:29Z,2019-01-09T00:25:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 788f218e267ad9e29df904c6c6a61e78bcc8e744,Supress pytest warnings from 3rd party modules,2019-01-06T04:44:34Z,2019-01-06T04:44:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b65d97792a53f78cb14b226231063209d22c4602,Switch to using PYPI_PASSWORD env var in Travis,2019-01-03T03:14:21Z,2019-01-03T03:14:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 424e146697309a54c05d5d1ba1f840849ddbafdc,Datasette 0.26 release notes,2019-01-03T02:53:59Z,2019-01-03T02:53:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 996e8822d2cb551c0ed821ff1fda24af905332d3,"Fix CSV export hidden form fields, closes #393",2019-01-03T02:43:56Z,2019-01-03T02:43:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8b8ae55e7c8b9e1dceef53f55a330b596ca44d41,"Pass --token to 'now alias', if provided",2019-01-02T05:35:16Z,2019-01-02T05:35:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d95b46b09bf53530b212cc17202a242daa62fd64,"datasette publish now --alias option You can now use --alias to attempt to alias after you deploy. Also updated now.json to use version: 1",2019-01-02T05:14:46Z,2019-01-02T05:15:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a2bfcfc1b1c60dac3526364af17c2fa2f3d41a0a,Fix some regex DeprecationWarnings (#392),2018-12-29T02:22:27Z,2018-12-29T02:22:27Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow eac08f0dfc61a99e8887442fc247656d419c76f8,--reload now also reloads if databases change on disk,2018-12-20T15:51:08Z,2018-12-20T15:51:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 48d24c6589f214c7e1bab21d32e2f35a0038e71f,Link to new tutorial from the README,2018-12-19T05:39:35Z,2018-12-19T05:39:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 74ad06e1283615cceb49fd95929b60329d47d3d4,Updated notes on FTS5 v.s. FTS4,2018-12-18T21:49:51Z,2018-12-18T21:49:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 595da9054e391b05a59b57c0c0a4487ea10062ce,"Better example commit This one updates the README news section as well",2018-12-16T22:56:56Z,2018-12-16T22:56:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1e2db8547be111e7c1583f096f40cec7c0824281,Improved release process documentation,2018-12-16T21:47:26Z,2018-12-16T21:47:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ed78922ae38b51513319b60ac39990b7c2aca810,"Tiny typo in customization docs (#390) Thanks, @jaywgraves",2018-12-16T21:32:55Z,2018-12-16T21:32:55Z,6410ac01839c113476668eeff88d60a0a2c6eb7a,Jay Graves,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,418191,jaywgraves,9599,simonw b5128fc53fce6a1bf3b16bad9f318451bc1d1263,Release 0.25.2,2018-12-16T21:26:37Z,2018-12-16T21:26:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 84d7890b63f6aa43e7369fa8fc7a0a1bbf98c91f,Upgrade pytest to 4.0.2,2018-12-16T21:18:55Z,2018-12-16T21:18:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c5f90dd1b20e41d1a3736dcbda5101d27279390b,Added docs on updating docs + the release process,2018-12-16T21:14:50Z,2018-12-16T21:14:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 54a59b9fdb40b9c86ff065a5b7047e6ef305bc22,Use python-3.6.7 runtime for Heroku deploys,2018-12-16T20:53:00Z,2018-12-16T20:53:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3de8fac1d322cbab6c8c55899e0e8511b36337d0,"New make_app_client() pattern Because next version of pytest discourages calling fixture factories as functions",2018-11-20T17:16:31Z,2018-11-20T17:46:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5e3a432a0caa23837fa58134f69e2f82e4f632a6,How to activate your virtual environment,2018-11-15T00:54:54Z,2018-11-15T00:54:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow d0393e821e5914a7c1d659eaf0a5d612a1aa8e01,"Travis to use Python 3.7-dev for a little longer 3.7 produces a 403 forbidden error: https://travis-ci.org/simonw/datasette/jobs/450716231#L6",2018-11-05T06:45:38Z,2018-11-05T06:45:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c2c03f8e7be6973ef3cbdb3ca424e55a81a956d7,Compatible with Python 3.7,2018-11-05T06:40:03Z,2018-11-05T06:40:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3dc0b3fa8c9b9bd81540ffe20c8b7e7a72465274,Release 0.25.1,2018-11-05T06:31:41Z,2018-11-05T06:31:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b6546da53516e148e6aa34ad94f3452da30040f8,"Use Zeit cloud v1 to avoid 100MB image limit Closes #366 - thanks @slygent",2018-11-05T06:22:34Z,2018-11-05T06:22:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5debabd3fba1f0669081cefe55b67d333470bbd4,More human friendly 'what is Datasette' intro text,2018-11-05T06:04:23Z,2018-11-05T06:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6b398c2971801d9a20cfdb7998f59020d5534e22,Link to dev environment instructions from installation guide,2018-10-27T17:34:31Z,2018-10-27T17:34:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7dda8898c12720f1494cfd4761399e95211520a1,"Started contributing docs: setting up a dev environment https://datasette.readthedocs.io/en/latest/contributing.html",2018-10-27T17:12:19Z,2018-10-27T17:13:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 24cea271961077a63bc834a2aab3de777491a9c9,"Link to ""The interesting ideas in Datasette""",2018-10-04T02:40:04Z,2018-10-04T02:40:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 96af802352e49e35751e295e9846aa39c5e22311,"Travis applies :latest tag to Docker release, refs #329",2018-09-19T18:23:56Z,2018-09-19T18:23:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 57a71377c992753327a16b417daf79df7f506dd1,Releasing Datasette 0.25,2018-09-19T17:48:12Z,2018-09-19T17:48:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1bcd54a834a2f9730d21095df855f6708c85c200,Fix small doc typo - thanks @jaywgraves (#365),2018-09-19T17:15:42Z,2018-09-19T17:15:42Z,6410ac01839c113476668eeff88d60a0a2c6eb7a,Jay Graves,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,418191,jaywgraves,9599,simonw b7257a21bf3dfa7353980f343c83a616da44daa7,"Fix json.loads in Python 3.5 3.5 requires a str, not a bytes https://travis-ci.org/simonw/datasette/jobs/421660555",2018-08-28T16:55:30Z,2018-08-28T16:55:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1f54e092306b208125f39d06712b02895eb75168,Better docs for publish_subcommand() plugin hook,2018-08-28T10:59:50Z,2018-08-28T10:59:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b7c6a9f9bd2bbd06ef64fef4a1fcc86fa0039039,"extra_css_urls(template, database, table, datasette) The extra_css_urls and extra_js_urls hooks now take additional optional parameters. Also refactored them out of the Datasette class and into RenderMixin. Plus improved plugin documentation to explicitly list parameters.",2018-08-28T10:56:57Z,2018-08-28T10:56:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fbf446965b398a0a6c3e6bce72c0b9b0112498ab,"Refactoring: renamed ""name"" variable to ""database""",2018-08-28T10:17:13Z,2018-08-28T10:25:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2e836f72d9a4e61341d75ea48e88314e0d006b65,"render_cell(value, column, table, database, datasette) The render_cell plugin hook previously was only passed value. It is now passed (value, column, table, database, datasette).",2018-08-28T10:03:01Z,2018-08-28T10:03:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9e1fca4b016bbb2d4b2ab350ca1570ba6141afe8,Corrected indentation in metadata.rst,2018-08-28T09:56:34Z,2018-08-28T09:56:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5cf0c6c91c077b8b69ea159c19f0c6fb02ab9c19,New plugin hook: extra_body_script,2018-08-28T08:56:44Z,2018-08-28T09:02:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0a14a4846b29b4b60d153356ad926cbc461c45c7,Added plugin_config() method,2018-08-28T08:35:21Z,2018-08-28T08:35:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1905c0336451b150b44478285ddb6878f5238519,New ds.metadata() method,2018-08-13T14:56:50Z,2018-08-28T07:45:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0bd41d4cb0a42d7d2baf8b49675418d1482ae39b,Do not show default plugins on /-/plugins,2018-08-28T07:36:22Z,2018-08-28T07:36:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aae49fef3b75848628d824077ec063834e3e5167," Import pysqlite3 if available, closes #360 (#361)",2018-08-16T00:58:56Z,2018-08-16T00:58:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 2189be144002484c3abe5339a9c69aeca7b9889a,Refactor to use new datasatte.config(key) method,2018-08-11T20:06:45Z,2018-08-11T20:09:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e1db8194e8c1d7f361fd0c1c3fc1b91d6aa920e5,"Bump versions of pytest, pluggy and beautifulsoup4 (#358)",2018-08-08T01:11:12Z,2018-08-08T01:11:12Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow fe5b6ea95a973534fe8a44907c0ea2449aae7602,Hide 'view and edit SQL' if config.allow_sql turned off,2018-08-06T03:17:17Z,2018-08-06T03:17:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7d0299edd40636037a06548736681b67385b499e,"fts_table and fts_pk metadata configs, available for both tables and views",2018-08-06T00:44:47Z,2018-08-06T00:44:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5629aaca67437acce8af47acb06488bd9991420b,sortable_columns also now works with views,2018-08-06T00:29:23Z,2018-08-06T00:29:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4ac913224061f2dc4f673efab1a5ac6bc748854f,"render_cell(value) plugin hook, closes #352 New plugin hook for customizing the way cells values are rendered in HTML. The first full example of this hook in use is https://github.com/simonw/datasette-json-html",2018-08-05T00:14:56Z,2018-08-05T00:14:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 295d005ca48747faf046ed30c3c61e7563c61ed2,"Renamed variable, since docs are not written in Markdown",2018-07-28T04:56:51Z,2018-07-28T04:56:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8128497b7946ab68fff703e207fc7c5b26b6e9c9,"Only run documented_views() fixture once per session Speeds up tests, because previously it ran once per view class.",2018-07-28T04:49:20Z,2018-07-28T04:49:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 788a542d3c739da5207db7d1fb91789603cdd336,"Docs for IndexView, TableView, RowView, closes #299 Also removed xfail from test_view_classes_are_documented, so any future *View classes that are added without documentation will cause the tests to fail.",2018-07-28T04:21:42Z,2018-07-28T04:21:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8da6b0d542c7ea276df8b5467d4be6cd08cf867f,"Added labels so unit tests can detect docs, refs #299",2018-07-28T03:26:18Z,2018-07-28T03:26:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e8625695a3b7938f37b64dff09c14e47d9428fe5,"xfail documentation unit tests for view classes, refs #299 More documentation unit tests. These ones check that every single **View class imported into the datasette/app.py module are covered by our documentation. Just one problem: they aren't documented yet. So I'm using the xfail pytest decorator to mark these tests as allowed-to-fail. When you run the test suite you now get a report of how many views still need to be documented, but it doesn't fail the tests. The output looks something like this: $ pytest tests/test_docs.py collected 31 items tests/test_docs.py ..........................XXXxx. [100%] ============ 26 passed, 2 xfailed, 3 xpassed in 1.06 seconds ============ Once I have documented all the views I will remove the xfail so any future views that are added without documentation will cause a test failure. We can detect that a view is documented by looking for ReST label in the docs, for example: .. _IndexView: Some view classes can be used to power multiple URLs - the JsonDataView class for example is used to power /-/metadata and /-/config and /-/plugins In this case, the second part of the label can indicate the variety of page, e.g: .. _JsonDataView_metadata: The test will pass as long as there is at least one label that starts with _JsonDataView.",2018-07-28T03:13:26Z,2018-07-28T03:13:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3b68314d8f59d92fe7b2150cf747a082192ef9b7,Unit tests for publish now/heroku - closes #348,2018-07-26T05:45:47Z,2018-07-26T05:45:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1fb518618c1c246c58daf5085247b430f2aea29f,"""datasette publish heroku"" improvements * Fixed bug where --title= didn't work if -m not provided * Now using Python 3.6.6 instead of Python 3.6.3",2018-07-26T05:43:01Z,2018-07-26T05:43:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dbbe707841973b50a76d2703003ae2c40e7ad1fd,"publish_subcommand hook + default plugins mechanism, used for publish heroku/now (#349) This change introduces a new plugin hook, publish_subcommand, which can be used to implement new subcommands for the ""datasette publish"" command family. I've used this new hook to refactor out the ""publish now"" and ""publish heroku"" implementations into separate modules. I've also added unit tests for these two publishers, mocking the subprocess.call and subprocess.check_output functions. As part of this, I introduced a mechanism for loading default plugins. These are defined in the new ""default_plugins"" list inside datasette/app.py Closes #217 (Plugin support for datasette publish) Closes #348 (Unit tests for ""datasette publish"") Refs #14, #59, #102, #103, #146, #236, #347",2018-07-26T05:15:59Z,2018-07-26T05:15:59Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 3ac21c749881d0fb1c35b0f9b7a819e29f61c5c1,Unit test confirming all plugin hooks are documented,2018-07-26T04:09:33Z,2018-07-26T04:09:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ba64cfb4bc8ff79086e3f61d9be3eaf35cc44c84,"Fix for Python 3.5 https://stackoverflow.com/a/42694113/6083",2018-07-25T17:20:56Z,2018-07-25T17:20:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 9b85c599079e7dc37e7be125839711c982afc526,Removed unnecessary print statements from tests,2018-07-24T16:04:06Z,2018-07-24T16:04:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bd1db56936d7aa09f5ee87ac8146e19b71ae8b42,"'Usage: datasette', not 'Usage: cli' - refs #336",2018-07-24T16:03:07Z,2018-07-24T16:03:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 74ad3ff4af4ebb499b07c6ce984def7d88fcbbb7,"Ensure --help examples in docs are always up to date, closes #336 Unit tests now check that docs/*.txt help examples are all up-to-date. I ran into a problem here in that the terminal_width needed to be more accurately defined - so I replaced update-docs-help.sh with update-docs- help.py which hard-codes the terminal width.",2018-07-24T16:00:10Z,2018-07-24T16:01:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3a46d5e3c4278e74c3694f36995ea134bff800bc,"Removed docker -e flag docker -e flag is now deprecated: https://docs.docker.com/engine/deprecated/#-e-and---email-flags-on-docker-login",2018-07-24T04:48:36Z,2018-07-24T04:48:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 28872a1fa789f314b0342f4e6182f1c78d6e2bca,Release notes for 0.24 release,2018-07-24T04:34:28Z,2018-07-24T04:34:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2bdab66772dca51b0c729b4e1063610cb2edd890,"Build and push new tagged releases to Docker Hub Based on method described in https://sebest.github.io/post/using-travis-ci-to-build-docker-images/",2018-07-24T04:17:57Z,2018-07-24T04:17:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 581b4c97ee3d8339b1866480375e20b2fd2f6818,"URLify URLs in custom SQL queries, closes #298",2018-07-24T03:56:32Z,2018-07-24T03:56:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3955771feaf47ddb6d281bba28ca2d6281551ed7,"Unit tests for advanced export box HTML, closes #320",2018-07-24T03:38:31Z,2018-07-24T03:38:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 700d83d8adfeb3859ebc93828951e5048cb0e425,?_json_infinity=1 for handling Infinity/-Infinity - fixes #332,2018-07-24T03:07:57Z,2018-07-24T03:07:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b320f58d13e510d51e07187c8a75db856205b88f,'publish now' uses force_https_urls:on - closes #333,2018-07-24T01:51:43Z,2018-07-24T01:51:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f24b49a1a8c202e5b28500eeb991173992a5ea18,"New force_https_urls option, refs #333",2018-07-23T15:58:29Z,2018-07-23T15:58:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4e82d0e64d1e8c085375278e5b8ecadeab56ddb5,Removed unused imports,2018-07-23T15:39:00Z,2018-07-23T15:39:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6e37f091edec35e2706197489f54fff5d890c63c,"Support title/description for canned queries, closes #342 Demo here: https://latest.datasette.io/fixtures/neighborhood_search",2018-07-16T02:33:30Z,2018-07-16T02:33:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 58fec99ab0a31bcf25968f2aa05d37de8139b83c,"Allow app names for `datasette publish heroku` Lets you supply the `-n` parameter for Heroku deploys, which also lets you update existing Heroku deployments.",2018-07-14T13:10:49Z,2018-07-14T14:04:42Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw 31a5d8fa77be68d4f837f0a80a611675dce49f4b,"Bump aiohttp to fix compatibility with Python 3.7 Tests failed here: https://travis-ci.org/simonw/datasette/jobs/403223333",2018-07-12T17:41:20Z,2018-07-12T18:07:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 130dc8823ebdcc1834fc7c4a03c996b13fc1e444,Run Travis CI against Python 3.7 as well,2018-07-12T17:36:00Z,2018-07-12T17:36:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow aec3ae53237e43b0c268dbf9b58fa265ef38cfe1,"Docs for datasette publish and package, closes #337 Also introduced a new mechanism for ensuring the --help examples in the documentation reflect the current output of the --help commands, via a new update-docs-help.sh script. Closes #336",2018-07-11T02:04:13Z,2018-07-11T02:05:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9281a4a804961b06ab133e042db839402f8a7796,New tagline: 'A tool for exploring and publishing data',2018-07-11T01:57:54Z,2018-07-11T02:05:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fc9b1cc1368cff455478c10f7b400bf5afc7d8e3,"New truncate_cells_html config for truncating cells, closes #330",2018-07-10T16:20:41Z,2018-07-10T16:20:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2db2ae4f21d0ba5b84359f611da7b123262d92c7,"Show custom error message if SpatiaLite needed, closes #331",2018-07-10T15:13:27Z,2018-07-10T15:13:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 17863d108b9c8672b5e102d97858a96ca715a9d6,"datasette publish heroku now supports --extra-options, closes #334",2018-07-10T01:45:56Z,2018-07-10T01:45:56Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6df6f712b36f0fe75694174906e31242427a8d1d,Release notes for 0.23.2,2018-07-08T05:28:45Z,2018-07-08T05:28:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6541ce633ebf56770106221b0984751270adb2c7,"Fix for row pages for tables with / in, closes #325",2018-07-08T05:21:51Z,2018-07-08T05:21:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8ac71a61278d2d1b24ad3f3ab68048dac31467bc,Removed rogue print statement left over from #309,2018-07-08T03:09:45Z,2018-07-08T03:09:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 71b46fd9f5b323d746b108d1f674b4007d5c252c,Cleaned up view constructors to accept just a datasette instance,2018-06-30T14:51:57Z,2018-07-08T02:58:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d08faa89872d9ec8d3c8e76d85164ccd84596811,"Fix for weird nested exception in RequestTimeout I saw this error: sanic.exceptions.RequestTimeout: Request Timeout During handling of the above exception, another exception occurred: Traceback (most recent call last): File ""/Users/simonw/Dropbox/Development/datasette/venv/lib/python3.6/site-packages/sanic/handlers.py"", line 82, in response response = handler(request=request, exception=exception) File ""/Users/simonw/Dropbox/Development/datasette/datasette/app.py"", line 512, in on_exception if request.path.split(""?"")[0].endswith("".json""): AttributeError: 'NoneType' object has no attribute 'path' Strangely ""if request and request.path..."" did not work here, because the Sanic Request class extends builtins.dict and hence evaluates to False if it has no headers.",2018-06-29T12:52:51Z,2018-07-08T02:58:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 24af1004a42029f5a2f1a50541780814e9e2578a,Added datasette-vega to news section,2018-06-29T14:53:36Z,2018-06-29T14:53:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 29bd6065147818263fb7c19e0cfc5228c5cf7fb4,Documentation typo,2018-06-28T05:09:03Z,2018-06-28T05:09:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7d9bcdd3071c66b753f3c148bec8ef1b2b54757b,Documentation tweaks,2018-06-28T05:07:53Z,2018-06-28T05:07:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ad66c0da2bb171cdcb0d13b307b3fd7900b77963,"Installation instructions, including docker image - closes #328",2018-06-28T03:59:58Z,2018-06-28T03:59:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 47e689a89b3f5f0969595b17d2ec59ea3caffb3b,"Speed up Travis by reusing pip wheel cache across builds (#324) * Cache pip wheels between runs in Travis, refs #323 * Run pytest manually - ""python setup.py test"" appeared to still download a bunch of stuff: https://travis-ci.org/simonw/datasette/jobs/395306188 * Use extras_require so pip can install test dependencies: https://github.com/pypa/pip/issues/1197#issuecomment-228939212",2018-06-24T01:03:46Z,2018-06-24T01:03:46Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 64c2fea8dfcecb06a3f9c674a96948e7366985fc,"CSV export now respects --cors, fixes #326",2018-06-24T00:59:37Z,2018-06-24T00:59:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7566cc59d4b02ef301054fd35fdde6c925a8e38,Link to 0.23.1 release notes from news,2018-06-21T16:01:38Z,2018-06-21T16:01:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow dea86b9fba78e032ad09673e884e764387daf209,Changelog for 0.23.1,2018-06-21T15:37:13Z,2018-06-21T15:37:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0104dccca9d04916a9a5ba03874c92d9a9704096,"Updated Travis password, refs #317",2018-06-21T15:33:14Z,2018-06-21T15:33:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e843ce26e536bb1a105da808c8f765b2c56e9c7b,"Correctly display empty strings in HTML table, closes #314",2018-06-21T15:26:18Z,2018-06-21T15:26:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 120f20cd97c14b4d9102d9c309b27cc2c0e4ee17,"Allow ""."" in database filenames, closes #302",2018-06-21T15:21:09Z,2018-06-21T15:21:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 97ae66ccabd0e2eae5a7880ac93bd2ac26bb355e,"404s ending in slash redirect to remove that slash, closes #309",2018-06-21T15:13:07Z,2018-06-21T15:13:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3b53eea38267420bb78a2a604e23e5f816eccce2,"Fixed incorrect display of compound primary keys with foreign key references Closes #319",2018-06-21T14:56:28Z,2018-06-21T14:56:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3683a6b626b2e79f4dc9600d45853ca4ae8de11a,"Docs + example of canned SQL query using || concatenation Closes #321",2018-06-21T04:54:36Z,2018-06-21T04:54:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aeeb50f61b7b1bf8ccb61448f8b8253db457d350,"Correctly display facets with value of 0 - fixes #318 Also added comprehensive unit test for facet display HTML.",2018-06-21T04:30:13Z,2018-06-21T04:30:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fdfbbbb9ee0d02fd4d43dfc42382252fa2287d6d,Default 'expand labels' to checked in CSV advanced export,2018-06-20T16:15:33Z,2018-06-20T16:15:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e04f5b0d348ef7275a0a5ab9eb53527105132885,Release notes for 0.23,2018-06-18T15:11:57Z,2018-06-18T15:11:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 54f805dca3fd9e05d9276aedec83036a2e36578c,Advanced export box now obeys allow_csv_stream config - refs #266,2018-06-18T15:11:11Z,2018-06-18T15:11:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 04c896160a9981d37beb71529ac717a6fcf1b195,"Renamed 'stream all records' to 'stream all rows', refs #266",2018-06-18T14:25:44Z,2018-06-18T14:25:44Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bb4a9fbf362d0791e148195d86815d65ebc26fba,"Docs for CSV export, refs #266",2018-06-18T14:12:21Z,2018-06-18T14:12:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 398d29c2873ad22a8e779fab12e65bdbf598f823,"Don't link to #export on custom query results The advanced CSV export options don't work for custom SQL queries. Refs #266",2018-06-18T06:14:48Z,2018-06-18T06:14:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 83f4ef7ec7aa5b4cac9892b3e80cbca00c9080db,"Improved UI for CSV/JSON export, closes #266",2018-06-18T06:03:22Z,2018-06-18T06:05:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fc3660cfad7668dbce6ead12766e048fc1f78b11,"Streaming mode for downloading all rows as a CSV (#315) * table.csv?_stream=1 to download all rows - refs #266 This option causes Datasette to serve ALL rows in the table, by internally following the _next= pagination links and serving everything out as a stream. Also added new config option, allow_csv_stream, which can be used to disable this feature. * New config option max_csv_mb limiting size of CSV export",2018-06-18T03:21:02Z,2018-06-18T03:21:02Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 0d7ba1ba676828dc7c8dda78ebe7921f7986fc18,"Default to _labels=on on JSON/CSV links with foreign keys, refs #266",2018-06-17T22:56:55Z,2018-06-17T22:56:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6a32684ebba89dfe882e1147b23aa8778479f5d8,"Release tagged versions to PyPI and now alias When a new tagged version is pushed, this should: * bdist_wheel it and release to https://pypi.python.org/pypi/datasette * Set an alias of v0-22-1.datasette.io for the deployed demo",2018-06-17T22:19:21Z,2018-06-17T22:24:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c25c3e51c97a807ae8cb6c78e2aea5439d04acbc,Link to latest.datasette.io from README,2018-06-17T22:02:20Z,2018-06-17T22:02:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 958b75c69841ef5913da86e0eb2df634a9b95fda,"Set Now deployment name with datasette publish, refs #313",2018-06-17T21:46:30Z,2018-06-17T21:46:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 438244c2853185e46bef8089ff9bb934442ec14b,"Try using a different name for each Now deploy Refs #313",2018-06-17T21:39:45Z,2018-06-17T21:39:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f0c17229b7a7914d3da02e087dfd0e25d8321448,"Deploy latest.datasette.io on commit to master - #313 If the tests pass in Travis CI, deploy an instance containing Datasette's test fixtures to https://latest.datasette.io/ Also set up an alias of truncated-commit-hash.datasette.io",2018-06-17T21:24:39Z,2018-06-17T21:24:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db1e6bc182d11f333e6addaa1a6be87625a4e12b,"--version-note for datasette, datasette publish and datasette package This is a relatively obscure new command-line argument that helps solve the problem of showing accurate version information in deployed instances of Datasette even if they were deployed directly from source code. You can pass --version-note to datasette publish and package and it will then in turn be passed to datasette when it starts: datasette --version-note=hello fixtures.db Now if you visit /-/versions.json you will see this: { ""datasette"": { ""note"": ""hello"", ""version"": ""0+unknown"" }, ""python"": { ""full"": ""3.6.5 (default, Jun 6 2018, 19:19:24) \n[GCC 6.3.0 20170516]"", ""version"": ""3.6.5"" }, ... } I plan to use this in some Travis CI configuration, refs #313",2018-06-17T20:14:55Z,2018-06-17T21:19:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 538565de3a126a6aa1cdb4b4ba91135507411af0,"datasette publish now --token=X argument Lets you specify the auth token to use when deploying to Now. Tokens can be created at https://zeit.co/account/tokens",2018-06-17T19:46:52Z,2018-06-17T21:16:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6a32df334de1a7e3579879dd7ee073613be9b91b,"Improved fixtures to support publication The fixtures database created by our unit tests makes for a good ""live"" demo of Datasette in action. I've improved the metadata it ships with to better support this use-case. I've also improved the mechanism for writing out fixtures: you can do this: python tests/fixtures.py fixtures.db To get just the fixtures database written out... or you can do this: python tests/fixtures.py fixtures.db fixtures.json To get metadata which you can then serve like so: datasette fixtures.db -m fixtures.json Refs #313",2018-06-17T19:16:04Z,2018-06-17T19:16:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0357774c946b7a35871715d7fc23b3f04f519af8,Renamed test_tables.db to fixtures.db in unit tests,2018-06-17T18:34:16Z,2018-06-17T18:34:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ed631e690b81e34fcaeaba1f16c9166f1c505990,"?_labels= and ?_label=COL to expand foreign keys in JSON/CSV These new querystring arguments can be used to request expanded foreign keys in both JSON and CSV formats. ?_labels=on turns on expansions for ALL foreign key columns ?_label=COLUMN1&_label=COLUMN2 can be used to pick specific columns to expand e.g. `Street_Tree_List.json?_label=qSpecies&_label=qLegalStatus` { ""rowid"": 233, ""TreeID"": 121240, ""qLegalStatus"": { ""value"" 2, ""label"": ""Private"" } ""qSpecies"": { ""value"": 16, ""label"": ""Sycamore"" } ""qAddress"": ""91 Commonwealth Ave"", ... } The labels option also works for the HTML and CSV views. HTML defaults to `?_labels=on`, so if you pass `?_labels=off` you can disable foreign key expansion entirely - or you can use `?_label=COLUMN` to request just specific columns. If you expand labels on CSV you get additional columns in the output: `/Street_Tree_List.csv?_label=qLegalStatus` rowid,TreeID,qLegalStatus,qLegalStatus_label... 1,141565,1,Permitted Site... 2,232565,2,Undocumented... I also refactored the existing foreign key expansion code. Closes #233. Refs #266.",2018-06-16T22:18:57Z,2018-06-16T22:18:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0c22fa8f09e9fce7434d5fc83bcfb73c25795205,"Cleaned up view_definition/table_definition code in table view Also moved those out of standard JSON into just the HTML template context",2018-06-16T17:33:17Z,2018-06-16T17:33:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7e0caa1e62607c6579101cc0e62bec8899013715,Extract string-to-bool logic into utils.py,2018-06-16T16:44:31Z,2018-06-16T16:44:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d0a578c0fc07b9d9208cd9de981bdf7385a26c49,"Switch back from python:3.6-slim-stretch to python:3.6 Turns out slim-stretch doesn't include gcc which means it can't build various Sanic dependencies. So `datasette publish now ...` was broken. Fixes #310",2018-06-16T16:28:55Z,2018-06-16T16:28:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5bda4a477c52b6d1cd7d0ca25382dbb20bda40ea,"Fixed CSV tests - Python 3.6.5 and 3.6.3 apparently differ The test used to expect CSV to come back like this: hello world """" With the final blank value encoded in quotes. Judging by Travis failures, this behaviour changed between Python 3.6.3 and 3.6.5: https://travis-ci.org/simonw/datasette/jobs/392586661",2018-06-15T07:01:48Z,2018-06-15T07:01:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3a79ad98eafb9da527a3b9d9d8fbeb81936b02e7,"Basic CSV export, refs #266 Tables and custom SQL query results can now be exported as CSV. The easiest way to do this is to use the .csv extension, e.g. /test_tables/facet_cities.csv By default this is served as Content-Type: text/plain so you can see it in your browser. If you want to download the file (using text/csv and with an appropriate Content-Disposition: attachment header) you can do so like this: /test_tables/facet_cities.csv?_dl=1 We link to the CSV and downloadable CSV URLs from the table and query pages. The links use ?_size=max and so by default will return 1,000 rows. Also fixes #303 - table names ending in .json or .csv are now detected and URLs are generated that look like this instead: /test_tables/table%2Fwith%2Fslashes.csv?_format=csv The ?_format= option is available for everything else too, but we link to the .csv / .json versions in most cases because they are aesthetically pleasing.",2018-06-15T06:51:23Z,2018-06-15T06:51:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a246f476b4fe490f5450836b22961bc607e6b4b0,"Moved JsonDataView into views/special,py",2018-06-07T15:22:29Z,2018-06-07T15:22:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 864328e074d771a9b50fb1b01392541d7045fbb5,"Test client wrapper removing need for gather_request - refs #272 As part of decoupling from Sanic, this will make it easier to run tests against ASGI instead.",2018-06-05T03:53:12Z,2018-06-05T03:53:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b252bdb7404de88b4fa6f5495a83a712201a12ce,Documented how to set multiple --config at once,2018-06-05T01:45:47Z,2018-06-05T01:45:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 29edbe90ffcdd4f6c2ff564ab1938dff151b40c4,"New cache_size_kb config for SQLite, closes #304",2018-06-04T16:02:07Z,2018-06-04T16:02:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9277c6236a8216450d4ebe3242ce6d56c1a7e437,Fixed tests I broke in b18e45158,2018-05-31T14:47:22Z,2018-05-31T14:47:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7381af85e6e8a2aa13cb308d37ebfe7550dd7331,"Hide sort select on larger screens, closes #300",2018-05-31T14:43:06Z,2018-05-31T14:43:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a80e1d50b9394feee267d76398b5ab249817156c,"Show error on 'datasette publish heroku --spatialite', refs #301",2018-05-31T14:21:27Z,2018-05-31T14:21:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b18e4515855c3f1eeca3dfcccdbb6df05869084a,"datasette publish/package --spatialite, closes #243 New command-line argument which causes SpatiaLite to be installed and configured for the published Datasette. datasette publish now --spatialite mydb.db",2018-05-31T14:16:50Z,2018-05-31T14:16:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 969771770fcf795daace72e2310804e699067cfe,"Upgrade pytest to 3.6.0 https://github.com/pytest-dev/pytest/issues/1875 made it impossible to declare a function as a fixture multiple times, which we were doing across different modules. The fix was to move our @pytest.fixture calls into decorators in the tests/fixtures.py module.",2018-05-31T13:40:30Z,2018-05-31T13:42:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 16398641d95db7374fddccc79d0f08e4d4c96ee1,SQL syntax highlighting in docs,2018-05-31T13:17:53Z,2018-05-31T13:17:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d69ebce53385b7c6fafb85fdab3b136dbf3f332c,Fixed broken :ref:,2018-05-30T03:11:24Z,2018-05-30T03:11:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1a8b0213e0152234b25f2777d5c6f61a41834c8a,Fixed broken test introduced in b0a95da96,2018-05-30T02:38:21Z,2018-05-30T02:38:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 27eff1809c21b7c1ae2ba33ebde1dac7f8bc8fbc,Expanded SpatiaLite docs to cover GeoJSON plus lat-lon spatial indexes,2018-05-30T02:32:30Z,2018-05-30T02:32:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b0a95da96386ddf99816911e08df86178ffa9a89,"Show more useful error message for SQL interrupted, closes #142",2018-05-28T21:24:19Z,2018-05-28T21:24:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 98c8f0e7285fb58b7cbb38304e2ed4576774ad91,Moved plugin HTML tests from test_html to test_plugins,2018-05-28T21:23:48Z,2018-05-28T21:23:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 27c10f6482858f9654e31c800884d75304d50ed5,Missing half of last commit fefb0db8ae15,2018-05-28T20:42:48Z,2018-05-28T20:42:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fefb0db8ae15199d0204af859ba1edc6ae98f84b,"Unit test for 02870e57, closes #291",2018-05-28T20:41:53Z,2018-05-28T20:41:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a4d6acc23943759b46fa90ec68e500016b933410,"Use scope='session' for all fixtures This means they will only be executed once which makes sense since the database they create is immutable.",2018-05-28T20:41:06Z,2018-05-28T20:41:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 76d11eb768e2f05f593c4d37a25280c0fcdf8fd6,"New ?_json=colname argument for returning unescaped JSON Also extracted docs for special JSON arguments into a new section. Closes #31",2018-05-28T18:08:39Z,2018-05-28T18:08:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 02870e573154517f129cbc85e437d5f0105d7cbe,"Filter out duplicate JS/CSS URLs, refs #291 (testme)",2018-05-27T08:45:03Z,2018-05-27T08:45:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c972d79b5a633cbd3e6a7934ae58bd60c57da3a2,Added docs on Importing shapefiles into SpatiaLite,2018-05-27T01:39:26Z,2018-05-27T01:39:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7944a8b0de9f892713da9d31ef0085cd9bcc5ff3,"Added num_sql_threads config option, closes #285",2018-05-27T00:43:22Z,2018-05-27T00:43:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 276913b74803554e03e1617389f6998885ea8c06,"?_shape=arrayfirst, closes #287",2018-05-27T00:32:15Z,2018-05-27T00:32:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b463f60158ccf791809cb51cba2cf7a14e491b36,"?_ttl= parameter and default_cache_ttl config Refs #285, Closes #289",2018-05-26T22:17:33Z,2018-05-26T22:17:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a6afc21aba50e84ae5ca4dc7c899dfd6fd1619d9,Test that ensures all config options are documented,2018-05-26T22:11:04Z,2018-05-26T22:11:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 08029a2f8f67bbcd42bea755de5fb7db12b2c275,Hyperlink to www.srihash.org,2018-05-26T19:46:24Z,2018-05-26T19:46:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow df71e8cea87542aa7a7be84fabca0adc1177728d,Fixed documentation typo,2018-05-26T18:04:43Z,2018-05-26T18:04:43Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 37f8361c6f7b3eeaa351c0cd93b6db1fdd2744ab,"Initial documentation on using SpatiaLite https://datasette.readthedocs.io/en/latest/spatialite.html",2018-05-26T18:04:09Z,2018-05-26T18:04:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f98e62fe5ac48cd31362b7e2001b0262fa68ef3b,Fix for 500 error on /db?sql=x,2018-05-25T22:08:57Z,2018-05-25T22:08:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b9b93583467986a72f34732fc87a201157ad83ea,"boolean --config are now case insensitive, refs #284",2018-05-25T05:53:58Z,2018-05-25T05:53:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f722b0a730377d28e3b4e8292da2036f32896e02,"allow_sql config option to disable custom SQL, closes #284",2018-05-25T05:50:50Z,2018-05-25T05:50:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50920cfe3d42483f15e2077c345427059fd19941,"allow_facet, allow_download, suggest_facets boolean --config Refs #284",2018-05-25T01:12:27Z,2018-05-25T01:12:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 81df47e8d95df895bec792466b3d7b34c8d5c509,"Moved .execute() method from BaseView to Datasette class Also introduced new Results() class with results.truncated, results.description, results.rows",2018-05-25T00:15:37Z,2018-05-25T00:15:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 28a52fcffb869f5e83ca2fad53738dc25eec425d,Set theme jekyll-theme-architect,2018-05-24T16:56:21Z,2018-05-24T16:56:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3d9baf3c2f2f745e6949973f18480092f189116c,Set theme jekyll-theme-leap-day,2018-05-24T16:55:19Z,2018-05-24T16:55:19Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bd30c696e18927207358ee9d63174a5c41c8297e,"Build Dockerfile with recent Sqlite + Spatialite (#280) Closes #278 ```bash $ docker run --rm -it datasette spatialite SpatiaLite version ..: 4.4.0-RC0 Supported Extensions: - 'VirtualShape' [direct Shapefile access] - 'VirtualDbf' [direct DBF access] - 'VirtualXL' [direct XLS access] - 'VirtualText' [direct CSV/TXT access] - 'VirtualNetwork' [Dijkstra shortest path] - 'RTree' [Spatial Index - R*Tree] - 'MbrCache' [Spatial Index - MBR cache] - 'VirtualSpatialIndex' [R*Tree metahandler] - 'VirtualElementary' [ElemGeoms metahandler] - 'VirtualKNN' [K-Nearest Neighbors metahandler] - 'VirtualXPath' [XML Path Language - XPath] - 'VirtualFDO' [FDO-OGR interoperability] - 'VirtualGPKG' [OGC GeoPackage interoperability] - 'VirtualBBox' [BoundingBox tables] - 'SpatiaLite' [Spatial SQL - OGC] PROJ.4 version ......: Rel. 4.9.3, 15 August 2016 GEOS version ........: 3.5.1-CAPI-1.9.1 r4246 TARGET CPU ..........: x86_64-linux-gnu the SPATIAL_REF_SYS table already contains some row(s) SQLite version ......: 3.23.1 Enter "".help"" for instructions SQLite version 3.23.1 2018-04-10 17:39:29 Enter "".help"" for instructions Enter SQL statements terminated with a "";"" spatialite> ``` ```bash $ docker run --rm -it datasette python -c ""import sqlite3; print(sqlite3.sqlite_version)"" 3.23.1 ``` Also updates the query used to check for FTS5 as the old version wasn't detecting FTS5 for some reason.",2018-05-23T17:43:34Z,2018-05-23T17:43:34Z,a901819e7fab7b80a873df43d5123bb3252681f8,Ravi Kotecha,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,565628,r4vi,9599,simonw 5d6252788230d168ba09f379d1d2af867e3302ab,0.22.1 bugfix release,2018-05-23T14:00:01Z,2018-05-23T14:00:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2bfd111d65c892e54b06c2c9498ce2b4cc3e67ff,"Faceting no longer breaks pagination, fixes #282",2018-05-23T13:41:14Z,2018-05-23T13:41:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 49f317752cfe89c5641165a490eef49e025752a7,Move version info back to separate module,2018-05-22T17:33:57Z,2018-05-22T19:35:21Z,106fe7fbf8b80a01038e265a137b3b703422db48,Robert Gieseke,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,198537,rgieseke,9599,simonw fc47dacbbd4c4d245d7144e4cc014d3303f84b9a,"Add `__version_info__` derived from `__version__` This might be tuple of more than two values (major and minor version) if commits have been made after a release.",2018-05-22T17:18:00Z,2018-05-22T19:35:21Z,106fe7fbf8b80a01038e265a137b3b703422db48,Robert Gieseke,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,198537,rgieseke,9599,simonw a113c28ea1924d83e6789ae5e0805312e55b4490,"Add version number support with Versioneer Repo: https://github.com/warner/python-versioneer Versioneer Licence: Public Domain (CC0-1.0) Closes #273",2018-05-22T15:33:29Z,2018-05-22T19:35:21Z,a1a72b19e432a3145fdb845aab2927c00d8a8426,Robert Gieseke,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,198537,rgieseke,9599,simonw 58b5a37dbbf13868a46bcbb284509434e66eca25,Refactor inspect logic,2018-05-21T08:02:34Z,2018-05-22T14:03:06Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw d59366d36e95b973d674e62edff0168d5bdd90eb,Link to /-/plugins example,2018-05-21T04:07:26Z,2018-05-21T04:07:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 558d9d7bfef3dd633eb16389281b67d42c9bdeef,Datasette 0.22: Datasette Facets,2018-05-20T23:41:47Z,2018-05-20T23:41:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0b8e5981a37c0da75ce4f4e6b6b5275681e2e0c5,Typo fix,2018-05-20T21:30:48Z,2018-05-20T21:30:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bd3353a31f930c2e504094d79513cadbade43cda,"Added docs for introspection endpoints https://datasette.readthedocs.io/en/latest/introspection.html",2018-05-20T21:28:53Z,2018-05-20T21:28:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f00137c8ac2bdb9767733b0d72bf204b034644a7,Only apply responsive table CSS to .rows-and-columns,2018-05-20T17:45:01Z,2018-05-20T17:45:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f6183ff5fa715c68d13d6ae8c7b3b9f2c6ffc9f8,"Renamed --limit to --config, added --help-config, closes #274 Removed the --page_size= argument to datasette serve in favour of: datasette serve --config default_page_size:50 mydb.db Added new help section: $ datasette --help-config Config options: default_page_size Default page size for the table view (default=100) max_returned_rows Maximum rows that can be returned from a table or custom query (default=1000) sql_time_limit_ms Time limit for a SQL query in milliseconds (default=1000) default_facet_size Number of values to return for requested facets (default=30) facet_time_limit_ms Time limit for calculating a requested facet (default=200) facet_suggest_time_limit_ms Time limit for calculating a suggested facet (default=50)",2018-05-20T17:01:49Z,2018-05-20T17:01:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 918de9403e09ba607996a985be1779eddcf76151,"Only apply responsive table styles to .rows-and-column Otherwise they interfere with tables in the description, e.g. on https://fivethirtyeight.datasettes.com/fivethirtyeight/nba-elo%2Fnbaallelo",2018-05-20T15:10:46Z,2018-05-20T15:10:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b8227556c6ef040e2299b113d1ec6e220586ffc3,"Suggested facets now use #fragment links Useful for pages with large amounts of content at the top like on https://fivethirtyeight.datasettes.com/fivethirtyeight-469e30d/nba-elo%2Fnbaallelo",2018-05-18T16:18:41Z,2018-05-18T16:18:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2c2e67b9bb5f1f6b82348a16afe4a07e8073ab54,Updated default facet limits in docs,2018-05-18T15:50:37Z,2018-05-18T15:50:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 39426ff0e43a406f42c03692d3dc9d4a1b7b9d52,"Added /-/limits and /-/limits.json, closes #270",2018-05-18T06:16:28Z,2018-05-18T06:16:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 08f4b7658fec97419eb34118a2cd5c8be805673f,"Show facets that timed out using new InterruptedError If the user requests some _facet= options that do not successfully execute in the configured facet_time_limit_ms, we now show a warning message like this: These facets timed out: rowid, Title To build this I had to clean up our SQLite interrupted logic. We now raise a custom InterruptedError exception when SQLite terminates due to exceeding a time limit. In implementing this I found and fixed a logic error where invalid SQL was being generated in some cases for our faceting calculations but the resulting sqlite3.OperationalError had been incorrectly captured and treated as a timeout. Refs #255 Closes #269",2018-05-18T06:07:45Z,2018-05-18T06:11:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cef9a9a8701af86cc7df8b7939398185f0a76f5f,"--limit= mechanism plus new limits for facets Replaced the --max_returned_rows and --sql_time_limit_ms options to ""datasette serve"" with a new --limit option, which supports a larger list of limits. Example usage: datasette serve --limit max_returned_rows:1000 \ --limit sql_time_limit_ms:2500 \ --limit default_facet_size:50 \ --limit facet_time_limit_ms:1000 \ --limit facet_suggest_time_limit_ms:500 New docs: https://datasette.readthedocs.io/en/latest/limits.html Closes #270 Closes #264",2018-05-18T05:08:26Z,2018-05-18T05:08:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8003a13331cb78774d613a8f3f1b204a33918088,"Empty string """" facets can now be selected in UI, refs #255",2018-05-17T13:34:42Z,2018-05-17T13:34:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5e78d11c247f88946f4c0929b075df327235fe4a,Docs: Speeding up facets with indexes,2018-05-17T04:08:50Z,2018-05-17T04:08:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7261584f0413b10a0ece98be802a6c7099fd53de,"Display currently selected facets better, refs #255",2018-05-17T02:42:31Z,2018-05-17T02:42:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 96aac7f9e94d94243a7ee524d0ad25501ec98f72,Facet documentation tweaks,2018-05-16T15:45:12Z,2018-05-16T20:50:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9959a9e4deec8e3e178f919e8b494214d5faa7fd,"Added screenshots to facets and full_text_search docs, refs #255",2018-05-16T15:24:44Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 858d79fe938afbe04e2b249da71860e812869ec8,Typo fix,2018-05-16T15:15:56Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 566f2d31d6f4950200b64424f6f9cfdd06343f4e,"Clarified relationship between metadata and _facet= facets, updated docs - refs @255",2018-05-16T15:15:23Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b263da78e329853ceea41c4ecabe7e8bb08d20a7,"Reliable sort order for facets in Python 3.5, fixing test - refs #255",2018-05-16T14:43:13Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 062303419cef9bbf72927c4ac4efdb185829c03b,Hide facet button is now a ✖ - refs #255,2018-05-16T14:37:05Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 62f1d3a6cbf7fca5c0e85c13a77830755c314883,"class=""suggested-facets""",2018-05-16T05:08:58Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 91bf5f56bb301fb564640fa6b1bb8a6e981ff721,"Show enabled facets in flexbox columns, refs #255",2018-05-16T05:06:05Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6d12580ed74ff0baf081bf9fabc14eeaf8a3105c,"Foreign key facets are now expanded to labels, refs #255",2018-05-15T15:52:02Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a892f9a0bd6667c1ad4c590016d6845cd98a645a,Use escape_sqlite() more consistently,2018-05-15T15:00:39Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8a0bd68c393423a6c3bdae27d3826e6161a101c1,Undid some slightly weird code formatting by 'black',2018-05-15T13:23:20Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 63aac537f238239d5fb7f4934545404d37d874f6,"1,442 format for facet counts, refs #255",2018-05-15T12:14:14Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f4943ca89bf400350205788f9130c135aaf7b85b,"_facet selections persist through table form, refs #255",2018-05-15T10:28:48Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 514873c6295dcd467d806064a549e46b4ea3279a,Fix bug with toggle_url on integer facets,2018-05-15T10:19:09Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1dc94f6eaa98431da9c61e803e2b05b082f9c6e8,"Facets can now be toggled off again, refs #255",2018-05-15T10:11:52Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ba515fc56e6cf77ea299b6d534be7ccfa925a533,Removed un-used variable,2018-05-15T10:08:07Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 142a550a99f3c78349a10ed79f1b513fe704a169,"Facet results now have ""truncated"" field To indicate if there was more than 20 distinct values. Refs #255",2018-05-15T09:50:27Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a82175276c3f5898161c7630f669d0b8990d7a16,_sort/_next links now use new path_with_replaced_args method,2018-05-15T09:34:45Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2f81552cd29125e3916763f05949125a49c2dde8,Never suggest a facet if it only results in on option,2018-05-15T03:05:10Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b0d2bb3e43dd567b96b6a4ddc3c1a09a84c2c42d,Facets no longer consider null values,2018-05-14T22:19:43Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ddef2298509e3027a44971a681ad7855bf07b51a,"Initial implementation of suggested facets Causes tests to break at the moment",2018-05-14T22:09:42Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8a4ed052a5034d3f12daf5eedabb0808a0bf20fc,path_with_added_args now works with multiple existing args,2018-05-14T22:09:09Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f36c9d4b4ca77dd42495f31d02e89b4c10833531,"Facet toggling now works for integer columns, refs #255",2018-05-14T21:33:24Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw de05cf21aa6a922ee2825b5098b108dd23fb0755,"Facet ""selected"" key and toggle_url now toggles, refs #255",2018-05-14T20:42:10Z,2018-05-16T15:27:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2b79f2bdeb1efa86e0756e741292d625f91cb93d,path_with_added_args now preserves order in Python 3.5,2018-05-14T03:02:07Z,2018-05-14T03:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw eaf715a60ae3c3180d0949da8292e2627b72e287,Extract /-/plugins view into a method,2018-05-13T13:06:02Z,2018-05-14T03:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf1fe693e5741035df65cc9d69c4af32befd021d,Used isort to re-order my imports,2018-05-13T12:58:28Z,2018-05-14T03:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 368638555160fb9ac78f462d0f79b1394163fa30,Ran black source formatting tool against new views/ and app.py,2018-05-13T12:55:15Z,2018-05-14T03:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1f69269fe93e4cd42e56890126cc0dbcf719c6cb,"Refactored views into new views/ modules, refs #256",2018-05-13T12:44:22Z,2018-05-14T03:04:23Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4301a8f3ac69f2f54916e73cc90fcf216a9a3746,"Case insensitive querystring comparison, fix Python 3.5",2018-05-12T22:49:37Z,2018-05-12T22:49:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw eaaa3ea1498df0d4790f814e3d2f3fcc5ea28429,"Initial implementation of facets, plus tests and docs Refs #255",2018-05-12T22:29:06Z,2018-05-12T22:29:41Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 70ff615f1b831c4dce936e9f9fc57a9e8e71e547,"utils.path_with_added_args() improvements * Now covered by unit tests * Preserves original order * Can handle multiple args of the same name, e.g. ?bar=1&bar=2",2018-05-12T21:35:25Z,2018-05-12T21:44:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1c815207cca70107711d514d3303986333da8b7a,Update conf.py,2018-05-12T12:08:11Z,2018-05-12T12:08:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 694f8457153eba715db98098c412a96fcfbb944f,"Documentation for SQLite full-text search support, closes #253",2018-05-12T12:06:38Z,2018-05-12T12:06:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 04d21ccd089fcaf7a2b535d217fc541ab19aa54b,"/-/versions now includes SQLite fts_versions, closes #252",2018-05-11T13:19:25Z,2018-05-11T13:19:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e10f8e1274267fdb9021832917c35cfd1ec6c714,Slight simplification of /-/inspect,2018-05-06T13:02:43Z,2018-05-06T13:05:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8e0f07284789228a98479c082a6dad467b65a35c,Added Datasette 0.21 to News,2018-05-05T23:24:55Z,2018-05-05T23:24:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 62c08d0d7197264af678c2f6e0c6403196217184,"Revert ""Travis should now deploy new tags to PyPI if tests pass"" This reverts commit d39b2e357e34469728f300273ab07c3904ea7a2b. It failed with this error: https://travis-ci.org/simonw/datasette/jobs/375398977 Uploading distributions to https://upload.pypi.org/legacy/ Uploading datasette-0.21-py3-none-any.whl 100% 182k/182k [00:00<00:00, 694kB/s] HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/",2018-05-05T23:22:21Z,2018-05-05T23:22:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 403211de632cd15f0820cc9399305fc43c187b47,Release Datasette 0.21,2018-05-05T23:15:38Z,2018-05-05T23:15:38Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d39b2e357e34469728f300273ab07c3904ea7a2b,Travis should now deploy new tags to PyPI if tests pass,2018-05-05T23:15:05Z,2018-05-05T23:15:05Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 801381b7657dd084c11ac2fb6e3d0194cfaa3455,"Default tests to using a longer timelimit Every now and then a test will fail in Travis CI on Python 3.5 because it hit the default 20ms SQL time limit. Test fixtures now default to a 200ms time limit, and we only use the 20ms time limit for the specific test that tests query interruption. This should make our tests on Python 3.5 in Travis much more stable.",2018-05-05T22:41:37Z,2018-05-05T22:44:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1259b8ac0bb25fc8af61c1948e2cc16860dca7ff,"Support _search_COLUMN=text searches, closes #237",2018-05-05T22:33:08Z,2018-05-05T22:33:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4d6a568d6c1c9edabbaa8d58899b3857cd0185a7,"Unit tests for _search= feature, refs #237",2018-05-05T22:01:14Z,2018-05-05T22:01:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ca290719edc2ba508585149a3e905f5c0bb23a8d,"Show version on /-/plugins page, closes #248",2018-05-04T18:04:33Z,2018-05-04T18:04:33Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d4da4c92c8ff19f29ca0cb4b93cb7eaca4553e73,"?_size=max option, closes #249",2018-05-04T18:03:40Z,2018-05-04T18:03:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bb87cf873017c70a2e9155c336067d4e82481dd6,"Added /-/versions and /-/versions.json, closes #244 Sample output: { ""python"": { ""version"": ""3.6.3"", ""full"": ""3.6.3 (default, Oct 4 2017, 06:09:38) \n[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]"" }, ""datasette"": { ""version"": ""0.20"" }, ""sqlite"": { ""version"": ""3.23.1"", ""extensions"": { ""json1"": null, ""spatialite"": ""4.3.0a"" } } }",2018-05-02T08:46:54Z,2018-05-03T14:09:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 690736436bac599ca042d1caa465c6d66d2651f9,"Bump up time limit for test_paginate_tables_and_views It was intermittently failing in Travis CI on Python 3.5: https://travis-ci.org/simonw/datasette/jobs/373713476",2018-05-02T00:17:39Z,2018-05-02T00:20:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 349e262bb1c8f225cf86a5e8542253282809a0eb,"Renamed ?_sql_time_limit_ms= to ?_timelimit, closes #242",2018-05-02T00:11:46Z,2018-05-02T00:20:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a4cc5dc81364a7300f0ba0bd5711633e803c250a,"New ?_shape=array option + tweaks to _shape, closes #245 * Default is now ?_shape=arrays (renamed from lists) * New ?_shape=array returns an array of objects as the root object * Changed ?_shape=object to return the object as the root * Updated docs",2018-05-02T00:08:16Z,2018-05-02T00:20:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2565d623af6222f3ed1c630f753b5f95ad749d49,?_shape=array experimental feature,2018-05-01T17:40:33Z,2018-05-02T00:20:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw aa954382c3776d596f459897b0d984161293529d,"FTS tables now detected by inspect(), closes #240",2018-04-29T00:04:32Z,2018-04-29T00:04:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f188ceaa2a3a5b2eab83425ad0f00cb0d364e24a,"New ?_size=XXX querystring parameter for table view, closes #229 Also added documentation for all of the _special arguments. Plus deleted some duplicate logic implementing _group_count.",2018-04-26T04:47:12Z,2018-04-26T04:47:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4504d5160b2d86d4dae17b7c2f72bc3b02509c2c,"If max_returned_rows==page_size, increment max_returned_rows Fixes #230, where if the two were equal pagination didn't work correctly.",2018-04-26T04:04:12Z,2018-04-26T04:04:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 02ee31c8b45b872fff91e2059c15a20532e2d035,"New hidden: True option for table metadat, closes #239",2018-04-26T03:42:57Z,2018-04-26T03:42:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d3a0069c54aeaeffd197740120e0dca64bd0eeff,"Hide idx_* tables if spatialite detected, closes #228",2018-04-26T03:25:21Z,2018-04-26T03:25:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db7a57a9a62d1d32e204d8acd9ab4341a1436ef9,Added class=rows-and-columns to custom query results table,2018-04-26T03:24:22Z,2018-04-26T03:24:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7f44d31782260f859af1de68ac9db29f72cc6d84,Link to register-of-members-interests tutorial,2018-04-25T17:40:48Z,2018-04-25T17:40:48Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 00ab95430003768067bb496b125a2be93134e73d,Added CSS class rows-and-columns to main table,2018-04-24T01:30:03Z,2018-04-24T01:31:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f3f42957128c1e7ece584d45d9167f2ac003a3b8,"label_column now defined on the table-being-linked-to, fixes #234",2018-04-22T20:46:18Z,2018-04-22T20:46:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f27cabbaf3d834f47bc6bea1de7e27c11fcfa5e7,label_column option in metadata.json - closes #234,2018-04-22T17:51:43Z,2018-04-22T17:53:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ea0a761303d84bd73f54a1acedc45b01c38b2da0,Link to documentation from README,2018-04-21T00:20:56Z,2018-04-21T00:20:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a971718d2a5e1b61b5e5c27b0ef6c4ec65616e35,Fix a typo (#232),2018-04-21T00:19:07Z,2018-04-21T00:19:07Z,8795af7c0eb348f1248a81917921e4a7d768bee3,lsb,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45281,lsb,9599,simonw 05bdf53358ec6ea81a7dce17290f3db0cd94d23d,Added missing hyphen,2018-04-20T21:15:13Z,2018-04-20T21:15:13Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ae02e9f4acc77019075c0eac9c3a0e96e50c195f,Added datasette-cluster-map blog entry to news,2018-04-20T21:14:35Z,2018-04-20T21:14:35Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 3a5d7951ce8f35118ffdd7f8d86e09b909e1218c,Added Datasette 0.20 to news,2018-04-20T14:36:24Z,2018-04-20T14:36:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 72a7ae6859c9f9a951b96c4bd603d44acf634f00,Datasette 0.20: static assets and templates for plugins,2018-04-20T14:32:02Z,2018-04-20T14:32:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e2750c7cc0585adaa8c866be611089e62961ee35,Add col-X classes to HTML table on custom query page,2018-04-19T15:36:14Z,2018-04-19T15:36:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1e4c29501289f7bc7b3b7daf60f1ddd9f66ee338,Fixed out-dated template in documentation,2018-04-19T05:57:31Z,2018-04-19T05:57:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b52171db1e97e2be1ff2dc505ccf29107288b27b,"Plugins can now bundle custom templates, closes #224 Refs #14",2018-04-19T05:50:27Z,2018-04-19T05:50:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b55809a1e20986bb2e638b698815a77902e8708d,"Added /-/metadata /-/plugins /-/inspect, closes #225",2018-04-19T05:24:48Z,2018-04-19T05:25:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6e28ed447f879a46ee5457882cf6ae8b785c87b4,Thanks to #214 JavaScript is no longer 'soon',2018-04-18T15:17:10Z,2018-04-18T15:17:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7581320823d542fd827cb6788be87e6d51aa96dd,"Documentation for --install option, refs #223",2018-04-18T15:05:06Z,2018-04-18T15:05:06Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 404fa2252b070952ff1d1fc8bafc153789f36ada,"datasette publish/package --install option, closes #223 Allows you to specify one or more additional packages to be installed, useful for deploying plugins.",2018-04-18T14:48:34Z,2018-04-18T14:55:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2b344f6a34d2adaa305996a1a580ece06397f6e4,"Ran black against datasette/cli.py https://pypi.org/project/black/ cli.py was getting a bit untidy due to all of the heavily annotated click function methods - used black to clean it up and make it easier to read.",2018-04-18T14:14:21Z,2018-04-18T14:52:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f8f818711b622ec0ac11834a11e214f19c1590c5,Formatting tweak,2018-04-18T04:30:58Z,2018-04-18T04:30:58Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4be6deb94776744071311777f0b18efb993c0cfa,"Fix for plugins in Python 3.5 (#222) ModuleNotFoundError is not a thing in Python 3.5, so catch KeyError/ImportError instead.",2018-04-18T03:24:20Z,2018-04-18T03:24:20Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1c36d07dd432b9960f4f2d096739460b4fcf8877,"New plugin hooks: extra_css_urls() and extra_js_urls() Closes #214",2018-04-18T03:12:21Z,2018-04-18T03:12:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ca588b6a30e50212f6ac233121745a4216d878f9,Fixed example HTML in CSS docs,2018-04-18T02:35:03Z,2018-04-18T02:35:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0bb483ca5bee61c9f7d148b5755d2eed56001aca," /-/static-plugins/PLUGIN_NAME/ now serves static/ from plugins Refs #214",2018-04-18T02:32:48Z,2018-04-18T02:32:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a5792a8c61b9bb6a7a5295c8ec87c2567a5e39a2," now gets class=""col-X"" - plus added col-X documentation Refs #209",2018-04-18T02:11:11Z,2018-04-18T02:11:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dfb87d012c30a5a3e2d6c4f2cf0a94d2fd080723,"Use to_css_class for table cell column classes This ensures that columns with spaces in the name will still generate usable CSS class names. Refs #209",2018-04-18T01:19:21Z,2018-04-18T01:19:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 136a70d88741e2a5892c3de437064a9d14494d66,"Add column name classes to s, make PK bold",2018-04-17T08:29:48Z,2018-04-18T01:13:02Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw 0f782dd8dfd7c53a9c20bbd2cb8734bb806d928b,Additional test asserts,2018-04-16T20:22:04Z,2018-04-18T01:13:02Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw 4586aa506a054d07e674cde8143a3008e6bc5d78,"Don't duplicate simple primary keys in the link column When there's a simple (single-column) primary key, it looks weird to duplicate it in the link column. This change removes the second PK column and treats the link column as if it were the PK column from a header/sorting perspective.",2018-04-15T21:49:01Z,2018-04-18T01:13:02Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw b231d4243d748facf1897e7756c2b578bb448edc,Correct escaping for HTML display of row links,2018-04-15T21:48:30Z,2018-04-18T01:13:02Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw aaf59db570ab7688af72c08bb5bc1edc145e3e07,"Longer time limit for test_paginate_compound_keys It was failing intermittently in Travis - see #209",2018-04-18T01:08:51Z,2018-04-18T01:09:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5ebc7137d736d8fa47b24cc799fb93909f49cabb,"Use application/octet-stream for downloadable databses I'd also like to send the Content-Length here but that's not currently possible in Sanic - see bug report here: https://github.com/channelcat/sanic/issues/1194",2018-04-18T00:31:54Z,2018-04-18T00:31:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1f384e662b58e2eb43ce20842976b677e4478f43,Updated PyPI classifiers,2018-04-18T00:30:46Z,2018-04-18T00:30:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bf5ec2d61148f9852441934dd206b3b1c07a512f,Updated PyPI link to pypi.org,2018-04-17T02:24:36Z,2018-04-17T02:24:36Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ba9bfa583179c25aaef94b1f44da7eba74620b9a,Datasette 0.19: plugin preview (with release notes),2018-04-17T02:12:21Z,2018-04-17T02:12:21Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7c769ef30add8f984eab920b2f503d4b8096bde,"Working implementation of #216 which passes the tests Reverted commit 5364fa7f3357f2de24fd45c85832205377642f19 (where I removed the code that didn't work). Added primary keys to order-by clause for sorting to get tests to pass",2018-04-17T01:41:17Z,2018-04-17T01:41:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5364fa7f3357f2de24fd45c85832205377642f19,"Revert #216 until I can get tests to pass in Travis Revert ""Fix for _sort_desc=sortable_with_nulls test, refs #216"" This reverts commit 07fc2d113e462bfd8d7d56152c0d1fc55e0fdbe9. Revert ""Fixed #216 - paginate correctly when sorting by nullable column"" This reverts commit 2abe539a0f9f967ec0de6894774cb7ee83c4b3b9.",2018-04-17T00:52:22Z,2018-04-17T00:53:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 07fc2d113e462bfd8d7d56152c0d1fc55e0fdbe9,"Fix for _sort_desc=sortable_with_nulls test, refs #216",2018-04-17T00:05:03Z,2018-04-17T00:05:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2abe539a0f9f967ec0de6894774cb7ee83c4b3b9,Fixed #216 - paginate correctly when sorting by nullable column,2018-04-16T23:51:51Z,2018-04-16T23:52:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1652a9707e325b387ab9550e78eefd48029be44f,Apache 2.0 license badge,2018-04-16T23:10:12Z,2018-04-16T23:10:12Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 10a34f995c70daa37a8a2aa02c3135a4b023a24c,Removed rogue print() call,2018-04-16T15:38:09Z,2018-04-16T15:38:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 904f1c75a3c17671d25c53b91e177c249d14ab3b,"Initial documentation for plugins, closes #213 https://datasette.readthedocs.io/en/latest/plugins.html",2018-04-16T15:12:09Z,2018-04-16T15:12:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b2955d9065ea019500c7d072bcd9d49d1967f051,"New --plugins-dir=plugins/ option (#212) * New --plugins-dir=plugins/ option New option causing Datasette to load and evaluate all of the Python files in the specified directory and register any plugins that are defined in those files. This new option is available for the following commands: datasette serve mydb.db --plugins-dir=plugins/ datasette publish now/heroku mydb.db --plugins-dir=plugins/ datasette package mydb.db --plugins-dir=plugins/ * Unit tests for --plugins-dir=plugins/ Closes #211",2018-04-16T05:22:01Z,2018-04-16T05:22:01Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 92396ae5bacedfcb3d7c81319ccdd04483fd7fd4,Better fix for setup.py version,2018-04-16T04:28:24Z,2018-04-16T04:38:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 33c7c53ff87c25445c68088ede49d062d9c31fe8,"Start of the plugin system, based on pluggy (#210) Uses https://pluggy.readthedocs.io/ originally created for the py.test project We're starting with two plugin hooks: prepare_connection(conn) This is called when a new SQLite connection is created. It can be used to register custom SQL functions. prepare_jinja2_environment(env) This is called with the Jinja2 environment. It can be used to register custom template tags and filters. An example plugin which uses these two hooks can be found at https://github.com/simonw/datasette-plugin-demos or installed using `pip install datasette-plugin-demos` Refs #14",2018-04-16T00:56:15Z,2018-04-16T00:56:15Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow efbb4e83374a2c795e436c72fa79f70da72309b8,"Return HTTP 405 on InvalidUsage rather than 500 This also stops it filling up the logs. This happens for HEAD requests at the moment - which perhaps should be handled better, but that's a different issue.",2018-04-14T16:11:16Z,2018-04-14T18:00:38Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw 8d394586f55bc4b8ab70476968d08fb6ec8339e5,Added 0.18 to news,2018-04-14T16:04:38Z,2018-04-14T16:04:38Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 43ae15c0d14b3e968e8d5bfef72ac0c39783c3a2,"Releasing v0.18 - support for units! Refs #203",2018-04-14T15:36:10Z,2018-04-14T15:36:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 932e0a3f91e4cee92b0e30c528300ec1d348d26c,"Don't attempt to deploy new tags to PyPI This isn't working through Travis at the moment, so I'm disabling it and switching back to manual deploys.",2018-04-14T15:21:37Z,2018-04-14T15:21:37Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow c857608738d6b6c3e4f3248304a22f8b2648dd3e,"Merge ""Support filtering with units"" from #205",2018-04-14T15:12:34Z,2018-04-14T15:17:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw dd4491dd8112d70d96d73f8f1d12b58cb42fe1bd,Update number of expected tables,2018-04-14T15:03:41Z,2018-04-14T15:16:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6b15a53cd3cd40880a5e2d38827d5fac10e4bb5f,Unit test for unlabelled foreign keys from #207,2018-04-14T15:00:54Z,2018-04-14T15:00:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f2b940d6026677f6859d46a4f16fa402745d261d,"Link foreign keys which don't have labels This renders unlabeled FKs as simple links. I can't see why this would cause any major problems. Also includes bonus fixes for two minor issues: * In foreign key link hrefs the primary key was escaped using HTML escaping rather than URL escaping. This broke some non-integer PKs. * Print tracebacks to console when handling 500 errors.",2018-04-14T13:17:20Z,2018-04-14T14:59:59Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw d72201e883c0612d14dfb8ffdd61aa0fe223d94a,"Added unit test for foreign key links in HTML Needed to add a further unit test for #207",2018-04-14T14:55:27Z,2018-04-14T14:55:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1cc5161089e559c8b16049b20f7a5b3a43290c21,"Fix sqlite error when loading rows with no incoming FKs This fixes `ERROR: conn=, sql = 'select ', params = {'id': '1'}` caused by an invalid query when loading incoming FKs. The error was ignored due to async but it still got printed to the console.",2018-04-14T12:06:00Z,2018-04-14T14:24:24Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw 7d5f25dfb320af26ec4afcb1a687f7f034e1f044,Add link to pint custom units page to docs,2018-04-14T14:08:20Z,2018-04-14T14:08:20Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,107914493,datasette,45057,russss,45057,russss ed974417ad54f0c0f65b2f1cf54dc12485abb570,Tests for unit filtering,2018-04-14T14:06:52Z,2018-04-14T14:06:52Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,107914493,datasette,45057,russss,45057,russss 3c985ec271cce46db8682c2a7466ea1c9a2ed210,Allow custom units to be registered with Pint,2018-04-14T11:27:06Z,2018-04-14T11:27:06Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,107914493,datasette,45057,russss,45057,russss ab85605c6179b21bb0add59b76c1b376d9d248b2,Support units in filters,2018-04-14T10:41:27Z,2018-04-14T10:43:35Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,107914493,datasette,45057,russss,45057,russss 8bfeb984788c7144088c16c5f9126ca7d6af6e93,"Tidy up units support * Add units to exported JSON * Units key in metadata skeleton * Docs",2018-04-14T10:16:09Z,2018-04-14T10:43:34Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,107914493,datasette,45057,russss,45057,russss ec6abc81e433c9bac1b9f085111785fc227e9e34,"Initial units support Add support for specifying units for a column in metadata.json and rendering them on display using [pint](https://pint.readthedocs.io/en/latest/). ref #203",2018-04-13T21:17:59Z,2018-04-14T03:32:53Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw fb988ace7c7e2bee5ac142a0eab22431d0675a77,"Release 0.17 to fix issues with PyPI See https://twitter.com/simonw/status/984862976447414272",2018-04-13T19:04:33Z,2018-04-13T19:04:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b6539ff04502536bd1fa96e3b1430bdafc456826,Releasing v0.16,2018-04-13T18:28:55Z,2018-04-13T18:28:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6e16ed2a632b488a5ca21185c0147b4bca16336b,Removed pathlib dependency (incompatible with Python 3.5),2018-04-13T18:22:15Z,2018-04-13T18:22:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9f28bbe43dc277a3963a12aaae37b5ee3c277207,"Better mechanism for handling errors; 404s for missing table/database New error mechanism closes #193 404s for missing tables/databesse closes #184 Makes pull request #202 unnecessary.",2018-04-13T18:17:22Z,2018-04-13T18:17:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ad6142b67c8f137b001770339510979c5df43d85,long_description in markdown for the new PyPI,2018-04-13T16:03:09Z,2018-04-13T16:04:18Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d08a13314081ae2ce0313a17d3c07c1a7f2d94d5,"Hide Spatialite system tables They were getting on my nerves.",2018-04-11T21:20:25Z,2018-04-12T21:34:47Z,cd9d55c7c0a7cc0ee69155676fd5e9fc6e1b884b,Russ Garrett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,45057,russss,9599,simonw cca8bf36fed9f2d0cedcfa2691a95b7965b7573c,"Allow explain select / explain query plan select Closes #201",2018-04-11T22:39:43Z,2018-04-12T21:32:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bfb4e45a7bcb880758dbc18f66258de26c1d1904,Datasette Publish in readme,2018-04-11T14:43:28Z,2018-04-11T14:43:28Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 46b237c29a195025de81dcd920c6893181229dc5,"datasette inspect now finds primary_keys Closes #195",2018-04-10T00:54:12Z,2018-04-10T00:54:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 57b19f09d1ee24b7369ceca8937ce67df2ca1abc,"Ability to sort using form fields (for mobile portrait mode) We now display sort options as a select box plus a descending checkbox, which means you can apply sort orders even in portrait mode on a mobile phone where the column headers are hidden. Closes #199",2018-04-10T00:30:44Z,2018-04-10T00:34:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 67982b6ecb89485ce26d684f2d038aad4d954d7c,Added Datasette 0.15 to news,2018-04-09T16:01:03Z,2018-04-09T16:01:03Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7706fe0c67aba5cfe905c7906cae9e0c43cd75b2,Releasing v0.15,2018-04-09T15:48:24Z,2018-04-09T15:48:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a290f28caae61b47e76e825c06984f22fc41a694,"table_rows => table_rows_count, filtered_table_rows => filtered_table_rows_count Renamed properties. Closes #194",2018-04-09T05:24:24Z,2018-04-09T05:24:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c1d37fdf2be84fb07155bb1b1f61057444b03300,"Fixed bug with human filter description, refs #189 We were showing this: 201 rows where sorted by sortable_with_nulls We now show this: 201 rows sorted by sortable_with_nulls",2018-04-09T05:07:18Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 23e0fdb0f3196ffa4d8bc4944c8bc9cb0f89129b,"Removed unnecessary enumerate template helper I made this obsolete in d1756d773685ca4f9c5b57fb40e1aa743bc95525 Refs #189",2018-04-09T05:02:19Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b13f0986f26d88938519b07871c961c0b5a97802,"New sortable_columns option in metadata.json to control sort options You can now explicitly set which columns in a table can be used for sorting using the _sort and _sort_desc arguments using metadata.json: { ""databases"": { ""database1"": { ""tables"": { ""example_table"": { ""sortable_columns"": [ ""height"", ""weight"" ] } } } } } Refs #189",2018-04-09T04:58:25Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a87df963a08054ad7a652f0218e70ddb7f9cc8bd,"Error handling for ?_sort and ?_sort_desc Verifies that they match an existing column, and only one or the other option is provided - refs #189 Eses a new DatasetteError exception that closes #193",2018-04-09T04:07:31Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bfb19e3a178ba9b2dab2f90f90a398b54a73d34e,Correctly escape sort-by columns in SQL (refs #189),2018-04-09T02:25:14Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 747a801b50487cd4cc20856d44252ac0a6cb346f,Column headers now link to sort/desc sort - refs #189,2018-04-09T02:08:28Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9f2ec39fbc5481b0fa6585ccdd159ba9fd989bcc,"Current sort order now reflected in human filter description Plus renamed human_description to human_description_en Refs #189",2018-04-09T01:01:23Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f3a3820ff5c5ba9b4af102e65ed1f084b1fe704d,"_sort and _sort_desc parameters for table views Allows for paginated sorted results based on a specified column. Refs #189",2018-04-09T00:06:10Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 29f9a29250169cdb564020109f76e0f4b52afa5d,Total row count now correct even if _next= applied,2018-04-08T23:13:52Z,2018-04-09T05:10:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b2188f044265c95f7e54860e28107c17d2a6ed2e,Use .custom_sql() for _group_count implementation (refs #150),2018-04-08T15:42:56Z,2018-04-08T15:43:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 446d47fdb005b3776bc06ad8d1f44b01fc2e938b,"make html title more readable in query template (#180) tiny tweak to make this easier to visually parse—I think it matches your style in other templates",2018-04-03T15:24:04Z,2018-04-03T15:24:04Z,daa0836007170071f748b575d34c4432f4f43926,Ryan Pitts,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,56477,ryanpitts,9599,simonw 0abd3abacb309a2bd5913a7a2df4e9256585b1bb,"New ?_shape=objects/object/lists param for JSON API (#192) New _shape= parameter replacing old .jsono extension Now instead of this: /database/table.jsono We use the _shape parameter like this: /database/table.json?_shape=objects Also introduced a new _shape called 'object' which looks like this: /database/table.json?_shape=object Returning an object for the rows key: ... ""rows"": { ""pk1"": { ... }, ""pk2"": { ... } } Refs #122",2018-04-03T14:52:54Z,2018-04-03T14:52:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow dd0566ff8eda7fa2f0d92e51809581fae62cffed,"Utility for writing test database fixtures to a .db file python tests/fixtures.py /tmp/hello.db This is useful for making a SQLite database of the test fixtures for interactive exploration.",2018-04-03T13:46:11Z,2018-04-03T13:46:11Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8f0d44d6468a96e9b78487c36da20ddc2ae9d937,"escape_sqlite_table_name => escape_sqlite, handles reserved words It can be used for column names as well as table names. Reserved word list from https://www.sqlite.org/lang_keywords.html",2018-04-03T13:39:50Z,2018-04-03T13:40:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0e5f51adfeff24a120bbdf0e5ac5669b18124400,Three more news items,2018-03-30T07:03:45Z,2018-03-30T07:03:45Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7365c3f51cedffade3428a677e5baeab2f401138,"Compound primary key _next= now plays well with extra filters Closes #190",2018-03-30T06:26:22Z,2018-03-30T06:26:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 31f63d1672a9214962cd7335a2daeabab7c0000e,"Fixed bug with keyset pagination over compound primary keys Closes #190",2018-03-30T05:10:09Z,2018-03-30T05:11:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 89d9fbb91bfc0dd9091b34dbf3cf540ab849cc44,"Database/Table views inherit source/license/source_url/license_url metadata If you set the source_url/license_url/source/license fields in your root metadata those values will now be inherited all the way down to the database and table templates. The title/description are NOT inherited. Also added unit tests for the HTML generated by the metadata. Refs #185",2018-03-27T16:18:32Z,2018-03-27T16:18:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 012fc7c5cd3e9160c9a4c19cc964253e97fb054a,Fix for FTS virtual table counting error,2018-03-21T01:26:04Z,2018-03-21T01:26:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 56623e48da5412b25fb39cc26b9c743b684dd968,News: Datasette Publish,2018-01-17T15:50:10Z,2018-01-17T15:50:10Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 3a56a2cd7eea5d477d5d936b01098be5cba0d98e,"Add metadata, if it exists, to heroku temp dir (#178)",2018-01-14T21:05:16Z,2018-01-14T21:05:16Z,38fee63c62808d1ea42ad2bb2db074f9301d2840,Tony Hirst,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,82988,psychemedia,9599,simonw cac32b0ec4081c00bb6eb9122d61dccfae729199,Initial documentation for pagination,2018-01-10T04:47:03Z,2018-01-10T04:47:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e63f432fe521eb8e196049f86742dc9e20f4dc35,Mention Heroku in docs index page,2018-01-10T04:46:34Z,2018-01-10T04:46:34Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 306e1c6ac4f00cc25d676a6ee660938f5b27427c,Broke up test_app into test_api and test_html,2017-12-15T12:04:17Z,2017-12-15T12:08:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1aad396c9ef46837b224607086c09f48ac921165,"Fixed bug with .json path regular expression I had a table called ""geojson"" and it caused an exception because the regex was matching .json and not \.json",2017-12-13T05:32:43Z,2017-12-13T05:36:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4f08fc092f59b434c11f77b6fb2d29b3255227e5,Updated news,2017-12-12T16:52:19Z,2017-12-12T16:52:19Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 702829f808994d49f11612b35035cfa6842cd91b,Added Datasette 0.14: customization edition to news,2017-12-10T02:10:30Z,2017-12-10T02:10:30Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 68a34bc222af586c75daa5166c937f3f26cfefac,"Deploy to Heroku with Python 3.6.3 Heroku deploys are currently showing the following warning: The latest version of Python 3 is python-3.6.3 (you are using python-3.6.2, which is unsupported). We recommend upgrading by specifying the latest version (python-3.6.3).",2017-12-10T02:01:17Z,2017-12-10T02:01:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2edc652df6d786e4f2c3f073e3567002d248be09,Releasing v0.14,2017-12-10T01:33:24Z,2017-12-10T01:33:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ae940068096ad9ff2f27f4e1784c87788d53eb3d,"No longer include database hash in hyperlinks It was making the unit tests unreliable. Also we do not do that for foreign key links.",2017-12-10T01:31:08Z,2017-12-10T01:31:08Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7db790fbf999d83275a5bde4563d935a58a3d787,"Release notes for 0.14 Also updated ""datasette serve"" help in getting started docs.",2017-12-10T01:24:57Z,2017-12-10T01:26:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 794c3bfcfc03087bbebffb7b228e81aaa8b72183,"Cleaned up row/column display logic, fixed bug Closes #167",2017-12-10T00:59:25Z,2017-12-10T00:59:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7a7e4b2ed8c76c6d002a9d707dbc840f6a2abf7f,"Started unit tests for row/table HTML pages Refs #167 Thanks to the new tests, spotted and fixed a bug where pages that were supposed to have 100 things on them were actually displaying 101.",2017-12-09T23:32:54Z,2017-12-09T23:32:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3f2fed109395179de4145ca1a2675360f1717225,"Fixed bug with HTML labels loop.counter is incorrect - loop.index outputs the correct loop value.",2017-12-09T21:57:36Z,2017-12-09T21:57:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7126d08f10d637c9f1af346324f6f7c0fece8be4,"HTML comment showing which templates were considered for a page Closes #171",2017-12-09T21:47:32Z,2017-12-09T21:47:32Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3c9f889715249d7b0b3bc014529073066a1d478d,"Custom templates for canned queries Closes #170",2017-12-09T21:34:46Z,2017-12-09T21:34:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6bdfcf60760c27e29ff34692d06e62b36aeecc56,"Added Heroku to README, updated --help output examples Refs #157",2017-12-09T18:50:08Z,2017-12-09T18:50:08Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 06645f2e267b16d0c193bb1d1b7ca0cb67227c43,Formatting tweak,2017-12-09T18:41:20Z,2017-12-09T18:41:20Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1c0d93c39b194103e729aed2496d2d24f5ad4850,Fix Python 3.5 test failure,2017-12-09T18:39:16Z,2017-12-09T18:39:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b01304d7070df5a02870ebd204ea093f3742029e,Updated tests I broke in c195ee4,2017-12-09T18:38:04Z,2017-12-09T18:39:19Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3459ab91665d956ff6a25f8e94dcb9c325dd10e5,Formatting fixes,2017-12-09T18:33:14Z,2017-12-09T18:33:14Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow c195ee4d46f2577b1943836a8270d84c8341d138,"package and publish commands now accept --static and --template-dir Example usage: datasette package --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --tag sf-trees --branch master This creates a local Docker image that includes copies of the templates/, extra-css/ and extra-js/ directories. You can then run it like this: docker run -p 8001:8001 sf-trees For publishing to Zeit now: datasette publish now --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --name sf-trees --branch master Example: https://sf-trees-wbihszoazc.now.sh/sf-trees-02c8ef1/Street_Tree_List For publishing to Heroku: datasette publish heroku --static css:extra-css/ --static js:extra-js/ \ sf-trees.db --template-dir templates/ --branch master Closes #157, #160",2017-12-09T18:19:39Z,2017-12-09T18:28:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2cc14a236c601ee2a6b81d8580e70989574baec9,"Ditched short form options for --static and --template-dir The -t clashes with the package --tag option",2017-12-09T03:47:50Z,2017-12-09T03:47:50Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 16dfccb1c569359fa2a03639ada233e7661156af,"Include sha1 hash in /static/app.css URL This means that when Datasette's CSS changes the new CSS will be loaded even though browsers may have cached the previous version. Closes #154",2017-12-09T03:10:09Z,2017-12-09T03:10:09Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 446f4b832272b2286f6f65af19714eb64afb7aa6,"Upgrade to Sanic 0.7.0 (#168) https://github.com/channelcat/sanic/releases/tag/0.7.0",2017-12-09T03:00:33Z,2017-12-09T03:00:33Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 61e3c5a1e904a6e1cbee86ba1494b5cb4b5820cf,"Removed rogue print statement, refs #141",2017-12-08T16:08:00Z,2017-12-08T16:08:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cbfd6b745eabf51295e5a5e0ea57a0f93d63b37d,"Publish should now work if /tmp is on different device Fixes #141",2017-12-08T16:06:24Z,2017-12-08T16:06:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9af2964f6fd4ae876ef8ecd2c14c2ffa61542fdb,"Documentation for metadata.json and ""datasette skeleton"" command http://datasette.readthedocs.io/en/latest/metadata.html Closes #166",2017-12-07T17:19:35Z,2017-12-07T17:19:35Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 05399058062ba6df467c8745b87ece5f6951b39f,"Renamed ""datasette build"" command to ""datasette inspect"" Closes #130",2017-12-07T16:57:31Z,2017-12-07T16:57:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 80bf3afa43e3cb396c7a7c9b168eedbc6fe0fa15,"metadata.json support for per-table/per-database metadata Also added support for descriptions and HTML descriptions. Here's an example metadata.json file illustrating custom per-database and per- table metadata: { ""title"": ""Overall datasette title"", ""description_html"": ""This is a description with HTML."", ""databases"": { ""db1"": { ""title"": ""First database"", ""description"": ""This is a string description & has no HTML"", ""license_url"": ""http://example.com/"", ""license"": ""The example license"", ""queries"": { ""canned_query"": ""select * from table1 limit 3;"" }, ""tables"": { ""table1"": { ""title"": ""Custom title for table1"", ""description"": ""Tables can have descriptions too"", ""source"": ""This has a custom source"", ""source_url"": ""http://example.com/"" } } } } } Closes #165, Refs #164",2017-12-07T16:42:54Z,2017-12-07T16:47:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 515eaa8ccba0603de5b14679b74402f3ddf02bd7,--reload now reloads on metadata changes too,2017-12-07T16:42:28Z,2017-12-07T16:42:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 32cf5a4a72c1c8d46dd302566fdcbf4793f2f927,"New datasette skeleton command for generating metadata.json Closes #164",2017-12-07T06:20:37Z,2017-12-07T06:20:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7e1ba161ec87b02cf7665a73188258f14036f892,"Ability to easily customize _rows_and_columns.html per database table Also added documentation for this. Refs #158, Closes #159.",2017-12-07T06:11:22Z,2017-12-07T06:11:22Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw afbda9e210b6e5eae10a537c121cbb5e92cc8502,"All extra_head blocks now call super This means you can provide a custom base.html template that populates extra_head and any of the default child templates will still render content you included in that block. Refs #158",2017-12-07T05:58:42Z,2017-12-07T05:58:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a2b954e82818d5aa4b4c313d9a687d6a7bdd04b5,Fixed #155,2017-12-07T05:39:47Z,2017-12-07T05:39:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 198b8b2955b9d8a8a80ce850a92a99426c5f161f,"Fixed row page for tables with a primary key Closes #152",2017-12-07T05:23:13Z,2017-12-07T05:23:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 52a5e95d21c9b2b7b50f5bc423e3746ae0538734,"Fixed bug with filter columns Closes #162",2017-12-07T05:05:53Z,2017-12-07T05:05:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 709f4f2798d0490ae048094536bed7e973ea29f4,"Fixed bug with detecting FTS tables Closes #135",2017-12-07T04:54:25Z,2017-12-07T04:54:37Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 67ad77a307c7c264c68d768fa8290997e3b75e77,Re-ordered docs index page,2017-12-06T18:27:50Z,2017-12-06T18:27:50Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f9c32e717f67b55e5d51bb896adc2dcec4489c2d,Linked to csvs-to-sqlite,2017-12-06T15:09:56Z,2017-12-06T15:09:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow f2dece01dba6355a91214ca163561a451941499f,"Documented _sql_time_limit_ms querystring argument Closes #163",2017-12-06T15:06:56Z,2017-12-06T15:06:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7a4da7e5aedff3f61648d5530c4dc34de011ea8a,"Documentation for custom SQL queries http://datasette.readthedocs.io/en/latest/sql_queries.html Closes #20",2017-12-05T17:43:59Z,2017-12-05T17:43:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b7b590b4149563ec6572f577632d7471b84dcb94,"Docs for query.html CSS/template, refs #20",2017-12-05T16:35:14Z,2017-12-05T16:35:14Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a743cdeafca0e5d011c282a53baf753c85d01516,"Canned query support + database/query template refactor Named canned queries can now be defined in metadata.json like this: { ""databases"": { ""timezones"": { ""queries"": { ""timezone_for_point"": ""select tzid from timezones ..."" } } } } These will be shown in a new ""Queries"" section beneath ""Views"" on the database page. As part of this, I refactored the logic for the database index page. It used to combine the functionality for listing available tables and the functionality for executing custom SQL queries in a single template and view. I have split that template out into database.html and query.html and reworked the view to more clearly separate the custom SQL executing code. Refs #20",2017-12-05T16:17:02Z,2017-12-05T16:17:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0cfd7ce59d9018eb07af8f9e20f7d04308c9d01d,"Allow WITH query (previously we required SELECT at start) Fixes #161",2017-12-04T04:51:31Z,2017-12-04T04:51:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e981ac7d4d1e1603257369eb5edba0fc4fdf5ae9,"--static option for datasette serve You can now tell Datasette to serve static files from a specific location at a specific mountpoint. For example: datasette serve mydb.db --static extra-css:/tmp/static/css Now if you visit this URL: http://localhost:8001/extra-css/blah.css The following file will be served: /tmp/static/css/blah.css Refs #160",2017-12-03T16:33:36Z,2017-12-03T16:33:36Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1ecac1a4389b85f7acfad513bf6ab20899862d0b,Fix display of select boxes in Firefox,2017-12-02T20:53:08Z,2017-12-02T20:53:08Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 1feb5735dad538312fac8b76705c05516250967b,Moved getting started into separate docs page,2017-11-30T18:27:00Z,2017-11-30T18:27:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 601934936c9e6e0007aca13547b73c3b36343f7f,"Documentation for custom CSS/JavaScript/Templates Will go live at http://datasette.readthedocs.io/en/latest/custom_templates.html Closes #156",2017-11-30T17:09:48Z,2017-11-30T17:09:48Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cf46b86cf736aadd5147f85bfd6ff44c29655fde,Switch to sphinx_rtd_theme,2017-11-30T16:56:20Z,2017-11-30T16:56:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3cd06729f457d690603b6060dc552b535517ab09,"Ability to over-ride templates for individual tables/databases It is now possible to over-ride templates on a per-database / per-row or per- table basis. When you access e.g. /mydatabase/mytable Datasette will look for the following: - table-mydatabase-mytable.html - table.html If you provided a --template-dir argument to datasette serve it will look in that directory first. The lookup rules are as follows: Index page (/): index.html Database page (/mydatabase): database-mydatabase.html database.html Table page (/mydatabase/mytable): table-mydatabase-mytable.html table.html Row page (/mydatabase/mytable/id): row-mydatabase-mytable.html row.html If a table name has spaces or other unexpected characters in it, the template filename will follow the same rules as our custom CSS classes introduced in 8ab3a169d42d096f - for example, a table called ""Food Trucks"" will attempt to load the following templates: table-mydatabase-Food-Trucks-399138.html table.html It is possible to extend the default templates using Jinja template inheritance. If you want to customize EVERY row template with some additional content you can do so by creating a row.html template like this: {% extends ""default:row.html"" %} {% block content %}

EXTRA HTML AT THE TOP OF THE CONTENT BLOCK

This line renders the original block:

{{ super() }} {% endblock %} Closes #12, refs #153",2017-11-30T16:30:10Z,2017-11-30T16:38:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7ff51598c468deb1d2c0d4c23a808458c9b1e3a2,"git commit -m ""datasette --template-dir=mytemplates/"" argument You can now pass an additional argument specifying a directory to look for custom templates in. Datasette will fall back on the default templates if a template is not found in that directory. Refs #12, #153",2017-11-30T16:05:01Z,2017-11-30T16:05:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ffa77f62b46e1ddf2f848f5da10a1e958323a084,"Removed dependency on sanic-jinja2 I wasn't using any of the functionality it adds on top of raw Jinja2. Refs #12 and #153",2017-11-30T15:51:40Z,2017-11-30T15:51:40Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8ab3a169d42d096f2c7979c6d3d7746618d30f0b,"CSS styling hooks as classes on the body Refs #153 Every template now gets CSS classes in the body designed to support custom styling. The index template (the top level page at /) gets this: The database template (/dbname/) gets this: The table template (/dbname/tablename) gets: The row template (/dbname/tablename/rowid) gets: The db-x and table-x classes use the database or table names themselves IF they are valid CSS identifiers. If they aren't, we strip any invalid characters out and append a 6 character md5 digest of the original name, in order to ensure that multiple tables which resolve to the same stripped character version still have different CSS classes. Some examples (extracted from the unit tests): ""simple"" => ""simple"" ""MixedCase"" => ""MixedCase"" ""-no-leading-hyphens"" => ""no-leading-hyphens-65bea6"" ""_no-leading-underscores"" => ""no-leading-underscores-b921bc"" ""no spaces"" => ""no-spaces-7088d7"" ""-"" => ""336d5e"" ""no $ characters"" => ""no--characters-59e024""",2017-11-30T07:09:54Z,2017-11-30T07:09:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b67890d15d164c7affb2887e5737534628dc6227,"Auto-link column values that look like URLs Refs #153",2017-11-29T17:05:24Z,2017-11-29T17:05:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0120c24927af364304574ab1a58e417094e01c22,"extra_css_urls/extra_js_urls in metadata, refs #153 A mechanism in the metadata.json format for adding custom CSS and JS urls. Create a metadata.json file that looks like this: { ""extra_css_urls"": [ ""https://simonwillison.net/static/css/all.bf8cd891642c.css"" ], ""extra_js_urls"": [ ""https://code.jquery.com/jquery-3.2.1.slim.min.js"" ] } Then start datasette like this: datasette mydb.db --metadata=metadata.json The CSS and JavaScript files will be linked in the of every page. You can also specify a SRI (subresource integrity hash) for these assets: { ""extra_css_urls"": [ { ""url"": ""https://simonwillison.net/static/css/all.bf8cd891642c.css"", ""sri"": ""sha384-9qIZekWUyjCyDIf2YK1FRoKiPJq4PHt6tp/ulnuuyRBvazd0hG7pWbE99zvwSznI"" } ], ""extra_js_urls"": [ { ""url"": ""https://code.jquery.com/jquery-3.2.1.slim.min.js"", ""sri"": ""sha256-k2WSCIexGzOj3Euiig+TlR8gA0EmPjuc79OEeY5L45g="" } ] } Modern browsers will only execute the stylsheet or JavaScript if the SRI hash matches the content served. You can generate hashes using www.srihash.org",2017-11-29T02:38:15Z,2017-11-29T02:38:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 36701c85928b1eb785527ffd11cd941b31087ea3,datasette build now takes --load-extension,2017-11-26T23:01:53Z,2017-11-26T23:02:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw de6c62ed9a30b12b22fded13d492b1f193cfc728,Load SQLite extensions inside .inspect() too,2017-11-26T22:51:42Z,2017-11-26T23:02:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 23a45758185c99b6c3b8cf07d687aa5281282196,Added News section to Readme,2017-11-25T21:40:43Z,2017-11-25T21:40:43Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow efb82da927386a217ec3d4464251eb65efe3924c,datasette => Datasette,2017-11-25T03:46:24Z,2017-11-25T03:46:24Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow c160f15c3937f8fbe581276f811e8c58f9137bb1,Release version 0.13,2017-11-25T03:33:39Z,2017-11-25T03:33:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 17fee0cc1411b69d66d4401120f96c5087b16841,"Automatically deploy tags as PyPI releases https://docs.travis-ci.com/user/deployment/pypi/",2017-11-25T03:02:55Z,2017-11-25T03:32:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0d3479ba320e5a5d15f029838744c5219a9e2987,Release notes for 0.13,2017-11-25T03:32:24Z,2017-11-25T03:32:24Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow e3dd2483bb78f3d4b80db6de5475ceb163155b80,Fixed quoting on foreign-key links to tables with spaces in name,2017-11-25T00:05:28Z,2017-11-25T00:05:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c5c923d93c26f312b713b81c8d08db5c3279a23a,Don't incorrectly detect VIEWs as supporting FTS,2017-11-24T22:51:00Z,2017-11-24T22:51:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a81c62d8481d8cf97be5c5c61931e5e5bea2fbf3,"Tweaked custom SQL results display Closes #149",2017-11-24T22:41:31Z,2017-11-24T22:41:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a802cbee74d8c83876375890d914252f1adb1c96,"Search now applies to current filters Combined search into the same form as filters. Closes #133",2017-11-24T22:22:57Z,2017-11-24T22:29:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8a37baba14bc00d782fb6701d1f32e1687f10305,"Much tidier design for table view header Closes #147",2017-11-24T22:02:39Z,2017-11-24T22:02:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a53d09d91910e4af5552a6c1e73d1468a67b7962,"Show count of matching rows on table view Closes #127",2017-11-24T22:01:53Z,2017-11-24T22:01:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ab32bd64272886440c92c2fff846faa35b761158,"Fixed bug with params other than p0 p1 and upwards were not correctly extracted.",2017-11-24T21:55:00Z,2017-11-24T21:55:00Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b45077839100a57adbc284ad5bf555002da819e8,"Added column__not=blah filter Closes #148",2017-11-23T22:09:50Z,2017-11-23T22:09:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4b7596ee5caf68c9b1acd17866f88a57b23db3c4,"Row page now resolves foreign keys Closes #132",2017-11-23T21:51:16Z,2017-11-23T21:51:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a30c5b220c15360d575e94b0e67f3255e120b916,"Fixed bug on rows page, added unit test Rows page for rows that linked to the same table in more than one columns were display incorrectly. Fixed that and added a test. Also introduced /db/table/row-pk.json?_extras=foreign_key_tables This is used by the new unit test, but is the first example of a new ?_extras=comma-separated-list pattern I am introducing.",2017-11-23T21:09:45Z,2017-11-23T21:09:45Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 77088876813fea833b6fc3eb588ecc9b02f0a7d7,Tweaked styling of submit buttons and search box,2017-11-23T20:39:26Z,2017-11-23T20:39:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ef3eacf622e69723d48ab1ad597645770a7361db,Select option for removing filters,2017-11-23T20:32:54Z,2017-11-23T20:32:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 22b91dd95be59148c02991a1bb56df6d82f45b6f,"Further tweaks to select/input filter styling Refs #86 - thanks for the help, @natbat!",2017-11-23T20:05:51Z,2017-11-23T20:05:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a74e455cede3070db4138500ba0d3f354d58c436,"Custom styled select boxes for filters Refs #86",2017-11-23T15:58:55Z,2017-11-23T15:58:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2f97834d0e47fdcd160bab6a3eb1ffd2f836771d,NBSP before ID display,2017-11-23T04:45:04Z,2017-11-23T04:45:04Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 38dc1ef73b13e5ae9f05ca5e7c86fa3eb639e628,Show linked foreign key in table cells,2017-11-23T04:43:27Z,2017-11-23T04:43:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 72e328dccf6def3328290a1a6cd7e7ab22ab0de2,Removed rogue print statement,2017-11-23T04:40:15Z,2017-11-23T04:40:15Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 82c20ea36eb86fc68a48f219e96305477864d589,Added '- pick a column -' as first option,2017-11-23T04:39:53Z,2017-11-23T04:39:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0071b5d6f5c97b9896dbcfc8f95ca0db8652a18a,"Added UI for editing table filters Refs #86",2017-11-23T04:33:55Z,2017-11-23T04:33:55Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 53534b6e9d3956cdb6aa9c062d2beffdd89fa7d9,"Even more complicated redirect scheme This: ?_filter_column_1=name&_filter_op_1=contains&_filter_value_1=hello &_filter_column_2=age&_filter_op_2=gte&_filter_value_2=12 Now redirects to this: ?name__contains=hello&age__gte=12 This is needed for the filter editing interface, refs #86",2017-11-23T04:03:46Z,2017-11-23T04:03:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c8e7c85fd3db46081d61d6071ab1140e8291325e,Updated test_database_page test,2017-11-22T20:25:51Z,2017-11-22T20:25:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1c8638c30ae9b1e59dd045cf6d0b20e6dc630e5b,"Hide FTS-created tables on index pages Closes #129",2017-11-22T20:12:15Z,2017-11-22T20:18:57Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f96e55bce55d26c4d5b198edc536e1b8e9bbea43,"Fix pytest version conflict https://travis-ci.org/simonw/datasette/jobs/305929426 pkg_resources.VersionConflict: (pytest 3.2.1 (/home/travis/virtualenv/python3.5.3/lib/python3.5/site-packages), Requirement.parse('pytest==3.2.3'))",2017-11-22T20:15:29Z,2017-11-22T20:17:51Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fa8eb0bf1b113ab17ede9cd107b7c3bd5cde39c3,Run unit tests against both Python 3.5 and 3.6,2017-11-22T17:43:52Z,2017-11-22T17:43:52Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow fb505de11c882fa7f2522160509172561b5b8270,"Back-ported format strings for compatibility with Py 3.5 Also fixed a encoding error where Heroku --json return needs to be treated as UTF8",2017-11-22T17:42:29Z,2017-11-22T17:42:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a9b9d427915adc133814a022e554f042d5d82d4d,"Mark FTS-related tables as 'hidden' in inspect() Refs #129",2017-11-20T16:57:41Z,2017-11-21T20:55:59Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e47117ce1d15f11246a3120aa49de70205713d05,"Add publish to heroku support (merge pull request #104 from jacobian) datasette publish heroku mydb.db",2017-11-21T20:55:04Z,2017-11-21T20:55:04Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow de42240afd1e3829fd21cbe77a89ab0eaab20d78,Some bug fixes.,2017-11-21T18:51:58Z,2017-11-21T18:51:58Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian 75450abbe8c08526619798aef62133334c935ae9,Merge branch 'master' into publish-heroku,2017-11-21T18:19:42Z,2017-11-21T18:19:42Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian 1f79be7e4e203c7d494df21224f77e6a83d63879,More error checking and docs,2017-11-21T18:10:48Z,2017-11-21T18:10:48Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian 0331666e346c68b86de4aa19fbb37f3a408d37ca,"?_search=x now works directly against fts virtual table Closes #135",2017-11-20T06:18:07Z,2017-11-20T06:18:07Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 771b0ee34789750fdec176c3129eeaa6a6523041,"Initial implementation of ?_group_count=column URL shortcut for counting rows grouped by one or more columns. ?_group_count=column1&_group_count=column2 works as well. SQL generated looks like this: select ""qSpecies"", count(*) as ""count"" from Street_Tree_List group by ""qSpecies"" order by ""count"" desc limit 100 Or for two columns like this: select ""qSpecies"", ""qSiteInfo"", count(*) as ""count"" from Street_Tree_List group by ""qSpecies"", ""qSiteInfo"" order by ""count"" desc limit 100 Refs #44 Still todo: clean up code a bunch (it currently fakes being a 'view'), get foreign key expansion working.",2017-11-20T06:04:13Z,2017-11-20T06:04:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b4e6211a9729b5df340c6e210177ee86098b8480,Refactored filter logic and added human descriptions - refs #86,2017-11-20T06:03:24Z,2017-11-20T06:03:24Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 523c6f9e3a2cb9a9b5627ee2951147110e91d499,Fixed bug with FTS against tables with hyphens in the name,2017-11-20T05:59:53Z,2017-11-20T05:59:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a5881e105a02830d26f07e98177248d5910893da,"?_filter_column=col&_filter_op=isnull__1 redirect if filter_op contains a __ the value is set to the right hand side. e.g. ?_filter_column=col&_filter_op=isnull__1&_filter_value=x Redirects to: ?col__isnull=1 Refs #86",2017-11-19T20:33:30Z,2017-11-19T20:33:30Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 386fb11d42767039bb2b389ce98996673d780a42,"?_filter_column=col&_filter_op=op&_filter_value=value redirect Part of implementing the filters UI (refs #86) - the following: /trees/Trees?_filter_column=SiteOrder&_filter_op=gt&_filter_value=2 Now redirects to this; /trees/Trees?SiteOrder__gt=2",2017-11-19T20:25:29Z,2017-11-19T20:25:29Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ddc808f387be62cf776b815bb0eda77616c412ae,"Added --build=master option to datasette publish and package The `datasette publish` and `datasette package` commands both now accept an optional `--build` argument. If provided, this can be used to specify a branch published to GitHub that should be built into the container. This makes it easier to test code that has not yet been officially released to PyPI, e.g.: datasette publish now mydb.db --branch=master",2017-11-19T18:20:17Z,2017-11-19T18:20:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw eed6a0fe36120948f8bbc0596185300eadc3d2f4,"Implemented ?_search=XXX + UI if a FTS table is detected Closes #131",2017-11-19T16:59:26Z,2017-11-19T16:59:26Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f59c840e7db8870afcdeba7a53bdea07bb674334,Show row count for custom SQL queries,2017-11-19T15:54:50Z,2017-11-19T15:54:50Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 80ada4dbb3b7a19e6a0480570f38758d17b87f8b,"Added 'datasette --version' support Using http://click.pocoo.org/5/api/#click.version_option",2017-11-19T05:59:16Z,2017-11-19T05:59:16Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1b04662585ea1539014bfbd616a8112b650d5699,"Table views now show expanded foreign key references, if possible If a table has foreign key columns, and those foreign key tables have label_columns, the TableView will now query those other tables for the corresponding values and display those values as links in the corresponding table cells. label_columns are currently detected by the inspect() function, which looks for any table that has just two columns - an ID column and one other - and sets the label_column to be that second non-ID column.",2017-11-18T03:09:32Z,2017-11-18T03:15:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6a007f632258e6cfd3c5e9e229683deb0efd87be,Row pages show incoming foreign key relationships,2017-11-17T18:15:44Z,2017-11-18T03:15:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7feb746efe8c5ed80f477475acc546370bae89e4,Fixed bug where 0 values were showing up blank,2017-11-17T18:14:01Z,2017-11-18T03:15:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6d39429daa4655e3cf7a6a7671493292a20a30a1,"Don't prevent tabbing to `Run SQL` button (#117) See comment in #115",2017-11-18T00:53:42Z,2017-11-18T00:53:42Z,106fe7fbf8b80a01038e265a137b3b703422db48,Robert Gieseke,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,198537,rgieseke,9599,simonw 54d58ef690f6123415d3a250951946e4431ecfb0,Merge branch 'master' into publish-heroku,2017-11-17T21:36:50Z,2017-11-17T21:36:50Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian 6eb23d21435eece1ec3c3fe996a9c36b6b967fc7,Moved `datasette build` to a post_compile hook.,2017-11-17T20:09:01Z,2017-11-17T20:09:01Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian 0b702f3679a2ffd4e3efb5c34b9fe30221172ccb,"Fixed weird edge-case with foreign key detection It turns out it is possible for a SQLite table to define a foreign key relationship to a table that does not actually exist We should still be able to handle these databases.",2017-11-17T16:18:26Z,2017-11-17T16:18:26Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 45e502aace6cc1198cc5f9a04d61b4a1860a012b,"Added unit tests for inspect() foreign key detection Used them to fix a bug with it. Refs #85",2017-11-17T16:08:11Z,2017-11-17T16:08:11Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e16ca1169cc49fbb5b0325564d248becad3a4b7f,"Refactored table column/row display logic Simplified the template and made the way for upcoming foreign key work. Refs #85 Also fixed   bug on database page - closes #113",2017-11-17T15:39:36Z,2017-11-17T15:39:36Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 084350b0f1343d988928cae63cfedbeb6205e25e,"Switched to gather_request=False for Sanic tests Gets rid of those ugly _, response = lines.",2017-11-17T14:53:37Z,2017-11-17T14:53:37Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw eda848b37f8452dba7913583ef101f39d9b130ba,Add keyboard shortcut to execute SQL query (#115),2017-11-17T14:22:55Z,2017-11-17T14:22:55Z,106fe7fbf8b80a01038e265a137b3b703422db48,Robert Gieseke,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,198537,rgieseke,9599,simonw f3445e2d13e2c38bfbf75f35c2aa3e50df0040f1,Install python3-dev rothar than python-dev,2017-11-17T14:18:49Z,2017-11-17T14:18:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1a6cfcc10f9abcc743b45437996c7264cc2a57b2,"Added a .dockerignore Figured this would be useful while testing out 03572ae3557",2017-11-17T14:18:23Z,2017-11-17T14:18:23Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 03572ae35573c2ea802a540624ce116f540ba1ac,"Allow --load-extension to be set via environment variable I tesed this by first building and running a container using the new Dockerfile from #114: docker build . docker run -it -p 8001:8001 6c9ca7e29181 /bin/sh Then I ran this inside the container itself: apt update && apt-get install wget -y \ && wget http://www.gaia-gis.it/spatialite-2.3.1/test-2.3.sqlite.gz \ && gunzip test-2.3.sqlite.gz \ && mv test-2.3.sqlite test23.sqlite \ && datasette -h 0.0.0.0 test23.sqlite I visited this URL to confirm I got an error due to spatialite not being loaded: http://localhost:8001/test23-c88bc35?sql=select+ST_AsText%28Geometry%29+from+HighWays+limit+1 Then I checked that loading it with `--load-extension` worked correctly: datasette -h 0.0.0.0 test23.sqlite \ --load-extension=/usr/lib/x86_64-linux-gnu/mod_spatialite.so Then, finally, I tested it with the new environment variable option: SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/mod_spatialite.so \ datasette -h 0.0.0.0 test23.sqlite Running it with an invalid environment variable option shows an error: $ SQLITE_EXTENSIONS=/usr/lib/x86_64-linux-gnu/blah.so datasette \ -h 0.0.0.0 test23.sqlite Usage: datasette -h [OPTIONS] [FILES]... Error: Invalid value for ""--load-extension"": Path ""/usr/lib/x86_64-linux-gnu/blah.so"" does not exist. Closes #112",2017-11-17T14:13:35Z,2017-11-17T14:13:35Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ed2b3f25beac720f14869350baacc5f62b065194,"add support for ?field__isnull=1 (#107) * add support for ?field__isnull=1 * Add unit test and conditional formatting for ?field__isnull",2017-11-17T13:29:22Z,2017-11-17T13:29:22Z,19245be93da11be3d5e72991646660a06a9d3449,Ray N,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,3433657,raynae,9599,simonw b9af49be6c68d6e551c1ae23132711f22cb7c63c,"Fix case for Sanic dependency On PyPI it has a capital letter: https://pypi.python.org/pypi/Sanic I think this is why the list of ""Requires Distributions"" on https://pypi.python.org/pypi/datasette links to all of the other dependencies but does not link to Sanic.",2017-11-17T13:26:05Z,2017-11-17T13:26:05Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 8b4c600d98b85655b3a1454ebf64f858b5fe54c8,"Add spatialite, switch to debian and local build (#114)",2017-11-17T03:50:51Z,2017-11-17T03:50:51Z,959507cc7596b555bf4292e84f335b02cca843f8,Ariel Núñez,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,54999,ingenieroariel,9599,simonw b7c4165346ee8b6a6fbd72d6ba2275a24a8a8ae3,"Added --load-extension argument to datasette serve Allows loading of SQLite extensions. Refs #110.",2017-11-16T16:46:04Z,2017-11-16T16:48:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9e27b2a0ba45d92e198fcbac8641da41a62236b8,Add example of named parameter UI to the release notes,2017-11-16T16:09:07Z,2017-11-16T16:46:25Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5bfb23b949a7f01e4dfc1d7ac698a6ec8e8c97fd,"Added Read The Docs badge Closes #109",2017-11-16T16:13:55Z,2017-11-16T16:13:55Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow a9138f044a4d73256c2244243d4e2908d77d218e,Added date to most recent changelog entry,2017-11-16T15:40:43Z,2017-11-16T15:40:43Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 51bdd67691bd69082ae7690af8b905f06050ee80,Changelog for 0.12 release,2017-11-16T15:37:46Z,2017-11-16T15:37:46Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 01e0c3fa18cd0dd7970e208790ffd683a420c924,"Fixed   bug   was showing for all None values in table cells, thanks to the autoescaping change introduced in 82261a638bd35c9",2017-11-16T15:29:52Z,2017-11-16T15:29:52Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 228bce83a37b4bee633f674b802aee13fe5b2f44,"Added __version__, bumped it to 0.12 Closes #108",2017-11-16T15:20:54Z,2017-11-16T15:20:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e6ca88588395a9b8266c0e14121668990d34ff67,"Added initial docs, including a changelog Docs initialized using this helpful guide: http://docs.readthedocs.io/en/latest/getting_started.html I used https://pypi.python.org/pypi/gitchangelog to kick-start the changelog. Closes #99 Refs #109",2017-11-16T15:11:00Z,2017-11-16T15:11:00Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9199945a1bcec4852e1cb866eb3642614dd32a48,"Fixed 500 on views page Bug introduced in a4af532a31ece7095d710a1f5abb39ea93fe003f Refs 85",2017-11-16T14:46:49Z,2017-11-16T14:46:49Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 82261a638bd35c9d69a9582a898cf4dab374f76c,"Turn on auto-escaping in Jinja We had XSS holes! Since we don't do cookies or authentication they shouldn't cause any actual harm, but still really not good. https://github.com/pallets/jinja/issues/528",2017-11-16T01:59:42Z,2017-11-16T01:59:42Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a4af532a31ece7095d710a1f5abb39ea93fe003f,"Include foreign key info in inspect() output Refs #85",2017-11-16T01:34:32Z,2017-11-16T01:34:32Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5d8084a28578da2aefa79ad81df9d82e2c265666,"Added a UI for editing named parameters Fixes #96",2017-11-16T01:32:48Z,2017-11-16T01:32:48Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9f47b6e4d80f0f393cf0167a6f48280de6847d1d,"Pin to specific Jinja version Closes #100",2017-11-16T00:14:07Z,2017-11-16T00:14:07Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f48cb705d816563e7c8f1af72e67c5e36cc81dab,"Initial cut at `datasette publish heroku` Rather gross, but proves that it works.",2017-11-15T19:53:00Z,2017-11-15T19:53:00Z,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,2035bd0fdcffb9aa3b95f21a684665482bd8c80f,Jacob Kaplan-Moss,107914493,datasette,21148,jacobian,21148,jacobian f45ca30f91b92ac68adaba893bf034f13ec61ced,"Fixed bug with datasette package --metadata Closes #84",2017-11-15T05:18:29Z,2017-11-15T05:18:29Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ea183b2ae3d557a370628e236fe606717c704e2a,"Default to 127.0.0.1 not 0.0.0.0 Closes #98",2017-11-15T05:08:46Z,2017-11-15T05:08:46Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7fe1e8b4827aa1d7e72825da563effdf44ae7233,"Added extra metadata options to publish and package commands You can now run these commands like so: datasette now publish mydb.db \ --title=""My Title"" \ --source=""Source"" \ --source_url=""http://www.example.com/"" \ --license=""CC0"" \ --license_url=""https://creativecommons.org/publicdomain/zero/1.0/"" This will write those values into the metadata.json that is packaged with the app. If you also pass --metadata= that file will be updated with the extra values before being written into the Docker image. Closes #92",2017-11-15T05:02:11Z,2017-11-15T05:02:11Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 86755503d26b4a83c2ec59f08ec1b8de791fd954,Initial add simple prod ready Dockerfile refs #57 (#94),2017-11-15T03:08:04Z,2017-11-15T03:08:04Z,2d9fb90ab683bec9ad9389c88bb10f454886e986,Andrew Cutler,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,247192,macropin,9599,simonw 9cb69cbd45ed8fd93190c47060c19abec80bc4ef,"New ?_sql_time_limit_ms=10 argument to database and table page Allows callers to opt for a lower time limit. Closes #95",2017-11-15T02:55:10Z,2017-11-15T02:55:10Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0b8c1b0a6da9cb8ac0d28cc90dd783de87554036,"Test for sql_time_limit_ms + sqlite_functions mechanism Added a unit test for the sql_time_limit_ms option. To test this, I needed to add a custom SQLite sleep() function. I've added a simple mechanism to the Datasette class for registering custom functions. I also had to modify the sqlite_timelimit() function. It makes use of a magic value, N, which is the number of SQLite virtual machine instructions that should execute in between calls to my termination decision function. The value of N was not finely grained enough for my test to work - so I've added logic that says that if the time limit is less than 50ms, N is set to 1. This got the tests working. Refs #95",2017-11-15T02:41:03Z,2017-11-15T02:43:34Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4f7281af8ce421d2f8c57ba43108261ba89d2cd6,"Apply a default height to CodeMirror Makes it a bit more obvious that it's an editable textarea even if the SQL in it is only one line long.",2017-11-15T02:04:04Z,2017-11-15T02:04:04Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cbb59e3801868e1c284ad50b66343cd4358e516c,Handle tables with names that start with digits,2017-11-14T18:13:37Z,2017-11-15T02:03:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8252daa4c14d73b4b69e3f2db4576bb39d73c070,SQL syntax highlighting with Codemirror (#89),2017-11-15T02:03:00Z,2017-11-15T02:03:00Z,842b8095c01bad0cc95c5ee2e93d83bf3945daa0,Tom Dyson,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,15543,tomdyson,9599,simonw 075d422c0a1c70259188dfbd940538c67419694a,Fixed typo,2017-11-14T05:28:02Z,2017-11-14T05:28:02Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 98ae6d6a4085d67a62c129e69e2a9a611f26502d,Added link to examples,2017-11-14T05:27:21Z,2017-11-14T05:27:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow b0f3d4e375655f0764f3137dbcede324f9bbc0cb,Version 0.11,2017-11-14T01:48:22Z,2017-11-14T01:48:22Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fc7c04fe0b2f9daf8875ccaa9625ec80d8eeafe2,"Added 'datasette publish now --force' option This calls now with --force - which is useful as it means you get a fresh copy of datasette even if now has already cached that docker layer.",2017-11-14T01:48:03Z,2017-11-14T01:48:03Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 00527e5c629d9dae56d6228891b40105ff0e34c6,Enable --cors by default in containers,2017-11-14T01:23:22Z,2017-11-14T01:23:22Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5928c11ee798a232aa4096706cd47e639d1c9fc2,Version 0.10,2017-11-14T00:45:23Z,2017-11-14T00:45:23Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50e817801f90d07468ea394ef562d55d8940d124,"Fixed #83 Turns out we had a redirect bug as well.",2017-11-14T00:44:08Z,2017-11-14T00:44:43Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bdfb6d4f1359e98e127a3514248fd19b27b574e9,Fixed package output example,2017-11-13T22:18:44Z,2017-11-13T22:18:44Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 06a826c3188af82f27bb6b4e09cc89b782d30bd6,":fire: Removes DS_Store (#81) * :fire: Removes .DS_Store Signed-off-by: Jeff Triplett * :snowflake: Adds .DS_Store to gitignore Signed-off-by: Jeff Triplett ",2017-11-13T22:16:54Z,2017-11-13T22:16:54Z,207bb2132044fa5a4fe28a579f7588c2eee6e391,Jeff Triplett,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,50527,jefftriplett,9599,simonw 44a199a0625b695492b2a8605030dc61191f39cb,"Stop using sqlite WITH RECURSIVE in our tests The version of Python 3 running in Travis CI doesn't support this.",2017-11-13T22:15:21Z,2017-11-13T22:15:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d75f423b6fcfc074b7c6f8f7679da8876f181edd,Release 0.9,2017-11-13T22:00:39Z,2017-11-13T22:00:53Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1e698787a4dd6df0432021a6814c446c8b69bba2,"Added --sql_time_limit_ms and --extra-options The serve command now accepts --sql_time_limit_ms for customizing the SQL time limit. The publish and package commands now accept --extra-options which can be used to specify additional options to be passed to the datasite serve command when it executes inside the rusulting Docker containers.",2017-11-13T21:58:34Z,2017-11-13T22:00:53Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 452c5f047ea229dbb444e271183a55381bb4abce,"Added Travis CI badge to README Closes #77",2017-11-13T21:24:14Z,2017-11-13T21:24:14Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow fe279ab7b4ae99dab295d5cf4d39ad06d782997e,"v0.8 - added PyPI metadata, ready to ship",2017-11-13T21:17:34Z,2017-11-13T21:17:34Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 847f3e0c92b5ac17200b2090bedcc5443bb08e4b,"Implemented offset/limit pagination for views Closes #70",2017-11-13T21:10:55Z,2017-11-13T21:10:55Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7dac1c05cd40f89a5af34763e4d5614c750575c2,"Improved pagination Closes #78",2017-11-13T20:34:56Z,2017-11-13T20:34:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d76412668f8c12572eb7de57ccb72f1e50306177,Removed rogue middot,2017-11-13T20:34:39Z,2017-11-13T20:34:39Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 79216bac12668eb90ccad65086d4f129476a3969,Added some breathing room to the footer,2017-11-13T19:38:20Z,2017-11-13T19:38:20Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8252e71da461c425e625e1c3e4ee0bd92ea4cbf0,"Limit on max rows returned, controlled by --max_returned_rows option If someone executes 'select * from table' against a table with a million rows in it, we could run into problems: just serializing that much data as JSON is likely to lock up the server. Solution: we now have a hard limit on the maximum number of rows that can be returned by a query. If that limit is exceeded, the server will return a `""truncated"": true` field in the JSON. This limit can be optionally controlled by the new `--max_returned_rows` option. Setting that option to 0 disables the limit entirely. Closes #69",2017-11-13T19:33:01Z,2017-11-13T19:33:01Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6b3b05b6db0d2a7b7cec8b8dbb4ddc5e12a376b2,Released 0.7,2017-11-13T18:42:30Z,2017-11-13T18:42:30Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e838bd743d31358b362875854a0ac5e78047727f,Added README and improved help for 'datasette serve',2017-11-13T18:41:53Z,2017-11-13T18:41:59Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 20d41c8e8e84ab3e8bdb5cca9bd9799da09794ad,"publish now takes a required publisher argument - only current option is 'now' Closes #76",2017-11-13T18:40:51Z,2017-11-13T18:40:51Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4fec50597a8684756bc96d4a69b6fab809ec6cf6,Include license/source in JSON output if provided,2017-11-13T18:39:25Z,2017-11-13T18:39:25Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 97c4bf4271495f8f711926ec44d8def3f2941379,"Added --cors argument to enable CORS Closes #75",2017-11-13T18:17:42Z,2017-11-13T18:17:42Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 495407acefe1e6976316aef88ae0e4c1d48ab421,"Force initial .inspect() before starting server Otherwise there is a long pause on the first request made.",2017-11-13T18:03:52Z,2017-11-13T18:03:52Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4143e3b45c16cbae5e3e3419ef479a71810e7df3,"New command: datasette package - packages a docker container Example usage: datasette package fivethirtyeight.db \ --tag fivethirtyeight \ --metadata=538-metadata.json This will create a temporary directory, generate a Dockerfile, copy in the SQLite database and metadata file, then build that as a new docker image and tag that in your local Docker repository as fivethirtyeight:latest. You can then run the image like so: docker run -p 8006:8001 fivethirtyeight This will expose port 8001 in the container (the default) as port 8006 on your host. Closes #67",2017-11-13T16:13:38Z,2017-11-13T16:17:35Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3ef35ca8b4369af6a8bcdd9e5cfbb5f3a7d17cf8,"serve and publish commands now take a --metadata option If provided, the --metadata option is the path to a JSON file containing metadata that should be displayed alongside the dataset. datasette /tmp/fivethirtyeight.db --metadata /tmp/metadata.json Currently that metadata format looks like this: { ""title"": ""Five Thirty Eight"", ""license"": ""CC Attribution 4.0 License"", ""license_url"": ""http://creativecommons.org/licenses/by/4.0/"", ""source"": ""fivethirtyeight/data on GitHub"", ""source_url"": ""https://github.com/fivethirtyeight/data"" } If provided, this will be used by the index template and to populate the common footer. The publish command also accepts this argument, and will package any provided metadata up and include it with the resulting Docker container. datasette publish --metadata /tmp/metadata.json /tmp/fivethirtyeight.db Closes #68",2017-11-13T15:20:02Z,2017-11-13T15:20:02Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ff2fb573cd8773206a6df83229620928056e2ee2,"datasette publish --name=now-accepts-name Fixes #72",2017-11-13T02:12:21Z,2017-11-13T02:12:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2bbe9ca34a701191e3bf4e97943b7503a50ab548,Support OPTIONS requests for CORS,2017-11-13T02:11:52Z,2017-11-13T02:11:52Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d01370f1660d0b0360248105cd43060dca31f70f,Show SQL and params if table has them applied,2017-11-12T23:21:39Z,2017-11-12T23:21:39Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 26370b14d862a5d2dc32b858bdf627f2a5ec3209,"Handle table names with slashes in them e.g. https://datasette-wdlexdiaoz.now.sh/fivethirtyeight-75d605c/bob-ross%2Felements-by-episode.csv?CABIN=1&BUSHES=1&CLOUDS=1",2017-11-12T23:17:00Z,2017-11-12T23:17:00Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4c66097d581c3970a23530598c4fe98b09f422ee,"datasette publish now works with full paths e.g. datasette publish /tmp/blah/database.db now does the right thing",2017-11-12T23:16:24Z,2017-11-12T23:16:24Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw efecae5a11617eb576d475192384339fcdb03189,"Full path to database now works e.g. datasette /tmp/blah.db Previously this failed because it did not open with full path.",2017-11-12T22:23:41Z,2017-11-12T23:01:29Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw db3fa4abfac366184e97fb313b36d3429e5b937a,"Views no longer attempt to link to records Closes #54",2017-11-12T21:29:26Z,2017-11-12T21:29:26Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 59a616ca5c99301a254d86ab097b6ce8f7b30fb6,"Move view SQL to bottom of the page Now consistent with tables",2017-11-12T21:25:34Z,2017-11-12T21:25:34Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 22851ed9f0541904f5c3fca7ddbd7add10a75d39,"Table page now shows CREATE TABLE at bottom Closes #66",2017-11-12T21:16:59Z,2017-11-12T21:16:59Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 666aa032530189d585dd61d0e9851e9fe63ee598,"Improved error handling Invalid SQL now shows a special error.html template, and is covered by tests.",2017-11-12T21:16:15Z,2017-11-12T21:16:15Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ff2ab9dc7d82f70daae10f5b0cde87d74704f910,"Views now show their SQL, are handled a bit better Refs #66",2017-11-12T20:31:46Z,2017-11-12T20:32:25Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f4794df07032083fbd3d4829e17b3fd2a54b779a,Added border-right to table cells,2017-11-12T20:19:18Z,2017-11-12T20:19:18Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8acdc2fd14c0f7251e1e3fd592c53b3152f5256c,"Test for table with space in name Tests code in b51836f8463ef65bc947f0a7b6e60167cb7154cf",2017-11-12T20:08:32Z,2017-11-12T20:08:32Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b51836f8463ef65bc947f0a7b6e60167cb7154cf,"Fixed bug with tables with spaces in their name The new database index page was erroring.",2017-11-12T20:02:45Z,2017-11-12T20:02:45Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 59580d02da80eb963d5bce897c539c6489042025,"Implemented custom SQL via textarea Closes #65",2017-11-12T02:35:35Z,2017-11-12T02:35:35Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fd3a33989aaf2533c4928de3b251c24614003f1e,"Implemented new database view and template Closes #53 - see comments there for screenshots.",2017-11-12T01:50:21Z,2017-11-12T01:50:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2366a016f252f2220eb777938a9da4b0de179063,"Added links to .json and .jsono representations Closes #62",2017-11-11T22:40:44Z,2017-11-11T22:40:44Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fa42a56c6a0fa62529eabf2d363bd3008ce23094,"Bulked out table test a bit I'm closing #50 - more tests will be added in the future, but the framework is neatly in place for them now.",2017-11-11T22:22:47Z,2017-11-11T22:22:47Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e9e1def4c0cc49c96ed0b0d2bbc3ae81353ed2bb,"Revised JSON design a bit Closes #63",2017-11-11T22:20:00Z,2017-11-11T22:20:00Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e4bf66d9b075190bf96c1f85eaccd7464915f249,"Added header with breadcrumbs and footer Also cleaned up titles on various pages. Closes #61",2017-11-11T20:36:20Z,2017-11-11T20:36:20Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 40a563ebac72f46a1b2dc498a25520c429bca6d6,"Reworked metadata building options Building metadata is now optional. If you want to do it, do this: datasette build *.db --metadata=metadata.json Then when you run the server you can tell it to read from metadata: datasette serve *.db --metadata=metadata.json The Dockerfile generated by datasette publish now uses this mechanism. Closes #60",2017-11-11T20:10:51Z,2017-11-11T20:11:51Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ad8b5d3bd23a7b306b8843d7de53a7c918ddb74f,"JSON version of our homepage Now available at http://localhost:8006/.json Tested by tests added in 407795b61217205625f2d4e084afbf69f1db781b",2017-11-11T17:49:47Z,2017-11-11T17:49:47Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 407795b61217205625f2d4e084afbf69f1db781b,"Initial unit tests against our Sanic app Refs #50 I had to disable the build metadata function to get these tests to work sensibly. I need to completely rethink how that mechanism works.",2017-11-11T17:47:59Z,2017-11-11T17:47:59Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3280972c891633c6015fa55bbfd094420b4f0233,"Fixed tests I broke earlier Broke these tests in 21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19",2017-11-11T16:52:17Z,2017-11-11T16:52:17Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3863a30b5d18204b4c77518f1880a1f705e929db,"publish command checks 'now' is installed Closes #58",2017-11-11T16:00:00Z,2017-11-11T16:00:00Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 65e350ca2a4845c25752a62c16ba58cfe2c14b9b,"Implemented 'datasette publish one.db two.db' command Closes #26",2017-11-11T07:25:22Z,2017-11-11T07:25:22Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7d81083d40fb2749be897d89c9a094d6521ef20c,"Implemented responsive tables, removed bootstrap No need for all of bootstrap since we only need to style a few elements. Implemented responsive table pattern from here: https://css-tricks.com/responsive-data-tables/ Refs #16",2017-11-11T05:55:50Z,2017-11-11T05:55:50Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 21c9c04310dffcdb8cf6fee0f74fc9e7ac1ecf19,"Implemented cursor-based pagination for table view Closes #5",2017-11-10T20:41:14Z,2017-11-10T20:41:14Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e9fce441956642bef3548e3181d72a88317efa65,Don't serve cache headers in debug or refresh modes,2017-11-10T20:26:37Z,2017-11-10T20:26:37Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a8a293cd71f7529aff374be5ca01f2ebd5e71ee4,Refactored util functions into new utils module,2017-11-10T19:25:54Z,2017-11-10T19:25:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1c57bd202fb1f82e14c47dfca63454352999732c,"Replaced app_factory with new Datasette class This should make it easier to add unit tests.",2017-11-10T19:05:57Z,2017-11-10T19:05:57Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 03c58fb350f6b9bb941a46907da5ac6f67bf47cf,Show databases in alphabetical order on index page,2017-11-10T19:04:56Z,2017-11-10T19:04:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 40d3b3eae68286f67e40226f18f2621b26e5e533,"Refactored tests into new tests/ folder Guided by https://docs.pytest.org/en/latest/goodpractices.html",2017-11-10T18:48:16Z,2017-11-10T18:48:16Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e06b0117711ca7c9d6d6865d2bff8525aa11ebf0,"Updated tests Refs #23",2017-11-10T18:43:54Z,2017-11-10T18:43:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e7e50875d341f1d26b4dbba862f5202631f34896,Renamed to 'datasette',2017-11-10T18:38:35Z,2017-11-10T18:38:35Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 292f140a4f391f646ec0be85ec9f22dde30f9de2,"Explicitly order by pk (or by rowid) Refs #5",2017-11-09T16:11:14Z,2017-11-09T16:11:14Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bc9871c93583f3cdcca191b7fa05b255be7275c8,"gt/lt/gte/lte now treat numeric arguments as numeric This now works: https://immutabase-dlmggyoepw.now.sh/northwind-40d049b/Products?UnitsInStock__gt=100 Previously the input value of 100 would be treated as a string. Also fixed a bug where filter arguments had stopped working entirely. Refs #23",2017-11-09T16:09:55Z,2017-11-09T16:09:55Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d9fa2bf7ba2f9d3dcb2beb303f772c86344b4bcf,"Use rowid if no primary key available Allows us to link to individual records even for tables that do not have a primary key. Refs #5",2017-11-09T14:39:50Z,2017-11-09T14:39:50Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b2dee11fcd989d9e2a7bf4de1e23dbc320c05013,"Databases now get distinct colours A left border based on their content hash. Closes #31",2017-11-09T14:12:42Z,2017-11-09T14:14:40Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw abb591d83264bbf11a5eb9daf03011d051e8f833,"Added --reload argument to 'immutabase serve' command Uses hupper to restart the server when the code changes. Useful for development. Depends on https://pypi.python.org/pypi/hupper",2017-11-09T13:46:16Z,2017-11-09T14:14:26Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 8af7bc100c681975894f49f4ffd6d26a06e93f60,"Added a MANIFEST.in Now python setup.py bdist_wheel creates a .whl that includes the CSS.",2017-11-09T02:39:42Z,2017-11-09T02:39:42Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 7e0cedae3d920797f6f9411aea90a2b1d86ac9c7,"Now using bootstrap 4 beta Refs #16",2017-11-06T02:49:07Z,2017-11-06T02:49:07Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9e9e9613907b6a2a8a051fdda93c0d26344ee110,Fixed error in RowView,2017-11-06T02:38:06Z,2017-11-06T02:38:06Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 25c241fa5a0f8868e3c1bc5be4f5888caa47d864,Renamed project to immutabase,2017-11-06T02:32:13Z,2017-11-06T02:32:13Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw a0bb9da17fb95ac5e3bcd3c8d800d33c25a71bbc,"Now requires DB files to be passed as arguments Refs #40",2017-11-06T02:24:43Z,2017-11-06T02:24:43Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 186c513a61a091b9f83d788e25b08f41a84ed9a3,"Support parameterized SQL and block potentially harmful queries You can now call arbitrary SQL like this: /flights?sql=select%20*%20from%20airports%20where%20country%20like%20:c&c=iceland Unescaped, those querystring params look like this: sql = select * from airports where country like :c c = iceland So SQL can be constructed with named parameters embedded in it, which will then be read from the querystring and correctly escaped. This means we can aggressively filter the SQL parameter for potentially dangerous syntax. For the moment we enforce that it starts with a SELECT statement and we ban the sequence ""pragma"" from it entirely. If you need to use pragma in a query, you can use the new named parameter mechanism. Fixes #39",2017-11-05T02:49:18Z,2017-11-05T02:49:18Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 31b21f5c5e15fc3acab7fabb170c1da71dc3c98c,"Moved all SQLite queries to threads SQLite operations are blocking, but we're running everything in Sanic, an asyncio web framework, so blocking operations are bad - a long-running DB operation could hold up the entire server. Instead, I've moved all SQLite operations into threads. These are managed by a concurrent.futures ThreadPoolExecutor. This means I can run up to X queries in parallel, and I can continue to queue up additional incoming HTTP traffic while the threadpool is busy. Each thread is responsible for managing its own SQLite connections - one per database. These are cached in a threadlocal. Since we are working with immutable, read-only SQLite databases it should be safe to share SQLite objects across threads. On this assumption I'm using the check_same_thread=False option. Opening a database connection looks like this: conn = sqlite3.connect( 'file:filename.db?immutable=1', uri=True, check_same_thread=False, ) The following articles were helpful in figuring this out: * https://pymotw.com/3/asyncio/executors.html * https://marlinux.wordpress.com/2017/05/19/python-3-6-asyncio-sqlalchemy/ Closes #45. Refs #38.",2017-11-05T02:21:44Z,2017-11-05T02:21:44Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1fc75809a6aa17860944b4cc3a4d7175cd53b1f4,"Refactored everything into a factory function I now call a factory function to construct the Sanic app: app = app_factory(files) This allows me to pass additional arguments to it, e.g. the files to serve. Also refactored my class-based views to accept jinja as an argument, e.g: app.add_route( TableView.as_view(jinja), '//' )",2017-11-05T02:13:44Z,2017-11-05T02:13:44Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0ac8bbce2e73c0759ec48661a7b740d2c368b2a2,"Default subcommand is now serve Using click-default-group: https://github.com/click-contrib/click-default-group Also removed requirements.txt in favour of setup.py",2017-11-04T23:53:50Z,2017-11-04T23:53:50Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw edaa10587e60946e0c1935333f6b79553db33798,Configured Travis CI,2017-11-04T23:47:46Z,2017-11-04T23:47:46Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw be768f26d09fa060b1ca71785ff546dd572f3fbc,python setup.py test now runs the tests,2017-11-04T23:40:27Z,2017-11-04T23:40:27Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2c625e31ed018f929223918240603bf2a80e665c,"Fixed bug on Row page with tables containing spaces We were attempting to run this SQL: select * from ""Order%20Details"" where ... On this page: http://0.0.0.0:8877/northwind-40d049b/Order%20Details/10250,41",2017-10-27T07:16:18Z,2017-10-27T07:16:18Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1592fd0419f374de201926d3ba67fbf1522eed13,"Started work on cli, which also meant adding setup.py I'm using click, and click recommends using a setup.py - so I've added one of those. I also refactored code into a new datasite package. It's not quite deploying to now properly at the moment though - I seem to have messed up the path handling a bit. Also snuck in a new template for the ""Row"" view. Refs #40",2017-10-27T07:08:24Z,2017-10-27T07:08:24Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2a9799bae651558a23ae5074edad7cc13ff0fbdc,"Implemented database summary on index page Closes #41",2017-10-27T04:05:13Z,2017-10-27T04:05:17Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3cce63b59851495b6d9d38936356e21ea8fbad3a,"URL to allow direct database download It's just the database URL with .db on the end, e.g. /flights.db Closes #19",2017-10-25T15:19:32Z,2017-10-25T15:19:32Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f1b0521810bbc467721e4dcc5a2ff1bf2a1ddbb8,Preserve .json through redirects,2017-10-25T15:01:22Z,2017-10-25T15:01:22Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d94d4465d7e72e668122f81206397f4f20cf555b,"Double quote around column names This means filters still work even with column names that contain spaces",2017-10-25T14:47:20Z,2017-10-25T14:47:20Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw e55bc3b2fa6e1e8be7b7c1f5b6cb3764713b6faa,th align left for all tables,2017-10-25T14:46:38Z,2017-10-25T14:46:38Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1c5977961f596dae5aaa18c8b2d7a10e9f42a543,Added glob and like lookups - refs #23,2017-10-25T01:53:01Z,2017-10-25T01:53:01Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 630b40038ef31b351abc2e39c3a0c7b3648814f8,"Added support for gt, gte, lt, lte lookups Refs #23",2017-10-25T01:46:49Z,2017-10-25T01:46:55Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6823b094066c5cb1dcd3581da2ed877ed72298b7,"Set time limit of 1000ms on SQL queries Using the (undocumented in the Python docs) fact that if you return 1 from a set_progress_handler callback, SQLite will cancel the current query. Closes #35",2017-10-25T01:34:54Z,2017-10-25T01:34:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2fe94641b0b2dc291d1fce3dad0fbf96294b3a32,"Don't try to show row counts for views Also handle tables/views with spaces in their name in the URL.",2017-10-25T01:33:12Z,2017-10-25T01:33:12Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bd5f3b2ba1a627383d512d613b77d15501dfccc4,Show time taken at bottom of table page,2017-10-25T01:31:54Z,2017-10-25T01:31:54Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 3eb79e1a5fa4c164a224ae0adbe0ea16fde35758,Show total row count at top of table page,2017-10-25T01:31:43Z,2017-10-25T01:31:43Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw eef213ab4d57622dfc60c8655c0c7a18afcc844f,Show total number of rows in table,2017-10-25T00:11:36Z,2017-10-25T00:11:36Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 1ae8ea0f03cfb9f25b1e25f3194c456c3649789c,"Started implementing ?name__contains=X filters So far we support __contains=, __startswith=, __endswith= and __exact= Refs #23",2017-10-25T00:06:23Z,2017-10-25T00:06:23Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 4c7379a898df426af0c31159e5cb06d672189301,"Don't crash on weird character encodings Expecting SQLite columns to all be valid utf8 doesn't work, because we are deailing with all kinds of databases. Instead, we now use the 'replace' encoding mode to replace any non-UTF8 characters with a [X] character.",2017-10-25T00:01:34Z,2017-10-25T00:01:34Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw c371f06fdea413cfb00aa8f81b7a5535a7ecdbc4,Include took_ms in JSON output,2017-10-24T23:55:53Z,2017-10-24T23:55:53Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2a09d3708777116daedc548078a662086552523f,Allow views to be browsed as well as tables,2017-10-24T23:55:08Z,2017-10-24T23:55:08Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 02b1814fcfdc61b1b69b5955f2b60252ff10cde9,"Redirects now preserve query string Fixes #28",2017-10-24T23:54:26Z,2017-10-24T23:54:26Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5f806880c9766daf09fc9535171637ebb8224cab,Correctly JSON serialize sqlite3.Cursor,2017-10-24T23:53:21Z,2017-10-24T23:53:21Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw bc9379aabcedce7fbc661ac15008d8801199a045,"Added .jsono extension Returns JSON key/value objects for each row instead of lists of values. Closes #6",2017-10-24T15:07:52Z,2017-10-24T15:07:52Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f643f7aee1b3d29df82b93a6560887a35b7a2f13,"base64 encode bytestrings from DB in JSON Fixes #29",2017-10-24T14:58:41Z,2017-10-24T14:58:41Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b46e370ee6126aa2fa85cf789a31da38aed98496,"Link to pages-per-row Closes #1",2017-10-24T14:10:58Z,2017-10-24T14:10:58Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6a9fdcc0718aea2cbc01ae4d60b9a1fba3601a66,"Added addressable page per row Refs #1 - only exists for tables with introspectable primary keys. Still need to link to this page. Also added first unit tests - refs #9",2017-10-24T05:54:58Z,2017-10-24T05:54:58Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 606ff9e35e007ae58a491d417f47779034bacabc,"python app.py --build to generate build-metadata.json This is now run by the Dockerfile to build this at compile time.",2017-10-24T05:53:13Z,2017-10-24T05:53:13Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b20d7119e4f6506cdb9d5d11322e28130823adfd,Implemented template inheritance and brought back errors,2017-10-24T02:56:27Z,2017-10-24T02:56:27Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0fa177269767e5e55c863382333fde627d2b7074,"Allow ?sql= argument against database e.g. /database-234324?sql=select * from table limit 1",2017-10-24T02:48:56Z,2017-10-24T02:48:56Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 255e2611e5c3cfdda76c9da7abdbe5af976044ac,"CORS headers for JSON responses Access-Control-Allow-Origin: *",2017-10-24T02:48:06Z,2017-10-24T02:48:06Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 12f7e1dc5624d14f644abead18bd90b420b6d97e,"Hashed URLs now have far-future cache expiry Since the URL now includes a hash of the database, we can return a Cache- Control: max-age=31536000 header for every response. The exception is our 302 redirects. These we now serve with a Link: header that tells any HTTP/2 server-push aware fronting proxies (such as Cloudfront) to push the target of the redirect. Closes #4",2017-10-24T02:36:44Z,2017-10-24T02:36:44Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9d219140694551453bfa528e0624919eb065f9d6,"Refactored to use class based views Closes #22",2017-10-24T02:25:48Z,2017-10-24T02:25:48Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b2372605d63248f422b6e67cb5c392236a3aa612,"Implemented multi-db support plus initial URL structure Refs #24 Fixes #15",2017-10-24T02:00:37Z,2017-10-24T02:00:37Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6a0c5de6154893eb4269dc7b1f160726ec6395f2,"ensure_build_metadata() function for metadata This will be run at compile time - the goal is to generate a build- metadata.json file with a bunch of useful facts about the databases that could be expensive to generate at run-time. Example metadata: { ""flights"": { ""file"": ""flights.db"", ""tables"": { ""airlines"": 6048, ""airports"": 8107, ""routes"": 67663 }, ""hash"": ""07d1283e07786b1235bb7041ea445ae103d1571565580a29eab0203c555725fd"" } So far we have a sha256 hash of the database file itself, plus a row count for each table. Fixes #11",2017-10-23T16:02:40Z,2017-10-23T16:02:40Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw f571b19d8a5fd3a19fdf679421fd55a8edbf5295,"sqlerrors() decorator catching and returning useful errors Closes #8",2017-10-23T15:28:00Z,2017-10-23T15:28:00Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw de04d7a854d71003ffcf98028eab976a936c2dba,Initial working proof of concept,2017-10-23T00:41:19Z,2017-10-23T00:41:19Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ac9d66817d6a08b806f8e4bc16da02fbdb430496,Initial commit,2017-10-23T00:39:03Z,2017-10-23T00:39:03Z,2946d096d0cdefdc017559e6b57e87658736e843,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow b3aa5f4313a5bc41c9e83f3a4778d4b0794ea4a8,"Added 'not like' table filter, refs #750",2020-05-02T19:04:54Z,2020-05-02T19:04:54Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw d996d4122b522eeec3c610f6b2561aa96652ecd2,Add badges to documentation index,2020-05-03T15:46:49Z,2020-05-03T15:46:49Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow cef23e88617dcd7edae22fca813d345dfaf09c4f,"Started pattern portfolio at /-/patterns, refs #151",2020-05-03T03:01:21Z,2020-05-03T03:05:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9212f0c9c3138f005ea8d57acacb8a2a80b252a6,"Removed note about virtual environments Simplifies things now that we also talk about pipx.",2020-05-04T19:35:28Z,2020-05-04T19:35:28Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 0cdf111ae68d46eb2eb51d85e20e1447a42cbdcc,"Move pip/pipx to top of installation instructions Less intimidating than Docker, hopefully.",2020-05-04T19:31:13Z,2020-05-04T19:31:13Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 7e2bb314649baa9e782ad22ff452d90d46aa840b,"Documented installation using pipx, closes #756",2020-05-04T19:10:31Z,2020-05-04T19:10:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow cc872b1f50f1d2c0bc2d930c86a6644f154459dc,"Fixed rogue output in tests, closes #755",2020-05-04T18:42:01Z,2020-05-04T18:42:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 9424687e9e94401438896116898a071702b09d40,"Consistently return charset utf-8, closes #752",2020-05-04T17:41:58Z,2020-05-04T17:42:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 450d2e2896e07a8ce27f1cf143febe280c97301b,Fixed pytest warning about TestClient class,2020-05-04T17:40:01Z,2020-05-04T17:42:10Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw b314e088c59425122fb2b2abde8741010d9d274a,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.13 (#753) Updates the requirements on [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.10.0...v0.12.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T17:40:48Z,2020-05-04T17:40:48Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow 707fe039947b3e48f2b6dcfe8e577d76b617f2a5,"Update beautifulsoup4 requirement from ~=4.8.1 to >=4.8.1,<4.10.0 (#720) Updates the requirements on [beautifulsoup4](http://www.crummy.com/software/BeautifulSoup/bs4/) to permit the latest version. Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T17:14:46Z,2020-05-04T17:14:46Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow dbd2d70b3819a7041bb36a527033d77c85683c05,"asgi: check raw_path is not None (#719) The ASGI spec (https://asgi.readthedocs.io/en/latest/specs/www.html#http) seems to imply that `None` is a valid value, so we need to check the value itself, not just whether the key is present. In particular, the [mangum](https://github.com/erm/mangum) adapter passes `None` for this key.",2020-05-04T17:14:25Z,2020-05-04T17:14:25Z,5c0f309ec7c7fbfad14fc6aead2238ca497fa84c,Colin Dellow,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,193185,cldellow,19864447,web-flow c91fb9e3d4f0632d4ef25a21165739ab88a9d491,"Update pytest requirement from ~=5.2.2 to >=5.2.2,<5.5.0 (#721) Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/5.2.2...5.4.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T17:13:41Z,2020-05-04T17:13:41Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow aa064de3f400899dbf61f2d33a035fba4017596c,"Update jinja2 requirement from ~=2.10.3 to >=2.10.3,<2.12.0 (#722) Updates the requirements on [jinja2](https://github.com/pallets/jinja) to permit the latest version. - [Release notes](https://github.com/pallets/jinja/releases) - [Changelog](https://github.com/pallets/jinja/blob/master/CHANGES.rst) - [Commits](https://github.com/pallets/jinja/compare/2.10.3...2.11.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T17:13:15Z,2020-05-04T17:13:15Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow 109c5a430d53fe38b1300e0daa20f5cef047a08e,"Update janus requirement from ~=0.4.0 to >=0.4,<0.6 (#734) Updates the requirements on [janus](https://github.com/aio-libs/janus) to permit the latest version. - [Release notes](https://github.com/aio-libs/janus/releases) - [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/janus/compare/v0.4.0...v0.5.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T16:48:03Z,2020-05-04T16:48:03Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow e232f77055880b38cc0b738607cd50cde9188eaf,"Update mergedeep requirement from ~=1.1.1 to >=1.1.1,<1.4.0 (#728) Updates the requirements on [mergedeep](https://github.com/clarketm/mergedeep) to permit the latest version. - [Release notes](https://github.com/clarketm/mergedeep/releases) - [Commits](https://github.com/clarketm/mergedeep/compare/v1.1.1...v1.3.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T16:45:49Z,2020-05-04T16:45:49Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow 985e59493e44d6fcebf7a30f693f4edecee3e90d,"Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6 (#725) Refs #754 Updates the requirements on [aiofiles](https://github.com/Tinche/aiofiles) to permit the latest version. - [Release notes](https://github.com/Tinche/aiofiles/releases) - [Commits](https://github.com/Tinche/aiofiles/compare/v0.4.0...v0.5.0) Signed-off-by: dependabot-preview[bot] Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>",2020-05-04T16:17:48Z,2020-05-04T16:17:48Z,2edd38cb3801aa07f709f083eba7cbe4f16e0978,dependabot-preview[bot],cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,27856297,dependabot-preview[bot],19864447,web-flow 182e5c8745c94576718315f7596ccc81e5e2417b,"Release Datasette 0.41 Refs #648 #731 #750 #151 #761 #752 #719 #756 #748",2020-05-06T18:20:58Z,2020-05-06T18:20:58Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 0784f2ef9d3ff6dd9df05f54cb51de29a6d11764,"Allow specific pragma functions, closes #761",2020-05-06T17:18:31Z,2020-05-06T17:18:31Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw af6c6c5d6f929f951c0e63bfd1c82e37a071b50f,"Release 0.42, refs #685",2020-05-08T17:38:27Z,2020-05-08T17:38:27Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 2694ddcf14b88955e93a6cfb6c725500bb93e219,"Test for .execute_fn(), refs #685",2020-05-08T17:29:17Z,2020-05-08T17:29:17Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5ab848f0b87ad2030088a7259fc1802316b90200,RST fix,2020-05-08T17:04:47Z,2020-05-08T17:04:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 545c71b6044bbf30caef04976cbd73d519d278a5,Small cleanup,2020-05-08T16:57:01Z,2020-05-08T16:57:01Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow ec9cdc3ffa7d9a9a214f71fa7864f0cbdf6ccb23,"Documentation for .execute_fn(), refs #685",2020-05-08T16:52:53Z,2020-05-08T16:52:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4433306c1855ad69840cc76cbd41086137572be2,"Improvements + docs for db.execute() and Results class * Including new results.first() and results.single_value() methods. Closes #685",2020-05-08T16:05:46Z,2020-05-08T16:05:46Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 69e3a855dd7e5a77409d70b18c45ae3c1a145a75,"Rename execute_against_connection_in_thread() to execute_fn(), refs #685",2020-05-08T14:16:39Z,2020-05-08T14:16:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw fc24edc153d76bcec917bb23d532981d9862e696,"Added project_urls, closes #764",2020-05-11T18:28:53Z,2020-05-11T18:28:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow faea5093b865031f650da7da6539430f732f511a,"Column headings now black in mobile view, closes #729",2020-05-15T18:16:47Z,2020-05-15T18:16:47Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 5ea8c6d1cd8ded832718fb1a652b5880c4bf5ebb,"type-pk instead of type-link CSS class, closes #729",2020-05-15T05:55:20Z,2020-05-15T05:55:20Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 504196341c49840270bd75ea1a1871ef386ba7ea,"Visually distinguish float/int columns, closes #729",2020-05-15T05:51:39Z,2020-05-15T05:51:39Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw cee671a58f417f827d1735b1abaa40716534ea67,"Use dirs_exist_ok=True, refs #744 (#768)",2020-05-21T17:53:51Z,2020-05-21T17:53:51Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow 4b96857f170e329a73186e703cc0d9ca4e8719cc,"Link to request object documentation, refs #706",2020-05-27T22:35:25Z,2020-05-27T22:35:25Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 50652f474b94e83d49ee15f219820cdbfc450f11,"Stop using .raw_args, deprecate and undocument it - refs #706",2020-05-27T22:29:42Z,2020-05-27T22:29:42Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw 6d7cb02f00010d3cb4b4bac0460d41277652b80e,"Documentation for request object, refs #706",2020-05-27T22:17:53Z,2020-05-27T22:17:53Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw ad88c9b3f3d7886612dae6afed65d43940632b06,"Mechanism for adding a default URL fragment to a canned query Closes #767",2020-05-27T21:52:03Z,2020-05-27T21:52:03Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw af5702220c06a913746c9657bd33c2108d80c33f,Added datasette-media plugin to the docs,2020-05-27T20:34:12Z,2020-05-27T20:34:12Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,107914493,datasette,9599,simonw,9599,simonw da87e963bff24e47878a5bc2025c8bfc63d4bc93,"Test that plugin hooks are unit tested (xfail) This currently fails using xfail. Closes 771.",2020-05-27T20:16:02Z,2020-05-27T20:16:02Z,13ae486343ea6454a93114c6f558ffea2f2c6874,Simon Willison,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,107914493,datasette,9599,simonw,19864447,web-flow