Cursor pagination on the list endpoints (follow-up to #1062) makes full enumeration cost O(readable rows), but two frontend surfaces still assume the Schema namespace is small:
- The relation-property Schema picker (
SchemaPicker.vue via SchemaStore.getAllSchemaSummaries) loads every Schema summary client-side and filters in the browser. At thousands of Schemas that is dozens to hundreds of sequential page requests and a multi-thousand-row client list per picker mount.
- The admin tables (
Special:Schemas, Special:Layouts, Special:Mappings) page 50-at-a-time with next/prev only; walking a 12k-row listing 50 rows per click is not a usable way to find anything.
Both should become search-first: type-ahead against the server-side GET /neowiki/v0/schema-names/{search} prefix lookup (already read-gated per #1046) rather than client-side filtering of a full enumeration, with the paged listing kept as the browse fallback. The admin tables may additionally want a search box backed by the same lookup; Layouts/Mappings need an equivalent name lookup only if their namespaces ever grow beyond trivial size (Mappings stay one-per-ontology by design).
Not urgent while deployments hold tens of Schemas — the picker caches the enumeration per page view and the tables are fine at that size. It becomes the limiting factor exactly when the cursor work pays off, so it should land before any deployment that expects large Schema namespaces.
AI-authored — Claude Code, Fable 5 (xhigh); follow-up split out of #1062 as part of its user-approved fix plan, filed by direction of @alistair3149; not human-reviewed; scale claims grounded in the PR #1131 implementation (picker enumeration and table paging read from the current code), otherwise unverified.
Cursor pagination on the list endpoints (follow-up to #1062) makes full enumeration cost O(readable rows), but two frontend surfaces still assume the Schema namespace is small:
SchemaPicker.vueviaSchemaStore.getAllSchemaSummaries) loads every Schema summary client-side and filters in the browser. At thousands of Schemas that is dozens to hundreds of sequential page requests and a multi-thousand-row client list per picker mount.Special:Schemas,Special:Layouts,Special:Mappings) page 50-at-a-time with next/prev only; walking a 12k-row listing 50 rows per click is not a usable way to find anything.Both should become search-first: type-ahead against the server-side
GET /neowiki/v0/schema-names/{search}prefix lookup (already read-gated per #1046) rather than client-side filtering of a full enumeration, with the paged listing kept as the browse fallback. The admin tables may additionally want a search box backed by the same lookup; Layouts/Mappings need an equivalent name lookup only if their namespaces ever grow beyond trivial size (Mappings stay one-per-ontology by design).Not urgent while deployments hold tens of Schemas — the picker caches the enumeration per page view and the tables are fine at that size. It becomes the limiting factor exactly when the cursor work pays off, so it should land before any deployment that expects large Schema namespaces.