{"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 273157085, "label": "datasette publish hyper"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 273944952, "label": "Package as standalone binary"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 274264175, "label": "datasette publish elasticbeanstalk"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 274265878, "label": "datasette publish appengine"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 275087397, "label": "Plugin that adds an authentication layer of some sort"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 275125561, "label": "Datasette serve should accept paths/URLs to CSVs and other file formats"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 276455748, "label": "datasette publish gcloud"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 285168503, "label": "Add GraphQL endpoint"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 299760684, "label": "Metadata should be a nested arbitrary KV store"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 309047460, "label": "Ability to bundle metadata and templates inside the SQLite file"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 312395790, "label": "Ability to sort by more than one column"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 312396095, "label": "Ability to sort with nulls last"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 314506669, "label": "Allow plugins to define additional URL routes and views"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 314725342, "label": "Plugin support for datasette publish"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 314771615, "label": "Support custom unit display in order to handle \"$10,000\""}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 314847571, "label": "Investigate syntactic sugar for plugins"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 315142414, "label": "Allow plugins to add new cli sub commands "}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 315960272, "label": "prepare_context() plugin hook"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 316444720, "label": "Option to expose expanded foreign keys in JSON/CSV"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 317001500, "label": "datasette publish lambda plugin"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 317714268, "label": "External metadata.json"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 318490133, "label": "Default datasette logging format should be JSON"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 322787470, "label": "inspect() should detect many-to-many relationships"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 323658641, "label": "Add ?_extra= mechanism for requesting extra properties in JSON"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 323681589, "label": "Export to CSV"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 323718842, "label": "Mechanism for ranking results from SQLite full-text search"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 324162476, "label": "Mechanism for automatically picking up changes when on-disk .db file changes"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 324188953, "label": "Port Datasette to ASGI"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 324720095, "label": "\"config\" section in metadata.json (root, database and table level)"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 324835838, "label": "Handle spatialite geometry columns better"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 325958506, "label": "Support cross-database joins"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 326767626, "label": "Support multiple filters of the same type"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 326800219, "label": "Mechanism for customizing the SQL used to select specific columns in the table view"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 327395270, "label": "Per-database and per-table /-/ URL namespace"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 327459829, "label": "URLify URLs in results from custom SQL statements / views"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 341123355, "label": "Requesting support for query description"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 346026869, "label": "Handle many-to-many relationships"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 346027040, "label": "Table view should support filtering via many-to-many relationships"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 374953006, "label": "Interface should show same JSON shape options for custom SQL queries"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 396212021, "label": "base_url configuration setting"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 397098882, "label": "Add pragma compile_options output to /-/versions"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 398559195, "label": "datasette publish cloudrun plugin"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 407174173, "label": "Show metadata info (e.g. license, source) on custom SQL query pages"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 418329842, "label": "Add query parameter to hide SQL textarea"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 421546944, "label": "Datasette Library"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 432636432, "label": "?_where=sql-fragment parameter for table views"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 433297989, "label": "?column__in=value1,value2,value3 filter"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 440437037, "label": "Plugin for allowing CORS from specified hosts"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 443021509, "label": "Paginate + search for databases/tables on the homepage"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 443038584, "label": "Decide what to do about /-/inspect"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 444746021, "label": "Pagination for the database index page"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 444997937, "label": "/-/databases showing currently attached database details"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 445850934, "label": "Plugin hook: filters_from_request"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 446429421, "label": "Facet by date"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 447408527, "label": "Option to facet by date using month or year"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 447451492, "label": "Mechanism for displaying summary of m2m relationships in rows on table view"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 453846217, "label": "Option to display binary data"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 455965174, "label": "Ability to set default sort order for a table or view in metadata.json"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 456568880, "label": "Support opening multiple databases with the same stem"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 456569067, "label": "Ability to facet by delimiter (e.g. comma separated fields)"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 456578474, "label": "Get Datasette tests passing on Windows in GitHub Actions"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 459598080, "label": "asgi_wrapper plugin hook"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 459621683, "label": "Easier way of creating custom row templates"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 459882902, "label": "Stream all results for arbitrary SQL and canned queries"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 462117311, "label": "/database/-/inspect"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 463544206, "label": "Populate \"endpoint\" key in ASGI scope"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 463915863, "label": "Mechanism for secrets in plugin configuration"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 464449570, "label": "Add a universal navigation bar which can be modified by plugins"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 464779810, "label": "Plugin hook for adding extra template context variables"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 464868844, "label": "datasette publish option for setting plugin configuration secrets"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 465003070, "label": "Ship many-to-many faceting support (and facet-by-delimiter)"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 516874735, "label": "Basic join support for table view"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 516950748, "label": "Add \"not in\" filter - ?pk__notin=x,y,z"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 517451234, "label": "?_col= and ?_nocol= support for toggling columns on table view"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 520667773, "label": "Mechanism for indicating foreign key relationships in the table and query page URLs"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 521329771, "label": "Render jinja2 templates in async mode"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 526913133, "label": "Don't suggest column for faceting if all values are 1"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 531502365, "label": "Make database level information from metadata.json available in the index.html template"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 534492501, "label": "Mechanism for adding arbitrary pages like /about"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 539590148, "label": "fts5 syntax error when using punctuation"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 541467590, "label": "Template debug mode that outputs template context"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 555832585, "label": "--port option to expose a port other than 8001 in \"datasette package\""}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 565064079, "label": "--dirs option for scanning directories for SQLite databases"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 567902704, "label": "--cp option for datasette publish and datasette package for shipping additional files and directories"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 568091133, "label": "?_searchmode=raw option for running FTS searches without escaping characters"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 569237568, "label": "The first time you click sort by ID it should show you results in reverse order"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 573755726, "label": "Mechanism for plugins to add action menu items for various things"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 582517965, "label": "Ability for a canned query to write to the database"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 582526961, "label": "Authentication (and permissions) as a core concept"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 585390482, "label": "Option in metadata.json to set default sort order for a table"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 587302139, "label": "base_url configuration setting, refs #394"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 592829135, "label": "Support YAML in metadata - metadata.yaml"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 594237015, "label": "Plugin idea: datasette-redirects"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 603295970, "label": "Visually distinguish integer and text columns"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 605110015, "label": "Option to automatically configure based on directory layout"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 620969465, "label": "Allow to specify a URL fragment for canned queries"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 625930207, "label": "register_output_renderer can_render mechanism"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 627794879, "label": "Redesign default .json format"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 628003707, "label": "Ability to sign in to Datasette as a root account"}} {"labels_id": {"value": 947261894, "label": "feature"}, "issues_id": {"value": 633578769, "label": "Support \"allow\" block on root, databases and tables, not just queries"}}