{"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 335200136, "label": "Explore if SquashFS can be used to shrink size of packaged Docker containers"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 564833696, "label": "Prototoype for Datasette on PostgreSQL"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 569317377, "label": "Cashe-header missing in http-response"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 569613563, "label": "Mechanism for writing to database via a queue"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 594189527, "label": "See if I can get Datasette working on Zeit Now v2"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 605110015, "label": "Option to automatically configure based on directory layout"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 607243940, "label": "Speed up tests with scope=\"session\"?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 613491342, "label": "Experiment with PRAGMA hard_heap_limit "}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 632843030, "label": "Ability to ship alpha and beta releases"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 635049296, "label": "Idea: Plugin hook for registering canned queries"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 637342551, "label": "startup() plugin hook"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 638104520, "label": "Research feasibility of 100% test coverage"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 638259643, "label": "Take advantage of .coverage being a SQLite database"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 639072811, "label": "Rename master branch to main"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 639993467, "label": "Proof of concept for Datasette on AWS Lambda with EFS"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 642296989, "label": "Consider pagination of canned queries"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 642652808, "label": "Script to generate larger SQLite test files"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 648421105, "label": "Consider dropping explicit CSRF protection entirely?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 648659536, "label": "Figure out why restore_working_directory is needed in some places"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 649429772, "label": "Reconsider how _actor_X magic parameter deals with missing values"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 653529088, "label": "Consider using enable_callback_tracebacks(True)"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 670209331, "label": "Mechanism for passing additional options to `datasette my.db` that affect plugins"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 675594325, "label": "Idea: \"datasette publish\" option for \"only if the data has changed"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 691537426, "label": "Internals API idea: results.dicts in addition to results.rows"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 712260429, "label": "JavaScript plugin hooks mechanism similar to pluggy"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 718910318, "label": "Research: could Datasette install its own plugins?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 721068929, "label": "Method for datasette.client() to forward on authentication"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 722738988, "label": "How should datasette.client interact with base_url"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 770448622, "label": "Database class mechanism for cross-connection in-memory databases"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 770598024, "label": "Efficiently calculate list of databases/tables a user can view"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 775666296, "label": "\"datasette insert\" command and plugin hook"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 776635426, "label": "Mechanism for executing JavaScript unit tests"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 777333388, "label": "Mechanism for storing metadata in _metadata tables"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 779156520, "label": "Use structlog for logging"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 787173276, "label": "Research plugin hook for alternative database backends"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 792652391, "label": "Experiment with PRAGMA mmap_size=N"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 803929694, "label": "Try profiling Datasette using scalene"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 811505638, "label": "Runtime support for ATTACHing multiple databases"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 824067604, "label": "Research: Plugin hook for alternative database connections"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 830567275, "label": "Research using CTEs for faster facet counts"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 837308703, "label": "Figure out why SpatiaLite 5.0 hangs the database page on Linux"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 837350092, "label": "Try implementing SQLite timeouts using .interrupt() instead of using .set_progress_handler()"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 839367451, "label": "Idea: long-running query mode"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 849975810, "label": "Research ctypes.util.find_library('spatialite')"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 849978964, "label": "Show column metadata plus links for foreign keys on arbitrary query results"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 901009787, "label": "Research: Cell action menu (like column action but for individual cells)"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 910092577, "label": "Research: syntactic sugar for using --get with SQL queries, maybe \"datasette query\""}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 912864936, "label": "Consider using CSP to protect against future XSS"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 939051549, "label": "Serve using UNIX domain socket"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 973139047, "label": "Rethink how .ext formats (v.s. ?_format=) works before 1.0"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 977323133, "label": "Ability to search for text across all columns in a table"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 989986586, "label": "Try blacken-docs"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1006016302, "label": "Consider adding request to the documented default template context"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1055469073, "label": "Research: CTEs and union all to calculate facets AND query at the same time"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1058072543, "label": "Complete refactor of TableView and table.html template"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1058803238, "label": "Pattern for avoiding accidental URL over-rides"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1065432388, "label": "Maybe return JSON from HTML pages if `Accept: application/json` is sent"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1066288689, "label": "Research pattern for re-registering existing Click tools with register_commands"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1067775061, "label": "Research PRAGMA query_only"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1068791148, "label": "Idea: hover to reveal details of linked row"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1072106103, "label": "feature request: order and dependency of plugins (that use js)"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1077628073, "label": "Research option for returning all rows from arbitrary query"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1079149656, "label": "Optimize all those calls to index_list and foreign_key_list"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1082765654, "label": "add hash id to \"_memory\" url if hashed url mode is turned on and crossdb is also turned on"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1087919372, "label": "Confirm if documented nginx proxy config works for row pages with escaped characters in their primary key"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1091838742, "label": "Fire base caching for `publish cloudrun`"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1100015398, "label": "Maybe let plugins define custom serve options?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1108671952, "label": "Scripted exports"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1109884720, "label": "Ensure \"pip install datasette\" still works with Python 3.6"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1115435536, "label": "Try again with SQLite codemirror support"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1149310456, "label": "Tweak mobile keyboard settings"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1168995756, "label": "Tilde encoding: use ~ instead of - for dash-encoding"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1175854982, "label": "Research: how much overhead does the n=1 time limit have?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1177101697, "label": "Potential bug in numeric handling where_clause for filters"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1203943272, "label": "Datasette feature for publishing snapshots of query results"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1212823665, "label": "Refactor TableView to use asyncinject"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1216508080, "label": "Research running SQL in table view in parallel using `asyncio.gather()`"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1216622905, "label": "Performance question - what is happening in this gap?"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1217759117, "label": "Research: demonstrate if parallel SQL queries are worthwhile"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1251739062, "label": "Research if I can drop Janus"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1355148385, "label": "Research an upgrade to CodeMirror 6"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1410305897, "label": "Reconsider the Datasette first-run experience"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1430797211, "label": "Figure out design for JSON errors (consider RFC 7807)"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1466952626, "label": "Option to sort facets alphabetically"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1618249044, "label": "Consider a `strict_templates` setting"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1657861026, "label": "Make detailed notes on how table, query and row views work right now"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1805076818, "label": "API tokens with view-table but not view-database/view-instance cannot access the table"}} {"labels_id": {"value": 1845722916, "label": "research"}, "issues_id": {"value": 1874255116, "label": "Ability to only load a specific list of plugins"}}