Estimate: 55m · Depends on: 6.12.1, 6.12.3
Extend project settings with the FOUR-level Access control + the shareable public link, per the 6.12.1 design, over the 6.12.3 access extension. This is how a project admin turns a project public.
public calls the 6.4 setAccessLevel service (now accepting the new enum value); project-admin-gated (reuse the 6.4 project-admin check — non-admins see it read-only).MarkdownEditor (left) + a LIVE MarkdownView PREVIEW (right) of the public landing, reached from an "Edit overview" entry point in settings (Panel 6) — NOT a cramped in-settings box. It edits the project.publicOverviewMd field (6.12.3) ONLY (the README body); the hero name/stats are auto and the Links sidebar pulls from existing project fields (website / repo / docs), so NO new schema beyond publicOverviewMd. The preview renders with the SAME MarkdownView the public tab (6.12.4) uses, so what the admin sees is what ships. Project-admin-gated; Save persists through a service method (the success-response-is-confirmation rule — no whole-tree refresh). A note states it shows on the public Overview tab and is hidden while the project is not public.--el-* + [data-display-style] tokens + shipped components/ui/*; the access-level copy ("Public = anyone can view, no account, indexable") + the no-sign-in-to-view note per the 6.12.1 design; inline edits follow the no-whole-tree-refresh rule (a success response is the confirmation).Stay 4-layer: the route parses + calls one service method (setAccessLevel / the link rotate/disable); project-admin-gated; no raw Prisma in the route.
public persists via the 6.4 setAccessLevel service; project-admin-gated (read-only for non-admins).MarkdownEditor + live MarkdownView preview), reached from the settings entry point, persists publicOverviewMd (body only) via a service method (success-response-is-confirmation, no whole-tree refresh), project-admin-gated; the preview matches the public Overview tab (6.12.4) render; no new schema beyond publicOverviewMd.--el-* + [data-display-style] tokens + shipped primitives; matches the 6.12.1 design; inline edits use the success-response-is-confirmation pattern.public enum value + access extension).scripts/plan-seed/data/story-6.4.ts § 6.4.4 (setAccessLevel service) + § 6.4.5 (the project-settings Access UI this extends) — mirror + extend, do not fork.motir-core/components/ui/* + app/globals.css; motir-core/CLAUDE.md § 4-layer + § colour/shape tokens + the inline-edit no-whole-tree-refresh rule.