id,node_id,number,state,locked,title,user,body,created_at,updated_at,closed_at,merged_at,merge_commit_sha,assignee,milestone,draft,head,base,author_association,repo,url,merged_by,auto_merge 274174614,MDExOlB1bGxSZXF1ZXN0Mjc0MTc0NjE0,437,closed,0,Add inspect and prepare_sanic hooks,45057,"This adds two new plugin hooks: The `inspect` hook allows plugins to add data to the inspect dictionary. The `prepare_sanic` hook allows plugins to hook into the web router. I've attached a warning to this hook in the docs in light of #272 but I want this hook now... On quick inspection, I don't think it's worthwhile to try and make this hook independent of the web framework (but it looks like Starlette would make the hook implementation a bit nicer). Ref #14",2019-04-28T11:53:34Z,2019-06-24T16:38:57Z,2019-06-24T16:38:56Z,,7aeaac7c478acf572bda61bdaa6ac3247dc15811,,,0,f33a0a63a7442f0b665320ac3e2eb55de315f1f7,11b352b4d52fd02a422776edebb14f12e4994d3b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/437,, 274313625,MDExOlB1bGxSZXF1ZXN0Mjc0MzEzNjI1,439,closed,0,[WIP] Add primary key to the extra_body_script hook arguments,45057,"This allows the row to be identified on row pages. The context here is that I want to access the row's data to plot it on a map. I considered passing the entire template context through to the hook function. This would expose the actual row data and potentially avoid a further fetch request in JS, but it does make the plugin API a lot more leaky. (At any rate, using the selected row data is tricky in my case because of Spatialite's infuriating custom binary representation...)",2019-04-29T10:08:23Z,2019-05-01T09:58:32Z,2019-05-01T09:58:30Z,,b3cbcfef4d11d2741cf00861734d726a4730afe5,,,0,76b2c8fa406063b436155a7d8995e07b7e718c13,11b352b4d52fd02a422776edebb14f12e4994d3b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/439,, 274468836,MDExOlB1bGxSZXF1ZXN0Mjc0NDY4ODM2,441,closed,0,Add register_output_renderer hook,45057,"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-04-29T18:03:21Z,2019-05-01T23:01:57Z,2019-05-01T23:01:57Z,2019-05-01T23:01:57Z,cf406c075433882b656e340870adf7757976fa4c,,,0,c9f941f06eb0268841de49407725917c74a8a2dc,11b352b4d52fd02a422776edebb14f12e4994d3b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/441,, 274478761,MDExOlB1bGxSZXF1ZXN0Mjc0NDc4NzYx,442,closed,0,Suppress rendering of binary data,45057,"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-04-29T18:36:41Z,2019-05-03T18:26:48Z,2019-05-03T16:44:49Z,2019-05-03T16:44:49Z,d555baf508de71a5e3dc9a9aed2c13f6f202956d,,,0,bbbd9ea5ad774f088bd963106fa5756bfd77c799,11b352b4d52fd02a422776edebb14f12e4994d3b,CONTRIBUTOR,107914493,https://github.com/simonw/datasette/pull/442,,