{"html_url": "https://github.com/simonw/sqlite-utils/issues/605#issuecomment-1846554637", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/605", "id": 1846554637, "node_id": "IC_kwDOCGYnMM5uEDAN", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-12-08T05:07:54Z", "updated_at": "2023-12-08T05:07:54Z", "author_association": "OWNER", "body": "Thanks for opening an issue - this should help future Google searchers figure out what's going on here.\r\n\r\nAnother approach here could be to store large integers as `TEXT` in SQLite (or even as `BLOB`).\r\n\r\nBoth storing as `REAL` and storing as `TEXT/BLOB` feel nasty to me, but it looks like SQLite has a hard upper limit of 9223372036854775807 for integers.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 2007893839, "label": "Insert fails with `Error: Python int too large to convert to SQLite INTEGER`; can we use `NUMERIC` here?"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/670#issuecomment-1816642044", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/670", "id": 1816642044, "node_id": "IC_kwDOBm6k_c5sR8H8", "user": {"value": 16142258, "label": "tf13"}, "created_at": "2023-11-17T15:32:20Z", "updated_at": "2023-11-17T15:32:20Z", "author_association": "NONE", "body": "Any progress on this? It would be very helpful on my end as well. Thanks!", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 564833696, "label": "Prototoype for Datasette on PostgreSQL"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1793274350", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/433", "id": 1793274350, "node_id": "IC_kwDOCGYnMM5q4zHu", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-11-04T00:46:30Z", "updated_at": "2023-11-04T00:46:30Z", "author_association": "OWNER", "body": "And a GIF of the fix after applying:\r\n- #598\r\n\r\n![cursor-fix](https://github.com/simonw/sqlite-utils/assets/9599/35829aec-c9ac-4925-a8e6-ffe7c2ab0d96)\r\n", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1239034903, "label": "CLI eats my cursor"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/949#issuecomment-1791911093", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/949", "id": 1791911093, "node_id": "IC_kwDOBm6k_c5qzmS1", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-11-03T05:28:09Z", "updated_at": "2023-11-03T05:28:58Z", "author_association": "OWNER", "body": "Datasette is using that now, see:\r\n- #1893", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 684961449, "label": "Try out CodeMirror SQL hints"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/2155#issuecomment-1737906995", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2155", "id": 1737906995, "node_id": "IC_kwDOBm6k_c5nllsz", "user": {"value": 79087, "label": "cadeef"}, "created_at": "2023-09-27T18:44:02Z", "updated_at": "2023-09-27T18:44:02Z", "author_association": "NONE", "body": "@simonw Any chance we can get this tiny patch merged for an upcoming release?", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1865572575, "label": "Fix hupper.start_reloader entry point"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2143#issuecomment-1692182910", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2143", "id": 1692182910, "node_id": "IC_kwDOBm6k_c5k3Kl-", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-24T18:06:57Z", "updated_at": "2023-08-24T18:08:17Z", "author_association": "OWNER", "body": "The other thing that could work is something like this:\r\n```bash\r\nexport AUTH_TOKENS_DB=\"tokens\"\r\ndatasette \\\r\n -s settings.sql_time_limit_ms 1000 \\\r\n -s plugins.datasette-auth-tokens.manage_tokens true \\\r\n -e plugins.datasette-auth-tokens.manage_tokens_database AUTH_TOKENS_DB\r\n```\r\nSo `-e` is an alternative version of `-s` which reads from the named environment variable instead of having the value provided directly as the second value in the pair.\r\n\r\nI quite like this, because it could replace the really ugly `$ENV` pattern we have in plugin configuration at the moment: https://docs.datasette.io/en/1.0a4/plugins.html#secret-configuration-values\r\n```yaml\r\nplugins:\r\n datasette-auth-github:\r\n client_secret:\r\n $env: GITHUB_CLIENT_SECRET\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2123#issuecomment-1689207309", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2123", "id": 1689207309, "node_id": "IC_kwDOBm6k_c5kr0IN", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-23T03:07:27Z", "updated_at": "2023-08-23T03:07:27Z", "author_association": "OWNER", "body": "> I'm happy to debug and land a patch if it's welcome.\r\n\r\nYes please! What an odd bug.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1825007061, "label": "datasette serve when invoked with --reload interprets the serve command as a file"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/2148#issuecomment-1689198368", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2148", "id": 1689198368, "node_id": "IC_kwDOBm6k_c5krx8g", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-23T02:57:53Z", "updated_at": "2023-08-23T02:57:53Z", "author_association": "OWNER", "body": "@dependabot rebase", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1859415334, "label": "Bump sphinx, furo, blacken-docs dependencies"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/493#issuecomment-1689128911", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/493", "id": 1689128911, "node_id": "IC_kwDOBm6k_c5krg_P", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-23T01:29:20Z", "updated_at": "2023-08-23T01:29:20Z", "author_association": "OWNER", "body": "It's going to be called `datasette.json` and the concept of metadata will be split out separately. See:\r\n\r\n- #2149 ", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 449886319, "label": "Rename metadata.json to config.json"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/pull/2148#issuecomment-1689127479", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2148", "id": 1689127479, "node_id": "IC_kwDOBm6k_c5krgo3", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-23T01:26:53Z", "updated_at": "2023-08-23T01:26:53Z", "author_association": "OWNER", "body": "@dependabot recreate", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1859415334, "label": "Bump sphinx, furo, blacken-docs dependencies"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2145#issuecomment-1686683596", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2145", "id": 1686683596, "node_id": "IC_kwDOBm6k_c5kiL_M", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-21T16:49:12Z", "updated_at": "2023-08-21T16:49:12Z", "author_association": "OWNER", "body": "Suggestion from @asg017 is that we say that if your row has a null primary key you don't get a link to a row page for that row.\r\n\r\nWhich has some precedent, because our SQL view display doesn't link to row pages at all (since they don't make sense for views): https://latest.datasette.io/fixtures/simple_view", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1857234285, "label": "If a row has a primary key of `null` various things break"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/datasette/issues/2143#issuecomment-1685263948", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2143", "id": 1685263948, "node_id": "IC_kwDOBm6k_c5kcxZM", "user": {"value": 11784304, "label": "dvizard"}, "created_at": "2023-08-20T11:50:10Z", "updated_at": "2023-08-20T11:50:10Z", "author_association": "NONE", "body": "This also makes it simple to separate out secrets.\r\n\r\n`datasette --config settings.yaml --config secrets.yaml --config db-docs.yaml --config db-fixtures.yaml`\r\n\r\nsettings.yaml\r\n```\r\nsettings:\r\n default_page_size: 10\r\n max_returned_rows: 3000\r\n sql_time_limit_ms\": 8000\r\nplugins:\r\n datasette-ripgrep:\r\n path: /usr/local/lib/python3.11/site-packages\r\n```\r\n\r\nsecrets.yaml\r\n```\r\nplugins:\r\n datasette-auth-github:\r\n client_secret: SUCH_SECRET \r\n```\r\n\r\n\r\ndb-docs.yaml\r\n```\r\ndatabases:\r\n docs:\r\n permissions:\r\n create-table:\r\n id: editor\r\n```\r\n\r\ndb-fixtures.yaml\r\n```\r\ndatabases:\r\n fixtures:\r\n tables:\r\n no_primary_key:\r\n hidden: true\r\n queries:\r\n neighborhood_search:\r\n sql: |-\r\n select neighborhood, facet_cities.name, state\r\n from facetable join facet_cities on facetable.city_id = facet_cities.id\r\n where neighborhood like '%' || :text || '%' order by neighborhood;\r\n title: Search neighborhoods\r\n description_html: |-\r\n
This demonstrates basic LIKE search\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1855885427, "label": "De-tangling Metadata before Datasette 1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2126#issuecomment-1672385674", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2126", "id": 1672385674, "node_id": "IC_kwDOBm6k_c5jrpSK", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-08-10T01:07:43Z", "updated_at": "2023-08-10T01:07:43Z", "author_association": "OWNER", "body": "What version of Datasette are you running?\r\n\r\nThat feature was added in Datasette 1.0a2, so if you're on the current stable release you won't have it yet.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1838266862, "label": "Permissions in metadata.yml / metadata.json"}, "performed_via_github_app": null}
{"html_url": "https://github.com/dogsheep/dogsheep-photos/pull/31#issuecomment-1656696679", "issue_url": "https://api.github.com/repos/dogsheep/dogsheep-photos/issues/31", "id": 1656696679, "node_id": "IC_kwDOD079W85ivy9n", "user": {"value": 319473, "label": "coldclimate"}, "created_at": "2023-07-29T10:10:29Z", "updated_at": "2023-07-29T10:10:29Z", "author_association": "NONE", "body": "+1 to getting this merged down.\r\n\r\nFor future googlers, I installed by...\r\n```\r\ngit clone git@github.com:RhetTbull/dogsheep-photos.git\r\ncd dogsheep-photos\r\ngit checkout update_for_bigsur\r\npython setup.py install\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 771511344, "label": "Update for Big Sur"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/2052#issuecomment-1616095810", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2052", "id": 1616095810, "node_id": "IC_kwDOBm6k_c5gU6pC", "user": {"value": 15178711, "label": "asg017"}, "created_at": "2023-07-01T20:31:31Z", "updated_at": "2023-07-01T20:31:31Z", "author_association": "CONTRIBUTOR", "body": "> Just curious, is there a query that can be used to compile this programmatically, or did you identify these through memory?\r\n\r\nI just did a github search for `user:simonw \"def extra_js_urls(\"` ! Though I'm sure other plugins made by people other than Simon also exist out there https://github.com/search?q=user%3Asimonw+%22def+extra_js_urls%28%22&type=code", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1651082214, "label": "feat: Javascript Plugin API (Custom panels, column menu items with JS actions)"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2093#issuecomment-1613895188", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2093", "id": 1613895188, "node_id": "IC_kwDOBm6k_c5gMhYU", "user": {"value": 15178711, "label": "asg017"}, "created_at": "2023-06-29T22:51:53Z", "updated_at": "2023-06-29T22:51:53Z", "author_association": "CONTRIBUTOR", "body": "I agree with not liking `metadata.json` stuff in a `datasette.*` config file. Editing description of a table/column in a file like `datasette.*` seems odd to me. \r\n\r\nThough since plugin configuration currently lives in `metadata.json`, I think it should be removed from there and placed in `datasette.*`, at least for top-level config like `datasette-auth-github`'s config. Keeping `metadata.json` strictly for documentation/licensing/column units makes sense to me, but anything plugin related should be in some config file, like `datasette.*`.\r\n\r\nAnd ya, supporting both `datasette.*` and CLI flags makes a lot of sense to me. Any `--setting` flag should override anything in `datasette.*` for easier debugging, with possibly a warning message so people don't get confused. Same with `--port` and a port defined in `datasette.*`", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1781530343, "label": "Proposal: Combine settings, metadata, static, etc. into a single `datasette.yaml` File"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/2077#issuecomment-1613290899", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2077", "id": 1613290899, "node_id": "IC_kwDOBm6k_c5gKN2T", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-06-29T14:32:16Z", "updated_at": "2023-06-29T14:32:16Z", "author_association": "OWNER", "body": "@dependabot recreate", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1719759468, "label": "Bump furo from 2023.3.27 to 2023.5.20"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/399#issuecomment-1548913065", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/399", "id": 1548913065, "node_id": "IC_kwDOCGYnMM5cUomp", "user": {"value": 433780, "label": "chrislkeller"}, "created_at": "2023-05-16T03:11:03Z", "updated_at": "2023-05-16T03:11:52Z", "author_association": "NONE", "body": "Using this thread and some [other resources](https://sqlite-utils.datasette.io/en/stable/cli.html#spatialite-helpers) I managed to cobble together a couple of sqlite-utils lines to add a geometry column for a table that already has a lat/lng column.\r\n\r\n```\r\n# add a geometry column\r\nsqlite-utils add-geometry-column [db name] [table name] geometry --type POINT --srid 4326\r\n\r\n# add a point for each row to geometry column\r\nsqlite-utils --load-extension=spatialite [db name] 'update [table name] SET Geometry=MakePoint(longitude, latitude, 4326);'\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1124731464, "label": "Make it easier to insert geometries, with documentation and maybe code"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/2052#issuecomment-1548617257", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2052", "id": 1548617257, "node_id": "IC_kwDOBm6k_c5cTgYp", "user": {"value": 193185, "label": "cldellow"}, "created_at": "2023-05-15T21:32:20Z", "updated_at": "2023-05-15T21:32:20Z", "author_association": "CONTRIBUTOR", "body": "> Were you picturing that the whole plugin config object could be returned as a promise, or that the individual hooks (like makeColumnActions or makeAboveTablePanelConfigs supported returning a promise of arrays instead only returning plain arrays?\r\n\r\nThe latter - that you could return a promise of arrays, so it parallels the [\"await me maybe\" pattern in Datasette](https://simonwillison.net/2020/Sep/2/await-me-maybe/), where you can return either a value, a callable or an awaitable.\r\n\r\n> I have a hunch that what you're describing might be achievable without adding Promises to the API with something\r\n\r\nOops, I did a poor job explaining. Yes, this would work - but it requires me to continue to communicate the column names out of band (in order to fetch the facet data per-column before registering my plugin), vs being able to re-use them from the plugin implementation.\r\n\r\nThis isn't that big of a deal - it'd be a nice ergonomic improvement, but nowhere near as a big of an improvement as having an officially sanctioned way to add stuff to the column menus in the first place.\r\n\r\nThis could also be layered on in a future commit without breaking v1 users, too, so it's not at all urgent.\r\n\r\n> especially if those lines are encapsulated by a function we provide (maybe something that's available on the window provided by Datasette as an inline script tag\r\n\r\nAh, this is maybe the the key point. Since it's all hosted inside Datasette, Datasette can provide some arbitrary sugar to make it easier to work with.\r\n\r\nMy experience with async scripts in JS is that people sometimes don't understand the race conditions inherent to them. If they copy/paste from a tutorial, it does just work. But then they'll delete half the code, and by chance it still works on their machine/Datasette templates, and now someone's headed for an annoying debugging session -- maybe them, maybe someone else who tries to re-use their plugin.\r\n\r\nAgain, a fairly minor thing, though.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1651082214, "label": "feat: Javascript Plugin API (Custom panels, column menu items with JS actions)"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/525#issuecomment-1539108140", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/525", "id": 1539108140, "node_id": "IC_kwDOCGYnMM5bvO0s", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-05-08T21:59:41Z", "updated_at": "2023-05-08T21:59:41Z", "author_association": "OWNER", "body": "That original example passes against `main` now.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1575131737, "label": "Repeated calls to `Table.convert()` fail"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/514#issuecomment-1539100300", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/514", "id": 1539100300, "node_id": "IC_kwDOCGYnMM5bvM6M", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-05-08T21:50:51Z", "updated_at": "2023-05-08T21:50:51Z", "author_association": "OWNER", "body": "Seeing as `sqlite-utils` doesn't currently provide mechanisms for adding `check` constraints like this I'm going to leave this - I'm happy with the fix I put in for the `not null` constraints.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1465194249, "label": "upsert of new row with check constraints fails"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/pull/537#issuecomment-1539055393", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/537", "id": 1539055393, "node_id": "IC_kwDOCGYnMM5bvB8h", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-05-08T21:10:06Z", "updated_at": "2023-05-08T21:10:06Z", "author_association": "OWNER", "body": "Thanks!", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1665200812, "label": "Support self-referencing FKs in `Table.create`"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/530#issuecomment-1539015064", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/530", "id": 1539015064, "node_id": "IC_kwDOCGYnMM5bu4GY", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-05-08T20:35:07Z", "updated_at": "2023-05-08T20:35:07Z", "author_association": "OWNER", "body": "Wow, this is a neat feature I didn't know about. Looks like there are a bunch of options:\r\n\r\n- NO ACTION (default)\r\n- RESTRICT: application is prohibited from deleting a parent key when there exists one or more child keys mapped to it\r\n- SET NULL: when a parent key is deleted the child key columns of all rows in the child table that mapped to the parent key are set to contain SQL NULL values\r\n- SET DEFAULT: set a specific default\r\n- CASCADE: propagates the delete or update operation on the parent key to each dependent child key", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1595340692, "label": "add ability to configure \"on delete\" and \"on update\" attributes of foreign keys:"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/2014#issuecomment-1487998788", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2014", "id": 1487998788, "node_id": "IC_kwDOBm6k_c5YsQ9E", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-03-29T06:08:23Z", "updated_at": "2023-03-29T06:08:23Z", "author_association": "OWNER", "body": "@dependabot recreate", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1566081801, "label": "Bump black from 22.12.0 to 23.1.0"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/433#issuecomment-1444474487", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/433", "id": 1444474487, "node_id": "IC_kwDOCGYnMM5WGO53", "user": {"value": 167893, "label": "mcarpenter"}, "created_at": "2023-02-24T20:57:43Z", "updated_at": "2023-02-24T22:22:18Z", "author_association": "CONTRIBUTOR", "body": "I think I see what is happening here, although I haven't quite work out a fix yet. Usually:\r\n\r\n* `click.progressbar.render_progress()` renders the cursor invisible on each invocation (update of the bar)\r\n* When the progress bar goes out of scope, the `__exit()__` method is invoked, which calls `render_finish()` to make the cursor re-appear.\r\n\r\n(See terminal escape sequences `BEFORE_BAR` and `AFTER_BAR` in click).\r\n\r\nHowever the sqlite-utils `utils.file_progress` context manager wraps `click.progressbar` and yields an instance of a helper class:\r\n\r\n``` python\r\n@contextlib.contextmanager \r\ndef file_progress(file, silent=False, **kwargs):\r\n ...\r\n with click.progressbar(length=file_length, **kwargs) as bar:\r\n yield UpdateWrapper(file, bar.update) \r\n```\r\n\r\nThe yielded `UpdateWrapper` goes out of scope quickly and `click.progressbar.__exit__()` is called. The cursor is made un-invisible. Hoewever `bar` is still live and so when the caller iterates on the yielded wrapper this invokes the bar's update method, calling `render_progress()`, each time printing the \"make cursor invisible\" escape code. The `progressbar.__exit__` function is not called again, so the cursor doesn't re-appear.\r\n\r\n", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1239034903, "label": "CLI eats my cursor"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1258#issuecomment-1437671409", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1258", "id": 1437671409, "node_id": "IC_kwDOBm6k_c5VsR_x", "user": {"value": 2670795, "label": "brandonrobertz"}, "created_at": "2023-02-20T23:39:58Z", "updated_at": "2023-02-20T23:39:58Z", "author_association": "CONTRIBUTOR", "body": "This is pretty annoying for FTS because sqlite throws an error instead of just doing something like returning all or no results. This makes users who are unfamiliar with SQL and Datasette think the canned query page is broken and is a frequent source of confusion.\r\n\r\nTo anyone dealing with this: My solution is to modify the canned query so that it returns no results which cues people to fill in the blank parameters.\r\n\r\nSo instead of `emails_fts match escape_fts(:search))`\r\n\r\nMy canned queries now look like this:\r\n\r\n`emails_fts match escape_fts(iif(:search==\"\", \"*\", :search))`\r\n\r\nThere are no asterisks in my data so the result is always blank.\r\n\r\nUltimately it would be nice to be able to handle this in the metadata. Either making some named parameters required or setting some default values.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 828858421, "label": "Allow canned query params to specify default values"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2023#issuecomment-1425974877", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2023", "id": 1425974877, "node_id": "IC_kwDOBm6k_c5U_qZd", "user": {"value": 193185, "label": "cldellow"}, "created_at": "2023-02-10T15:32:41Z", "updated_at": "2023-02-10T15:32:41Z", "author_association": "CONTRIBUTOR", "body": "I think this feature was removed in Datasette 0.61 and moved to a plugin. People who want hashed URLs can use the [datasette-hashed-urls](https://docs.datasette.io/en/stable/performance.html#performance-hashed-urls) plugin to achieve the same affect.\r\n\r\nIt looks like you're trying to disable hashed urls, so I think you can just remove that config setting and things will work.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1579695809, "label": "Error: Invalid setting 'hash_urls' in settings.json in 0.64.1"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/524#issuecomment-1419734229", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/524", "id": 1419734229, "node_id": "IC_kwDOCGYnMM5Un2zV", "user": {"value": 193185, "label": "cldellow"}, "created_at": "2023-02-06T20:53:28Z", "updated_at": "2023-02-06T21:16:29Z", "author_association": "NONE", "body": "I think it's not currently possible: sqlite-utils requires that it be one of `integer`, `text`, `float`, `blob` ([see code](https://github.com/simonw/sqlite-utils/blob/fc221f9b62ed8624b1d2098e564f525c84497969/sqlite_utils/cli.py#L2266))\r\n\r\nIMO, this is a bit of friction and it would be nice if it was more permissive. SQLite permits developers to use any data type when creating a table. For example, this is a perfectly cromulent sqlite session that creates a table with columns of type `baz` and `bar`:\r\n\r\n```\r\nsqlite> create table foo(column1 baz, column2 bar);\r\nsqlite> .schema foo\r\nCREATE TABLE foo(column1 baz, column2 bar);\r\nsqlite> select * from pragma_table_info('foo');\r\ncid name type notnull dflt_value pk \r\n---------- ---------- ---------- ---------- ---------- ----------\r\n0 column1 baz 0 0 \r\n1 column2 bar 0 0 \r\n```\r\n\r\nThe idea is that the application developer will know what meaning to ascribe to those types. For example, I'm working on a plugin to Datasette. Dates are tricky to handle. If you have some existing rows, you can look at the values in them to know how a user is serializing the dates -- as an ISO 8601 string? An RFC 3339 string? With millisecond precision? With timezone offset? But if you don't yet have any rows, you have to guess. If the column is of type `TEXT`, you don't even know that it's meant to hold a date! In this case, my plugin will look to see if the column is of type `DATE` or `DATETIME`, and assume a certain representation when writing.\r\n\r\nPerhaps there is an argument that sqlite-utils is trying to conform to SQLite's strict mode, and that is why it limits the choices. In strict mode, SQLite requires that the data type be one of `INT`, `INTEGER`, `REAL`, `TEXT`, `BLOB`, `ANY`. But that can't be the case -- sqlite-utils supports `FLOAT`, which is not one of the valid types in strict mode, and it rejects `INT`, `REAL` and `ANY`, which _are_ valid.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1572766460, "label": "Transformation type `--type DATETIME`"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/pull/203#issuecomment-1404070841", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/203", "id": 1404070841, "node_id": "IC_kwDOCGYnMM5TsGu5", "user": {"value": 536941, "label": "fgregg"}, "created_at": "2023-01-25T18:47:18Z", "updated_at": "2023-01-25T18:47:18Z", "author_association": "CONTRIBUTOR", "body": "i'll adopt this PR to make the changes @simonw suggested https://github.com/simonw/sqlite-utils/pull/203#issuecomment-753567932", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 743384829, "label": "changes to allow for compound foreign keys"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/2001#issuecomment-1403084856", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/2001", "id": 1403084856, "node_id": "IC_kwDOBm6k_c5ToWA4", "user": {"value": 193185, "label": "cldellow"}, "created_at": "2023-01-25T04:31:02Z", "updated_at": "2023-01-25T04:31:02Z", "author_association": "CONTRIBUTOR", "body": "Aha, it's user error on my part.\r\n\r\nAdding\r\n\r\n```\r\nsqlite3_db_config.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_int, ctypes.c_int]\r\n```\r\n\r\nmakes it work reliably both on the CLI and from datasette, and now I can reproduce the errors you mentioned in the issue description.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1553615704, "label": "Datasette is not compatible with SQLite's strict quoting compilation option"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/1159#issuecomment-1399589414", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1159", "id": 1399589414, "node_id": "IC_kwDOBm6k_c5TbAom", "user": {"value": 193185, "label": "cldellow"}, "created_at": "2023-01-22T19:48:41Z", "updated_at": "2023-01-22T19:48:41Z", "author_association": "CONTRIBUTOR", "body": "Hey @lovasoa, I hope you don't mind - I pulled this PR into [datasette-ui-extras](https://github.com/cldellow/datasette-ui-extras), a plugin I'm making that collects UI tweaks to Datasette.\r\n\r\nYou can apply it to your own Datasette instance by running `datasette install datasette-ui-extras`", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 774332247, "label": "Improve the display of facets information"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1101#issuecomment-1399341761", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1101", "id": 1399341761, "node_id": "IC_kwDOBm6k_c5TaELB", "user": {"value": 9599, "label": "simonw"}, "created_at": "2023-01-21T22:07:19Z", "updated_at": "2023-01-21T22:07:19Z", "author_association": "OWNER", "body": "Idea for supporting streaming with the `register_output_renderer` hook:\r\n\r\n```python\r\n@hookimpl\r\ndef register_output_renderer(datasette):\r\n return {\r\n \"extension\": \"test\",\r\n \"render\": render_demo,\r\n \"can_render\": can_render_demo,\r\n \"render_stream\": render_demo_stream, # This is new\r\n }\r\n```\r\nSo there's a new `\"render_stream\"` key which can be returned, which if present means that the output renderer supports streaming.\r\n\r\nI'll play around with the design of that function signature in:\r\n\r\n- #1999\r\n- #1062 ", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 749283032, "label": "register_output_renderer() should support streaming data"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1886#issuecomment-1356842576", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1886", "id": 1356842576, "node_id": "IC_kwDOBm6k_c5Q38ZQ", "user": {"value": 18738650, "label": "stevecrawshaw"}, "created_at": "2022-12-18T17:34:20Z", "updated_at": "2022-12-18T17:34:20Z", "author_association": "NONE", "body": "A bit late to this, but I have made an app to publish air quality data in Bristol, UK. \r\n[air quality data in Bristol, UK.](https://brisaq-wfzqhmj43q-ew.a.run.app/)\r\nNext step to see if I can make a streamlit app based on this to produce some nice charts.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1447050738, "label": "Call for birthday presents: if you're using Datasette, let us know how you're using it here"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1958#issuecomment-1352644267", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1958", "id": 1352644267, "node_id": "IC_kwDOBm6k_c5Qn7ar", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-12-13T18:33:32Z", "updated_at": "2022-12-13T18:33:32Z", "author_association": "OWNER", "body": "When you run `--root` you need to follow the special link that gets output to the console:\r\n\r\n```\r\n% datasette --root\r\nhttp://127.0.0.1:8001/-/auth-token?token=036d8055cc8000e9667f21c1dd08722a9358c066463873ad9566d23d88765c52\r\nINFO: Started server process [53934]\r\nINFO: Waiting for application startup.\r\nINFO: Application startup complete.\r\n```\r\nThat `/-/auth-token?...` link is the one that sets the cookie and lets you in.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1497909798, "label": "datasette --root running in Docker doesn't reliably show the magic URL"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/sqlite-utils/issues/510#issuecomment-1320394127", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/510", "id": 1320394127, "node_id": "IC_kwDOCGYnMM5Os52P", "user": {"value": 1176293, "label": "ar-jan"}, "created_at": "2022-11-18T18:37:51Z", "updated_at": "2022-11-18T18:37:51Z", "author_association": "NONE", "body": "I guess it is not incorrect when it says the version is `4`, though it is confusing. Maybe it doesn't even refer to FTS4/FTS5 versions, but something else? In any case, it's not related to sqlite-utils, but SQLite itself.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1434911255, "label": "Cannot enable FTS5 despite it being available"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1900#issuecomment-1319574972", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1900", "id": 1319574972, "node_id": "IC_kwDOBm6k_c5Opx28", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-18T05:41:28Z", "updated_at": "2022-11-18T05:41:28Z", "author_association": "OWNER", "body": "Oh this is with `datasette package`? That should work. Will investigate.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1452572348, "label": "datasette package --spatialite throws error during build"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1317681193", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1317681193, "node_id": "IC_kwDOBm6k_c5Oijgp", "user": {"value": 95570, "label": "bgrins"}, "created_at": "2022-11-16T21:19:13Z", "updated_at": "2022-11-16T21:19:13Z", "author_association": "CONTRIBUTOR", "body": "Alright, added Cmd+Enter to submit (Ctrl+Enter on Windows as well bc of using Meta-Enter on codemirror). We can make that MacOS only by changing the combo to Cmd+Enter specifically but I think it's probably fine to have both.", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/pull/1893#issuecomment-1316340865", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1893", "id": 1316340865, "node_id": "IC_kwDOBm6k_c5OdcSB", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T04:49:30Z", "updated_at": "2022-11-16T04:49:43Z", "author_association": "OWNER", "body": "> The main issue is that we don't pass the relevant table data down to QueryView.\r\n\r\nIf you can come up with a static example JSON data structure example that does the right thing, I'm happy to refactor QueryView to make that available to the template - or even have a separate `fetch()` that grabs just the data needed for the autocomplete as a separate hit when the page loads (whichever has better performance implications). I'm working a fair amount in the view classes at the moment so adding this to that work would make sense.\r\n\r\n", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450363982, "label": "Upgrade to CodeMirror 6, add SQL autocomplete"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1871#issuecomment-1312821031", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1871", "id": 1312821031, "node_id": "IC_kwDOBm6k_c5OQA8n", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-13T21:02:06Z", "updated_at": "2022-11-13T21:03:11Z", "author_association": "OWNER", "body": "Actually no, I'm going to add a class of `details-menu` to the other details elements that SHOULD be closed. That way custom templates using `{{ cell.value | replace('\", \"','; ') | replace('[\\\"','') | replace('\\\"]','')}} `\r\n\r\nI'm sure there is a prettier (and more flexible) way, but for now, this is ever-so-much more pleasant to look at. \r\n\r\n------ AFTER:\r\n\r\n\r\n------ BEFORE:\r\n\r\n\r\n\r\n\r\n(Note: I didn't figure out how to have one item have no semicolon, while multi-items close with a semicolon, but this is good enough for now. I also didn't figure out how to set up a new jinja filter. I don't want to add to /datasette/utils/__init__.py as I assume that would get overwritten when upgrading datasette. Having a starter guide on creating jinja filters in datasette would be helpful. (The jinja documentation isn't datasette-specific enough for me to quite nail it.)\r\n", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 849220154, "label": "Better default display of arrays of items"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1255#issuecomment-812710120", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1255", "id": 812710120, "node_id": "MDEyOklzc3VlQ29tbWVudDgxMjcxMDEyMA==", "user": {"value": 1111743, "label": "jungle-boogie"}, "created_at": "2021-04-02T20:50:08Z", "updated_at": "2021-04-02T20:50:08Z", "author_association": "NONE", "body": "Hello again,\r\n\r\nI was able to get my facets running with this `settings.json`, which was lifted from one of Simon's datasette's and slightly modified.\r\n\r\n```\r\n{\r\n \"default_page_size\": 100,\r\n \"max_returned_rows\": 1000,\r\n \"num_sql_threads\": 3,\r\n \"sql_time_limit_ms\": 9000,\r\n \"default_facet_size\": 10,\r\n \"facet_time_limit_ms\": 9000,\r\n \"facet_suggest_time_limit_ms\": 500,\r\n \"hash_urls\": false,\r\n \"allow_facet\": true,\r\n \"suggest_facets\": false,\r\n \"default_cache_ttl\": 5,\r\n \"default_cache_ttl_hashed\": 31536000,\r\n \"cache_size_kb\": 0,\r\n \"allow_csv_stream\": true,\r\n \"max_csv_mb\": 100,\r\n \"truncate_cells_html\": 2048,\r\n \"template_debug\": false,\r\n \"base_url\": \"/\"\r\n}\r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 826700095, "label": "Facets timing out but work when filtering"}, "performed_via_github_app": null}
{"html_url": "https://github.com/simonw/datasette/issues/1286#issuecomment-812664443", "issue_url": "https://api.github.com/repos/simonw/datasette/issues/1286", "id": 812664443, "node_id": "MDEyOklzc3VlQ29tbWVudDgxMjY2NDQ0Mw==", "user": {"value": 9599, "label": "simonw"}, "created_at": "2021-04-02T18:52:45Z", "updated_at": "2021-04-02T18:52:51Z", "author_association": "OWNER", "body": "Idea: default to displaying single-dimension JSON arrays of strings as a comma-separated list but show the comma in a different colour - something like this:\r\n\r\n\r\n\r\nI used this HTML for the prototype (re-using `.type-int` just to get the colour):\r\n```html\r\ntag1, tag2 \r\n```", "reactions": "{\"total_count\": 1, \"+1\": 1, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 849220154, "label": "Better default display of arrays of items"}, "performed_via_github_app": null}