§22 S2: release v0.41.0 — create & navigate a second collection (@S2)
Minor, non-breaking: named collections via .collection.yaml, create-collection endpoint, collection-scoped serve/propose, and the /p/<project>/ collection directory. Completes acceptance @S2 (C3.6). 478 backend + 26 frontend green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,6 +23,63 @@ skip versions are the composition of each intervening adjacent
|
||||
release's steps in order — no A-to-B path is pre-computed beyond
|
||||
that.
|
||||
|
||||
## 0.41.0 — 2026-06-05
|
||||
|
||||
**Minor (non-breaking) — §22 three-tier refactor, slice S2: *create & navigate a
|
||||
second collection.* A deployment can now host more than one RFC collection per
|
||||
project: a second collection is created, navigated, and proposed into beside the
|
||||
default one. Purely additive — a single-collection deployment is unchanged (its
|
||||
`/p/<project>/` still redirects into the sole collection, C3.7/C3.8). Completes
|
||||
acceptance scenario `@S2` (C3.6: an anonymous reader of an empty public
|
||||
collection sees an empty catalog with no propose action and a sign-in prompt).**
|
||||
|
||||
See [`docs/design/2026-06-05-three-tier-projects-collections.md`](./docs/design/2026-06-05-three-tier-projects-collections.md)
|
||||
(Part E slice S2) and the slice plan
|
||||
[`docs/design/plans/2026-06-05-s2-second-collection.md`](./docs/design/plans/2026-06-05-s2-second-collection.md).
|
||||
Scoped {owner, contributor} roles at the collection axis remain S3; the
|
||||
role-keyed create/propose-first empty states remain S4.
|
||||
|
||||
Added:
|
||||
|
||||
- **Named collections via `.collection.yaml`** — the registry mirror walks each
|
||||
project's content repo and upserts a collection per
|
||||
`<subfolder>/.collection.yaml` manifest (`type`, optional `visibility` /
|
||||
`initial_state` / `name`; `type` immutable per §22.4a, visibility inherits the
|
||||
project's when omitted). The default collection still flows from
|
||||
`projects.yaml`.
|
||||
- **create-collection** — `POST /api/projects/<id>/collections` (deployment
|
||||
owner/admin). The bot commits a `.collection.yaml` to the content repo's
|
||||
`main`, then the registry re-mirrors so the `collections` row appears (the
|
||||
registry stays the source of truth, §22.2). New reads
|
||||
`GET /api/projects/<id>/collections` and `…/collections/<cid>`.
|
||||
- **Collection-scoped serve + propose** —
|
||||
`GET /api/projects/<id>/collections/<cid>/rfcs[/<slug>]` and
|
||||
`POST …/collections/<cid>/rfcs/propose`. A propose writes the entry under the
|
||||
target collection's `<subfolder>/rfcs/`.
|
||||
- **Collection directory at `/p/<project>/`** — lists the project's visible
|
||||
collections, or redirects into the sole one when there is exactly one
|
||||
(preserving the S1 single-collection UX). The catalog rail + entry views read
|
||||
the active `/c/<collection>/` segment and scope to it.
|
||||
|
||||
Changed:
|
||||
|
||||
- **The corpus mirror is collection-grained** — `cache.refresh_meta_repo`
|
||||
iterates each project's collections and reads each collection's
|
||||
`<subfolder>/rfcs/`, keying `cached_rfcs` by `collection_id`. The default
|
||||
collection keeps the shipped repo-root `rfcs/` path; N=1 serving is unchanged.
|
||||
|
||||
> ### Upgrade steps (0.40.0 → 0.41.0)
|
||||
>
|
||||
> - No required operator action — the slice is additive and the default-collection
|
||||
> paths are unchanged. A deployment **MAY** deploy this version with no config
|
||||
> change and keep running exactly as on 0.40.0.
|
||||
> - To add a second collection, a deployment owner/admin **MAY** call
|
||||
> `POST /api/projects/<id>/collections` (or commit a `<subfolder>/.collection.yaml`
|
||||
> to the content repo directly); the registry mirror picks it up on the next
|
||||
> refresh.
|
||||
> - Deployments that pin the framework version **MUST** bump their version pin to
|
||||
> `0.41.0`.
|
||||
|
||||
## 0.40.0 — 2026-06-05
|
||||
|
||||
**Minor (breaking URL) — §22 three-tier refactor, slice S1: the *collection*
|
||||
|
||||
@@ -549,7 +549,8 @@ means the deployment runs and either gains a capability or provably loses none
|
||||
exactly as before, now with a real collection layer and one extra path segment.
|
||||
**Completes:** `@S1` (the single-collection / single-project redirect skips).
|
||||
|
||||
- **S2 — Create & navigate a second collection.** Teach the registry mirror to
|
||||
- **S2 — Create & navigate a second collection.** *(Shipped v0.41.0.)* Teach the
|
||||
registry mirror to
|
||||
read `.collection.yaml`; add the bot-commit-wrapped **create-collection**
|
||||
endpoint (authorized by existing deployment owner/admin for now — the scoped
|
||||
role surface lands in S3); the project collection-directory at `/p/<project>/`;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rfc-app-frontend",
|
||||
"private": true,
|
||||
"version": "0.40.0",
|
||||
"version": "0.41.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
Reference in New Issue
Block a user