Repository navigation
docs(rfc): RFC-0040 first-class collections - #83
Merged
Merged
Conversation
Stage 1 fully specified: Site.collections becomes a declared registry (labels per locale, icon, feed, sitemap, default sort next to the permalink), inferred from existing entries with no data migration; Studio list screen per collection and a New collection flow; MCP list_collections, create_collection and update_collection behind approval with approverScopes site:settings; create_entry refuses unregistered collections; a new collection's default prefix is checked for overlaps (closes RFC-0038's gap). Stages 2 (typed custom fields) and 3 (JSON-LD presets, expiry automations, references) sketched. Refs #71 Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Madraka <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Madraka <[email protected]>
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.
RFC only, no code. Makes collections first-class (#71), in stages. Stage 1 is fully specified; stages 2 and 3 are sketched.
Stage 1 decisions to review (open questions have recommended defaults):
Contract:
Site.collections.<key>gains optional fields:labels(per locale, singular and plural),icon(from a closed set),feed,sitemapandsort. There is a cap of 50 collections. Everything is optional, so there is noschemaVersionbump.pnpm genwas checked against the diff for both TypeScript and Rust.Registry: inferred, not migrated. It holds the declared keys, every collection that has entries, and
posts. No site node is rewritten. A collection becomes declared on its first settings save or throughcreate_collection.Not duplicated: taxonomies stay on
Taxonomy.collectionsand comments stay incomment_settings(outside the graph, RFC-0007). The collection screen edits each where it is stored.Store:
path_conflict). This closes RFC-0038's gap.Studio: each collection gets a sidebar entry and its own
CollectionPage, generalised fromArticlesPage. There is a settings tab and a "New collection" dialog, and/articlesredirects to the new route.MCP:
list_collections;create_collectionandupdate_collection, both with approval andapproverScopes: ["site:settings"];create_entryrefuses collections outside the registry.Existing sites are unaffected, because their collections are inferred.
Themes: only new exports are added (
collectionLabel,collectionSettings). The default feed and sitemap output is unchanged, and the old-theme test stays green.Rollout after acceptance (one PR each, as in RFC-0038): contract → store/API → Studio → MCP.
Refs #71
🤖 Generated with Claude Code