Repository navigation
Conversation
Pass ?type=table&type=database to return only items of those types. Filtering happens in SQL so the 100 item limit applies after filtering. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016BvfqCD4WXJZX8Nrxrf5AZ
- Items now include the datasette.urls arguments used to build their URL as fields, e.g. database/table for tables, database/query for queries - Hidden tables (FTS shadow tables, hidden: true in config etc) are excluded - Stored queries return their title as display_name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016BvfqCD4WXJZX8Nrxrf5AZ
simonw
commented
Oct 31, 2026
Comment on lines
+19
to
+24
| hidden_tables = [] | ||
| for database_name, db in datasette.databases.items(): | ||
| hidden_tables.extend( | ||
| [database_name, table_name] | ||
| for table_name in await db.hidden_table_names() | ||
| ) |
Owner
Author
There was a problem hiding this comment.
This feels unnecessarily complex.
Owner
Author
There was a problem hiding this comment.
We can add a hidden column to the catalog table instead.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3025 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 78 78
Lines 13371 13386 +15
=====================================
- Misses 13371 13386 +15 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Replaces the per-request hidden_table_names() calls in the jump menu with a hidden column on catalog_tables, calculated when the catalog is populated. New 0002_catalog_tables_hidden migration adds the column to existing internal databases, and the catalog is now fully repopulated on the first refresh after startup so persistent internal databases pick up the new column and any config changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016BvfqCD4WXJZX8Nrxrf5AZ
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3024
Changes to
/-/jump?type=filtering. For example,?type=table&type=database. The filter runs in SQL, so the 100-item limit and thetruncatedflag only count items of the requested types. It works alongside?q=, and unknown types return no matches.URL fields on every item. Each item now carries the
datasette.urlsarguments used to build its link, exceptformat:databasedatabaseandtabledatabaseandqueryThis also applies to plugin items whose
urlcolumn is a JSON descriptor. These fields never overwrite the existing keys (name,url,type,description,display_name).Hidden tables are excluded. This covers FTS shadow tables, tables with
"hidden": truein config,_-prefixed tables and SpatiaLite internals.Stored queries return their
titleasdisplay_name. Search still matches query names only, not titles.Example item:
{ "name": "content: recent_comments", "display_name": "Recent comments", "url": "/content/recent_comments", "type": "query", "description": null, "database": "content", "query": "recent_comments" }New
catalog_tables.hiddencolumnHidden tables are now recorded in the internal catalog. The jump menu then excludes them with a plain join, rather than calling
hidden_table_names()for every database on every request.populate_schema_tables()setshiddenfromdb.hidden_table_names(). This runs whenever a database's schema version changes.0002_catalog_tables_hiddenmigration adds the column to existing internal databases._refresh_schemas()now fully repopulates the catalog on the first refresh after startup, even when schema versions match. That way a persistent--internaldatabase picks up the new column values, and any config changes (such ashidden: true) made since the last run.Docs and tests
Docs are updated in
docs/introspection.rstanddocs/plugin_hooks.rst. The internal schema indocs/internals.rstis regenerated with cog.New tests cover:
hiddencolumnhiddenset on refresh🤖 Generated with Claude Code
https://claude.ai/code/session_016BvfqCD4WXJZX8Nrxrf5AZ