diff --git a/modules/crowdsurf/landing.ts b/modules/crowdsurf/landing.ts
index a098ad66..df5f9ba3 100644
--- a/modules/crowdsurf/landing.ts
+++ b/modules/crowdsurf/landing.ts
@@ -15,11 +15,6 @@ export function renderLanding(): string {
Start Swiping
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rbnb/landing.ts b/modules/rbnb/landing.ts
index 7904e1d9..b470348e 100644
--- a/modules/rbnb/landing.ts
+++ b/modules/rbnb/landing.ts
@@ -27,11 +27,6 @@ export function renderLanding(): string {
Learn More
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rbooks/landing.ts b/modules/rbooks/landing.ts
index 910cac4a..bf0436c4 100644
--- a/modules/rbooks/landing.ts
+++ b/modules/rbooks/landing.ts
@@ -18,11 +18,6 @@ export function renderLanding(): string {
Browse Library
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rcal/landing.ts b/modules/rcal/landing.ts
index 1d789653..a929b230 100644
--- a/modules/rcal/landing.ts
+++ b/modules/rcal/landing.ts
@@ -19,11 +19,6 @@ export function renderLanding(): string {
Try the Demo
Learn More
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rcart/landing.ts b/modules/rcart/landing.ts
index 2f44c5b3..1da28c83 100644
--- a/modules/rcart/landing.ts
+++ b/modules/rcart/landing.ts
@@ -16,11 +16,6 @@ export function renderLanding(): string {
Start Shopping
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rchoices/landing.ts b/modules/rchoices/landing.ts
index c6e1313e..fde8f8a1 100644
--- a/modules/rchoices/landing.ts
+++ b/modules/rchoices/landing.ts
@@ -17,11 +17,6 @@ export function renderLanding(): string {
Create a Choice Room
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rdata/landing.ts b/modules/rdata/landing.ts
index 4af8736b..c5a0755f 100644
--- a/modules/rdata/landing.ts
+++ b/modules/rdata/landing.ts
@@ -19,11 +19,6 @@ export function renderLanding(): string {
View Dashboard
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rfiles/landing.ts b/modules/rfiles/landing.ts
index e1e3bb88..570fa5a2 100644
--- a/modules/rfiles/landing.ts
+++ b/modules/rfiles/landing.ts
@@ -18,11 +18,6 @@ export function renderLanding(): string {
Start Sharing
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rflows/landing.ts b/modules/rflows/landing.ts
index 96563c1f..d5257b5f 100644
--- a/modules/rflows/landing.ts
+++ b/modules/rflows/landing.ts
@@ -176,11 +176,6 @@ export function renderLanding(): string {
Build your flow in the demo, then sign in to save it to your own space.
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rforum/landing.ts b/modules/rforum/landing.ts
index 4392eba3..9f40dc92 100644
--- a/modules/rforum/landing.ts
+++ b/modules/rforum/landing.ts
@@ -17,11 +17,6 @@ export function renderLanding(): string {
Get Started
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rinbox/landing.ts b/modules/rinbox/landing.ts
index ca9d7809..e4c86c1e 100644
--- a/modules/rinbox/landing.ts
+++ b/modules/rinbox/landing.ts
@@ -20,11 +20,6 @@ export function renderLanding(): string {
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rmaps/landing.ts b/modules/rmaps/landing.ts
index 5ff311de..847ec58a 100644
--- a/modules/rmaps/landing.ts
+++ b/modules/rmaps/landing.ts
@@ -16,11 +16,6 @@ export function renderLanding(): string {
Open Maps
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rmeets/landing.ts b/modules/rmeets/landing.ts
index 3e6cb200..4a15718d 100644
--- a/modules/rmeets/landing.ts
+++ b/modules/rmeets/landing.ts
@@ -18,11 +18,6 @@ export function renderLanding(): string {
Start a Meeting
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rnetwork/landing.ts b/modules/rnetwork/landing.ts
index 09a548e4..d47c026a 100644
--- a/modules/rnetwork/landing.ts
+++ b/modules/rnetwork/landing.ts
@@ -19,11 +19,6 @@ export function renderLanding(): string {
Explore Network
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rphotos/landing.ts b/modules/rphotos/landing.ts
index 36fd1ad6..b1de3e04 100644
--- a/modules/rphotos/landing.ts
+++ b/modules/rphotos/landing.ts
@@ -17,11 +17,6 @@ export function renderLanding(): string {
Browse Photos
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rpubs/landing.ts b/modules/rpubs/landing.ts
index 1bf8993e..884a301b 100644
--- a/modules/rpubs/landing.ts
+++ b/modules/rpubs/landing.ts
@@ -22,11 +22,6 @@ export function renderLanding(): string {
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rschedule/landing.ts b/modules/rschedule/landing.ts
index e64d1760..0a668e90 100644
--- a/modules/rschedule/landing.ts
+++ b/modules/rschedule/landing.ts
@@ -31,11 +31,6 @@ export function renderLanding(): string {
Learn More
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rsocials/landing.ts b/modules/rsocials/landing.ts
index 292cc830..37e70f0e 100644
--- a/modules/rsocials/landing.ts
+++ b/modules/rsocials/landing.ts
@@ -19,11 +19,6 @@ export function renderLanding(): string {
Try Demo
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rsplat/landing.ts b/modules/rsplat/landing.ts
index 325560eb..af578599 100644
--- a/modules/rsplat/landing.ts
+++ b/modules/rsplat/landing.ts
@@ -17,11 +17,6 @@ export function renderLanding(): string {
Open Canvas
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rswag/landing.ts b/modules/rswag/landing.ts
index 4182581c..960ed0d5 100644
--- a/modules/rswag/landing.ts
+++ b/modules/rswag/landing.ts
@@ -17,11 +17,6 @@ export function renderLanding(): string {
Start Designing
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rtasks/landing.ts b/modules/rtasks/landing.ts
index 55106c16..ee1f1176 100644
--- a/modules/rtasks/landing.ts
+++ b/modules/rtasks/landing.ts
@@ -21,11 +21,6 @@ export function renderLanding(): string {
View Dashboard
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rtime/landing.ts b/modules/rtime/landing.ts
index 4f383bde..3af1a80a 100644
--- a/modules/rtime/landing.ts
+++ b/modules/rtime/landing.ts
@@ -27,11 +27,6 @@ export function renderLanding(): string {
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rtrips/landing.ts b/modules/rtrips/landing.ts
index 6d6b522e..437e73d2 100644
--- a/modules/rtrips/landing.ts
+++ b/modules/rtrips/landing.ts
@@ -18,11 +18,6 @@ export function renderLanding(): string {
Start Planning
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rtube/landing.ts b/modules/rtube/landing.ts
index c5f02213..cf1f8870 100644
--- a/modules/rtube/landing.ts
+++ b/modules/rtube/landing.ts
@@ -21,11 +21,6 @@ export function renderLanding(): string {
Browse Videos
Start Streaming
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rvnb/landing.ts b/modules/rvnb/landing.ts
index f2206f28..d781cd00 100644
--- a/modules/rvnb/landing.ts
+++ b/modules/rvnb/landing.ts
@@ -28,11 +28,6 @@ export function renderLanding(): string {
Learn More
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rvote/landing.ts b/modules/rvote/landing.ts
index 58756458..dd82ae45 100644
--- a/modules/rvote/landing.ts
+++ b/modules/rvote/landing.ts
@@ -27,11 +27,6 @@ export function renderLanding(): string {
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/modules/rwallet/landing.ts b/modules/rwallet/landing.ts
index ad9b50e4..142c8be2 100644
--- a/modules/rwallet/landing.ts
+++ b/modules/rwallet/landing.ts
@@ -19,11 +19,6 @@ export function renderLanding(): string {
View Treasury
Create a Space
-
-
- Start Guided Tour →
-
-
diff --git a/server/shell.ts b/server/shell.ts
index f8e9e77c..8511adf7 100644
--- a/server/shell.ts
+++ b/server/shell.ts
@@ -327,6 +327,7 @@ export function renderShell(opts: ShellOptions): string {
+
@@ -649,134 +650,7 @@ export function renderShell(opts: ShellOptions): string {
});
});
- // ── Welcome tour (guided feature walkthrough for first-time visitors) ──
- (function() {
- var currentSpace = '${escapeAttr(spaceSlug)}';
- if (currentSpace !== 'demo') return;
- if (localStorage.getItem('rspace_tour_done')) return;
-
- var TOUR_STEPS = [
- {
- target: 'rstack-app-switcher',
- title: 'Welcome to rSpace',
- msg: 'This is your collaborative workspace with 25+ interoperable tools called rApps. Use this switcher to jump between modules like Notes, Maps, Voting, Wallet, and more.'
- },
- {
- target: 'rstack-mi',
- title: 'Meet mi \u2014 Your AI Guide',
- msg: 'Press Cmd+K (or Ctrl+K) to open mi, your mycelial intelligence assistant. mi can create content, set up spaces, and help you build across all rApps.'
- },
- {
- target: 'rstack-space-switcher',
- title: 'Spaces',
- msg: 'Each space is a self-contained community with its own data, members, and encryption. Switch between spaces or create a new one here.'
- },
- {
- target: 'rstack-identity',
- title: 'Passwordless Identity',
- msg: 'Sign in with passkeys \u2014 no passwords or seed phrases. Your identity is cryptographic and portable across all spaces.'
- },
- {
- target: '#app',
- title: 'The Canvas',
- msg: 'This is your infinite canvas. Drag to pan, scroll to zoom, and use the toolbar to add shapes. Everything syncs in real-time using local-first CRDTs.'
- },
- {
- target: '.rstack-tab-row',
- title: 'rApp Tabs',
- msg: 'Each module has its own views accessible via tabs. Switch between canvas, list, and detail views depending on the active rApp.'
- },
- ];
-
- var step = 0;
- var tourEl = document.getElementById('rspace-tour');
- var backdrop = document.getElementById('rspace-tour-backdrop');
- var spotlight = document.getElementById('rspace-tour-spotlight');
- var tooltip = document.getElementById('rspace-tour-tooltip');
- var titleEl = document.getElementById('rspace-tour-title');
- var msgEl = document.getElementById('rspace-tour-msg');
- var stepEl = document.getElementById('rspace-tour-step');
- var prevBtn = document.getElementById('rspace-tour-prev');
- var nextBtn = document.getElementById('rspace-tour-next');
- var skipBtn = document.getElementById('rspace-tour-skip');
-
- function endTour() {
- localStorage.setItem('rspace_tour_done', '1');
- if (tourEl) tourEl.style.display = 'none';
- }
-
- function showStep() {
- if (!tourEl || !backdrop || !spotlight || !tooltip) return;
- var s = TOUR_STEPS[step];
- var target = document.querySelector(s.target);
- var rect = target ? target.getBoundingClientRect() : { left: window.innerWidth / 2 - 60, top: 8, width: 120, height: 40 };
-
- // Spotlight
- var pad = 6;
- var sx = rect.left - pad, sy = rect.top - pad;
- var sw = rect.width + pad * 2, sh = rect.height + pad * 2;
- spotlight.style.left = sx + 'px';
- spotlight.style.top = sy + 'px';
- spotlight.style.width = sw + 'px';
- spotlight.style.height = sh + 'px';
-
- // Backdrop clip-path (cut hole for spotlight)
- backdrop.style.clipPath = 'polygon(0% 0%, 0% 100%, ' +
- sx + 'px 100%, ' + sx + 'px ' + sy + 'px, ' +
- (sx + sw) + 'px ' + sy + 'px, ' +
- (sx + sw) + 'px ' + (sy + sh) + 'px, ' +
- sx + 'px ' + (sy + sh) + 'px, ' +
- sx + 'px 100%, 100% 100%, 100% 0%)';
-
- // Tooltip position: below target, clamped to viewport
- var ttTop = rect.top + rect.height + 16;
- var ttLeft = Math.max(16, Math.min(rect.left, window.innerWidth - 380));
- // If tooltip would go off bottom, put it above
- if (ttTop + 200 > window.innerHeight) {
- ttTop = Math.max(16, rect.top - 220);
- }
- tooltip.style.top = ttTop + 'px';
- tooltip.style.left = ttLeft + 'px';
-
- // Content
- stepEl.textContent = (step + 1) + ' / ' + TOUR_STEPS.length;
- titleEl.textContent = s.title;
- msgEl.innerHTML = s.msg;
-
- // Buttons
- prevBtn.style.display = step > 0 ? '' : 'none';
- nextBtn.textContent = step === TOUR_STEPS.length - 1 ? 'Get Started' : 'Next';
- }
-
- // Wire buttons
- if (nextBtn) nextBtn.addEventListener('click', function() {
- step++;
- if (step >= TOUR_STEPS.length) { endTour(); return; }
- showStep();
- });
- if (prevBtn) prevBtn.addEventListener('click', function() {
- if (step > 0) { step--; showStep(); }
- });
- if (skipBtn) skipBtn.addEventListener('click', endTour);
- if (backdrop) backdrop.addEventListener('click', endTour);
-
- // Keyboard: Escape to skip, arrows to navigate
- document.addEventListener('keydown', function(e) {
- if (!tourEl || tourEl.style.display === 'none') return;
- if (e.key === 'Escape') { endTour(); e.preventDefault(); }
- if (e.key === 'ArrowRight' || e.key === 'Enter') {
- step++;
- if (step >= TOUR_STEPS.length) { endTour(); return; }
- showStep(); e.preventDefault();
- }
- if (e.key === 'ArrowLeft' && step > 0) { step--; showStep(); e.preventDefault(); }
- });
-
- // Start tour after a brief delay
- setTimeout(function() {
- if (tourEl) { tourEl.style.display = ''; showStep(); }
- }, 800);
- })();
+ // ── Welcome tour — disabled (tours turned off) ──
// Legacy compat
window.__rspaceDismissWelcome = function() {
localStorage.setItem('rspace_tour_done', '1');
@@ -1910,21 +1784,7 @@ export function renderExternalAppShell(opts: ExternalAppShellOptions): string {
// ── Welcome tour (guided feature walkthrough for first-time visitors) ──
function renderWelcomeOverlay(): string {
- return `
- `;
+ return ''; // Tours disabled
}
const ACCESS_GATE_CSS = `
@@ -1960,88 +1820,7 @@ const ACCESS_GATE_CSS = `
.access-gate__actions { display: flex; flex-direction: column; gap: 0.75rem; align-items: center; }
`;
-const WELCOME_CSS = `
-#rspace-tour { position: fixed; inset: 0; z-index: 10000; pointer-events: none; }
-.rspace-tour__backdrop {
- position: fixed; inset: 0;
- background: rgba(0,0,0,0.55);
- pointer-events: auto;
- transition: clip-path 0.3s ease;
-}
-.rspace-tour__spotlight {
- position: fixed;
- border: 2px solid var(--rs-primary, #06b6d4);
- border-radius: 8px;
- box-shadow: 0 0 0 4px rgba(6,182,212,0.25), 0 0 20px rgba(6,182,212,0.15);
- pointer-events: none;
- transition: all 0.35s ease;
-}
-.rspace-tour__tooltip {
- position: fixed;
- width: min(360px, calc(100vw - 32px));
- background: var(--rs-bg-surface, #1e293b);
- border: 1px solid var(--rs-border, #334155);
- border-radius: 14px;
- padding: 20px;
- box-shadow: 0 16px 48px rgba(0,0,0,0.5);
- color: var(--rs-text-primary, #f1f5f9);
- pointer-events: auto;
- animation: rspace-tour-pop 0.25s ease-out;
- transition: top 0.35s ease, left 0.35s ease;
-}
-@keyframes rspace-tour-pop {
- from { opacity: 0; transform: translateY(8px); }
- to { opacity: 1; transform: translateY(0); }
-}
-.rspace-tour__step {
- font-size: 0.7rem;
- color: var(--rs-text-muted, #64748b);
- margin-bottom: 6px;
- text-transform: uppercase;
- letter-spacing: 0.05em;
-}
-.rspace-tour__title {
- font-size: 1.1rem;
- font-weight: 700;
- margin-bottom: 8px;
- background: linear-gradient(135deg, #06b6d4, #7c3aed);
- -webkit-background-clip: text; -webkit-text-fill-color: transparent;
- background-clip: text;
-}
-.rspace-tour__msg {
- font-size: 0.85rem;
- color: var(--rs-text-secondary, #94a3b8);
- line-height: 1.6;
- margin-bottom: 14px;
-}
-.rspace-tour__nav {
- display: flex; align-items: center; gap: 8px;
-}
-.rspace-tour__btn {
- padding: 7px 16px; border-radius: 8px;
- font-size: 0.8rem; font-weight: 600;
- cursor: pointer; border: none;
- transition: background 0.15s, transform 0.1s;
- font-family: inherit;
-}
-.rspace-tour__btn:hover { transform: translateY(-1px); }
-.rspace-tour__btn--next {
- background: linear-gradient(135deg, #06b6d4, #7c3aed); color: white;
-}
-.rspace-tour__btn--prev {
- background: var(--rs-btn-secondary-bg, #334155);
- color: var(--rs-text-secondary, #94a3b8);
-}
-.rspace-tour__btn--skip {
- background: none;
- color: var(--rs-text-muted, #64748b);
- margin-left: auto;
-}
-.rspace-tour__btn--skip:hover { color: var(--rs-text-primary, #f1f5f9); }
-@media (max-width: 600px) {
- .rspace-tour__tooltip { width: calc(100vw - 24px); left: 12px !important; }
-}
-`;
+const WELCOME_CSS = ''; // Tours disabled
const INFO_PANEL_CSS = `
/* ── Info button in tab bar ── */
@@ -2188,20 +1967,6 @@ const INFO_PANEL_CSS = `
}
.rapp-info-panel__body .rl-cta-secondary:hover { transform: translateY(-1px); border-color: rgba(20,184,166,0.4); color: var(--rs-text-primary); background: rgba(20,184,166,0.08); }
-/* Tour / guide links — promote to prominent buttons */
-.rapp-info-panel__body a[onclick*="startTour"],
-.rapp-info-panel__body a[href*="tour"] {
- display: inline-flex; align-items: center; gap: 6px;
- padding: 0.65rem 1.35rem; margin-top: 0.75rem;
- font-size: 0.92rem; font-weight: 600; text-decoration: none;
- background: linear-gradient(135deg, rgba(79,70,229,0.15), rgba(20,184,166,0.1));
- border: 1px solid rgba(79,70,229,0.25); border-radius: 10px; color: #a78bfa;
- transition: background 0.15s, border-color 0.15s, color 0.15s, transform 0.15s;
-}
-.rapp-info-panel__body a[onclick*="startTour"]:hover,
-.rapp-info-panel__body a[href*="tour"]:hover {
- background: linear-gradient(135deg, rgba(79,70,229,0.25), rgba(20,184,166,0.15));
- border-color: rgba(79,70,229,0.4); color: #c4b5fd; transform: translateY(-1px);
}
/* Badges */
diff --git a/shared/tour-engine.ts b/shared/tour-engine.ts
index 305383aa..25de4303 100644
--- a/shared/tour-engine.ts
+++ b/shared/tour-engine.ts
@@ -37,11 +37,9 @@ export class TourEngine {
this.getContainer = getContainer;
}
- /** Start (or restart) the tour from step 0. */
+ /** Start (or restart) the tour from step 0. Disabled — tours are turned off. */
start() {
- this._active = true;
- this._step = 0;
- this.renderOverlay();
+ return;
}
/** Advance to next step or finish if at the end. */
@@ -205,10 +203,9 @@ export class LightTourEngine {
this.storageKey = storageKey;
}
+ /** Disabled — tours are turned off. */
start() {
- this._active = true;
- this._step = 0;
- this.renderOverlay();
+ return;
}
advance() {