From 48c7f15de46d2b1af5981d7d5b9165f6fc9d7239 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Mon, 13 Apr 2026 08:49:52 -0400 Subject: [PATCH] feat(app-switcher): add badges for all rApps, sort toggle, and pin favorites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add r badges for rDocs, rDesign, rSheets, rTime, rGov, rAgents, rExchange to both MODULE_BADGES and FAVICON_BADGE_MAP - Add MODULE_CATEGORIES entries for all new modules - Add "Govern" category for rGov - Sort modules alphabetically within each function category - Add sort toggle (By Function / A-Z) at bottom of sidebar, persisted in localStorage - Add star/pin button on each rApp — pinned items appear in a "Pinned" section above "Recent", persisted in localStorage - Fix rAuctions module ID: 'auctions' → 'rauctions' for consistency, with alias in MODULE_ALIASES for backward compat - Change rAuctions emoji from 🏛 to 🎭 Co-Authored-By: Claude Opus 4.6 --- modules/rauctions/mod.ts | 4 +- server/index.ts | 2 +- server/shell.ts | 51 ++--- shared/components/rstack-app-switcher.ts | 227 +++++++++++++++++------ 4 files changed, 203 insertions(+), 81 deletions(-) diff --git a/modules/rauctions/mod.ts b/modules/rauctions/mod.ts index 840a6609..dd43246f 100644 --- a/modules/rauctions/mod.ts +++ b/modules/rauctions/mod.ts @@ -11,9 +11,9 @@ const routes = new Hono(); routes.get('/', (c) => c.text('rAuctions — coming soon')); export const auctionsModule: RSpaceModule = { - id: 'auctions', + id: 'rauctions', name: 'rAuctions', - icon: '🏛', + icon: '🎭', description: 'Community auctions with USDC', routes, scoping: { defaultScope: 'space', userConfigurable: true }, diff --git a/server/index.ts b/server/index.ts index db9d14d5..8956fa58 100644 --- a/server/index.ts +++ b/server/index.ts @@ -3787,7 +3787,7 @@ async function serveStatic(path: string, url?: URL): Promise { } // ── Module ID aliases (plural/misspelling → canonical) ── -const MODULE_ALIASES: Record = { rsheet: "rsheets" }; +const MODULE_ALIASES: Record = { rsheet: "rsheets", auctions: "rauctions" }; function resolveModuleAlias(id: string): string { return MODULE_ALIASES[id] ?? id; } // ── Standalone domain → module lookup ── diff --git a/server/shell.ts b/server/shell.ts index 0e13b00a..b84310d0 100644 --- a/server/shell.ts +++ b/server/shell.ts @@ -16,40 +16,45 @@ const COMPAT_POLYFILLS = `