rmnr
DocsTourSlicesBest PracticeAgentsInstall

Command Palette

Search for a command to run...

New
  • Changelog
Release notes

Changelog

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

JUN072026
Featureappshell@1.3.0Jun 7, 2026

appshell 1.3.0 — 20-feature window-manager wave: command registry, Spaces, window tabs, Quick Look, clipboard, share, lock screen + more

The F1–F20 productivity wave lands from app-shell (app.rahmanef.com), where every feature shipped behind its own e2e gate (21-check headless harness, 13 vitest suites ride along in the slice). The multiplier seam is a dynamic command registry — registerCommands(source, cmds) — that Spotlight merges at runtime; nearly every other feature self-registers its palette commands through it (shells too: switching surfaces is a command). Window manager grew: always-on-top pinning, tiling presets incl. ⅓/⅔ thirds snap zones, virtual desktops (Spaces 1–4 with per-window spaceId), window tabs (merge an app's windows into one tabbed frame), saved layouts, session profiles (windows + shell prefs as one unit), and a work-area-clamped spawn cascade (windows can no longer open off-screen). New bundled features (DEFAULT_FEATURES 5 → 10): Quick Look (Space-bar previewer registry), clipboard history (⌘⇧V overlay, pin survives clear, monotonic ids), share sheet (target registry + copy/download built-ins), shortcut cheat-sheet (⌘/, source-keyed hint registry), lock screen (privacy curtain, idle auto-lock, consumer unlock guard). Notifications gained inline actions + per-app icon badges (count pill / dot / progress ring on every shell's icons, auto-driven by unread appId toasts). Plus: cross-app drag & drop (typed payloads → per-app drop handlers), focus mode (toasts go log-only), recents, a11y-ready font/contrast seams, desktop wallpaper-layer widgets (new desktopWidgets slot region), and document.title sync ("App — Brand", manifest.titleSync opt-out). Framework stays brand-free — the one hardcoded brand string found in review (notification cards) now reads useBrand().

Slices (updated)

  • appshell 1.3.0 — dynamic command registry, badges, layouts, recents, notification actions, pin/tiling-thirds, Spaces, window tabs, Quick Look, clipboard, share, DnD, focus mode, ⌘/ help, profiles, lock screen, desktop widgets, title sync, cascade clamp; 13 vitest suites in-slice
JUN072026
Featureloading-states@0.1.0Jun 7, 2026

loading-states slice — skeleton + spinner SSOT, adopted across the site

UX wave U8. A repo-wide grep found loading UI hand-rolled everywhere: bespoke animate-pulse divs (notion hosts), raw Loader2 spans (preview-kit, admin-login), and a one-off docs body skeleton. New loading-states slice centralizes the pattern: LoadingSkeleton composes the shadcn Skeleton primitive with seven kind presets (text / card / list / table / form / page / block, count + columns overridable), and LoadingState composes the shadcn Spinner for in-flight work (inline / block / overlay). The page kind drops straight into a route loading.tsx. The site now eats its own dog food: DocsLoadingSkeleton keeps only the docs-shell chrome strips and delegates its body to kind="page"; the notion database/notes hosts swap pulse divs for kind="block"; preview-kit chat + composer and admin-login swap Loader2 for the Spinner primitive. Per-slice skeletons (icon-picker, notion editor) stay put — slice self-containment beats DRY across slice boundaries.

Slices (new)

  • loading-states 0.1.0 — LoadingSkeleton (7 kinds) + LoadingState (3 variants) on shadcn Skeleton/Spinner; previews for every kind
JUN072026
Fixsite@sidebar-treeJun 7, 2026

Docs sidebar tree actually folds — dead chevrons fixed, sections collapsed by default

UX wave U7. Three compounding bugs killed the docs-sidebar tree: (1) category branches never toggled at all — SidebarMenuButton's tooltip prop wraps the button in a Tooltip root, and CollapsibleTrigger's asChild Slot merged its onClick onto that non-DOM wrapper, silently dropping the handler; (2) section chevrons never rotated — the group/section class sat on SidebarGroupLabel, which Radix never stamps data-state on, so the group-data-[state=open] selector could not match; (3) every section defaulted to open, rendering the whole catalog as one wall. Fixes: tooltip dropped from the trigger (sidebar is always full-width — it added nothing), group classes moved to the Collapsible roots that actually carry data-state, and only the section containing the active path starts open (navigation re-opens, manual toggles stick). Also: publish gate caught template-base/contact-form-resend still on the removed "email" category — moved to integrations.

Site (fixed)

  • Branch toggle: tooltip-in-CollapsibleTrigger swallowed clicks — removed
  • Chevron rotation: group/* classes now live on the data-state-carrying Collapsible roots
JUN072026
Improvementos-apps@hooks-v6Jun 7, 2026

react-hooks v6 compliance sweep backported from os-vps + macOS-style app icons

The os-vps lint sweep (55 compiler-era react-hooks warnings → 0, rules promoted to error) lands in every lifted slice so both repos are line-identical outside seams again. Pattern conversions, no blanket disables: latest-ref mirrors move into effects, effect-driven resets become request/prop-keyed derived state (window-content, file-tree, use-konva-image, favicon, omnibar, remote-view, NumBox, waveform, spotlight), dynamic icon lookups render via createElement (useMemo does NOT satisfy static-components — probed), inline components hoist to module scope, the image-editor co-locates selection+mask in one state so the mask-exit invariant is atomic, history snapshots canUndo/canRedo at mutation time, and the inspector AI thread resets via key= remount. Bonus: the appshell AppIcon drops the hard iOS-glass sheen for a macOS Ventura treatment — soft full-height luminance ramp, hairline edge ring, layered drop shadow, shadowed glyph — mirrored in the app-store icon preview + card tiles.

Slices (changed)

  • appshell 1.2.1 — hooks-v6 clean (window-content keyed loader, url-sync/app-switcher ref mirrors, spotlight mounts per open, inspector key= remount) + Ventura AppIcon
JUN072026
Featurerahman-resources@1.12.0Jun 7, 2026

Five basics every app needs — data-table, empty-states, marketing-chrome, settings-page, notifications-center

UX wave U6. The catalog had editors, payments and an OS shell — but no data table, no 404 page, no footer. Five foundational slices land, all pure-UI, adapter-driven where state is involved, each with variant previews + smoke coverage (registry 37 → 42): data-table (generic DataTable<TData> on TanStack Table v8 + shadcn Table — sorting, search, pagination, row selection, column visibility; density/selectable axes), empty-states (six presets 404/500/403/no-results/empty-list/first-use on the shadcn Empty primitive + ErrorPage drop-in for app/not-found.tsx + error.tsx), marketing-chrome (config-driven MarketingHeader split/centered/minimal + mobile sheet menu, MarketingFooter columns/slim — the chrome every template hand-rolled), settings-page (Profile/Preferences/Notifications/Danger-zone shell over a two-method SettingsAdapter with optimistic save), notifications-center (bell + unread badge + popover/sheet inbox over a NotificationsAdapter; enhances appshell + dashboard-shell). CLI 1.12.0 carries them plus the U2 category enum + U3 alias resolution.

Slices (NEW)

  • data-table — TanStack v8 + shadcn Table; sorting / search / pagination / selection / column visibility
JUN072026
Improvementsite@shell-hierarchyJun 7, 2026

Shell hierarchy made explicit — one chrome, inner surfaces mount inside it

UX wave U5. Six shell-family slices (appshell, dashboard-shell, workspace-shell, admin-panel, admin, platform-admin) had no documented composition story — consumers couldn't tell which renders chrome and which mounts inside it. Now: /architecture gains a "Shell hierarchy — who composes whom" section (one rule: exactly one outer chrome, never nest two); admin-panel + platform-admin declare dashboard-shell as a peer with the mount direction in the reason; the admin slice's description states upfront that it is HEADLESS (nav-from-registry scaffold, no chrome); AdminShell's docblock spells out that it is the INNER section nav. Investigation note: AdminShell composing DashboardShell directly would nest two chromes — wrong by the hierarchy's own rule — so the DRY here is the contract, not a forced refactor.

Site (changed)

  • /architecture: shell hierarchy section (appshell → dashboard-shell → inner surfaces)

Slices (changed)

JUN072026
Improvementsite@consistencyJun 7, 2026

UI consistency pass — one header family, one spacing rhythm, detail-page parity

UX wave U4. Docs pages had three header patterns (PageHeader, inline text-3xl copies, a custom text-lg bar on /build) and four page-spacing values. Now: PageHeader gains a compact bar variant (used by /build); /control-room, /audit-chain and /agents/[slug] swap their hand-rolled headers for PageHeader; page root spacing standardized to space-y-8; section h2 standardized to text-2xl (audit-chain, best-practice); DocCard bakes in p-4 default padding (twMerge keeps explicit overrides working); ShotThumbnail's aspect-[8/5] normalized to the same aspect-[16/10] string everyone else uses (identical 1.6 ratio, one spelling). Slice detail pages gain the prev/next arrows the layout detail header already had — both detail chromes now match.

Site (changed)

  • PageHeader compact variant; adopted on /build, /control-room, /audit-chain, /agents/[slug]
  • space-y-8 page rhythm + text-2xl section h2 everywhere
  • DocCard default p-4; ShotThumbnail aspect-[16/10]
  • Slice detail header: prev/next catalog navigation (parity with layouts)
JUN072026
Improvementcli@aliasesJun 7, 2026

Superseded slugs stay installable — CLI aliases + URL redirects for the merged landing sections

UX wave U3. The seven landing-page section slices (blog-section, faq-section, portfolio-section, changelog-feed, feature-grid, testimonials-grid, pricing-page) were merged into landing-sections as kind-variants back in v0.2.0 — but their old slugs just errored in the CLI and 404'd on the site. Now: lib/content/slice-aliases.json is the SSOT; gen-manifest embeds it as manifest.aliases; the CLI's findEntry falls through to the alias with a "superseded by" warning, so npx rahman-resources add blog-section installs landing-sections; /slices/<old-slug> redirects to /slices/landing-sections; each old slice.json carries deprecated: "landing-sections" (new optional schema field). Also fixed: landing-sections was miscategorized as infra — it's content.

CLI (changed)

  • manifest.aliases — superseded slug → successor; findEntry resolves through it with a warning
  • slice-schema.json: optional "deprecated" field (successor slug)

Site (changed)

JUN072026
Improvementsite@taxonomy-ssotJun 7, 2026

Taxonomy SSOT — 8 categories, one label map, no more sidebar drift

UX wave U2. Category order + labels were duplicated in four components and drifted: docs-sidebar showed "Ai"/"Ui" (naive capitalize), the /build picker was missing "os" entirely (OS slices invisible in the group list), the /slices tab row was missing OS too, and an empty "Storage" group sat in the sidebar. New lib/content/taxonomy.ts is the single source; all four consumers import it. Categories merged 12 → 8: payment+email → integrations, search+realtime → data, storage dropped (was empty). Moved: doku-payment, midtrans-payment, resend-newsletter, contact-form-resend → integrations; vector-search, broadcast-channel-sync → data. Sidebar label "Website templates" → "Templates — full apps" and both catalog heroes now state what they are NOT (layouts = single page shapes; templates = complete apps) — killing the layouts-vs-templates confusion.

Site (changed)

  • lib/content/taxonomy.ts — SLICE/LAYOUT category order + label SSOT (4 duplicates deleted)
  • Categories 12 → 8: integrations (payment+email), data absorbs search+realtime, storage removed
  • Fixed: /build picker + /slices tabs missing the os group; "Ai"/"Ui" labels
JUN072026
Improvementsite@terminologyJun 7, 2026

One name for one thing — "Slices" everywhere, "kitab" retired from copy

UX wave U1. The catalog had two names for the same artifact: nav said Slices while the homepage hero, /docs intro, breadcrumbs, command palette and detail titles said Modules — and the live site description still said "kitab" (pre-2026-05-16 internal codename). All user-facing copy now says Slices; kitab → catalog/resources in site.ts, /build, /mcp and /directory copy. Dead code out: the orphaned /recipes/[slug] route (parent already redirects to /slices) and the never-used "template" layout category (union + LAYOUT_CATEGORY_TITLE entry).

Site (changed)

  • Modules → Slices: hero, /docs intro + card, showcase heading, command palette, slice detail breadcrumb + meta title, /agents copy
  • kitab → catalog: site description, /build subtitle, /mcp pages, /directory footer
  • Removed orphan app/(docs)/recipes/[slug] + dead "template" layout category
NewerPage 5 / 17Older

Site (adopted)

  • DocsLoadingSkeleton body now renders LoadingSkeleton kind="page" — chrome strips stay bespoke
  • Notion database/notes hosts: ad-hoc animate-pulse divs → LoadingSkeleton kind="block"
  • preview-kit chat/composer + admin-login: raw Loader2 → shadcn Spinner primitive
  • agent.md regen catch-up for admin + the five U6 slices (titles/taglines drifted since U5–U7)
  • Sections collapsed by default except the one holding the active path
  • Slices (fixed)

    • contact-form-resend (template-base copy): category email → integrations (unblocks CLI publish gate)
  • image-editor 2.0.1 — atomic selection+mask state, mutation-time history flags, paintBox memo, derived dirty, un-curried overlay drags
  • reel-editor 1.0.1 — frameRef mirror, keyed NumBox draft, .then-form imports browser, lazy layout init, map-derived waveform
  • browser 1.0.1 — keyed favicon error, keyed omnibar draft, lazy usePersistent
  • app-store 1.0.1 — createElement glyph tiles + ramp sheen; assistant 1.0.1, media-viewer 1.0.1, code-editor 1.0.1 (file-tree keyed listing), os-terminal 1.0.1 ref mirrors
  • empty-states — 404/500/403/no-results/empty-list/first-use presets + ErrorPage drop-in
  • marketing-chrome — MarketingHeader (3 layouts, sheet menu) + MarketingFooter (2 layouts)
  • settings-page — adapter-driven settings shell, 4 sections, optimistic save
  • notifications-center — bell + inbox, adapter-driven, enhances appshell/dashboard-shell
  • CLI

    • 1.12.0 — 62 slices in manifest, integrations/data category enum, alias resolution, @tanstack/react-table dep guidance
  • admin-panel + platform-admin: dashboard-shell peer with mount-direction reason
  • admin: description repositioned as headless scaffold (pair with dashboard-shell)
  • /slices/<old-section-slug> → redirect to landing-sections; category fixed infra → content
  • Templates vs Layouts disambiguated in sidebar labels + catalog hero subtitles
  • Slices (changed)

    • doku-payment, midtrans-payment, resend-newsletter, contact-form-resend → integrations
    • vector-search, broadcast-channel-sync → data