Skip to content
Resource
DocsTourSlicesBest PracticeAgentsInstall

Command Palette

Search for a command to run...

New
  • Changelog

Changelog

Release notes

Changelog

What changed in each rr release — page 23 of 25. Full prose history in CHANGELOG.md.

MAY202026
FeatureBE-waveMay 20, 2026

Grouped admin nav (Pages / Features) + position-dropdown reorder + saas-marketing catalog fix

Four foundation pieces landing in one wave so the next batch can build on a clean chassis. (1) AdminNavGroup type — sidebar + shell accept primaryNavGroups[] alongside legacy flat primaryNav. Templates opt into grouped Pages/Features rendering one by one. (2) Position dropdown — LandingSection.order field switches from manual number input to a sibling-aware Select; reducer auto-shifts other sections on create / move / delete so two sections can never share a position. (3) Responsive overlap fix — min-w-0 on SidebarInset + main flex child prevents wide admin pages clipping under the shadcn sidebar. (4) saas-marketing-os catalog metadata corrected — adminPreviewPath + full admin file list added; description no longer claims 'no admin' (the filesystem had it all along). (5) saas-marketing-os = canary for the new grouped nav — buildAdminNav(state) returns [Overview, Pages, Features] groups; legacy buildAdminPrimaryNav kept as flatten-wrapper for backwards compat. (6) PageEntry forward-compat — isLanding?: boolean + sections?: LandingSection[] added to the type. BF-wave does the data migration (landing-as-page).

Templates touched

  • saas-marketing-os — admin entry now visible in catalog; sidebar uses Pages + Features groups

Chassis (_shared)

  • _shared/types/common.ts — AdminNavGroup type + PageEntry isLanding/sections forward-compat
  • _shared/ui/admin-sidebar.tsx — accepts primaryNavGroups optional; renders one <SidebarGroup> per group
  • _shared/ui/dashboard-shell.tsx — primaryNavGroups prop threaded; min-w-0 on SidebarInset + main
  • _shared/crud/types.ts — FieldDef kind "position" added
  • _shared/crud/CrudFieldInput.tsx — position renders sibling-aware Select
  • _shared/crud/CrudFormBody.tsx + CrudFormView.tsx + CrudRowDialog.tsx — ctx={ total, editing } threaded to fields
  • _shared/landing/landing-fields.ts — order field migrated to kind: 'position'
  • _shared/landing/reducer.ts — auto-shift sibling orders on LANDING_UPSERT + close gap on LANDING_DELETE
  • _shared/pages/types.ts — PageEntry.isLanding + sections added (forward-compat for BF migration)

Catalog

  • lib/content/layouts.ts — saas-marketing-os entry: adminPreviewPath set, 22 admin files added to files[], description corrected, 'admin' tag added

Docs

  • docs/architecture/dashboard-vision.md — BE-wave delivery summary + BF-wave plan (landing-as-page migration, public nav CRUD, propagate grouped nav to other 7 templates, build Advanced primitives, extract landing-sections as headless slice)

Up next (BF-wave)

  • Migrate landingSections[] into the landing-flagged Page.sections[] — single source of truth
  • Public nav CRUD — admin can add/rename/reorder nav items + bind to any page including custom
  • Propagate Pages/Features grouped nav to other 7 templates (audit per template — konsultan-os's Projects + Contact should live under Pages)
  • Build Advanced primitives (workspace-switcher, secondary-sidebar, dashboard-shell-advanced) + wire notion-page-clone-os as canary
  • Extract landing-sections as installable headless CMS slice
MAY202026
ImprovementBD-waveMay 20, 2026

Two-archetype dashboard direction — revert switcher; simple is the default

Corrective wave after BB / BC. BB-wave's DashboardSwitcher dropdown was the wrong primitive (shadcn TeamSwitcher applied to section toggle); BC-wave bolted multi-tenant workspaces onto personal-brand-os which doesn't need them. New direction: two opt-in archetypes. **Simple** (default) — single sidebar, BrandHeader, admin nav with collapsible sub-menus. **Advanced** (opt-in) — three-column layout with workspace switcher in the primary header and a secondary sidebar for active-section sub-nav. Simple is what 7 of 8 templates need; advanced is reserved for notion-page-clone-os and any future template with multi-tenant context + many non-CMS surfaces. The advanced primitives (WorkspaceSwitcher, SecondarySidebar, DashboardShellAdvanced) ship in BE-wave when notion-page-clone-os is wired as the canary.

Templates reverted to Simple archetype

  • saas-marketing-os — DashboardSwitcher removed, workspace route deleted
  • personal-brand-os — workspace surface fully reverted (state + reducer + views + seed); storageKey pbos:state:v6 → v7-simple
  • agency-studio-os — DashboardSwitcher removed, workspace route deleted
  • konsultan-os — DashboardSwitcher removed, workspace route deleted
  • kreator-studio-os — DashboardSwitcher removed, workspace route deleted
  • riset-kit — DashboardSwitcher removed, workspace route deleted
  • wirausaha-os — DashboardSwitcher removed, workspace route deleted
  • notion-page-clone-os — DashboardSwitcher removed; flagged as the BE-wave canary for the Advanced archetype

Removed (dead chassis)

  • _shared/ui/dashboard-switcher.tsx — wrong primitive (TeamSwitcher pattern for section toggle)
  • _shared/ui/workspace-placeholder.tsx — Simple templates don't have a workspace surface
  • _shared/dashboard/sections.ts — buildDashboardSections + activeSectionFromPathname helpers
  • _shared/types/common.ts → DashboardSection type
  • _shared/ui/dashboard-shell.tsx — dashboardSections + activeSectionId props
  • _shared/ui/admin-sidebar.tsx — DashboardSwitcher conditional in SidebarHeader
  • personal-brand/shared/{workspace-types.ts,workspace-reducer.ts} + slices/workspace/*
  • Per-template DASHBOARD_SECTIONS export + workspace route directories (8 templates)

Kept

  • Per-template DASHBOARD_BASE / ADMIN_PANEL_BASE / WORKSPACE_BASE constants — zero cost and needed by the Advanced archetype
  • AZ-wave URL shift (/admin → /dashboard/admin) and permanent redirect
  • Simple shell + admin-sidebar + admin-nav-items (the canonical archetype)

Docs

  • docs/architecture/dashboard-vision.md REWRITTEN — two-archetype model, decision matrix per template, BE-wave plan, source map for primitive lifts from superspace + notion-page-clone

Up next (BE-wave)

  • Build _shared/ui/workspace-switcher.tsx (opt-in workspace-context picker, not a section toggle)
  • Build _shared/ui/secondary-sidebar.tsx (three-column layout primitive lifted from superspace FeatureThreeColumnLayout)
  • Build _shared/ui/dashboard-shell-advanced.tsx (composes the two)
  • Wire notion-page-clone-os as canary for the Advanced archetype
MAY192026
FeatureBC-waveMay 19, 2026

personal-brand-os workspace surface — Workspace CRUD + Notes + Tasks (live)

BB-wave delivered the DashboardSwitcher chassis. BC-wave proves it end-to-end on one template: personal-brand-os now has a fully working Workspace surface. Multi-tenant workspaces (Personal / Side Project / …) with CRUD + active switching. Per-workspace Notes (full editor, search) and Tasks (inline checklist with overdue badge + open/done/all filter). All persisted via the existing localStorage store + BroadcastChannel cross-tab sync. Sidebar nav swaps between admin and workspace primary nav based on pathname; switcher header shows the active workspace icon + name. Old `/dashboard/workspace` placeholder replaced by a real dashboard with stat cards and recent-notes list. The other 7 OS templates keep the placeholder; their workspace surfaces lift the same pattern in subsequent waves.

Template touched

  • personal-brand-os — Workspace dashboard + Notes (CRUD with editor) + Tasks (inline checklist) + Workspaces (CRUD over the workspace entities themselves)

Data model (personal-brand/shared)

  • types.ts — added Workspace + Note + Task types, State fields (workspaces, activeWorkspaceId, notes, tasks), Action union extensions (workspace.create/update/delete/switch, note.upsert/delete, task.upsert/toggle/delete)
  • workspace-reducer.ts NEW — isolated workspace surface transitions; cascade-delete notes + tasks on workspace.delete; keep ≥1 workspace alive; activeWorkspaceId falls back when active is removed
  • store-reducer.ts — delegates workspace/note/task actions via isWorkspaceAction guard
  • seed.ts — 2 workspaces (Personal 🧠, Side project 🚀) + 3 notes + 4 tasks; storageKey bumped pbos:state:v5 → v6-workspaces

Surfaces

  • WorkspaceDashboardView — stat cards (Notes / Open tasks / Workspaces) + recent-notes list scoped to active workspace
  • NotesView + NoteEditor — list with search, inline create-then-redirect, full-page editor with dirty-state Save
  • TasksView — quick-add input, open/done/all filter, checkbox toggle, overdue badge, delete
  • WorkspaceManageView — list with inline rename (icon + name), switch, delete (cascade-aware, disabled when only one remains), create form with icon input

Routing + nav

  • app/preview/personal-brand-os/dashboard/workspace/{page,notes/page,notes/[id]/page,tasks/page,manage/page}.tsx NEW
  • personal-brand/shared/nav-config.ts — buildWorkspaceNav(state) returns Dashboard / Notes / Tasks / Workspaces with live counts
  • personal-brand/dashboard-shell-client.tsx — section-aware primaryNav (admin vs workspace), appLabel shows active workspace icon + name, homeHref + searchPlaceholder swap by section

Up next

  • Propagate workspace surface to remaining 7 OS templates (likely lifted as a distributable rr slice once the pattern stabilizes)
  • BD — feature harvest from superspace + notion-page-clone via /rr lift (RBAC / CRM / Analytics / CMS-menu inside Admin Panel)
  • BE — replace placeholder Tasks with notion-style block editor for richer Note bodies
MAY192026
FeatureBB-waveMay 19, 2026

DashboardSwitcher — shadcn sidebar-07 team-switcher adapted for /dashboard/{admin,workspace}

Top of every template sidebar now hosts an improved adaptation of the shadcn sidebar-07 TeamSwitcher pattern. Click → dropdown reveals Admin Panel + Workspace sections with icon, label, one-line description, active checkmark, and ⌘1/⌘2 keyboard shortcuts. Footer link jumps to /templates so operators can hop to another template without leaving the dashboard. Inspired by notion-page-clone WorkspaceSwitcher (role-gated items, composable trigger) and superspace EnhancedWorkspaceSwitcher (hierarchical context, descriptions). The dashboard/admin and dashboard/workspace surfaces now share a single dashboard/layout.tsx — the switcher and store provider live one level up so the chassis stays consistent across both surfaces. Workspace placeholder updated to point at the new ⌘1/⌘2 shortcuts.

Templates touched (DashboardSwitcher mounted; layout lifted)

  • saas-marketing-os — switcher in sidebar header; workspace inherits shell
  • personal-brand-os — switcher in sidebar header; workspace inherits shell
  • agency-studio-os — switcher in sidebar header; workspace inherits shell
  • konsultan-os — switcher in sidebar header; workspace inherits shell
  • kreator-studio-os — switcher in sidebar header; workspace inherits shell
  • riset-kit — switcher in sidebar header; workspace inherits shell
  • wirausaha-os — switcher in sidebar header; workspace inherits shell
  • notion-page-clone-os — switcher in sidebar header; workspace inherits shell

Infra

  • _shared/ui/dashboard-switcher.tsx NEW — SidebarMenuButton + DropdownMenu + ⌘N shortcuts + active checkmark + Switch-template footer
  • _shared/dashboard/sections.ts NEW — buildDashboardSections() + activeSectionFromPathname() helpers
  • _shared/types/common.ts — added DashboardSection type
  • _shared/ui/admin-sidebar.tsx — renders DashboardSwitcher when sections prop provided (BrandHeader fallback preserved)
  • _shared/ui/dashboard-shell.tsx — accepts dashboardSections + activeSectionId props
  • Per-template nav-config.ts — DASHBOARD_SECTIONS export (8 templates)
  • Per-template dashboard/layout.tsx NEW — lifted from admin/layout.tsx so workspace inherits StoreProvider + DashboardShell
  • Per-template dashboard/dashboard-shell-client.tsx NEW — derives activeSection from usePathname

Up next (see docs/architecture/dashboard-vision.md)

  • BC-wave — Workspace bootstrap (notion editor at MAX, calendar, command-menu, database views) — replaces current placeholder
  • BD-wave — feature harvest from superspace + notion-page-clone via /rr lift (RBAC / CRM / Analytics / CMS-menu siblings inside Admin Panel)
MAY192026
FeatureBA-waveMay 19, 2026

notion-shell slice + Notion Page Clone OS = real Notion-clone template (not marketing landing)

Before: /preview/notion-page-clone-os/public showed a marketing landing page jualan notion-blocks slice. After: it IS a Notion clone — left sidebar with tree-nav (page CRUD inline), main panel with page editor (rich blocks via notion-blocks primitive registry) or database table (per-cell + property CRUD). Built by lifting the six props-driven Notion wrappers from nosion's shared/components/notion (NotionPage / NotionHeader / NotionSidebar / NotionBlock / NotionDatabase / NotionProperty) to a new rr slice `notion-shell`. Zero-peer-dep design — icon-picker dropped in favor of `renderIcon` + `renderIconPicker` props so host wires any icon library (we wire @/features/icon-picker at the template layer). NotionBlock dispatches via a `blockRenderers` prop — the template registers equation/code/divider from notion-blocks, falls back to contentEditable for text-shape blocks. Template store extended with `docs` + `databases` slices alongside existing pages/snippets/landingSections; storageKey bumped v2-landing → v3-docs. Reducer split into `notion-reducer.ts` to stay under the 200-LOC cap.

Slices touched

  • notion-shell — NEW: six portable Notion wrappers + types subset
  • notion-blocks — registered as block renderers inside notion-shell's NotionBlock

Templates touched

  • notion-page-clone-os — public surface = full Notion-clone dashboard (replaces marketing landing)

Site

  • frontend/slices/notion-shell/ NEW — 6 wrapper components + types subset + slice metadata trio + /preview demo
  • components/templates/notion-page-clone/slices/notion-app/ NEW — Dashboard / DocView / DatabaseView + block-renderers registry + sidebar hooks
  • components/templates/notion-page-clone/shared/types.ts — added docs/databases + 14 action types (doc.*, db.*, db.row.*)
  • components/templates/notion-page-clone/shared/store.tsx — wired notion-reducer; storageKey v2-landing → v3-docs
  • components/templates/notion-page-clone/shared/notion-reducer.ts NEW — pulled out for 200-LOC cap
  • components/templates/notion-page-clone/shared/seed.ts — seeded 3 docs + 1 Roadmap database (3 rows)
  • app/preview/notion-page-clone-os/public/page.tsx — opens to dashboard@doc-welcome
  • app/preview/notion-page-clone-os/public/d/[id]/ + db/[id]/ NEW — dynamic dashboard surfaces
  • lib/content/slices.ts + layouts.ts — added notion-shell entry; template pullPaths cascade notion-shell + icon-picker; stale notion-page-clone-os dir refs renamed to notion-page-clone
MAY192026
ImprovementAZ-waveMay 19, 2026

Dashboard foundation rename — /admin → /dashboard/admin + workspace stubs

AZ-wave foundation only (mechanical URL prefix shift). Every `/preview/<template>/admin/...` route moves under `/preview/<template>/dashboard/admin/...`, freeing `dashboard/workspace/` as the new productivity surface. Permanent redirect from old URLs preserves every external link. Per-template constants split: DASHBOARD_BASE / ADMIN_PANEL_BASE / WORKSPACE_BASE introduced; ADMIN_BASE kept as alias for backwards compat. _shared/ui/admin-shell.tsx renamed to dashboard-shell.tsx with AdminShell as deprecated alias. Workspace landing pages now render a placeholder pointing to docs/architecture/dashboard-vision.md — BA/BB waves will populate it with notion editor + calendar + command-menu + database views. No URL breaking change; no consumer-side action needed.

Templates touched (admin → dashboard/admin + workspace stub)

  • saas-marketing-os — admin moved to dashboard/admin; workspace stub added
  • personal-brand-os — admin moved to dashboard/admin; workspace stub added
  • agency-studio-os — admin moved to dashboard/admin; workspace stub added
  • konsultan-os — admin moved to dashboard/admin; workspace stub added
  • kreator-studio-os — admin moved to dashboard/admin; workspace stub added
  • riset-kit — admin moved to dashboard/admin; workspace stub added
  • wirausaha-os — admin moved to dashboard/admin; workspace stub added
  • notion-page-clone-os — admin moved to dashboard/admin; workspace stub added

Infra

  • next.config.mjs — permanent redirect /preview/:tpl/admin/:path* → /preview/:tpl/dashboard/admin/:path*
  • _shared/ui/dashboard-shell.tsx — canonical export DashboardShell + deprecated AdminShell alias (drop-in for existing layouts)
  • _shared/ui/workspace-placeholder.tsx NEW — minimal coming-soon card for /dashboard/workspace until BB-wave
  • lib/content/layouts.ts — adminPreviewPath + filePaths updated for all 8 OS templates (81 path replacements)
  • Per-template nav-config.ts — DASHBOARD_BASE / ADMIN_PANEL_BASE / WORKSPACE_BASE constants (8 templates)

Up next (see docs/architecture/dashboard-vision.md)

  • BA-wave — Pages restructure inside Admin Panel + RBAC / CMS-menu / Analytics / CRM / Audit-log siblings
  • BB-wave — Workspace bootstrap (notion editor at MAX, calendar, command-menu, database views)
  • BC-wave — feature harvest from superspace + notion-page-clone via /rr lift
MAY192026
ImprovementAY-waveMay 19, 2026

Session close-out — All Pages first sub-item + Dashboard vision docs

Tiny nav UX fix + comprehensive close-out docs so the next session resumes without retracing today's conversation. Reorder Pages sub-items so All Pages comes first (the listing surface a user opens before drilling into a specific page editor like Landing). Capture the Dashboard architectural direction (Admin Panel + Workspace split, RBAC/CRM/Analytics harvest from superspace) at docs/architecture/dashboard-vision.md, and a wave-by-wave log at docs/sessions/2026-05-19-session.md. Memory entries written so /rr in the next session auto-loads the vision + open items.

Templates touched (Pages children re-ordered)

  • saas-marketing-os — All pages first, Landing second
  • personal-brand-os — All pages first
  • agency-studio-os — All pages first
  • konsultan-os — All pages first
  • kreator-studio-os — All pages first
  • riset-kit — All pages first
  • wirausaha-os — All pages first

Docs

  • docs/architecture/dashboard-vision.md NEW — Dashboard > Admin Panel + Workspace split direction; AZ→BC wave roadmap; source map for RBAC/CRM/Analytics from superspace + notion-page-clone
  • docs/sessions/2026-05-19-session.md NEW — wave-by-wave commit log AK→AY; flagged items for next session; process notes (200-LOC cap, pre-push build hook, wave-letter collisions)
  • Memory entries — dashboard-vision + session-2026-05-19 + feedback-wave-letters + feedback-changelog-discipline written to the project memory dir for cross-session auto-load
MAY192026
FeatureAX-waveMay 19, 2026

Nested Pages nav across all 7 templates + Open-full-page button

Closes the AV-deferred propagation: every website template now has the Pages parent + collapsible sub-items (Landing / All pages / blog / portfolio / services where applicable). ParentNavItem rewired to the canonical shadcn NavMain idiom (group/collapsible + group-data-[state=open]/collapsible:rotate-90) — same pattern shadcn ships in its docs. FeatureBar gets a new ExternalLink button: when the active docs tab is a preview surface, the button pops the iframed content out into a real browser tab at native size.

Templates touched (Pages parent + nested sub-items)

  • personal-brand-os — Landing, All pages, Blog, Portfolio, Services, Resources
  • agency-studio-os — Landing, All pages, Work, Services
  • konsultan-os — Landing, All pages
  • kreator-studio-os — Landing, All pages
  • riset-kit — Landing, All pages
  • wirausaha-os — Landing, All pages

Site

  • components/templates/_shared/ui/admin-nav-items.tsx — ParentNavItem refactored to canonical shadcn NavMain idiom (group/collapsible class + CSS-driven chevron rotation, no per-item useState)
  • components/site/feature-context.tsx — FeatureManifest.previewUrls?: { public?, admin? } so FeatureBar can resolve the surface URL without a fresh ref
  • components/site/preview/manifest-builder.tsx — buildPreviewManifest emits previewUrls from publicPath/adminPath
  • components/site/feature-bar.tsx — new ExternalLink button (right-side cluster) opens the active preview surface in a new tab; auto-hides on split tab and when manifest has no URL for the current surface
MAY192026
FeatureAW-waveMay 19, 2026

Notion Page Clone OS — nested Pages nav + landing-renderer composition

Applies the AV nested-nav pattern to notion-page-clone-os and rewires the public homepage to compose existing rr slices instead of a bespoke React tree. Admin sidebar now groups Landing / Snippets / All-pages under a single "Pages" parent (Collapsible + SidebarMenuSub). Public homepage reads admin-editable LandingSection rows from the template store and renders each via the canonical HeroBlock / FeatureGridSection / CtaBand slices, plus a custom snippets gallery section for the notion-blocks demo. Store schema bumped to v2-landing — landing-sections now first-class state managed via LANDING_UPSERT / LANDING_DELETE alongside pages + snippets.

Templates touched

  • notion-page-clone-os — nested Pages nav + LandingRenderer composition

Slices reused (no change)

  • hero-block — landing hero rendered via canonical HeroBlock
  • feature-grid — primitive showcase via FeatureGridSection
  • cta-band — landing CTA rendered via canonical CtaBand
  • notion-blocks — snippet gallery embeds EquationBlock + CodeBlock + NotifyMePopover

Site

  • components/templates/notion-page-clone/shared/nav-config.ts — buildAdminPrimaryNav now emits nested Pages parent with landing/snippets/all-pages children
  • components/templates/notion-page-clone/shared/store.tsx — landingSections added to State; storageKey bumped to v2-landing; LANDING_UPSERT / LANDING_DELETE reducer
  • components/templates/notion-page-clone/slices/home/LandingRenderer.tsx NEW — switch on section.kind → HeroBlock / FeatureGridSection / CtaBand / custom SnippetsGallery
  • components/templates/notion-page-clone/slices/home/HomePage.tsx — reads useLandingSections() filter+sort, renders via LandingRenderer
MAY192026
FeatureAV-waveMay 19, 2026

Admin sidebar: nested Pages parent + sub-items (POC on saas-marketing-os)

Admin nav was a flat list per template — every content surface (landing, blog, pricing, features, changelog) sat as a sibling top-level menu item. With more entities being added the sidebar started feeling crowded. AV adds optional `children` to AdminNavItem and renders nested entries via shadcn's `Collapsible` + `SidebarMenuSub` + `SidebarMenuSubButton`. POC on saas-marketing-os groups all page-driving CRUDs (landing, all pages, blog, pricing, features, changelog) under a single "Pages" parent. Top-level keeps Dashboard / Pages / Customers / Subscriptions / Leads. Other 6 templates queued for AW. Dynamic per-page section composition (using existing hero / feature-grid / pricing-page / blog-section / changelog-feed / faq-section / portfolio-section / cta / services / testimonials-grid slices) deferred to a separate AW-B sub-wave.

Templates touched

  • saas-marketing-os — Pages parent with 6 sub-items (POC)

Templates queued for AW (same restructure)

  • personal-brand-os
  • agency-studio-os
  • konsultan-os
  • kreator-studio-os
  • riset-kit
  • wirausaha-os

Site

  • components/templates/_shared/types/common.ts: AdminNavItem.children?: AdminNavItem[]
  • components/templates/_shared/ui/admin-nav-items.tsx NEW — ParentNavItem + LeafNavItem + isPathActive helper
  • components/templates/_shared/ui/admin-sidebar.tsx — NavGroup routes child-having items through ParentNavItem (Collapsible + SidebarMenuSub)
  • Existing flat nav items keep rendering as before (LeafNavItem)
NewerPage 23 / 25Older