{"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 503053243, "label": "Datasette should not completely crash if one SQLite database is malformed"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 503128914, "label": "Enable \"explain\" and \"explain query plan\" for CTEs"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 503217375, "label": "Databases on index page should display in order they were passed to \"datasette serve\"?"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 504805857, "label": "Use --platform=managed for publish cloudrun"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 513008936, "label": "Improve UI of \"datasette publish cloudrun\" to reduce chances of accidentally over-writing a service"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 516310670, "label": "Don't suggest array facet if column is only [] empty arrays"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 516950748, "label": "Add \"not in\" filter - ?pk__notin=x,y,z"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 520507306, "label": "Mechanism for seeing indexes on a specific table"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 520655983, "label": "\"Invalid SQL\" page should let you edit the SQL"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 520681725, "label": "Syntax for ?_through= that works as a form field"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 521329771, "label": "Render jinja2 templates in async mode"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 521335335, "label": "\"datasette publish\" commands should deploy with Python 3.8"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 521995039, "label": "Upgrade datasette publish Heroku runtime"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 525254973, "label": "rowid is not included in dropdown filter menus"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 525993034, "label": "Custom queries with 0 results should say \"0 results\""}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 526913133, "label": "Don't suggest column for faceting if all values are 1"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 527710055, "label": "Nicer error message for heroku publish name clash"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 528442126, "label": "Better documentation for --static option"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 530653633, "label": "Mechanism for register_output_renderer to suggest extension or not"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 531502365, "label": "Make database level information from metadata.json available in the index.html template"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 539590148, "label": "fts5 syntax error when using punctuation"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 541467590, "label": "Template debug mode that outputs template context"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 555832585, "label": "--port option to expose a port other than 8001 in \"datasette package\""}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 565518772, "label": "Mechanism for checking if a SQLite database file is safe to open"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 569237568, "label": "The first time you click sort by ID it should show you results in reverse order"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 569253072, "label": "prepare_connection() plugin hook should accept optional datasette argument"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 574035432, "label": "is_hidden_table context variable on table.html page"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 582713554, "label": "Request object utility for handling POST form data"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 592829135, "label": "Support YAML in metadata - metadata.yaml"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 600583271, "label": "Custom CSS class on body for styling canned queries"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 603295970, "label": "Visually distinguish integer and text columns"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 607086780, "label": "Pass a request object to custom page templates"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 607223136, "label": "Replace \"datasette publish --extra-options\" with \"--setting\""}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 610342575, "label": "?_searchmode=raw should be documented on full-text search page"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 611252244, "label": "Add notlike table filter"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 611540797, "label": "Ability to set custom default _size on a per-table basis"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 612382643, "label": "Question: Access to immutable database-path"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 620969465, "label": "Allow to specify a URL fragment for canned queries"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 625930207, "label": "register_output_renderer can_render mechanism"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 626163974, "label": "register_output_renderer render callback should be optionally awaitable"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 626171242, "label": "Error pages not correctly loading CSS"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 626582657, "label": "Make human_description_en explicitly available to output renderers"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 628025100, "label": "Datasette secret mechanism - initially for signed cookies"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 628121234, "label": " /-/permissions debugging tool"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 629459637, "label": "Replace response.body.decode(\"utf8\") with response.text in tests"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 629524205, "label": "CSRF protection for /-/messages tool and writable canned queries"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 629535669, "label": "Show hooks implemented by each plugin on /-/plugins"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 629541395, "label": "response.set_cookie() method"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 630120235, "label": "Documentation for new \"params\" setting for canned queries"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 633066114, "label": "Refactor permission check for canned query"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 634651079, "label": "Remove --debug option from datasette serve"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 635076066, "label": "Add Response class to internals documentation"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 635077656, "label": "request.url_vars helper property"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 635107393, "label": "Documentation is inconsistent about \"id\" as required field on actor"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 636614868, "label": "It would be more intuitive if \"allow\": none meant \"no-one can do this\""}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 637253789, "label": "/-/metadata and so on should respect view-instance permission"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 637342551, "label": "startup() plugin hook"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 637365801, "label": "actor_matches_allow fails to consider all keys"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 637370652, "label": "Plugin $env secrets mechanism doesn't work inside lists"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 641460179, "label": "Respect default scope[\"actor\"] if one exists"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 642572841, "label": "Database page loads too slowly with many large tables (due to table counts)"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 642652808, "label": "Script to generate larger SQLite test files"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 643510821, "label": "Set an upper limit on total facet suggestion time for a page"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 645975649, "label": "register_routes() should support non-async view functions too"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 646840273, "label": "Rename the _timestamp magic parameters to _now"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 647103735, "label": "\"Logged in as: XXX - logout\" navigation item"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 647879783, "label": "Add log out link to the pattern portfolio"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 648569227, "label": "Database page documentation still talks about hashes in URLs"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 648637666, "label": "POST to /db/canned-query that returns JSON should be supported (for API clients)"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 648673556, "label": "Release notes for 0.45"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 649329013, "label": "Only show \"log out\" button if user is authenticated using a ds_actor cookie"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 658476055, "label": "Use white-space: pre-wrap on ALL table cell contents"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 659580487, "label": "Request method for retrieving the unparsed request body"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 663145122, "label": "Add temporary plugin testing pattern to the testing docs"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 663228985, "label": "datasette.urls.table() / .instance() / .database() methods for constructing URLs, also exposed to templates"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 663317875, "label": "/database.db download should include content-length header"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 665400224, "label": "\"allow\": true for anyone, \"allow\": false for nobody"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 665403403, "label": "Allow documentation doesn't explain what happens with multiple allow keys"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 665407663, "label": "Interactive debugging tool for \"allow\" blocks"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 682005535, "label": "datasette install -U for upgrading packages"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 684111953, "label": "datasette --get exit code should reflect HTTP errors"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 684961449, "label": "Try out CodeMirror SQL hints"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 688622148, "label": "Simplify imports of common classes"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 696908389, "label": "Verification checks for metadata.json on startup"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 700728217, "label": "raise_404 mechanism for custom templates"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 705108492, "label": "request an \"-o\" option on \"datasette server\" to open the default browser at the running url"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 710650633, "label": "Default table view JSON should include CREATE TABLE"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 716756082, "label": "Better handling of multiple matching template wildcard paths"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 718238967, "label": "from_json jinja2 filter"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 718255803, "label": "Replace MockRequest with Request.fake()"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 723803777, "label": "--load-extension=spatialite shortcut"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 725099777, "label": "datasette.urls.static_plugins(...) method"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 725184645, "label": "Better way of representing binary data in .csv output"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 725743755, "label": "datasette.urls.table(..., format=\"json\") argument"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 725996507, "label": "Make it possible to download BLOB data from the Datasette UI"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 726094754, "label": "Add horizontal scrollbar to tables"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 728895193, "label": "Link to blob downloads in the right places"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 730797787, "label": "--cors should enable /fixtures.db CORS access"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 730802994, "label": "Database download should implement cascading permissions"}} {"labels_id": {"value": 729585263, "label": "small"}, "issues_id": {"value": 732685643, "label": ".csv should link to .blob downloads"}}