diff --git a/modules/rcart/mod.ts b/modules/rcart/mod.ts index 38a3942..02d10bd 100644 --- a/modules/rcart/mod.ts +++ b/modules/rcart/mod.ts @@ -1728,5 +1728,6 @@ export const cartModule: RSpaceModule = { { path: "orders", name: "Orders", icon: "📦", description: "Order history and fulfillment tracking" }, { path: "payments", name: "Payments", icon: "💳", description: "Payment requests and invoices" }, { path: "group-buys", name: "Group Buys", icon: "👥", description: "Volume discount group purchasing campaigns" }, + { path: "subscriptions", name: "Subscriptions", icon: "🔄", description: "Recurring subscription orders" }, ], }; diff --git a/modules/rmeets/mod.ts b/modules/rmeets/mod.ts index c890bb5..5084f91 100644 --- a/modules/rmeets/mod.ts +++ b/modules/rmeets/mod.ts @@ -115,4 +115,8 @@ export const meetsModule: RSpaceModule = { routes, landingPage: renderLanding, externalApp: { url: JITSI_URL, name: "Jitsi Meet" }, + outputPaths: [ + { path: "rooms", name: "Rooms", icon: "🚪", description: "Meeting rooms and video calls" }, + { path: "recordings", name: "Recordings", icon: "🎥", description: "Meeting recordings" }, + ], }; diff --git a/modules/rnetwork/components/folk-crm-view.ts b/modules/rnetwork/components/folk-crm-view.ts index 8082e70..728bc60 100644 --- a/modules/rnetwork/components/folk-crm-view.ts +++ b/modules/rnetwork/components/folk-crm-view.ts @@ -134,11 +134,18 @@ class FolkCrmView extends HTMLElement { connectedCallback() { this.space = this.getAttribute("space") || "demo"; - // Read initial tab from URL - const params = new URLSearchParams(window.location.search); - const urlTab = params.get("tab"); - if (urlTab && ["pipeline", "contacts", "companies", "graph", "delegations"].includes(urlTab)) { - this.activeTab = urlTab as Tab; + // Read initial tab from URL pathname (e.g. /{space}/rnetwork/crm/contacts) + const pathSegments = window.location.pathname.replace(/\/$/, '').split('/'); + const lastSegment = pathSegments[pathSegments.length - 1]; + if (lastSegment && ["pipeline", "contacts", "companies", "graph", "delegations"].includes(lastSegment)) { + this.activeTab = lastSegment as Tab; + } else { + // Fallback: check ?tab= query param for backward compat + const params = new URLSearchParams(window.location.search); + const urlTab = params.get("tab"); + if (urlTab && ["pipeline", "contacts", "companies", "graph", "delegations"].includes(urlTab)) { + this.activeTab = urlTab as Tab; + } } // Listen for server-rendered tab bar changes document.addEventListener("rapp-tab-change", this._onTabChange); diff --git a/modules/rwallet/mod.ts b/modules/rwallet/mod.ts index 3841d35..d44996b 100644 --- a/modules/rwallet/mod.ts +++ b/modules/rwallet/mod.ts @@ -868,4 +868,9 @@ export const walletModule: RSpaceModule = { }, ], acceptsFeeds: ["economic", "governance"], + outputPaths: [ + { path: "wallets", name: "Wallets", icon: "💳", description: "Connected Safe wallets and EOA accounts" }, + { path: "tokens", name: "Tokens", icon: "🪙", description: "Token balances across chains" }, + { path: "transactions", name: "Transactions", icon: "📜", description: "Transaction history and transfers" }, + ], }; diff --git a/shared/components/rstack-app-switcher.ts b/shared/components/rstack-app-switcher.ts index 24d2bb7..db2f2a1 100644 --- a/shared/components/rstack-app-switcher.ts +++ b/shared/components/rstack-app-switcher.ts @@ -88,7 +88,7 @@ const MODULE_CATEGORIES: Record = { rinbox: "Connecting", rnetwork: "Connecting", rdata: "Observing", - rtasks: "Tasks & Productivity", + rtasks: "Work & Productivity", rschedule: "Work & Productivity", rids: "Identity & Infrastructure", rstack: "Identity & Infrastructure",