rmnr
DocsTourSlicesBest PracticeAgentsInstall

Command Palette

Search for a command to run...

New
  • Changelog
Release notes

Changelog

What changed in each rr release — page 6 of 17. Full prose history in CHANGELOG.md.

JUN072026
Improvementshots@layoutsJun 7, 2026

Screenshot pipeline — /layouts cards go from 36 live iframes to 36 static webps

Last VP-wave leftover. scripts/capture-shots.mjs drives the VPS headless Chromium (the os-browser service) over the deployed site, captures every layout previewPath at 1280×800, downscales to 800×500 webp via PIL (~18KB each, 656KB total) and writes public/shots/layouts/* plus the lib/preview/shots.gen.json manifest. /layouts catalog cards now render the captured shot first (one <Image>, accurate, instant), keep the live-iframe path only for slugs without a capture, and the procedural mock as last resort — previously every card booted a full Next page in a scaled iframe. Operator-run via npm run shots:capture (all / single slug / SHOTS_BASE override) — screenshots drift slowly, so it's not a CI gate. /templates keeps its existing poster system.

Infra

  • scripts/capture-shots.mjs + npm run shots:capture — capture → PIL webp → manifest, per-slug filter + failure exit
  • components/site/catalog/shot-thumbnail.tsx — static <Image> thumbnail + layoutShot() lookup
  • app/(docs)/layouts/page.tsx — shot → iframe → mock fallback chain
JUN072026
Improvementtaxonomy@os-categoryJun 7, 2026

New "OS Apps" category — 11 os-vps slices leave the UI junk drawer

The UI cluster had ballooned to 24 slices, 11 of them the os-vps app family. New `os` category across the taxonomy (SliceCategory union, slice-schema enum, sidebar order + "OS Apps" label, /build picker groups automatically): appshell, file-explorer, image-editor, reel-editor, code-editor, media-viewer, system-monitor, os-terminal, assistant (moved from AI — it is the OS assistant app; ai tag stays), browser, app-store. Category is metadata-only — no version bumps, `npx rr add <slug>` unchanged. Sidebar now: UI 13, OS Apps 11.

Slices touched

  • appshell, file-explorer, image-editor, reel-editor, code-editor, media-viewer, system-monitor, os-terminal, assistant, browser, app-store — category ui/ai → os

Infra

JUN072026
Improvementvariant-previews@detail-pagesJun 7, 2026

Live variant previews on /slices detail pages

Site-simplify follow-up: variant previews were only reachable inside the Bundle Builder, so the catalog detail pages still read as static docs. Every /slices/<slug> page whose slug is in the preview registry now gets a "Live" tab next to Preview/Code/Details — the same auto-knob VariantPreview widget the builder mounts, fed by the same rr-demo localStorage data. 37 slices become interactive where people actually evaluate them.

Infra

  • app/(docs)/slices/[slug]/slice-detail-client.tsx — "Live" tab via PREVIEW_SLUGS registry membership; renders <VariantPreview slug> in the docs-shell tab chrome
JUN072026
Improvementvariant-previews@template-baseJun 7, 2026

dashboard-shell + admin-panel join the preview registry (template-base root)

gen-preview-registry now scans template-base/frontend/slices too — with a twist the smoke gate caught before production: template-base ships its OWN node_modules (a second react), so any .tsx living there crashes hooks when bundled. Render files for template-base slices therefore live SITE-SIDE at components/templates/_shared/previews/<slug>.preview.tsx (importing only site-compiled code) while the previews declaration stays in the slice's slice.json. dashboard-shell previews the real _shared DashboardShell all 8 OS templates mount (flat-nav / grouped-nav scenarios); admin-panel previews the 17-block operational overview grid. Registry: 37 slugs. Honest boundary documented in the spec: motion-primitives, responsive-dialog, three-column and workspace-shell are facades over @/frontend/shared/* — their implementations exist only in consumer projects, so rr cannot preview them truthfully; contact-form-resend is convex-bound.

Slices touched

  • dashboard-shell — flat-nav / grouped-nav scenarios over the real _shared shell
JUN072026
Improvementvariant-previews@smoke-gateJun 7, 2026

Preview smoke gate + honest no-preview cards in the builder

Investigating a "previews are missing" report: every one of the 35 registered previews renders clean (verified live on production via headless Chromium + a new happy-dom smoke test). The real gap was silence — selected slices WITHOUT a preview (headless/server slices, opt-outs, template-base slices outside the registry) rendered nothing at all in /build, which reads as broken. The SlicePreviews panel now shows coverage (n/total) and an explicit "No live preview — headless / server-side, or preview not yet authored" card listing those slugs. New permanent gate: lib/preview/preview-smoke.test.tsx mounts EVERY registered preview with default variants in happy-dom on `npm test` (pre-push) — catches mount crashes and declared-component drift that tsc + the generator can't. vitest aliases now mirror tsconfig paths (@/features, @/shared dual-mapping) so tests can import through the registry.

Infra

  • lib/preview/preview-smoke.test.tsx — 35 previews mount-tested in happy-dom (now 357 tests total)
  • components/build/variant-preview.tsx — coverage header + dashed no-preview card for previewless selections
  • vitest.config.mts — @/features + @/shared alias parity with tsconfig (custom dual-dir resolver)
JUN072026
Featurenotion@1.0.0Jun 7, 2026

notion 1.0.0 — the block editor port is COMPLETE and in the catalog

M2c+M3+M4 land in one wave, closing the port that started 2026-06-03. M2c composes the working editor: BlockEditor + PageEditor orchestrators (dnd-kit drag with column layouts, slash menu, markdown triggers, per-block undo, paste-markdown import via a synthesized insertBlocksAfter over the seam's block CRUD), PageActionsMenu (font/width/lock/copy/duplicate/move/trash + md/html/txt export through the vendored export libs), SelectionToolbar (inline formatting), MentionTypeahead (async adapter search), DatabasePicker (delegates to adapter.database.pickDatabase), TocBlock, PageRefBlock, the page-editor chrome (title, breadcrumbs, actions, subpages, cover strip, skeleton/not-found) and a props-driven RowPropertiesPanel. M3 ports the pure convex block helpers (_blocks/_blockOps, 31 unit tests) into convex/features/notion. M4 flips the slice off WIP: version 1.0.0, public catalog entry (npx rr add notion), and a live variant preview — the full PageEditor running on a localStorage-backed in-memory EditorDataAdapter (two scenarios, every edit persists). Mount with adapter `{}` for a plain markdown block editor; wire data/selection/comments/ai/database/mention/page adapters to light up host capabilities. Source app peers that don't cross the seam (sharing, snapshots, wiki, analytics, notifications, presence) stay host-side by design.

Slices touched

JUN072026
Improvementmanifests@schema-aJun 7, 2026

Manifest debt zeroed + previews for the freshly lifted editors

validate:manifests had 23 long-standing (warn-only) errors: 7 slices still shipped the legacy {name, deps, notes} manifest shape and user-management used a stability value outside the enum. All 7 are converted to Schema A (slug/version/tier/distribution/files/imports — file lists from git, imports scanned from source; preview.tsx excluded), user-management moves alpha → experimental, and the validator now reports 0 errors. The two os-vps editors lifted this morning also join the variant-preview registry (33 slugs total): code-editor with three mock-fs scenarios and media-viewer with the offline sample gallery + a data-URI remote payload.

Manifests → Schema A

  • image-picker, notion-database, notion-shell, notion-sidebar, selection, theme-presets — legacy shape converted; versions sourced from slice.json
  • files — converted with distribution.method "manual" (no slice.json yet; consumed by the notion template + image-picker page)
  • user-management — stability "alpha" → "experimental" (schema enum)
JUN072026
Featurevariant-previews@full-catalogJun 7, 2026

Preview backfill — 31 slices in the variant-preview registry + coverage gate + Vercel demo links

VP-6 closes the VP wave. 28 new preview.tsx files land across the catalog (31 total in the generated registry): every marketing section, UI utility, content/data surface and previewable subsystem now renders live in the Bundle Builder with auto-generated knobs. Headless / embed / no-seam slices (ai-router, audit-log, cal-com-booking, resend-newsletter, reel-editor, seo, vector-search) explicitly opt out with `"previews": []` — a new audit:slices rule warns when a component-bearing slice neither declares nor opts out, and gen-preview-registry errors on an opt-out that still ships a preview.tsx. layouts.ts gains demoUrl: all 8 OS templates now link their own Vercel deployments (the dev-lab repos, always ahead of rr's snapshot) from the detail page, overriding the demo-subdomain rewrite.

Marketing sections (variants)

  • blog-section — layout cards/list/featured-split × columns × align
  • faq-section — layout single/two-column/grouped × align
  • feature-grid — layout cards/minimal/alternating/grouped × columns × align
  • testimonials-grid — layout cards/quote-stack/masonry × columns × align
JUN062026
Featureappshell@1.2.0Jun 6, 2026

appshell 1.2.0 — switchable multi-shell OS: macOS / Windows 11 / Android / iOS + consumer shells

The shell framework grows a shell REGISTRY: chrome is now pluggable while the window store stays single. registry/shells.tsx holds ShellDescriptor (id/surface/group/windowed/wallpaper/render) + per-surface user prefs (a desktop shell AND a mobile shell, resolved by live form factor; sv:shell). Built-ins register on import: macOS (existing DesktopChrome), Windows 11 (centered taskbar + Start menu + Snap-Assist + caption-button windows via Window variant=windows), Android Material-You (status-bar shade w/ quick tiles, at-a-glance home, swipe-up App Drawer, gesture nav, Recents deck) and iOS (existing MobileShell, now with a left-half pull-down Notification Center + app long-press quick-actions). Consumers register their own (os-vps adds a single-pane Dashboard cockpit). Geometry became chrome-aware: WindowState.snapZone persists the snapped zone and applyChromeInsets() re-tiles snapped/maximized windows when a shell with different chrome mounts. Desktop fidelity pass rides along: dock magnification (gaussian, width-conserving) + dock right-click menus, macOS Notification Center backed by a persistent toast log (lib/toast), Cmd+Tab app switcher, Window Overview (Mission Control), desktop context menus, menu-bar Window/Help system menus, and wallpaper=auto resolving to the active shell's native backdrop (wp-win11/material/ios presets). Lifted from os-vps (Topside) after a two-way merge with app-rahmanef's fork — close guards + winId, dock Link deep-links and the shadcn Button sweep all kept. Every file under the 200-LOC gate (dock/menu-bar/mobile-home/store/android split into *-parts).

JUN062026
Featureos-apps@wave-1Jun 6, 2026

Five more os-vps apps land: system-monitor, os-terminal, assistant, browser, app-store

The big lift wave — every remaining os-vps app that could stand alone now does. Each follows the established host-seam recipe: lib/host.ts is the ONLY coupling point, with an injectable adapter and an honest offline default, so all five render alive with zero backend. system-monitor runs on a wavy telemetry mock until configureSysmon points at a real host; os-terminal's 17 built-ins run on its in-memory FsModel, with configureTerminal flipping ls/cat live and passing unknown commands to one-shot exec; assistant answers with a typing demo stream until configureAssistantStream brings any async text-delta generator; browser fakes its viewport with a canvas demo renderer until configureBrowser drives a real headless Chromium; app-store (with the Create-App flow bundled in — rr forbids cross-slice imports) manages a localStorage app registry whose useInstalledApps() feeds any appshell-style launcher. Skipped on purpose: os-settings (host-specific devices/server panels). The catalog now carries 9 of the 10 os-vps user apps.

Slices touched

  • system-monitor — NEW 1.0.0: gauges + sparklines + process table; SysMonAdapter seam
NewerPage 6 / 17Older
  • defineFeature SliceCategory + slice-schema enum + site-sidebar ORDER/LABEL + build-sections — "os" wired end to end
  • admin-panel — operational-blocks overview, density axis
  • Infra

    • gen-preview-registry — second scan root + per-root render-file location + slug-collision guard
    • docs/SLICE-PREVIEW-SPEC.md — template-base rules + smoke-gate + not-previewable boundary
    • notion — M2c compose (28 new files) + M3 convex helpers + M4 catalog entry, preview, 1.0.0
    • markdown — unchanged, but the bridge note now points both ways: same grammar, blocksToMarkdown/markdownToBlocks

    Infra

    • vitest now scans convex/features/**/*.test.ts — 322 tests total (was 291)
    • @notion/shared vendors: database/property types, exportContext, html, databaseTable, csvCells (page → md/html export with embedded-database tables)

    New previews

    • code-editor — sample-tree / markdown-doc / python-script scenarios over the writable mock fs
    • media-viewer — sample-gallery / remote-image scenarios, fully offline
  • portfolio-section — layout uniform/masonry/asymmetric × columns × align
  • pricing-page — columns 2-4 × featuredVariant ring/scale/tint
  • changelog-feed — layout timeline/cards/list
  • UI utilities

    • icon-picker — twemoji/native render style, picked icon previews live
    • image-picker — Button variant × size (gallery/link/upload zero-config)
    • command-menu — palette rendered inline/open with live cmdk filtering
    • theme-presets — ThemePresetSwitcher sm/mobile under real providers
    • selection — live marquee rubber-band select over demo rows
    • appshell — AppFrame scenarios: collapsed/expanded/with-topbar

    Content + data

    • comments — density × resolved axes, replies persist via demo store
    • library — all-kinds/prompts-only/empty scenarios
    • activity — with-stats/feed-only/empty scenarios
    • landing-sections — hero-only/hero-features/full-page scaled scenarios
    • markdown + notion-database + full-width-toggle — pilots from VP-3

    Auth + admin + subsystems

    • convex-auth — AuthCard methods × defaultPasswordMode, mock handlers
    • rbac-roles — PermissionMatrix role seeds × readOnly
    • user-management — members/roles/teams/access scenarios, edits persist
    • admin — AdminPage default/saas/blog presets
    • file-explorer — root/documents/projects, in-memory adapter CRUD
    • notion-shell — CalloutBlock kind axis, editable seeded block
    • notion-sidebar — nested-tree/with-icons/flat-list, live page CRUD
    • ai-chat — with-mock-bot/unconfigured scenarios (canned reply)
    • doku-payment — VA/QRIS/e-wallet/retail sandbox instructions
    • midtrans-payment — single-item/cart/subscription checkout amounts
    • image-editor — square/wide blank Konva docs, client-only stage

    Infra

    • gen-preview-registry — `"previews": []` opt-out support + stray-preview.tsx error
    • audit:slices — preview-coverage warning for component-bearing slices (advisory, flips to error at sustained 100%)
    • layouts.ts demoUrl — 8 OS templates link their Vercel dev-lab deployments; template-detail prefers it over the demo subdomain

    appshell (NEW)

    • registry/shells.tsx — ShellDescriptor registry + per-surface prefs (setShell/useShellPrefs/resolveShell)
    • components/shells/windows/* — Windows 11 taskbar / Start menu / Snap-Assist / shell
    • components/shells/android/* — Material-You shell (shade / drawer / recents / gesture nav)
    • components/shells/{context-menu,window-overview}.tsx — shared chrome
    • components/{notification-center,app-switcher,mobile-notifications}.tsx — macOS NC, Cmd+Tab, iOS NC
    • lib/store-snap.ts — snapZone + applyChromeInsets/retileSnapped + Snap-Assist onSnap pulse

    appshell (changed)

    • window.tsx variant=macos|windows; desktop.tsx resolveShell + PhoneFrame preview + Cmd+Arrow snap keys
    • menu-bar Window/Help menus; menu-bar-status clock -> Notification Center with unread dot
    • wallpaper auto -> ShellDescriptor.wallpaper; appshell.css wp-win11/material/ios/auto presets
    • lib/toast.ts persistent notification log (useNotifications/dismiss/clear/markRead)
  • os-terminal — NEW 1.0.0: shell emulator, in-memory FsModel, live fs/exec passthrough
  • assistant — NEW 1.0.0: streaming chat + agents/skills/automations library; bring-your-own LLM stream
  • browser — NEW 1.0.0: remote-browser chrome; BrowserAdapter seam + offline canvas demo renderer
  • app-store — NEW 1.0.0: storefront + Create-App over one localStorage registry; useInstalledApps() descriptors