rmnr
DocsTourSlicesBest PracticeAgentsInstall

Command Palette

Search for a command to run...

New
  • Changelog
Release notes

Changelog

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

JUN032026
Featurenotion M2aJun 3, 2026

notion-editor M2a — block rendering + editing behind the adapter

Block render (BlockBody, registry, built-in code block) + editing layer (slash menu, key/input/slash handlers) ported behind the EditorAdapter seam. Uploads route through the adapter; raw file inputs → FilePicker.

Slices touched

  • notion — M2a block render + edit (WIP cluster)
JUN03
2026
Featurenotion M1Jun 3, 2026

notion-editor M1 — cluster scaffold + decoupled pure core

New notion block-editor cluster (slice-of-slices). Vendored block model, 151-test pure core, and the EditorAdapter seam that inverts 13 cross-slice deps to optional host adapters.

Slices touched

  • notion — new cluster + pure core (WIP)
JUN022026
Improvementpreview overhaulJun 2, 2026

Content-slice previews + mdx-blog deprecation

Rebuilt seo/comments previews responsive; added services + testimonials previews (public + admin). mdx-blog deprecated in favour of the notion-editor.

Slices touched

  • seo, comments — responsive previews
  • services, testimonials — new previews
  • mdx-blog — deprecated
JUN022026
Featurecomments threadingJun 2, 2026

comments — real reply threading + content-slice cleanup

comments gains real parentId threading + buildThread tree. Best-practice pass across mdx-blog/seo/comments (barrels, kitab purge, as-any removal).

Slices touched

  • comments — parentId + buildThread
JUN022026
Featureworkspace-shellJun 2, 2026

workspace-shell — clean sidebar-07 dashboard preview

Rebuilt the workspace-shell preview as a shadcn sidebar-07 dashboard: team switcher = atomic workspace×menuSet context, collapsible nav, nav-user footer.

Slices touched

  • workspace-shell — sidebar-07 preview
MAY312026
FeatureCK-1PMay 31, 2026

appshell — manifest-driven desktop + mobile OS shell, lifted from os-vps

New tier-3 slice: a generic, brand-free OS-style shell framework. One <AppShell manifest> wrapper provider gives any project a macOS-style window manager (drag/snap/maximize, dock with macOS click-to-focus + hover window switcher, menu bar, ⌘K Spotlight) AND an iOS-style mobile surface (home pager, app library, control center, widgets). Everything project-specific arrives through the manifest: brand, apps, features, surface regions, capabilities (data/auth/AI injection seam), persistence, keymap. The five shell features (search, inspector, notifications, control-center, widgets) ship bundled inside the slice as defineFeature() contributions that mount into named <Slot>s — `rr add appshell` installs the whole shell as one unit. Responsiveness is a single ResponsiveProvider + 4 DRY primitives (AppFrame, MasterDetail, ResponsiveToolbar, TouchList). Lift hardening: the slice was made fully self-contained (imports nothing but @/components/ui/* + @/lib/utils — ResponsiveDialog and a graceful useIsMobile were pulled in-slice), and four oversized files were split under the 200-LOC cap (store, responsive-dialog, menu-bar, mobile-app-library). Source: os-vps (Topside).

Slices touched

MAY302026
Featurelibrary@0.1.0May 30, 2026

library slice — resource hub (prompts · visuals · snippets · links), lifted from rahmanef.com

Backfilled entry for lift commit 2c3b745 (2026-05-30) — the slice landed in the catalog but skipped its changelog entry, so RecentlyUpdatedBadge never fired. One polymorphic libraryItems table holds six kinds (prompt, image, video, link, download, snippet) with per-kind payload fields switched on kind — no joins. Attribution-first (source/license/tools on every item), collections, Convex-backed with index-bounded queries (no bare .collect()). Public surface: filterable card grid + per-item detail with copy-to-clipboard for prompts/snippets and an opt-in upvote control (consumer-owned backend). Brought to project bar before landing: six raw <button> converted to shadcn <Button>, className branches cn-merged, 200-LOC cap splits on mutations + detail view. Peers the seo slice for override fields.

Slices (new)

  • library 0.1.0 — polymorphic 6-kind resource hub: Convex schema + queries/mutations, filterable grid, detail + copy + upvote
MAY282026
FixCK-1OMay 28, 2026

Empties the CK-1L deferred list: newsletter rate-limit + orphaned checkEmail removed

Closes the last two CK-1L (Lane A) deferrals. (1) newsletter.subscribe — the lite subscribe mutation had no abuse defense beyond an email-shape check, so it now mirrors the hardened `subscribers` slice: a honeypot field (`website`), a per-email windowed rate-limit (new `newsletterSubscribeAttempts` table + `by_email_time` index, 3 attempts/hour), and an explicit `returns` validator. Idempotency + status flow unchanged; the new optional `website` arg is non-breaking. resend-newsletter 0.1.1 -> 0.1.2 (its slice.manifest.json was also stale at 0.1.0 and is corrected). (2) convex-auth — removed `convex/features/auth/checkEmail.ts`, an orphaned httpAction port (anti-enumeration email check + signin-attempt throttle) that imported non-existent `_shared/clientIp` + `_shared/origin` and queried a `loginCheckIpEvents` table defined in no schema. It was wired into no http router and called by no frontend, yet shipped to every consumer through the convex-auth `convexFiles` glob — breaking their `convex dev`. Removed rather than restored: nothing consumes it, and restoring would build an unused speculative feature (the design survives in git history if ever wanted). convex-auth 0.2.0 -> 0.2.1. Note: true per-IP rate-limiting would need an httpAction (Convex mutations can't read request headers); per-email + honeypot matches the production-grade subscribers pattern. convex/** is outside the root typecheck, so the new table's _generated types land on the next `convex dev` — code mirrors deployed slice patterns to stay correct-by-construction.

MAY282026
FixCK-1NMay 28, 2026

Closes CK-1L deferral: admin.stats now requireAdmin-gated

Follow-up to CK-1L (Lane A) closing the highest-severity deferred item: `convex/features/admin/query.ts:stats` was a public, unauthenticated `query` returning dashboard counts plus the 12 most-recent activity rows across every table — including contact-submission names/emails — so any caller could read it over WebSocket. The `admin` slice already advertised "Gated by requireAdmin on Convex side" in its slice.json, README, agent recipe, and catalog entry, so this is a documented-contract drift rather than a behaviour change: the handler now calls `await requireAdmin(ctx)` first (the same gate used by services/subscribers/testimonials/create-your-mcp, honouring the `SUPER_ADMIN_EMAIL` bypass). No call site in this repo is affected — the rr site's own /admin is cookie-gated and reads a local filesystem loader, never the Convex query; only consumer projects that `rr add admin` and wire `api.admin.stats` were exposed. admin slice patch bump 0.2.0 → 0.2.1. The two remaining CK-1L deferrals (newsletter per-IP rate-limit table; auth/checkEmail.ts missing `_shared` siblings) need a Convex dev loop to verify and are left for a focused pass.

Slices touched

  • admin — stats query now requireAdmin-gated, matching its documented contract (0.2.0 → 0.2.1)
MAY282026
ImprovementCK-1MMay 28, 2026

Lane B+C: catalog→install UX + responsive + a11y P0 fixes

Eight P0 findings from the post-Phase-6 UI/UX + user-flow audit, shipped as one site wave (no consumer-slice API change beyond two preview pages). Flow: (1) catalog grid cards now carry a `RecentlyUpdatedBadge` corner overlay so freshness is scannable from /slices without opening each detail page — added a generic `cornerBadge` slot to `CatalogCard` (reusable by templates/layouts/recipes). (2) slice-detail HeroStrip gained a `CopyButton` next to the install command (was a truncated, un-copyable code chip — the page's primary CTA) plus an 'Already installed?' secondary line showing `npx rahman-resources update <slug>` so returning users find the update verb. (3) Branded `not-found.tsx` + `error.tsx` under `app/(docs)/` — typos/deleted-slice links + uncaught route errors now land on on-brand pages with recovery CTAs instead of the raw Next default (covers 60+ routes). Responsive + a11y: (4) slice-detail header strip stacks `flex-col` on mobile (was overflowing the action cluster below the h1 at ≤480px). (5) KIND_CLASS badge colors switched to dual-mode `text-{c}-700 dark:text-{c}-300` (were dark-only 300-level = WCAG contrast fail on light bg). Hard-rule compliance: (6) contact-form-resend preview raw `<input>/<select>/<textarea>` → shadcn `Input`/`Select`/`Textarea`/`Label` (this is the canonical contact slice consumers copy). (7) ai-router preview raw `<textarea>` → shadcn `Textarea`. (8) image-gallery block-renderer raw `<img>` (w/ eslint-disable) → `next/image` (unoptimized, since URLs are consumer-supplied). Deferred to a focused pass: /build mobile collapse (needs ThreeColumn→Tabs refactor + browser verification).

NewerPage 9 / 17Older
  • appshell — lifted from os-vps; desktop+mobile shell, 5 features bundled (new, 0.1.0)
  • Slices touched

    • resend-newsletter — honeypot + per-email rate-limit + returns validator on subscribe (0.1.1 -> 0.1.2)
    • convex-auth — removed orphaned/broken checkEmail.ts (0.2.0 -> 0.2.1)

    CK-1L deferred list

    • All three CK-1L follow-ups now closed — admin.stats gate (CK-1N), newsletter rate-limit + checkEmail (here).

    Follow-ups (deferred)

    • newsletter/subscribe per-IP rate-limit still needs a schema table (CK-1L item 1)
    • auth/checkEmail.ts missing `_shared/clientIp` + `_shared/origin` + `loginCheckIpEvents` schema — restore-or-delete needs Convex verification (CK-1L item 2)

    Site

    • CatalogCard — new `cornerBadge` slot; /slices grid shows RecentlyUpdatedBadge per card
    • HeroStrip — CopyButton on install command + 'Already installed?' update-command line
    • app/(docs)/not-found.tsx + error.tsx — branded 404 + error boundary with recovery CTAs
    • slice-detail-header — flex-col mobile stack + dual-mode KIND_CLASS badge colors (WCAG)

    Slices touched

    • contact-form-resend — preview page raw form inputs → shadcn primitives
    • ai-router — preview page raw textarea → shadcn Textarea

    Follow-ups (deferred)

    • /build mobile: collapse nested ThreeColumnLayoutAdvanced to Tabs at <md (needs browser verification)
    • version-pin selector on install command (--ref vX.Y.Z)