labels_id,labels_id_label,issues_id,issues_id_label 754730474,json-api,275092453,"Redesign JSON output, ditch jsono, offer variants controlled by parameter instead" 729587544,large,275125561,Datasette serve should accept paths/URLs to CSVs and other file formats 947261894,feature,275125561,Datasette serve should accept paths/URLs to CSVs and other file formats 727708733,duplicate,275176094,Filtered table view should show a count 727708732,bug,275179724,?_search=x should work if used directly against a FTS virtual table 727708736,good first issue,275228834,"""Reformat SQL"" button next to SQL editor textarea" 729587544,large,275476839,"Per-database and per-table metadata, probably using data-package" 947261894,feature,276455748,datasette publish gcloud 727708734,enhancement,276718605,Set up a pattern portfolio 1918831023,css,276718605,Set up a pattern portfolio 2175284252,design,276718605,Set up a pattern portfolio 727708732,bug,276765070,Incorrect display of rows page for tables with a primary key 727708732,bug,277589569,A primary key column that has foreign key restriction associated won't rendering label column 727708732,bug,279199916,Link should not show up in the column selection dropdowns 750789605,documentation,279547886,Document the querystring argument for setting a different time limit 727708732,bug,280315352,Nasty bug: last column not being correctly displayed 947465681,metadata,281197863,License/Source in footer should inherit from top level 947261894,feature,285168503,Add GraphQL endpoint 947465681,metadata,288438570,More metadata options for template authors 727708732,bug,292011379,500 from missing table name 729585263,small,292011379,500 from missing table name 947261894,feature,299760684,Metadata should be a nested arbitrary KV store 947465681,metadata,299760684,Metadata should be a nested arbitrary KV store 729587544,large,309047460,Ability to bundle metadata and templates inside the SQLite file 947261894,feature,309047460,Ability to bundle metadata and templates inside the SQLite file 947465681,metadata,309047460,Ability to bundle metadata and templates inside the SQLite file 729586521,medium,309471814,Ability to sort (and paginate) by column 727708732,bug,309558826,Keyset pagination doesn't work correctly for compound primary keys 727708735,help wanted,310533258,Figure out how to bundle a more up-to-date SQLite 729585263,small,312313496,"Run pks_for_table in inspect, executing once at build time rather than constantly" 947261894,feature,312395790,Ability to sort by more than one column 947261894,feature,312396095,Ability to sort with nulls last 729585263,small,312620566,Ability to apply sort on mobile in portrait mode 729585263,small,313512748,Support explain select / explain query plan select 754269786,plugins,314471743,Load plugins from a `--plugins-dir=plugins/` directory 754269786,plugins,314506033,Documentation for plugins system 754269786,plugins,314506446,Ability for plugins to define extra JavaScript and CSS 2389410569,javascript,314506446,Ability for plugins to define extra JavaScript and CSS 754269786,plugins,314506669,Allow plugins to define additional URL routes and views 947261894,feature,314506669,Allow plugins to define additional URL routes and views 727708732,bug,314665147,Bug: Sort by column with NULL in next_page URL 750250793,datasette-publish,314725342,Plugin support for datasette publish 754269786,plugins,314725342,Plugin support for datasette publish 947261894,feature,314725342,Plugin support for datasette publish 729585263,small,314771615,"Support custom unit display in order to handle ""$10,000""" 947261894,feature,314771615,"Support custom unit display in order to handle ""$10,000""" 727708739,wontfix,314847571,Investigate syntactic sugar for plugins 754269786,plugins,314847571,Investigate syntactic sugar for plugins 947261894,feature,314847571,Investigate syntactic sugar for plugins 727708739,wontfix,315142414,Allow plugins to add new cli sub commands 754269786,plugins,315142414,Allow plugins to add new cli sub commands 947261894,feature,315142414,Allow plugins to add new cli sub commands 754269786,plugins,315327860,datasette publish --install=name-of-plugin 754269786,plugins,315517578,Ability for plugins to bundle templates 754269786,plugins,315738696,Unit tests for installable plugins 2092302176,tests,315738696,Unit tests for installable plugins 754269786,plugins,315960272,prepare_context() plugin hook 947261894,feature,315960272,prepare_context() plugin hook 729585263,small,316031566,"If spatialite detected, mark idx_XXX_Geometry tables as hidden" 727708732,bug,316128955,Setting page size AND max returned rows to 1000 doesn't seem to work 729585263,small,316128955,Setting page size AND max returned rows to 1000 doesn't seem to work 754269786,plugins,316323336,metadata.json support for plugin configuration options 947465681,metadata,316323336,metadata.json support for plugin configuration options 947261894,feature,316444720,Option to expose expanded foreign keys in JSON/CSV 729586521,medium,316621102,Add limit on the size in KB of data returned from a single query 727708735,help wanted,317001500,datasette publish lambda plugin 750250793,datasette-publish,317001500,datasette publish lambda plugin 947261894,feature,317001500,datasette publish lambda plugin 727708739,wontfix,317714268,External metadata.json 754269786,plugins,317714268,External metadata.json 947261894,feature,317714268,External metadata.json 947465681,metadata,317714268,External metadata.json 729585263,small,317900587,FTS table detection should be part of .inspect() 947261894,feature,318490133,Default datasette logging format should be JSON 750789605,documentation,321631020,Documentation explaining how to use SQLite FTS with Datasette 1382668283,faceting,322477187,Facets 947261894,feature,322787470,inspect() should detect many-to-many relationships 947465681,metadata,323223872,Validate metadata.json on startup 729587544,large,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 754269786,plugins,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 754730474,json-api,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 947261894,feature,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 1379448359,refactor,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 3645705798,json-extras,323658641,Add ?_extra= mechanism for requesting extra properties in JSON 750789605,documentation,323677499,Add links to example Datasette instances to appropiate places in docs 729587544,large,323681589,Export to CSV 750789605,documentation,323681589,Export to CSV 947261894,feature,323681589,Export to CSV 3095460476,csv,323681589,Export to CSV 750789605,documentation,323716411,"Documentation for URL hashing, redirects and cache policy" 727708735,help wanted,323718842,Mechanism for ranking results from SQLite full-text search 729586521,medium,323718842,Mechanism for ranking results from SQLite full-text search 947261894,feature,323718842,Mechanism for ranking results from SQLite full-text search 2477722856,search,323718842,Mechanism for ranking results from SQLite full-text search 729586521,medium,324162476,Mechanism for automatically picking up changes when on-disk .db file changes 947261894,feature,324162476,Mechanism for automatically picking up changes when on-disk .db file changes 729587544,large,324188953,Port Datasette to ASGI 947261894,feature,324188953,Port Datasette to ASGI 727708735,help wanted,324451322,Figure out a way to have /-/version return current git commit hash 729585263,small,324451322,Figure out a way to have /-/version return current git commit hash 947261894,feature,324720095,"""config"" section in metadata.json (root, database and table level)" 947465681,metadata,324720095,"""config"" section in metadata.json (root, database and table level)" 947261894,feature,324835838,Handle spatialite geometry columns better 3750195281,spatialite,324835838,Handle spatialite geometry columns better 727708735,help wanted,325294102,Build smallest possible Docker image with Datasette plus recent SQLite (with json1) plus Spatialite 4.4.0 727708736,good first issue,325294102,Build smallest possible Docker image with Datasette plus recent SQLite (with json1) plus Spatialite 4.4.0 727708732,bug,325705981,Faceting breaks pagination 729587544,large,325958506,Support cross-database joins 947261894,feature,325958506,Support cross-database joins 729585263,small,326189744,num_threads and cache_max_age should be --config options 729585263,small,326617744,?_shape=arrayfirst 729586521,medium,326767626,Support multiple filters of the same type 947261894,feature,326767626,Support multiple filters of the same type 2389410569,javascript,326783670,Avoid plugins accidentally loading dependencies twice 947261894,feature,326800219,Mechanism for customizing the SQL used to select specific columns in the table view 947261894,feature,327395270,Per-database and per-table /-/ URL namespace 729585263,small,327459829,URLify URLs in results from custom SQL statements / views 947261894,feature,327459829,URLify URLs in results from custom SQL statements / views 750789605,documentation,327461381,Documentation covering ALL datasette URLs 727708735,help wanted,328155946,"--spatialite option for ""datasette publish heroku""" 3750195281,spatialite,328155946,"--spatialite option for ""datasette publish heroku""" 727708732,bug,328171513,test-2.3.sqlite database filename throws a 404 729585263,small,328172521,Support table names ending with .json or .csv 750789605,documentation,329147284,Add contributor guidelines to docs 727708735,help wanted,330826972,"Support extra Heroku apps:create options - region, space, team" 727708732,bug,332830309,datasette publish now is broken in master 729585263,small,333000163,"HTML, CSV and JSON views should support ?_col=&_col=" 3095460476,csv,333000163,"HTML, CSV and JSON views should support ?_col=&_col=" 729586521,medium,333086005,Deploy demo of Datasette on every commit that passes tests 727708732,bug,333096176,HTML table does not correctly display entirely blank rows 967420289,minor,333096176,HTML table does not correctly display entirely blank rows 727708732,bug,333326107,Travis CI fails to upload new releases to PyPI 727708732,bug,334148669,Facets with value of 0 displayed incorrectly 967420289,minor,334148669,Facets with value of 0 displayed incorrectly 1382668283,faceting,334148669,Facets with value of 0 displayed incorrectly 727708732,bug,334149717,Incorrect display of compound primary keys with foreign key relationships 750789605,documentation,334190959,Wildcard support in query parameters 727708732,bug,335064777,Error on row page if table has slashes in the name and ends in .csv 3095460476,csv,335141434,CSV should respect --cors and return cors headers 727708735,help wanted,335200136,Explore if SquashFS can be used to shrink size of packaged Docker containers 1845722916,research,335200136,Explore if SquashFS can be used to shrink size of packaged Docker containers 993222446,ci,336465018,Travis should push tagged images to Docker Hub for each release 729585263,small,336936010,Datasette throws error when loading spatialite db without extension loaded 3750195281,spatialite,336936010,Datasette throws error when loading spatialite db without extension loaded 727708732,bug,337141108,Sanely handle Infinity/-Infinity values in JSON using ?_json_infinity=1 727708732,bug,338768551,Datasette on Zeit Now returns http URLs for facet and next links 729585263,small,338768551,Datasette on Zeit Now returns http URLs for facet and next links 727708732,bug,339095976,extra_options not passed to heroku publisher 729585263,small,339095976,extra_options not passed to heroku publisher 727708735,help wanted,339505204,Package datasette for installation using homebrew 729586521,medium,339505204,Package datasette for installation using homebrew 750789605,documentation,340065374,Documentation for datasette publish and datasette package 727708739,wontfix,340396247,Expose SANIC_RESPONSE_TIMEOUT config option in a sensible way 993222446,ci,340730961,Embrace black 729585263,small,341123355,Requesting support for query description 947261894,feature,341123355,Requesting support for query description 947465681,metadata,341123355,Requesting support for query description 727708732,bug,344701755,Don't list default plugins on /-/plugins 967420289,minor,344701755,Don't list default plugins on /-/plugins 727708739,wontfix,345469355,Automatically create a GitHub release linking to release notes for every tagged release 750789605,documentation,345469355,Automatically create a GitHub release linking to release notes for every tagged release 993222446,ci,345469355,Automatically create a GitHub release linking to release notes for every tagged release 754269786,plugins,345821500,render_cell(value) plugin hook 754269786,plugins,345821778,render_cell(value) plugin hook 729587544,large,346026869,Handle many-to-many relationships 947261894,feature,346026869,Handle many-to-many relationships 2531637209,tracking-issue,346026869,Handle many-to-many relationships 729586521,medium,346027040,Table view should support filtering via many-to-many relationships 947261894,feature,346027040,Table view should support filtering via many-to-many relationships 1382668283,faceting,346028655,Ability to display facet counts for many-to-many relationships 754269786,plugins,348043884,Plugin hook for loading metadata.json 947465681,metadata,348043884,Plugin hook for loading metadata.json 1382668283,faceting,349827640,Faceted browse against a JSON list of tags 993377889,wontfix,351845423,Experiment with contentless FTS tables 2477722856,search,352768017,Add option to include/exclude columns in search filters 729585263,small,374953006,Interface should show same JSON shape options for custom SQL queries 947261894,feature,374953006,Interface should show same JSON shape options for custom SQL queries 727708739,wontfix,377156339,datasette publish digitalocean plugin 727708732,bug,395236066,"CSV export in ""Advanced export"" pane doesn't respect query" 3095460476,csv,395236066,"CSV export in ""Advanced export"" pane doesn't respect query" 729585263,small,396212021,base_url configuration setting 947261894,feature,396212021,base_url configuration setting 727708735,help wanted,396215043,Find a cleaner pattern for fixtures with arguments 729585263,small,396215043,Find a cleaner pattern for fixtures with arguments 729585263,small,397098882,Add pragma compile_options output to /-/versions 947261894,feature,397098882,Add pragma compile_options output to /-/versions 729585263,small,397129564,Update official datasetteproject/datasette Docker container to SQLite 3.26.0 727708732,bug,398011658,Ensure downloading a 100+MB SQLite database file works 727708732,bug,398089089,/-/versions for official Docker image returns wrong Datasette version 967420289,minor,398089089,/-/versions for official Docker image returns wrong Datasette version 750250793,datasette-publish,398559195,datasette publish cloudrun plugin 947261894,feature,398559195,datasette publish cloudrun plugin 729585263,small,407174173,"Show metadata info (e.g. license, source) on custom SQL query pages" 947261894,feature,407174173,"Show metadata info (e.g. license, source) on custom SQL query pages" 3750195281,spatialite,410384988,How to pass named parameter into spatialite MakePoint() function 947261894,feature,418329842,Add query parameter to hide SQL textarea 729587544,large,421546944,Datasette Library 947261894,feature,421546944,Datasette Library 729587544,large,421548881,Hashed URLs should be optional 729587544,large,421551434,"Default to opening files in mutable mode, special option for immutable files" 750789605,documentation,421985685,Documentation for ?_hash=1 and Datasette's hashed URL caching 967420289,minor,426722204,?_search_col=X not reflected correctly in the UI 2477722856,search,426722204,?_search_col=X not reflected correctly in the UI 727708732,bug,430103450,Submitting SQL on hide page is broken 1382668283,faceting,431800286,"New design for facet abstraction, including querystring and metadata.json" 729585263,small,432636432,?_where=sql-fragment parameter for table views 947261894,feature,432636432,?_where=sql-fragment parameter for table views 729585263,small,433297989,"?column__in=value1,value2,value3 filter" 947261894,feature,433297989,"?column__in=value1,value2,value3 filter" 727708739,wontfix,440134714,Define mechanism for plugins to return structured data 754269786,plugins,440134714,Define mechanism for plugins to return structured data 727708732,bug,440222719,_facet_array should work against views 729586521,medium,440222719,_facet_array should work against views 1382668283,faceting,440222719,_facet_array should work against views 750789605,documentation,440313209,Update README 727708732,bug,440332621,Error pages do not return CORS header with --cors 729585263,small,440332621,Error pages do not return CORS header with --cors 729585263,small,440437037,Plugin for allowing CORS from specified hosts 947261894,feature,440437037,Plugin for allowing CORS from specified hosts 727708732,bug,441858747,Hidden tables shown on the index page 729585263,small,442327592,Installing installs the tests package 729585263,small,442330564,"Ability to ""publish cloudrun"" with no user input" 727708732,bug,443020048,"Fix the ""datasette now publish ... --alias=x"" option" 729585263,small,443020048,"Fix the ""datasette now publish ... --alias=x"" option" 750250793,datasette-publish,443020048,"Fix the ""datasette now publish ... --alias=x"" option" 729585263,small,443020810,Design changes to homepage to support mutable files 729586521,medium,443021509,Paginate + search for databases/tables on the homepage 947261894,feature,443021509,Paginate + search for databases/tables on the homepage 729586521,medium,443023308,Replace most of `.inspect()` (and `datasette inspect`) with table counting 750789605,documentation,443034003,Write release notes for 0.28 750789605,documentation,443034218,Add Glitch to Getting Started docs section 729586521,medium,443038584,Decide what to do about /-/inspect 947261894,feature,443038584,Decide what to do about /-/inspect 729585263,small,443040665,"Move ""no such module: VirtualSpatialIndex"" code elsewhere" 1379448359,refactor,443040665,"Move ""no such module: VirtualSpatialIndex"" code elsewhere" 3750195281,spatialite,443040665,"Move ""no such module: VirtualSpatialIndex"" code elsewhere" 729585263,small,444711254,Index page row counts only for DBs with < 30 tables (10ms count limit per table) 727708733,duplicate,444746021,Pagination for the database index page 729586521,medium,444746021,Pagination for the database index page 947261894,feature,444746021,Pagination for the database index page 729585263,small,444749373,publish commands should use new -i option 750250793,datasette-publish,444749373,publish commands should use new -i option 729585263,small,444997937,/-/databases showing currently attached database details 947261894,feature,444997937,/-/databases showing currently attached database details 729585263,small,445003029,?_hash=1 and --config hash_urls:1 should only work for immutable databases 729585263,small,445230077,"Rename ""publish now"" to ""publish nowv1""" 750250793,datasette-publish,445230077,"Rename ""publish now"" to ""publish nowv1""" 729586521,medium,445850934,Plugin hook: filters_from_request 754269786,plugins,445850934,Plugin hook: filters_from_request 947261894,feature,445850934,Plugin hook: filters_from_request 729585263,small,445855789,Do not allow downloads of mutable databases 729585263,small,445855910,Documentation for about and about_url metadata 750789605,documentation,445855910,Documentation for about and about_url metadata 729585263,small,445858491,"Remove ""datasette skeleton""" 729585263,small,445862501,Documentation for ArrayFacet (facet by JSON array) 750789605,documentation,445862501,Documentation for ArrayFacet (facet by JSON array) 1382668283,faceting,445862501,Documentation for ArrayFacet (facet by JSON array) 993222446,ci,445868234,Make it so Docker build doesn't delay PyPI release 729586521,medium,446429421,Facet by date 947261894,feature,446429421,Facet by date 1382668283,faceting,446429421,Facet by date 727708732,bug,446433735,Example of a custom facet plugin is incorrect 750789605,documentation,446433735,Example of a custom facet plugin is incorrect 1382668283,faceting,446433735,Example of a custom facet plugin is incorrect 729586521,medium,447408527,Option to facet by date using month or year 947261894,feature,447408527,Option to facet by date using month or year 1382668283,faceting,447408527,Option to facet by date using month or year 729586521,medium,447451492,Mechanism for displaying summary of m2m relationships in rows on table view 947261894,feature,447451492,Mechanism for displaying summary of m2m relationships in rows on table view 729585263,small,447469253,Improvements to table label detection 727708733,duplicate,448189298,Ability to add extra routes and related templates 729585263,small,448664792,Refactor database methods off Datasette class 1379448359,refactor,448664792,Refactor database methods off Datasette class 1379448359,refactor,448668204,Move detect_primary_keys to Database class method 727708732,bug,448977444,Pagination breaks when combined with expanded foreign keys 729585263,small,448977444,Pagination breaks when combined with expanded foreign keys 729585263,small,448978907,Rename InterruptedError exception class 1379448359,refactor,448978907,Rename InterruptedError exception class 729586521,medium,449445715,Figure out how to use Firebase with cloudrun to enable vanity URLs and CDN caching 750250793,datasette-publish,449445715,Figure out how to use Firebase with cloudrun to enable vanity URLs and CDN caching 993377884,enhancement,449565204,Syntactic sugar for creating m2m records 993377884,enhancement,449818897,Additional Column Constraints? 993377884,enhancement,449848803,"Allow .insert(..., foreign_keys=()) to auto-detect table and primary key" 727708732,bug,449854604,Facets not correctly persisted in hidden form fields 1382668283,faceting,449854604,Facets not correctly persisted in hidden form fields 729586521,medium,449886319,Rename metadata.json to config.json 947465681,metadata,449886319,Rename metadata.json to config.json 727708732,bug,449931899,--reload should only trigger for -i databases 729585263,small,449931899,--reload should only trigger for -i databases 967420289,minor,449931899,--reload should only trigger for -i databases 727708732,bug,450032134,facet_m2m gets confused by multiple relationships 729586521,medium,450032134,facet_m2m gets confused by multiple relationships 1382668283,faceting,450032134,facet_m2m gets confused by multiple relationships 727708732,bug,453243459,Handle SQLite databases with spaces in their names? 729585263,small,453243459,Handle SQLite databases with spaces in their names? 729585263,small,453639196,Remove TableView ?_group_count= feature 729585263,small,453829910,Add white-space: pre-wrap to SQL create statement 967420289,minor,453829910,Add white-space: pre-wrap to SQL create statement 729585263,small,453846217,Option to display binary data 947261894,feature,453846217,Option to display binary data 993377884,enhancement,455486286,Mechanism for turning nested JSON into foreign keys / many-to-many 993377884,enhancement,455496504,sqlite-utils create-table command 750789605,documentation,455852801,Every datasette plugin on the ecosystem page should have a screenshot 727708733,duplicate,455965174,Ability to set default sort order for a table or view in metadata.json 729585263,small,455965174,Ability to set default sort order for a table or view in metadata.json 750789605,documentation,455965174,Ability to set default sort order for a table or view in metadata.json 947261894,feature,455965174,Ability to set default sort order for a table or view in metadata.json 993377889,wontfix,455996809,"Rearrange the docs by area, not CLI vs Python" 1405404904,documentation,455996809,"Rearrange the docs by area, not CLI vs Python" 729585263,small,456568880,Support opening multiple databases with the same stem 947261894,feature,456568880,Support opening multiple databases with the same stem 729585263,small,456569067,Ability to facet by delimiter (e.g. comma separated fields) 947261894,feature,456569067,Ability to facet by delimiter (e.g. comma separated fields) 1382668283,faceting,456569067,Ability to facet by delimiter (e.g. comma separated fields) 727708735,help wanted,456578474,Get Datasette tests passing on Windows in GitHub Actions 729586521,medium,456578474,Get Datasette tests passing on Windows in GitHub Actions 947261894,feature,456578474,Get Datasette tests passing on Windows in GitHub Actions 727708735,help wanted,459397625,Documentation with recommendations on running Datasette in production without using Docker 750789605,documentation,459397625,Documentation with recommendations on running Datasette in production without using Docker 993222446,ci,459469278,Try shrinking official image with docker-slim 729585263,small,459509126,Enforce import sort order with isort 1379448359,refactor,459509126,Enforce import sort order with isort 729586521,medium,459537047,"Add unit test for ""static"" mechanism in plugins" 729587544,large,459590021,Decide what goes into Datasette 1.0 729585263,small,459598080,asgi_wrapper plugin hook 754269786,plugins,459598080,asgi_wrapper plugin hook 947261894,feature,459598080,asgi_wrapper plugin hook 729585263,small,459621683,Easier way of creating custom row templates 947261894,feature,459621683,Easier way of creating custom row templates 729585263,small,459622390,Handle case-insensitive headers in a nicer way 1379448359,refactor,459622390,Handle case-insensitive headers in a nicer way 750789605,documentation,459714943,Add section on sqite-utils enable-fts to the search documentation 729585263,small,459882902,Stream all results for arbitrary SQL and canned queries 947261894,feature,459882902,Stream all results for arbitrary SQL and canned queries 3095460476,csv,459882902,Stream all results for arbitrary SQL and canned queries 754269786,plugins,460095928,Establish a pattern for Datasette plugins built on top of Pandas 754269786,plugins,460540321,Extract codemirror SQL editor out into a plugin 1379448359,refactor,460540321,Extract codemirror SQL editor out into a plugin 2389410569,javascript,460540321,Extract codemirror SQL editor out into a plugin 993377889,wontfix,461215118,Option to open database in read-only mode 947261894,feature,462117311,/database/-/inspect 993377884,enhancement,462423839,index_foreign_keys / index-foreign-keys utilities 993377884,enhancement,462430920,table.update(...) method 993377884,enhancement,462817589,Support compound primary keys 729585263,small,462928038,Switch setup.py to using ~= for dependencies 727708732,bug,463492815,500 error on m2m facet detection 729585263,small,463544206,"Populate ""endpoint"" key in ASGI scope" 947261894,feature,463544206,"Populate ""endpoint"" key in ASGI scope" 729586521,medium,463915863,Mechanism for secrets in plugin configuration 947261894,feature,463915863,Mechanism for secrets in plugin configuration 729586521,medium,464449570,Add a universal navigation bar which can be modified by plugins 947261894,feature,464449570,Add a universal navigation bar which can be modified by plugins 729585263,small,464779810,Plugin hook for adding extra template context variables 754269786,plugins,464779810,Plugin hook for adding extra template context variables 947261894,feature,464779810,Plugin hook for adding extra template context variables 729586521,medium,464868844,datasette publish option for setting plugin configuration secrets 750250793,datasette-publish,464868844,datasette publish option for setting plugin configuration secrets 947261894,feature,464868844,datasette publish option for setting plugin configuration secrets 727708732,bug,464905894,Fix header on 404 page 729585263,small,464905894,Fix header on 404 page 750789605,documentation,464990184,Release notes for 0.29 729585263,small,464994105,Add datasette-cors and datasette-auth-github plugins to Ecosystem page 750789605,documentation,464994105,Add datasette-cors and datasette-auth-github plugins to Ecosystem page 729587544,large,465003070,Ship many-to-many faceting support (and facet-by-delimiter) 947261894,feature,465003070,Ship many-to-many faceting support (and facet-by-delimiter) 729585263,small,465019882,"Add --plugin-secret support to ""datasette package""" 750250793,datasette-publish,465019882,"Add --plugin-secret support to ""datasette package""" 1382668283,faceting,465327844,Potential improvements to facet-by-date 2157112227,research,465815372,Experiment with type hints 727708735,help wanted,466996584,Get tests running on Windows using Travis CI 993222446,ci,466996584,Get tests running on Windows using Travis CI 727708732,bug,467218270,Support unicode in url 727708732,bug,467790646,CodeMirror fails to load on database page 993377884,enhancement,467864071,table.get(...) method 993377884,enhancement,470131537,sqlite-utils insert --tsv option 993377884,enhancement,470345929,"table.extract(...) method and ""sqlite-utils extract"" command" 727708732,bug,470542938,Facet by array shouldn't suggest for arrays that are not arrays-of-strings 729585263,small,470542938,Facet by array shouldn't suggest for arrays that are not arrays-of-strings 1382668283,faceting,470542938,Facet by array shouldn't suggest for arrays that are not arrays-of-strings 993377889,wontfix,470691999,.add_column() doesn't match indentation of initial creation 1460105298,enhancement,470856782,Break up records into different tables for each type 993377884,enhancement,471628483,Utilities for building lookup tables 993377884,enhancement,471780443,extracts= option for insert/update/etc 993377883,duplicate,471818939,"Jupyter notebook demo of the library, launchable on Binder" 1405404904,documentation,471818939,"Jupyter notebook demo of the library, launchable on Binder" 1460105295,bug,472097220,Script uses a lot of RAM 993377884,enhancement,472115381,extracts= should support multiple-column extracts 993377889,wontfix,472115381,extracts= should support multiple-column extracts 1460105295,bug,472429048,Too many SQL variables 993377882,bug,473083260,"""Too many SQL variables"" on large inserts" 993377882,bug,476413293,Throws error if .insert_all() / .upsert_all() called with empty list 729587544,large,476573875,Datasette Edit 727708734,enhancement,476852861,Add database_color as a configurable option 993377884,enhancement,480961330,"Ability to list views, and to access db[""view_name""].rows / rows_where / etc" 1528446246,enhancement,487598042,Implement code to pull checkins from the Foursquare API 1528446246,enhancement,487598468,--save option to dump checkins to a JSON file on disk 1528446246,enhancement,487600595,Option to fetch only checkins more recent than the current max checkin 1528446246,enhancement,487601121,Online tool for getting a Foursquare OAuth token 1528446243,bug,487721884,Treat Foursquare timestamps as UTC 993377884,enhancement,488293926,Support enabling FTS on views 993377889,wontfix,488293926,Support enabling FTS on views 993377884,enhancement,488338965,Ability to introspect triggers 1535026965,enhancement,488833136,"Imported followers should go in ""users"", relationships in ""following""" 1535026965,enhancement,488833698,"""twitter-to-sqlite user-timeline"" command for pulling tweets by a specific user" 1535026965,enhancement,488833975,Command for running a search and saving tweets for that search 1535026965,enhancement,488835586,Command for importing data from a Twitter Export file 1535026965,enhancement,489419782,Extract extended_entities into a media table 1535026963,documentation,490803176,--sql and --attach options for feeding commands from SQL queries 1535026965,enhancement,490803176,--sql and --attach options for feeding commands from SQL queries 1535026965,enhancement,491791152,followers-ids and friends-ids subcommands 1535026965,enhancement,492297930,Rethink progress bars for various commands 1543154283,enhancement,493599818,Command for fetching starred repos 1543154283,enhancement,493668862,Extract licenses from repos into a separate table 1543154283,enhancement,493670426,Command to fetch all repos belonging to a user or organization 1543154283,enhancement,493670730,Command to fetch stargazers for one or more repos 1543154283,enhancement,493671014,"Add ""incomplete"" boolean to users table for incomplete profiles" 1566119426,documentation,496415321,Figure out some interesting example SQL queries 1566119428,enhancement,496415321,Figure out some interesting example SQL queries 1566119429,help wanted,496415321,Figure out some interesting example SQL queries 750789605,documentation,497162288,Plugin documentation should cover how to bundle static/templates in setup.py 754269786,plugins,497162288,Plugin documentation should cover how to bundle static/templates in setup.py 750789605,documentation,497170355,Documented internals API for use in plugins 754269786,plugins,497170355,Documented internals API for use in plugins 754269786,plugins,497171390,Utility mechanism for plugins to render templates 727708734,enhancement,502355384,Testing utilities should be available to plugins 754269786,plugins,502355384,Testing utilities should be available to plugins 1379448359,refactor,502355384,Testing utilities should be available to plugins 727708734,enhancement,502993509,Redesign register_output_renderer callback 754269786,plugins,502993509,Redesign register_output_renderer callback 1535026965,enhancement,503045221,Commands for recording real-time tweets from the streaming API 727708734,enhancement,503053243,Datasette should not completely crash if one SQLite database is malformed 729585263,small,503053243,Datasette should not completely crash if one SQLite database is malformed 1535026965,enhancement,503053800,"Extract ""source"" into a separate lookup table" 1535026965,enhancement,503085013,statuses-lookup command 727708734,enhancement,503128914,"Enable ""explain"" and ""explain query plan"" for CTEs" 729585263,small,503128914,"Enable ""explain"" and ""explain query plan"" for CTEs" 727708732,bug,503190241,Codec error in some CSV exports 967420289,minor,503190241,Codec error in some CSV exports 3095460476,csv,503190241,Codec error in some CSV exports 727708734,enhancement,503217375,"Databases on index page should display in order they were passed to ""datasette serve""?" 729585263,small,503217375,"Databases on index page should display in order they were passed to ""datasette serve""?" 727708732,bug,503218205,Enable browser caching for plugin statics with datasette-auth 1599584312,enhancement,503233021,Use better pagination (and implement progress bar) 1599584312,enhancement,503234169,Track and use the 'since' value 1599584312,enhancement,503243784,Extract images into separate tables 1535026965,enhancement,503244410,"When importing favorites, record which user favorited them" 1543154280,bug,504238461,sqlite3.OperationalError: table users has no column named bio 729585263,small,504805857,Use --platform=managed for publish cloudrun 750250793,datasette-publish,504805857,Use --platform=managed for publish cloudrun 1535026965,enhancement,505673645,Do a better job with archived direct message threads 1535026965,enhancement,505674949,import command should empty all archive-* tables first 1535026965,enhancement,505928530,Command to import home-timeline 1535026965,enhancement,506087267,since_id support for home-timeline 1535026965,enhancement,506268945,--since support for various commands for refresh-by-cron 1543154283,enhancement,506276893,issue-comments command for importing issue comments 727708735,help wanted,506300941,bump uvicorn to 0.9.0 to be Python-3.8 friendly 1535026965,enhancement,506432572,Fix & escapes in tweet text 727708734,enhancement,507454958,Handle really wide tables better 1535026965,enhancement,508024032,Ability to import from uncompressed archive or from specific files 727708732,bug,508070977,If you have databases called foo.db and foo-bar.db you cannot visit /foo-bar 727708733,duplicate,508100844,Character encoding bug with CSV export 3095460476,csv,508100844,Character encoding bug with CSV export 1535026965,enhancement,508190730,Extremely simple migration system 727708732,bug,509693773,_where= parameter is not persisted in hidden form fields 727708732,bug,512218858,/-/plugins shows incorrect name for plugins 754269786,plugins,512218858,/-/plugins shows incorrect name for plugins 729585263,small,513008936,"Improve UI of ""datasette publish cloudrun"" to reduce chances of accidentally over-writing a service" 750250793,datasette-publish,513008936,"Improve UI of ""datasette publish cloudrun"" to reduce chances of accidentally over-writing a service" 1535026965,enhancement,513074501,Command for importing mentions timeline 1535026965,enhancement,514459062,retweets-of-me command 1535026965,enhancement,515658861,Add indexes to followers table 727708732,bug,516310670,Don't suggest array facet if column is only [] empty arrays 729585263,small,516310670,Don't suggest array facet if column is only [] empty arrays 1382668283,faceting,516310670,Don't suggest array facet if column is only [] empty arrays 727708732,bug,516370822,Static assets no longer loading for installed plugins 727708732,bug,516748849,CSV export is broken for tables with null foreign keys 3095460476,csv,516748849,CSV export is broken for tables with null foreign keys 1543154280,bug,516769276,Commands do not work without an auth.json file 727708734,enhancement,516874735,Basic join support for table view 947261894,feature,516874735,Basic join support for table view 729585263,small,516950748,"Add ""not in"" filter - ?pk__notin=x,y,z" 947261894,feature,516950748,"Add ""not in"" filter - ?pk__notin=x,y,z" 1543154283,enhancement,516967682,Add this repos_starred view 993377884,enhancement,517241040,ensure_index() method 729586521,medium,517451234,?_col= and ?_nocol= support for toggling columns on table view 947261894,feature,517451234,?_col= and ?_nocol= support for toggling columns on table view 727708732,bug,518506242,Datasette FTS detection bug 727708737,invalid,518506242,Datasette FTS detection bug 1460105295,bug,519038979,Failed to import workout points 729586521,medium,519613116,Refactor TableView.data() method 1379448359,refactor,519613116,Refactor TableView.data() method 727708734,enhancement,520507306,Mechanism for seeing indexes on a specific table 729585263,small,520507306,Mechanism for seeing indexes on a specific table 1535026965,enhancement,520508502,"""friends"" command (similar to ""followers"")" 1543154283,enhancement,520521843,Command to fetch releases 727708732,bug,520655983,"""Invalid SQL"" page should let you edit the SQL" 727708734,enhancement,520655983,"""Invalid SQL"" page should let you edit the SQL" 729585263,small,520655983,"""Invalid SQL"" page should let you edit the SQL" 727708734,enhancement,520667773,Mechanism for indicating foreign key relationships in the table and query page URLs 729586521,medium,520667773,Mechanism for indicating foreign key relationships in the table and query page URLs 947261894,feature,520667773,Mechanism for indicating foreign key relationships in the table and query page URLs 729585263,small,520681725,Syntax for ?_through= that works as a form field 729586521,medium,520715188,Datasette should work with Python 3.8 (and drop compatibility with Python 3.5) 727708732,bug,520740741,If you apply ?_facet_array=tags then &_facet=tags does nothing 967420289,minor,520740741,If you apply ?_facet_array=tags then &_facet=tags does nothing 1382668283,faceting,520740741,If you apply ?_facet_array=tags then &_facet=tags does nothing 1543154280,bug,520756546,Add this view for seeing new releases 1543154283,enhancement,520756546,Add this view for seeing new releases 1543154283,enhancement,521275281,Set up a live demo Datasette instance 727708732,bug,521282013,Unit tests should fail under Python 3.8 727708739,wontfix,521282013,Unit tests should fail under Python 3.8 729585263,small,521329771,Render jinja2 templates in async mode 947261894,feature,521329771,Render jinja2 templates in async mode 729585263,small,521335335,"""datasette publish"" commands should deploy with Python 3.8" 750250793,datasette-publish,521335335,"""datasette publish"" commands should deploy with Python 3.8" 993377882,bug,521868864,"The "".upsert()"" method is misnamed" 993377888,question,521868864,"The "".upsert()"" method is misnamed" 729585263,small,521995039,Upgrade datasette publish Heroku runtime 750250793,datasette-publish,521995039,Upgrade datasette publish Heroku runtime 727708732,bug,522334771,"Publish to Heroku is broken: ""WARNING: You must pass the application as an import string to enable 'reload' or 'workers""" 750250793,datasette-publish,522334771,"Publish to Heroku is broken: ""WARNING: You must pass the application as an import string to enable 'reload' or 'workers""" 993222446,ci,522352520,Don't run tests twice when releasing a tag 727708732,bug,525254973,rowid is not included in dropdown filter menus 729585263,small,525254973,rowid is not included in dropdown filter menus 729585263,small,525993034,"Custom queries with 0 results should say ""0 results""" 729585263,small,526913133,Don't suggest column for faceting if all values are 1 947261894,feature,526913133,Don't suggest column for faceting if all values are 1 967420289,minor,526913133,Don't suggest column for faceting if all values are 1 1382668283,faceting,526913133,Don't suggest column for faceting if all values are 1 729585263,small,527710055,Nicer error message for heroku publish name clash 750250793,datasette-publish,527710055,Nicer error message for heroku publish name clash 729585263,small,528442126,Better documentation for --static option 750789605,documentation,528442126,Better documentation for --static option 729586521,medium,529429214,Provide a cookiecutter template for creating new plugins 750789605,documentation,529429214,Provide a cookiecutter template for creating new plugins 754269786,plugins,529429214,Provide a cookiecutter template for creating new plugins 993222446,ci,530468212,Set up some basic benchmarks as part of the unit tests 1543154283,enhancement,530491074,Command for importing events 727708733,duplicate,530653633,Mechanism for register_output_renderer to suggest extension or not 729585263,small,530653633,Mechanism for register_output_renderer to suggest extension or not 754269786,plugins,530653633,Mechanism for register_output_renderer to suggest extension or not 729585263,small,531502365,Make database level information from metadata.json available in the index.html template 947261894,feature,531502365,Make database level information from metadata.json available in the index.html template 947465681,metadata,531502365,Make database level information from metadata.json available in the index.html template 993377883,duplicate,531583658,Add support for porter stemming in FTS 993377884,enhancement,531583658,Add support for porter stemming in FTS 729586521,medium,531755959,Move hashed URL mode out to a plugin 754269786,plugins,531755959,Move hashed URL mode out to a plugin 1379448359,refactor,531755959,Move hashed URL mode out to a plugin 947261894,feature,534492501,Mechanism for adding arbitrary pages like /about 993377884,enhancement,534507142,Feature request: enable extensions loading 3799780031,spatialite,534507142,Feature request: enable extensions loading 727708734,enhancement,534530973,Reduce table counts on index page with many databases 750789605,documentation,534629631,Add a glossary to the documentation 993377884,enhancement,539204432,Implement ON DELETE and ON UPDATE actions for foreign keys 729585263,small,539590148,fts5 syntax error when using punctuation 947261894,feature,539590148,fts5 syntax error when using punctuation 729585263,small,541467590,Template debug mode that outputs template context 947261894,feature,541467590,Template debug mode that outputs template context 727708732,bug,542553350,Copy and paste doesn't work reliably on iPhone for SQL editor 2389410569,javascript,542553350,Copy and paste doesn't work reliably on iPhone for SQL editor 993377882,bug,542814756,Tests are failing due to missing FTS5 1543154283,enhancement,544571092,Assets table with downloads 1543154280,bug,546051181,Exception running first command: IndexError: list index out of range 993377884,enhancement,549287310,order_by mechanism 750789605,documentation,551834842,README information is obscured by feature history 729585263,small,555832585,"--port option to expose a port other than 8001 in ""datasette package""" 750250793,datasette-publish,555832585,"--port option to expose a port other than 8001 in ""datasette package""" 947261894,feature,555832585,"--port option to expose a port other than 8001 in ""datasette package""" 993377884,enhancement,557825032,Ability to insert data that is transformed by a SQL function 3799780031,spatialite,557825032,Ability to insert data that is transformed by a SQL function 993377884,enhancement,557842245,Helper methods for working with SpatiaLite 3799780031,spatialite,557842245,Helper methods for working with SpatiaLite 993377884,enhancement,557892819,on_create mechanism for after table creation 993377884,enhancement,558600274,"Remove .detect_column_types() from table, make it a documented API" 1405404904,documentation,558600274,"Remove .detect_column_types() from table, make it a documented API" 993377882,bug,559197745,Tutorial command no longer works 993377889,wontfix,559197745,Tutorial command no longer works 993377884,enhancement,559374410,"Make db[""table""].exists a documented API" 1405404904,documentation,559374410,"Make db[""table""].exists a documented API" 727708734,enhancement,559964149,Introduce a SQL statement parser in Python 1535026963,documentation,561454071,"Documentation for "" favorites"" command" 993377882,bug,561460274,.upsert() with hash_id throws error 993377882,bug,562911863,Create index doesn't work for columns containing spaces 727708733,duplicate,563347679,Make it easier to load SpatiaLite 727708734,enhancement,563347679,Make it easier to load SpatiaLite 3750195281,spatialite,563347679,Make it easier to load SpatiaLite 993377882,bug,564579430,Problem with square bracket in CSV column name 1845722916,research,564833696,Prototoype for Datasette on PostgreSQL 947261894,feature,565064079,--dirs option for scanning directories for SQLite databases 729585263,small,565518772,Mechanism for checking if a SQLite database file is safe to open 993377882,bug,565837965,Should detect collections.OrderedDict as a regular dictionary 750250793,datasette-publish,567902704,--cp option for datasette publish and datasette package for shipping additional files and directories 947261894,feature,567902704,--cp option for datasette publish and datasette package for shipping additional files and directories 947261894,feature,568091133,?_searchmode=raw option for running FTS searches without escaping characters 729585263,small,569237568,The first time you click sort by ID it should show you results in reverse order 947261894,feature,569237568,The first time you click sort by ID it should show you results in reverse order 729585263,small,569253072,prepare_connection() plugin hook should accept optional datasette argument 754269786,plugins,569253072,prepare_connection() plugin hook should accept optional datasette argument 750789605,documentation,569268612,Release 0.36 993222446,ci,569275763,Release automation: automate the bit that posts the GitHub release 727708734,enhancement,569317377,Cashe-header missing in http-response 727708738,question,569317377,Cashe-header missing in http-response 754269786,plugins,569317377,Cashe-header missing in http-response 1845722916,research,569317377,Cashe-header missing in http-response 1845722916,research,569613563,Mechanism for writing to database via a queue 750789605,documentation,570301333,Add documentation on Database introspection methods to internals.rst 754269786,plugins,570301333,Add documentation on Database introspection methods to internals.rst 750789605,documentation,570309546,Document (and reconsider design of) Database.execute() and Database.execute_against_connection_in_thread() 754269786,plugins,570309546,Document (and reconsider design of) Database.execute() and Database.execute_against_connection_in_thread() 993377884,enhancement,571805300,"table.disable_fts() method and ""sqlite-utils disable-fts ..."" command" 750789605,documentation,572896293,Expand plugins documentation to multiple pages 754269786,plugins,572896293,Expand plugins documentation to multiple pages 993377884,enhancement,573578548,Ability to customize columns used by extracts= feature 2374328637,python-library,573578548,Ability to customize columns used by extracts= feature 727708732,bug,573583971,"""Templates considered"" comment broken in >=0.35" 993377882,bug,573740712,Cannot .enable_fts() for columns with spaces in their names 727708734,enhancement,573755726,Mechanism for plugins to add action menu items for various things 729587544,large,573755726,Mechanism for plugins to add action menu items for various things 754269786,plugins,573755726,Mechanism for plugins to add action menu items for various things 947261894,feature,573755726,Mechanism for plugins to add action menu items for various things 2175284252,design,573755726,Mechanism for plugins to add action menu items for various things 727708734,enhancement,574021194,--reload sould reload server if code in --plugins-dir changes 967420289,minor,574021194,--reload sould reload server if code in --plugins-dir changes 727708734,enhancement,574035432,is_hidden_table context variable on table.html page 729585263,small,574035432,is_hidden_table context variable on table.html page 754269786,plugins,574035432,is_hidden_table context variable on table.html page 727708732,bug,574043218,Variables from extra_template_vars() not exposed in _context=1 754269786,plugins,574043218,Variables from extra_template_vars() not exposed in _context=1 967420289,minor,574043218,Variables from extra_template_vars() not exposed in _context=1 727708732,bug,576582604,datasette publish cloudrun --memory option 750250793,datasette-publish,576582604,datasette publish cloudrun --memory option 727708734,enhancement,576711589,Update SQLite bundled with Docker container 727708732,bug,576722115,Single failing unit test when run inside the Docker image 727708732,bug,577578306,index.html is not reliably loaded from a plugin 1543154283,enhancement,578883725,Command for importing commits 993377882,bug,581339961,.columns_dict doesn't work for all possible column types 993377884,enhancement,581795570,Support more string values for types in .add_column() 2374328637,python-library,581795570,Support more string values for types in .add_column() 729587544,large,582517965,Ability for a canned query to write to the database 947261894,feature,582517965,Ability for a canned query to write to the database 1913901969,authentication-and-permissions,582517965,Ability for a canned query to write to the database 729587544,large,582526961,Authentication (and permissions) as a core concept 750789605,documentation,582526961,Authentication (and permissions) as a core concept 754269786,plugins,582526961,Authentication (and permissions) as a core concept 947261894,feature,582526961,Authentication (and permissions) as a core concept 1913901969,authentication-and-permissions,582526961,Authentication (and permissions) as a core concept 729585263,small,582713554,Request object utility for handling POST form data 1918831023,css,583970196,Search box CSS doesn't look great on OS X Safari 1535026962,bug,585266763,IndexError running user-timeline command 1535026965,enhancement,585282212,twitter-to-sqlite user-timeline [screen_names] --sql / --attach 1535026965,enhancement,585306847,twitter-to-sqlite followers/friends --sql / --attach 1535026962,bug,585353598,"Handle ""User not found"" error" 1535026965,enhancement,585359363,Screen name display for user-timeline is uneven 727708734,enhancement,585390482,Option in metadata.json to set default sort order for a table 947261894,feature,585390482,Option in metadata.json to set default sort order for a table 1543154280,bug,585411547,Commits in GitHub API can have null author 1924025922,enhancement,585526292,Set up full text search 750250793,datasette-publish,585597329,Add datasette-publish-fly to Datasette Publish documentation 750789605,documentation,585597329,Add datasette-publish-fly to Datasette Publish documentation 727708732,bug,585626199,latest.datasette.io is no longer updating 993222446,ci,585626199,latest.datasette.io is no longer updating 750789605,documentation,585633142,"Documentation for the ""request"" object" 754269786,plugins,585633142,"Documentation for the ""request"" object" 1543154283,enhancement,585850715,"Enable full-text search for more stuff (like commits, issues and issue_comments)" 1543154283,enhancement,586454513,Upgrade to sqlite-utils 2.x 993377882,bug,586477757,"If column data is a mixture of integers and nulls, detected type should be INTEGER" 993377882,bug,586486367,Columns with only null values are no longer created in the database 1543154283,enhancement,586561727,Turn GitHub API errors into exceptions 1543154280,bug,586567379,Handle empty git repositories 1543154281,documentation,586595839,Release 1.0 967420289,minor,587222354,"Consider configuring Jinja in Datasette() constructor, not .app()" 947261894,feature,587302139,"base_url configuration setting, refs #394" 750789605,documentation,587314002,Each plugin hook should link to example plugins built with it 754269786,plugins,587314002,Each plugin hook should link to example plugins built with it 750250793,datasette-publish,587322443,Remove Zeit Now v1 support 750789605,documentation,587322443,Remove Zeit Now v1 support 750789605,documentation,587398703,Release notes for Datasette 0.39 1599584312,enhancement,589402939,"Store authentication information as ""pocket_access_token"" etc" 1535026962,bug,590666760,--since feature can be confused by retweets 1535026965,enhancement,590669793,Feature: record history of follower counts 1535026962,bug,591613579,"Bug: recorded a since_id for None, None" 729585263,small,592829135,Support YAML in metadata - metadata.yaml 947261894,feature,592829135,Support YAML in metadata - metadata.yaml 1379448359,refactor,593006814,Refactor duplicate cell display logic 993377884,enhancement,593751293,"Adding a ""recreate"" flag to the `Database` constructor" 727708732,bug,594168758,extra_template_vars() sending wrong view_name for index 754269786,plugins,594168758,extra_template_vars() sending wrong view_name for index 1845722916,research,594189527,See if I can get Datasette working on Zeit Now v2 754269786,plugins,594237015,Plugin idea: datasette-redirects 947261894,feature,594237015,Plugin idea: datasette-redirects 1970143153,dependencies,596245802,"Update beautifulsoup4 requirement from ~=4.8.1 to >=4.8.1,<4.10.0" 1970143153,dependencies,596245923,"Update pytest requirement from ~=5.2.2 to >=5.2.2,<5.5.0" 1970143153,dependencies,596246006,"Update jinja2 requirement from ~=2.10.3 to >=2.10.3,<2.12.0" 993377882,bug,597671518,"Only set .last_rowid and .last_pk for single update/inserts, not for .insert_all()/.upsert_all() with multiple records" 727708732,bug,598013965,--plugin-secret over-rides existing metadata.json plugin config 750250793,datasette-publish,598013965,--plugin-secret over-rides existing metadata.json plugin config 947465681,metadata,598013965,--plugin-secret over-rides existing metadata.json plugin config 993377882,bug,598640234,.upsert_all() should maybe error if dictionaries passed to it do not have the same keys 993377889,wontfix,598640234,.upsert_all() should maybe error if dictionaries passed to it do not have the same keys 1970143153,dependencies,598891570,"Update aiofiles requirement from ~=0.4.0 to >=0.4,<0.6" 1543154283,enhancement,599776345,Feature idea: github-to-sqlite everything ... 727708734,enhancement,600583271,Custom CSS class on body for styling canned queries 729585263,small,600583271,Custom CSS class on body for styling canned queries 1918831023,css,600583271,Custom CSS class on body for styling canned queries 1543154280,bug,601271612,Topics are missing from repositories 1543154280,bug,601330277,Repos have a big blob of JSON in the organization column 1543154283,enhancement,601333634,Pull repository contributors 993377884,enhancement,601358649,"Mechanism for forcing column-type, over-riding auto-detection" 1405404904,documentation,601392318,README should include an example of CLI data insertion 1535026962,bug,602173589,Error running user-timeline with --sql and --ids together 1535026965,enhancement,602176870,"""twitter-to-sqlite lists"" command for retrieving a user's owned lists" 1535026962,bug,602181581,"tweet[""source""] can be an empty string" 1996280386,documentation,602533300,Import photo metadata from Apple Photos into SQLite 1996280391,enhancement,602533300,Import photo metadata from Apple Photos into SQLite 993377882,bug,602569315,Can't store an array or dictionary containing a bytes value 1996280391,enhancement,602575575,Add progress bar to upload command 1996280391,enhancement,602585497,Integrate image content hashing 1535026962,bug,602619330,Use raise_for_status() everywhere 1970143153,dependencies,603242257,"Update mergedeep requirement from ~=1.1.1 to >=1.1.1,<1.4.0" 729585263,small,603295970,Visually distinguish integer and text columns 947261894,feature,603295970,Visually distinguish integer and text columns 1543154280,bug,603617013,Milestones should have foreign key to creator and repo 1543154280,bug,603618244,Issues milestone column is the wrong type 1543154283,enhancement,603624862,Issue and milestone should have foreign key to repo 1970143153,dependencies,604001627,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.12" 1543154280,bug,604222295,Issue comments don't appear to populate issues foreign key 947261894,feature,605110015,Option to automatically configure based on directory layout 1845722916,research,605110015,Option to automatically configure based on directory layout 1970143153,dependencies,605546606,"Update janus requirement from ~=0.4.0 to >=0.4,<0.6" 1996280391,enhancement,605938063,"upload command should be resumable, should only upload photos not already uploaded" 1996280391,enhancement,606028272,Speed up hashing step using threads 1996280391,enhancement,606032950,Try running S3 uploads in a thread pool 1996280391,enhancement,606033104,"If less than 500MB, show size in MB not GB" 729585263,small,607086780,Pass a request object to custom page templates 727708732,bug,607211058,Don't throw 500 error on attempted directory browse 729585263,small,607223136,"Replace ""datasette publish --extra-options"" with ""--setting""" 750250793,datasette-publish,607223136,"Replace ""datasette publish --extra-options"" with ""--setting""" 993222446,ci,607243940,"Speed up tests with scope=""session""?" 1845722916,research,607243940,"Speed up tests with scope=""session""?" 727708732,bug,607770595,escape_fts() does not correctly escape * wildcards 727708739,wontfix,607770595,escape_fts() does not correctly escape * wildcards 1996280391,enhancement,607888367,Also upload movie files 727708732,bug,608058890,link_or_copy_directory() error - Invalid cross-device link 750250793,datasette-publish,608058890,link_or_copy_directory() error - Invalid cross-device link 1996280391,enhancement,608512747,Annotate photos using the Google Cloud Vision API 727708733,duplicate,608613033,Extract the hash-URL mechanism out into a plugin 727708734,enhancement,608613033,Extract the hash-URL mechanism out into a plugin 754269786,plugins,608613033,Extract the hash-URL mechanism out into a plugin 1543154283,enhancement,609950090,Fall back to authentication via ENV 727708734,enhancement,610192152,Directory configuration mode should support metadata.yaml 1535026962,bug,610284471,Error running 'search' for the first time 729585263,small,610342575,?_searchmode=raw should be documented on full-text search page 750789605,documentation,610342575,?_searchmode=raw should be documented on full-text search page 1543154283,enhancement,610408908,Command for retrieving dependents for a repo 1543154283,enhancement,610511450,Create index on issue_comments(user) and other foreign keys 993377882,bug,610517472,sqlite3.OperationalError: too many SQL variables in insert_all when using rows with varying numbers of columns 727708732,bug,610829227,Cloud Run fails to serve database files larger than 32MB 750250793,datasette-publish,610829227,Cloud Run fails to serve database files larger than 32MB 1543154283,enhancement,610842926,Add view for better display of dependent repos 1543154283,enhancement,610843136,Mechanism for creating views if they don't yet exist 993377884,enhancement,610853393,"--schema option to ""sqlite-utils tables""" 993377884,enhancement,610853576,"""sqlite-utils views"" command" 993377884,enhancement,611216862,"create_view(..., ignore=True, replace=True) parameters" 993377884,enhancement,611222968,sqlite-utils create-view CLI command 727708734,enhancement,611252244,Add notlike table filter 729585263,small,611252244,Add notlike table filter 1405404904,documentation,611326701,Documentation unit tests for CLI commands 727708734,enhancement,611540797,Ability to set custom default _size on a per-table basis 729585263,small,611540797,Ability to set custom default _size on a per-table basis 947465681,metadata,611540797,Ability to set custom default _size on a per-table basis 727708732,bug,611835285,Non-utf8 encoding in exceptionhandlers and custom-pages 1970143153,dependencies,611874514,"Update pytest-asyncio requirement from ~=0.10.0 to >=0.10,<0.13" 967420289,minor,611997130,Clean up aiofiles warnings on 3.8 967420289,minor,612082842,"Fix ""no such column: id"" output in tests" 750789605,documentation,612089949,Add pipx to installation documentation 1996280391,enhancement,612151767,Expose scores from ZCOMPUTEDASSETATTRIBUTES 1996280391,enhancement,612287234,"Import machine-learning detected labels (dog, llama etc) from Apple Photos" 727708734,enhancement,612382643,Question: Access to immutable database-path 729585263,small,612382643,Question: Access to immutable database-path 993377884,enhancement,612658444,"table.create_index(..., ignore=True)" 2039295316,ci,612860531,Only install osxphotos if running on macOS 2039295316,ci,612860758,Switch CI solution to GitHub Actions with a macOS runner 1996280391,enhancement,613002220,apple-photos command should work even if upload has not run 1996280386,documentation,613006393,Ability to serve thumbnailed Apple Photo from its place on disk 1996280391,enhancement,613006393,Ability to serve thumbnailed Apple Photo from its place on disk 727708734,enhancement,613422636,Way of seeing full schema for a database 1845722916,research,613491342,Experiment with PRAGMA hard_heap_limit 993377884,enhancement,613755043,Support decimal.Decimal type 1543154280,bug,613777056,issues foreign key to repo isn't working 1543154286,invalid,613777056,issues foreign key to repo isn't working 1996280384,bug,615474990,bpylist.archiver.CircularReference: archive has a cycle with uid(13) 993377884,enhancement,615477131,sqlite-utils drop-table and drop-view commands 2051881526,research,615626118,Try out ExifReader 750789605,documentation,616012427,Add PyPI project urls to setup.py 750250793,datasette-publish,616087149,publish heroku should default to currently tagged version 993377884,enhancement,616271236,"add_foreign_key(...., ignore=True)" 729585263,small,620969465,Allow to specify a URL fragment for canned queries 947261894,feature,620969465,Allow to specify a URL fragment for canned queries 1996280391,enhancement,621280529,create-subset command for creating a publishable subset of a photos database 993377884,enhancement,621286870,Syntactic sugar for ATTACH DATABASE 1996280386,documentation,621323348,Configurable URL for images 1996280391,enhancement,621323348,Configurable URL for images 1996280386,documentation,621332242,Create a public demo 1996280391,enhancement,621444763,Rename project to dogsheep-photos 1996280391,enhancement,621486115,photos_with_apple_metadata view should include labels 993377884,enhancement,621989740,table.transform() method for advanced alter table 729585263,small,625930207,register_output_renderer can_render mechanism 947261894,feature,625930207,register_output_renderer can_render mechanism 2092302176,tests,625980317,Unit test that checks that all plugin hooks have corresponding unit tests 754269786,plugins,626001501,All plugin hooks should have unit tests 2092302176,tests,626001501,All plugin hooks should have unit tests 1379448359,refactor,626078521,Consolidate request.raw_args and request.args 754269786,plugins,626131309,Move test plugins into datasette/tests/plugins/ directory 1379448359,refactor,626131309,Move test plugins into datasette/tests/plugins/ directory 2092302176,tests,626131309,Move test plugins into datasette/tests/plugins/ directory 729585263,small,626163974,register_output_renderer render callback should be optionally awaitable 754269786,plugins,626163974,register_output_renderer render callback should be optionally awaitable 727708732,bug,626171242,Error pages not correctly loading CSS 729585263,small,626171242,Error pages not correctly loading CSS 947465681,metadata,626211658,Ability to configure keyset pagination for views and queries 2093067580,performance,626211658,Ability to configure keyset pagination for views and queries 729585263,small,626582657,Make human_description_en explicitly available to output renderers 754269786,plugins,626582657,Make human_description_en explicitly available to output renderers 750789605,documentation,626593402,Internals documentation for datasette.metadata() method 754269786,plugins,626593402,Internals documentation for datasette.metadata() method 947465681,metadata,626593402,Internals documentation for datasette.metadata() method 727708732,bug,626663119,request.url and request.scheme should obey force_https_urls config setting 729586521,medium,627794879,Redesign default .json format 754730474,json-api,627794879,Redesign default .json format 947261894,feature,627794879,Redesign default .json format 3645705798,json-extras,627794879,Redesign default .json format 729586521,medium,628003707,Ability to sign in to Datasette as a root account 947261894,feature,628003707,Ability to sign in to Datasette as a root account 1913901969,authentication-and-permissions,628003707,Ability to sign in to Datasette as a root account 729585263,small,628025100,Datasette secret mechanism - initially for signed cookies 1913901969,authentication-and-permissions,628025100,Datasette secret mechanism - initially for signed cookies 750789605,documentation,628087971,Documentation page describing Datasette's authentication system 1913901969,authentication-and-permissions,628087971,Documentation page describing Datasette's authentication system 729586521,medium,628089318,"""datasette publish"" should bake in a random --secret" 750250793,datasette-publish,628089318,"""datasette publish"" should bake in a random --secret" 1913901969,authentication-and-permissions,628089318,"""datasette publish"" should bake in a random --secret" 729585263,small,628121234, /-/permissions debugging tool 1913901969,authentication-and-permissions,628121234, /-/permissions debugging tool 967420289,minor,628156527,Mechanism for enabling pluggy tracing 729587544,large,628499086,"""flash messages"" mechanism" 750789605,documentation,628572716,Tutorial: building a something-interesting with writable canned queries 729585263,small,629459637,"Replace response.body.decode(""utf8"") with response.text in tests" 1379448359,refactor,629459637,"Replace response.body.decode(""utf8"") with response.text in tests" 2092302176,tests,629459637,"Replace response.body.decode(""utf8"") with response.text in tests" 1599584307,documentation,629473827,Set up a demo 729585263,small,629524205,CSRF protection for /-/messages tool and writable canned queries 2105906277,security,629524205,CSRF protection for /-/messages tool and writable canned queries 729585263,small,629535669,Show hooks implemented by each plugin on /-/plugins 754269786,plugins,629535669,Show hooks implemented by each plugin on /-/plugins 729585263,small,629541395,response.set_cookie() method 1379448359,refactor,629541395,response.set_cookie() method 729585263,small,630120235,"Documentation for new ""params"" setting for canned queries" 750789605,documentation,630120235,"Documentation for new ""params"" setting for canned queries" 2092302176,tests,631789422,TestResponse needs to handle multiple set-cookie headers 1913901969,authentication-and-permissions,631931408,Canned query permissions mechanism 727708739,wontfix,631932926,allow_by_query setting for configuring permissions with a SQL statement 1913901969,authentication-and-permissions,631932926,allow_by_query setting for configuring permissions with a SQL statement 727708732,bug,632056825,"""datasette plugins"" command is broken" 727708732,bug,632673972,python tests/fixtures.py command has a bug 967420289,minor,632673972,python tests/fixtures.py command has a bug 750789605,documentation,632724154,Writable canned queries live demo on Glitch 750789605,documentation,632753851,Release Datasette 0.44 754269786,plugins,632753851,Release Datasette 0.44 1913901969,authentication-and-permissions,632753851,Release Datasette 0.44 993222446,ci,632843030,Ability to ship alpha and beta releases 1845722916,research,632843030,Ability to ship alpha and beta releases 754269786,plugins,632918799,Permission check for every view in Datasette (plus docs) 1913901969,authentication-and-permissions,632918799,Permission check for every view in Datasette (plus docs) 729585263,small,633066114,Refactor permission check for canned query 1379448359,refactor,633066114,Refactor permission check for canned query 1913901969,authentication-and-permissions,633066114,Refactor permission check for canned query 727708734,enhancement,633578769,"Support ""allow"" block on root, databases and tables, not just queries" 729587544,large,633578769,"Support ""allow"" block on root, databases and tables, not just queries" 947261894,feature,633578769,"Support ""allow"" block on root, databases and tables, not just queries" 1913901969,authentication-and-permissions,633578769,"Support ""allow"" block on root, databases and tables, not just queries" 729586521,medium,634112607,Ability to customize what happens when a view permission fails 754269786,plugins,634112607,Ability to customize what happens when a view permission fails 1913901969,authentication-and-permissions,634112607,Ability to customize what happens when a view permission fails 2105906277,security,634112607,Ability to customize what happens when a view permission fails 729586521,medium,634139848,Mechanism for specifying allow_sql permission in metadata.json 1913901969,authentication-and-permissions,634139848,Mechanism for specifying allow_sql permission in metadata.json 729585263,small,634651079,Remove --debug option from datasette serve 1379448359,refactor,634651079,Remove --debug option from datasette serve 1913901969,authentication-and-permissions,634663505,Group permission checks by request on /-/permissions debug page 750789605,documentation,634783573,Come up with a new example for extra_template_vars plugin 754269786,plugins,634783573,Come up with a new example for extra_template_vars plugin 754269786,plugins,634844634,Drop resource_type from permission_allowed system 1379448359,refactor,634844634,Drop resource_type from permission_allowed system 1913901969,authentication-and-permissions,634844634,Drop resource_type from permission_allowed system 729587544,large,634917088,Example permissions plugin 754269786,plugins,634917088,Example permissions plugin 1913901969,authentication-and-permissions,634917088,Example permissions plugin 750789605,documentation,635037204,register_routes() plugin hook 754269786,plugins,635037204,register_routes() plugin hook 727708737,invalid,635049296,Idea: Plugin hook for registering canned queries 754269786,plugins,635049296,Idea: Plugin hook for registering canned queries 1845722916,research,635049296,Idea: Plugin hook for registering canned queries 729585263,small,635076066,Add Response class to internals documentation 750789605,documentation,635076066,Add Response class to internals documentation 754269786,plugins,635076066,Add Response class to internals documentation 729585263,small,635077656,request.url_vars helper property 754269786,plugins,635077656,request.url_vars helper property 729585263,small,635107393,"Documentation is inconsistent about ""id"" as required field on actor" 750789605,documentation,635107393,"Documentation is inconsistent about ""id"" as required field on actor" 754269786,plugins,635107393,"Documentation is inconsistent about ""id"" as required field on actor" 729587544,large,635108074,Example authentication plugin 754269786,plugins,635108074,Example authentication plugin 1913901969,authentication-and-permissions,635108074,Example authentication plugin 1913901969,authentication-and-permissions,635147716,Way to enable a default=False permission for anonymous users 750789605,documentation,635519358,Document the ds_actor signed cookie 1913901969,authentication-and-permissions,635519358,Document the ds_actor signed cookie 750789605,documentation,635696400,Document CSRF protection (for plugins) 754269786,plugins,635696400,Document CSRF protection (for plugins) 727708732,bug,635914822,Horizontal scrollbar on changelog page on mobile 750789605,documentation,635914822,Horizontal scrollbar on changelog page on mobile 1918831023,css,635914822,Horizontal scrollbar on changelog page on mobile 1913901969,authentication-and-permissions,636426530,Ability to set ds_actor cookie such that it expires 2105906277,security,636426530,Ability to set ds_actor cookie such that it expires 754269786,plugins,636511683,Redesign register_facet_classes plugin hook 1382668283,faceting,636511683,Redesign register_facet_classes plugin hook 727708739,wontfix,636614868,"It would be more intuitive if ""allow"": none meant ""no-one can do this""" 729585263,small,636614868,"It would be more intuitive if ""allow"": none meant ""no-one can do this""" 750789605,documentation,636614868,"It would be more intuitive if ""allow"": none meant ""no-one can do this""" 1913901969,authentication-and-permissions,636614868,"It would be more intuitive if ""allow"": none meant ""no-one can do this""" 1913901969,authentication-and-permissions,636722501,Having view-table permission but NOT view-database should still grant access to /db/table 2105906277,security,636722501,Having view-table permission but NOT view-database should still grant access to /db/table 729585263,small,637253789,/-/metadata and so on should respect view-instance permission 1913901969,authentication-and-permissions,637253789,/-/metadata and so on should respect view-instance permission 2105906277,security,637253789,/-/metadata and so on should respect view-instance permission 729585263,small,637342551,startup() plugin hook 754269786,plugins,637342551,startup() plugin hook 1845722916,research,637342551,startup() plugin hook 754730474,json-api,637363686,Mechanism for skipping CSRF checks on API posts 1913901969,authentication-and-permissions,637363686,Mechanism for skipping CSRF checks on API posts 2105906277,security,637363686,Mechanism for skipping CSRF checks on API posts 727708732,bug,637365801,actor_matches_allow fails to consider all keys 729585263,small,637365801,actor_matches_allow fails to consider all keys 1913901969,authentication-and-permissions,637365801,actor_matches_allow fails to consider all keys 727708732,bug,637370652,Plugin $env secrets mechanism doesn't work inside lists 729585263,small,637370652,Plugin $env secrets mechanism doesn't work inside lists 754269786,plugins,637370652,Plugin $env secrets mechanism doesn't work inside lists 727708732,bug,637395097,Incorrect URLs when served behind a proxy with base_url set 727708732,bug,637409144,"{""$file"": ...} mechanism is broken" 993377884,enhancement,637889964,Ability to execute insert/update statements with the CLI 1543154280,bug,637899539,Demo deploy is broken 729586521,medium,637966833,Log out mechanism for clearing ds_actor cookie 947261894,feature,637966833,Log out mechanism for clearing ds_actor cookie 2105906277,security,637966833,Log out mechanism for clearing ds_actor cookie 993222446,ci,638104520,Research feasibility of 100% test coverage 1845722916,research,638104520,Research feasibility of 100% test coverage 2092302176,tests,638104520,Research feasibility of 100% test coverage 729586521,medium,638212085,Magic parameters for canned queries 729587544,large,638212085,Magic parameters for canned queries 947261894,feature,638212085,Magic parameters for canned queries 993222446,ci,638229448,Configure codecov.io 2092302176,tests,638229448,Configure codecov.io 727708732,bug,638238548,Code coverage should ignore files in .coveragerc 967420289,minor,638238548,Code coverage should ignore files in .coveragerc 993222446,ci,638238548,Code coverage should ignore files in .coveragerc 2092302176,tests,638238548,Code coverage should ignore files in .coveragerc 727708732,bug,638241779,"""Too many open files"" error running tests" 2092302176,tests,638241779,"""Too many open files"" error running tests" 1845722916,research,638259643,Take advantage of .coverage being a SQLite database 2092302176,tests,638259643,Take advantage of .coverage being a SQLite database 993222446,ci,639072811,Rename master branch to main 1845722916,research,639072811,Rename master branch to main 1535026965,enhancement,639542974,Fall back to FTS4 if FTS5 is not available 1845722916,research,639993467,Proof of concept for Datasette on AWS Lambda with EFS 729586521,medium,640917326,canned_queries() plugin hook 754269786,plugins,640917326,canned_queries() plugin hook 947261894,feature,640917326,canned_queries() plugin hook 947465681,metadata,640917326,canned_queries() plugin hook 754269786,plugins,640943441,Ensure register_routes() works for POST 729585263,small,641460179,"Respect default scope[""actor""] if one exists" 754269786,plugins,641460179,"Respect default scope[""actor""] if one exists" 1913901969,authentication-and-permissions,641460179,"Respect default scope[""actor""] if one exists" 750789605,documentation,642127307,Add instructions for using cookiecutter plugin template to plugin docs 754269786,plugins,642127307,Add instructions for using cookiecutter plugin template to plugin docs 1845722916,research,642296989,Consider pagination of canned queries 727708733,duplicate,642297505,Comprehensive documentation for variables made available to templates 750789605,documentation,642297505,Comprehensive documentation for variables made available to templates 727708732,bug,642388564,publish heroku does not work on Windows 10 729585263,small,642572841,Database page loads too slowly with many large tables (due to table counts) 2093067580,performance,642572841,Database page loads too slowly with many large tables (due to table counts) 727708733,duplicate,642651572,Plugin hook for instance/database/table metadata 754269786,plugins,642651572,Plugin hook for instance/database/table metadata 947465681,metadata,642651572,Plugin hook for instance/database/table metadata 729585263,small,642652808,Script to generate larger SQLite test files 1845722916,research,642652808,Script to generate larger SQLite test files 2093067580,performance,642652808,Script to generate larger SQLite test files 727708734,enhancement,643510821,Set an upper limit on total facet suggestion time for a page 729585263,small,643510821,Set an upper limit on total facet suggestion time for a page 1382668283,faceting,643510821,Set an upper limit on total facet suggestion time for a page 2093067580,performance,643510821,Set an upper limit on total facet suggestion time for a page