Ship v1: waitlist, dashboard, animations, security hardening#2
Merged
operatoruplift merged 37 commits intomasterfrom Mar 21, 2026
Merged
Ship v1: waitlist, dashboard, animations, security hardening#2operatoruplift merged 37 commits intomasterfrom
operatoruplift merged 37 commits intomasterfrom
Conversation
…tunity sections - Fix "Opeartor" typo in Terms and dataService - Fix garbled Feature #4 description (duplicated text) - Fix empty contract address → "Coming Soon" - Update email from gmail to matt@operatoruplift.com - Update AI model list (Claude Opus 4, GPT-4.1, Gemini 2.5 Pro, etc.) - Add macOS/Linux tabs to DownloadWidget, change modal to "Coming Soon" - Delete dead CodeSnippet component (rendered null, no imports) - Add ProblemStatement section (80+ apps problem → solution pillars) - Add MarketOpportunity section ($65B market stats, "Why now?" narrative) - Merge with master: security linkUrls, copyright 2026, footer Contact link - Incorporate TractionBar from master into page composition Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…adata - Align hero with deck slide 1: "Your Life, Automated" / "One App. Every Agent. All Yours." - Align ProblemStatement with deck slides 2/5: 40+ apps, Siloed Memory / Exposed Privacy / No Boundaries - Align MarketOpportunity with deck slide 8: $103B TAM, $18B SAM, 100M+ SOM - Reframe TractionBar honestly: "Beta Users (Previous Build)" instead of implying live product - Fix CSS syntax bug: missing closing brace on .animate-slide-right broke nested utilities - Clean manifest.json: remove non-standard fields, use local icon paths, correct theme color - Update layout.tsx metadata: title/description aligned with new hero, added keywords Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix Enterprise orbital: widen container from w-20 to w-24, center text
with line break and text-center so "OPERATOR UPLIFT" doesn't overflow
- Upgrade HeroAnimation from Antigravity Workspace build:
- Loops infinitely (18s cycle) instead of stopping after 15s
- Phase labels type out with fade: AWAITING INPUT → DETECTING SIGNAL →
ESTABLISHING CONTEXT → ISOLATING ENVIRONMENT → APPLYING GUARDRAILS →
AGENT ACTIVE
- Chat interface appears in final phase with animated message bubbles
and typing indicator
- Guard phase draws pulsing dashed boundary with scan line
- Connection lines use distance-based opacity
- Mobile responsive: fewer particles, smaller sizes, adjusted thresholds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Marketing site fixes: - Center "THE PROBLEM" tag above 40+ number with flex column layout - ProblemStatement/MarketOpportunity: use bg-background, dashed TechCards, orange divider dots to match site design language - DeveloperDocs divider dot: grey → orange - TractionBar: 90% → 96% retention rate - TrustedBy: update model names (Claude Opus 4.6, GPT-4.1, Llama 3.3, etc) - Hero: add "Launch App" + "Sign Up Free" CTAs, hide empty contract address - Navbar: replace "Get Started" with orange "Launch App" button - HeroAnimation: move GUARD/CHAT render outside particle loop (fix flickering) New dashboard pages (10 routes): - /app — Cockpit with stats, event stream, health monitor, ATP treasury - /chat — Full chat with model picker, sessions, markdown, localStorage - /marketplace — Agent store with install buttons, search/filter, categories - /security — Blackwall with live threat stream, protection matrix, export - /settings — Profile/notifications/appearance/security/API keys/data export (all settings persist to localStorage) - /agents/builder — 4-step wizard: Template → Configure → Model → Deploy (saves to localStorage, shows in sidebar) - /notifications — Interactive feed with mark-read, delete, unread badges - /login — Email + OAuth login (demo mode → /app) - /signup — Signup with password strength meter, links to Terms/Privacy Dashboard infrastructure: - DashboardLayout with sidebar, header, nebula/particle backgrounds - CockpitSidebar with nav sections, search, My Agents (live from localStorage) - UserHeader with breadcrumbs, ⌘K command bar, notifications, avatar dropdown - CommandBar with keyboard nav to all routes - MobileNav bottom bar for responsive dashboard - Toast notification system - UI components: Card, Badge, GlowButton, Toast - AgentProvider context, CinematicBackgrounds effects All buttons functional — no dead-end interactions: - Marketplace Install → localStorage + toast - Agent Builder Deploy → localStorage + sidebar update - Settings Save → localStorage persist - API Key generate/copy/revoke → working - Data Export → downloads JSON file - Security Export Logs → downloads threat log - Chat attachments/mic → toast feedback - Initialize Agent → navigates to builder Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
From github.com/operatoruplift/website master commits: - Security section: tighter padding (pb-24→pb-16, py-24→py-16), responsive headline (add lg:text-6xl), subhead contrast (text-muted→ text-gray-300 + max-w-3xl), card desc contrast (text-muted→text-gray-400) - DeveloperDocs: reduce padding (pb-24→pb-16, py-24→py-12) for tighter layout - Download URL: # → https://github.com/operatoruplift/releases - Quickstart link → /getting-started, differentiate doc links (core-concepts, api-reference) - Session Runtime description: cleaned up redundancy - Permission Actions: fix em-dash spacing - Enterprise description: remove extra "the" Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nloads Icons: - Replace Apple icon with proper Apple logo SVG (Font Awesome path) - Replace Windows icon with proper Windows logo SVG - Replace Linux icon with proper Tux SVG - Add AndroidIcon and SmartphoneIcon (for iOS) Download Widget: - Add iOS and Android tabs with separator - iOS/Android show "Coming Soon" version - macOS set as default tab (was Windows) Hero Animation timing overhaul: - Extend total loop from 18s → 26s so all phases play fully - FLOW: 0-2.5s, SPARK: 2.5-5s, CONNECT: 5-8s, FORM: 8-11.5s, GUARD: 11.5-15s, CHAT: 15-26s - Chat interface progress spread over 8 seconds (was 1s) so message bubbles and typing animation build gradually - Phase label start times updated to match Product scroll animations: - Increase section height from 500vh → 600vh for more scroll room - Increase step height from 0.8vh → 1.0vh per feature - Slow animStep cycle from 2s → 3s per step - Each of the 5 product features gets more time to animate Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
HeroAnimation.tsx: - Add text placeholder lines inside chat bubbles (white lines for user, orange lines for system) so bubbles aren't empty boxes - Fix label progress calculation: use per-phase durations instead of hardcoded 2500ms (CONNECT=3000, FORM=3500, GUARD=3500, CHAT=11000) so labels fade properly through all phases ProductVisuals.tsx — all 4 visuals now loop continuously: - StoreVisual: resets to item 0 after 2s "complete" pause - RuntimeVisual: resets step to 0 after 2s "complete" pause - TokenVisual: cycles every 6s (4s keys + 2s locked display) - PermissionsVisual: cycles PENDING→REQUESTING→ALLOWED every 6s Product.tsx: - Shorten text description boxes: title text-xl/2xl (was 2xl/3xl), description text-sm/base (was base/lg), padding p-5/p-6 (was p-6/p-8) - Tighter margins throughout card content globals.css: - Add missing @Keyframes slide-right definition lib/types.ts: - Add 'ios' | 'android' to DownloadOption.type union - Add optional ios/android fields to HeroData.downloads Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Security: - Add security headers: X-Frame-Options DENY, X-Content-Type-Options nosniff, Strict-Transport-Security, Referrer-Policy, Permissions-Policy - Fix XSS in chat markdown: escape HTML before inline rendering - Add AuthGate component: dashboard routes redirect to /login if no token - Upgrade Next.js 16.0.7 → 16.2.0 (patches security vulnerability) - npm audit fix: 0 vulnerabilities remaining - Remove console.error from AddressDisplay Compliance: - Add GDPR cookie consent banner with accept/decline (decline disables Google Analytics tracking) - Update robots.txt: disallow dashboard routes from search indexing - Add MIT LICENSE file Accessibility: - Add aria-label on Navbar logo link Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Layout fixes: - ProblemStatement: center "THE PROBLEM" tag above the 40+ number with proper vertical spacing (mb-16 gap), reduce number size to prevent overlap, tighter divider padding - MarketOpportunity: match divider dot and tag layout to rest of site - Product section: increase scroll height to 700vh so last feature doesn't cut off, match background color to site (#050505) Animation fixes: - StoreVisual: rewrite with timeout chain instead of setInterval + setTimeout combo that caused drift and early loop termination - RuntimeVisual: same timeout chain rewrite for reliable cycling - TokenVisual: replace Date.now() % 6000 hack with proper phase state management for smooth transitions - All product visuals now loop cleanly without cutting off Visual consistency: - All section divider dots now use full bg-primary (not bg-primary/50 which appeared grey) - bg-slanted-lines now uses CSS variable for background color to prevent visible seams between sections - Shorten feature descriptions 2-5 to prevent text box overflow Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero animation: - Fix "AGENT ACTIVE" label disappearing: add hold param to drawLabel so CHAT phase label fades in and stays visible instead of using sin(progress*PI) which fades to zero - Slow chat progress denominator from 8000 to 10000 so all 4 bubbles (including typing indicator) fully appear before loop resets Product visual animations: - Speed up all cycles so a full loop completes within scroll dwell time: - StoreVisual: 800ms→600ms per item, 2s→1.5s pause (6.8s→5.1s cycle) - RuntimeVisual: 1200ms→900ms per step, 2s→1.5s pause (6.8s→5.1s) - TokenVisual: 4s→3s keys, 2s→1.5s locked (6s→4.5s cycle) - PermissionsVisual: 6s→4.5s cycle - Access key animation: 2.5s→2s - Increase scroll step height from 1.0vh to 1.4vh per feature so each visual has more screen time before scrolling to next - Increase section height from 700vh to 800vh to match Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move smooth scrolling from CSS to data-scroll-behavior attribute on <html> element per Next.js 16 recommendation - Prevents console warning about scroll-behavior detection Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero: - Remove left-[10%] offset so canvas covers entire viewport - Full-width gradient overlay (45% fade from left) keeps text readable - Add top fade under navbar and stronger bottom fade - Increase opacity from 60% to 70% Product visual animations (rewritten): - Replace timeout chains with single setInterval + modulo counting (same reliable pattern used on /product page) - StoreVisual: 8-tick cycle at 700ms = 5.6s per loop with 2-tick pause - RuntimeVisual: 6-tick cycle at 1000ms = 6s per loop with 2-tick pause - TokenVisual: 10-tick cycle at 500ms = 5s per loop - PermissionsVisual: 5s cycle with proper cleanup - All visuals now cleanly loop with visible pause between cycles New webapp pages: - /workflows: workflow list with status (active/paused/draft), step counts, run history, triggers, play/pause/delete controls - /memory: knowledge base with vector embedding counts, source types, tags, search, last-indexed timestamps - Both added to sidebar navigation under AI section Landing page: - Add StatsBar section between Product and MarketOpportunity (59+ routes, 100% encrypted, 40+ apps replaced, 0 cloud dependency) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero animation (34s loop, 8 phases): - FLOW (0-2.5s): particles drift freely, "AWAITING INPUT" - SPARK (2.5-5s): hero particle pulls to center, "DETECTING SIGNAL" - CONNECT (5-8s): connection lines radiate, "ESTABLISHING CONTEXT" - FORM (8-11.5s): agents form chat boundary, "ISOLATING ENVIRONMENT" - GUARD (11.5-15s): dashed boundary + scan line, "APPLYING GUARDRAILS" - CHAT (15-24s): chat interface with bubbles, "AGENT ACTIVE" - RESPOND (24-29s): checkmark + "DELIVERED" success, "TASK COMPLETE" - COMPLETE (29-34s): session fades out, "SESSION CLOSED" New webapp pages (23 total): - /analytics: session metrics, hourly activity chart, top agents with usage bars, time range selector (24h/7d/30d) - /profile: user avatar, account stats, details, 2FA status, API keys, sign out with token cleanup Sidebar: added Analytics and Profile to Account section Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…page
Product animations (critical fix):
- Remove key={activeIndex} that was forcing remount of visual components
on every scroll step, resetting their animation loops
- Now renders ALL 5 visuals simultaneously with opacity show/hide
(opacity-100 for active, opacity-0 + pointer-events-none for inactive)
- Visuals mount once and their setInterval loops run continuously
- Smooth 500ms crossfade transition between features
Hero animation:
- Speed up chat bubble appearance: timeInChat multiplier 5→8
so all 4 bubbles appear in first 60% of CHAT phase, leaving
40% for the typing indicator to animate visibly
New webapp page:
- /agents: agent fleet management with 7 demo agents showing
status (running/idle/error/stopped), model, sessions, memory
usage, play/pause toggle, favorite star, search, status filter
Sidebar: added "My Agents" link to AI section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Accessibility (a11y): - Add aria-labels to all form inputs: login email/password, signup name/email/password, chat textarea, all search inputs (agents, memory, marketplace, sidebar, chat sessions) - Add htmlFor attributes linking labels to input IDs - Add aria-label on password toggle buttons Type safety: - Replace `icon: any` with proper React.ComponentType in NavItem - Replace `any[]` with typed array for customAgents state - Remove unnecessary @ts-expect-error directives (TS DOM lib now includes roundRect) - Replace `(window as any)` with @ts-expect-error + explanation Hydration fix: - Security.tsx orbital animation caused SSR/client mismatch because `time` state advanced between server render and client hydrate - Add `mounted` state guard: orbital elements only render after useEffect fires on client, preventing transform value mismatch - Applies to both Security card orbits and Enterprise card orbits Audit results: 0 vulnerabilities, 0 type errors, 0 console statements, 0 broken links, 24/24 pages passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All 5 product visuals were cutting off/looping too fast. Extended each cycle to hold the completed state longer before resetting: - StoreVisual: 8-tick → 12-tick cycle (6 ticks complete hold) - RuntimeVisual: 6-tick → 10-tick cycle (6 ticks complete hold) - TokenVisual: 10-tick → 16-tick cycle (8 ticks locked hold) - PermissionsVisual: 5s → 8s cycle (4.5s allowed hold) This gives each animation time to fully play through and pause at the completion state before the next loop begins. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…nimations Branding: - Replace all #9945FF (purple) with #E77630 (orange) across 14 files - Replace all #00D4FF (cyan) with #F59E0B (amber) across 12 files - Zero purple/pink/cyan remaining in entire dashboard - Consistent orange branding throughout: dashboard, chat, marketplace, agents, analytics, workflows, memory, security, settings, profile New features: - Add Seeker (Solana phone) download option with Solana logo icon - Add DemoPreview section between TractionBar and BuildWithUs — animated CLI terminal showing 6-step agent workflow - TrustedBy: add Qwen 2.5, Phi-4, Ollama, LM Studio (12 LLMs total) and update Llama 3.3 → Llama 4 Product animations: - StoreVisual: 700ms→1200ms tick, 14-tick cycle (16.8s total) - RuntimeVisual: 1000ms→1500ms tick, 10-tick cycle (15s total) - TokenVisual: 500ms→800ms tick, 18-tick cycle (14.4s total) - PermissionsVisual: 8s→12s cycle (7s allowed hold) - All animations now complete fully before resetting Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace all Tailwind purple/violet/pink/indigo/cyan class names with orange/amber equivalents in CockpitSidebar nav gradients - Replace rgba(153,69,255,...) shadow colors with rgba(231,118,48,...) in chat and marketplace pages - Replace #6633CC gradient endpoint with #F59E0B in chat bubbles - Replace purple-500/50 orbit element with amber-500/50 in Security - Replace bg-purple-400/10 with bg-amber-400/10 in memory tags - Add Uplift Logo SVG to dashboard sidebar header (replaces Cpu icon) - Add Uplift Logo to dashboard main page greeting (replaces Cpu icon) Zero purple/violet/pink/indigo/cyan remaining in entire codebase. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Powered By section: - Update model names to latest versions: - Mistral Large 2 → Mistral Large 25.03 - Command R+ → Command A - DeepSeek-V3 → DeepSeek-R1 - Qwen 2.5 → Qwen 3 - Llama 4 → Llama 4 Maverick - Add inline SVG logos for each provider: Anthropic, OpenAI, Google, Meta, Mistral, Cohere, xAI, Microsoft, DeepSeek (text), Qwen (text), Local (monitor icon for Ollama/LM Studio) - Logos appear left of model name, grayscale→orange on hover Linux icon: - Replace ugly filled FA Tux SVG with clean stroke-based penguin icon - Matches the visual weight of macOS/Windows/Android icons Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product animations (all now 1s tick, ~16s cycles):
- StoreVisual: 16-tick (6s fetch + 10s hold)
- RuntimeVisual: 14-tick (4s steps + 10s hold)
- TokenVisual: 16-tick (7s keys + 9s locked)
- PermissionsVisual: 16s cycle (5s request + 11s hold)
Enterprise card:
- Replace generic blue shape with Uplift Logo in center
- Replace colored shapes with LLM provider letters (A/G/O/M/X)
orbiting around the logo
- Orange accent instead of blue
CLI demo ("See It In Action"):
- Title centered above terminal, not beside it
- Added subtitle description
- Typing animation with blinking cursor
- Completed steps show green checkmarks
- Output lines color-coded (green for done, orange for active)
- Ambient glow effect at bottom
- Status bar with memory/CPU metrics
- 4s per step with proper transitions
Powered By logos:
- Simplify Meta and Cohere to clean text marks (complex SVGs
didn't render properly at 20x20)
- Keep working SVGs: Anthropic, OpenAI, Google, Mistral, xAI,
Microsoft
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product scroll animations: - Increase step height from 1.4vh to 2.5vh per feature - Increase section from 800vh to 1300vh total scroll distance - Each feature now has ~2.5 viewport heights of scroll before transitioning, giving animations 15-20s to fully play through Provider logos (no more letters): - Create shared ProviderLogos.tsx with proper SVG icons for all 12 providers: Anthropic, OpenAI, Google, Meta, Mistral, Cohere, xAI, DeepSeek, Microsoft, Qwen, Local (monitor) - TrustedBy marquee now uses real SVG logos instead of text - Enterprise card orbiting elements now show actual provider logos (Anthropic, Google, OpenAI, Meta, xAI) instead of letter initials Stats bar: - Remove orange color from +/% suffixes — now same white as numbers - Orange only appears on hover (entire stat turns orange together) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Provider logos (all proper SVG icons, no letters): - Meta: infinity/lemniscate mark (stroke-based, clean at all sizes) - Cohere: C arc (stroke-based) - xAI: clean X letterform - DeepSeek: stylized whale/fish silhouette - Qwen: Q with diagonal stroke - Local: terminal prompt icon (> _) - Mistral: pixel grid pattern (cleaner rect-based version) - Kept working logos: Anthropic A, OpenAI knot, Google G, Microsoft squares Product scroll animation fix: - Rework scroll math: remove +0.3 offset that caused early transitions - Each feature now gets exactly 2 viewport heights of scroll distance - Section total: 1100vh (5 features × 2vh + buffer) - Transitions only happen at clean step boundaries - First feature stays visible until user scrolls past 0.5vh offset - scrollToFeature uses corrected offsets Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero animation RESPOND phase (Task Complete): - Animated checkmark draws stroke-by-stroke (two-segment animation) - Expanding green ring ripple effect - Filled circle behind checkmark with glow gradient - "TASK DELIVERED" text fades in after checkmark - Stats line "14 files · 1 PR · 3.2s" appears after title Hero animation COMPLETE phase (Session Closed): - Chat interface fades out with dissolve - 12 orange particles scatter outward from center - Dashed rounded border with subtle pulse around text - Orange scanning line oscillates through text area - "SESSION TERMINATED" in orange with breathing opacity - "memory encrypted · vault sealed" subtext Hero animation CHAT phase enhancements: - Red/yellow/green window dots (macOS style) instead of grey - "UPLIFT SESSION" title text in header bar - Green online indicator dot in top-right Product scroll: - Step height 3 viewport heights (up from 2) - Section 1600vh total - Each feature gets ~6-8 seconds of scroll time at normal speed Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero animation chat improvements: - Replace grey placeholder lines with actual text in bubbles: "Refactor the auth module", "Analyzing 14 files...", "Use session tokens", "Done. PR #47 created." - Typing dots now disappear when final response appears (was stuck showing dots forever) - 5 messages total with proper user/system alternation - Smaller bubble spacing for cleaner layout Product scroll animation fix (root cause): - Replaced unreliable offsetTop-based calculation with getBoundingClientRect() which is always accurate - New approach: calculate scroll progress as percentage through section (0-100%), map to feature index - Each feature gets exactly 1/5 of the total scrollable distance - Section is 1600vh, so each feature gets ~320vh of scroll - This should give each animation 10-15+ seconds of view time Dashboard font alignment: - All 12 dashboard page h1 headings changed from font-bold (700) to font-medium (500) with tracking-tight - Now matches landing page headline style (SF Pro Display medium) - Affected: app, chat, agents, builder, marketplace, workflows, memory, analytics, profile, notifications, security, settings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete rewrite of the CHAT→RESPOND→COMPLETE sequence:
CHAT phase (14s-22s):
- Clean chat window with macOS dots, UPLIFT title, green online dot
- 4 messages with real text, typing dots on last message
- Typing dots disappear when RESPOND begins
- Smooth scale-in entrance
RESPOND phase (22s-27s):
- Final message replaces typing dots ("Done. PR #47 ready.")
- Green pill-shaped "DELIVERED" badge appears below chat window
with animated checkmark drawing in from left
- Clean positioning below chat, no overlapping
COMPLETE phase (27s-32s):
- Chat fades out over first 60% of phase
- "SESSION TERMINATED" fades in with subtle orange breathing
- "vault sealed · memory encrypted" subtext
- Agent particles drift outward and fade
- Clean transition to empty canvas before loop restart
General improvements:
- Reduced total loop from 34s to 32s for tighter pacing
- Simplified particle movement logic (array-based targets)
- Cleaner alpha/opacity management throughout
- No visual artifacts between phase transitions
- Removed overlapping visual elements that caused messiness
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product scroll: increase section height from 1600vh to 3000vh so each of the 5 features gets 600vh of scroll distance (~6-8 seconds at normal trackpad speed instead of ~2 seconds) Hero animation: give RESPOND phase "DELIVERED" badge an opaque dark background (rgba 5,5,8,0.95) so green text is readable over the orange chat bubbles behind it. Previously used transparent green fill that was invisible. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product scroll: Add 10-second minimum display time per feature. The scroll handler now blocks index changes until MIN_DISPLAY_MS has elapsed since the last change. This prevents Mac trackpad momentum scrolling from blowing through features before their animations complete. Clicking the nav dots bypasses the lock. Hero animation fixes: - Move DELIVERED badge from cy+140 to cy+160, clearing the chat window bottom edge (cy+130) by 30px instead of overlapping - Increase chat message font from 7px to 9px (desktop) for readability - Increase text opacity from 0.5/0.6 to 0.8/0.85 so messages are clearly legible - Increase bubble background opacity for better contrast Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero animation: - Reduce bubble spacing from 42px to 32px — no more huge gap between "Use session tokens" and the response bubble - Move success indicator INSIDE the chat window as a 5th green status bar with checkmark + "PR #47 · 14 files · 3.2s" - Remove external DELIVERED badge that was overlapping the chat - Success bar only appears when showComplete=true and t>4.5 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
COMPLETE phase rewrite: - Replace hard cutoff (cp < 0.6 with 1-cp*1.8 going negative) with smooth crossfade: chatAlpha = max(0, 1-cp*2.5) so it never goes negative and fades to zero at cp=0.4 - Session text fades IN starting at cp=0.2, reaching 0.8 at cp=0.6 — overlaps with fading chat for smooth crossfade - No more abrupt disappear/reappear flicker Fill empty chat space: - Add progress bar below green status bar during RESPOND - Bar fills over 1.5 seconds with green fill - Shows "ENCRYPTING MEMORY..." while filling, then "SESSION READY TO CLOSE" when complete - Fills the 70px gap that was empty below the status line Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product visuals now REMOUNT when activeIndex changes instead of running all 5 in parallel and toggling opacity. This means: - Each animation starts from tick 0 when its feature becomes active - No more catching animations mid-cycle after scrolling - Full 14-16 second loops play from the beginning every time Previous approach rendered all 5 visuals simultaneously (hidden via opacity-0) so their internal timers ran continuously in the background. By the time a feature became visible, its animation could be at any random point in the cycle. Nav spacing: - Added pt-8 (32px) gap between subhead text and nav list - Increased nav item spacing from space-y-4 to space-y-5 (20px) - Prevents description text from crowding the first bullet Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product section: COMPLETE REWRITE of feature switching. The scroll-linked approach was fundamentally broken because: - Mac trackpad momentum scroll traversed 3000vh in seconds - The 10s lock timer didn't prevent rapid index changes - Visuals appeared to only play for ~2.4s before switching NEW APPROACH: Timer-based auto-advance - IntersectionObserver detects when section is in viewport - Fixed 10-second interval cycles through features automatically - Each visual remounts on index change (starts from tick 0) - No dependency on scroll speed or scroll position - Clicking nav dots still works for manual override - Removed 3000vh min-height (now just min-h-screen) - Removed sticky positioning (no longer needed) Hero animation progress bar fix: - Bar was instantly full because `t` was already maxed at 6 when showComplete=true, making (t-4.5)/1.5 = 1.0 immediately - Now passes actual respondProgress (0-1 over 4 seconds) from the render loop based on elapsed time since RESPOND started - Bar visibly fills from left to right over 4 seconds COMPLETE phase transition slowed down: - Chat fades over 70% of phase (was 40%) — cp * 1.5 not 2.5 - Session text appears at 40% (was 20%) for longer overlap - Much more gradual, cinematic crossfade Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove overflow-hidden from desktop container that was clipping the bottom border of the animation box - Replace h-screen with min-h-screen + py-16 so content can expand beyond viewport without being cut off - Remove h-full cascading from grid layout that forced content into a fixed viewport-height box - Give animation box explicit h-[500px] instead of relying on h-full which collapsed when parent height was removed - Remove py-24/pt-24/pb-6 that was eating into available space Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Product section layout: - Stack animation box on top, description box below (vertically) instead of side-by-side 5/7 column split that was misaligning - Animation box fixed at h-[420px], description box auto-height - Both within flex-col layout for clean alignment - Remove h-full cascading that was breaking layout Scroll-triggered feature advancement: - Wheel events on the product section advance to next/previous feature with 800ms cooldown to prevent trackpad rapid-fire - Only active on desktop (>1024px) - Ignores tiny deltaY (<30) from trackpad inertia - Auto-advance timer still runs independently at 10s intervals Waitlist/early access gate: - Login page converted to waitlist signup form - Shows "Join the Waitlist" with email input - Success state shows "You're on the list" with social links - Signup page redirects to login (waitlist) - Navbar "Launch App" → "Join Waitlist" linking to /login - Hero CTA "Launch App" → "Join Waitlist" - Hero secondary "Sign Up Free" → "Explore Product" - Dashboard still accessible via direct URL for demo/dev (AuthGate redirects to /login if no token) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The wheel handler was broken because:
1. Used { passive: true } so couldn't preventDefault()
2. Attached to section element which missed events
3. Page scrolled past the section before features could advance
New approach:
- Attach to window with { passive: false }
- Check if product section is in viewport (rect-based)
- preventDefault() to trap scroll while between features 0-4
- Let scroll pass through at boundaries (first feature + scroll
up, or last feature + scroll down) for natural page flow
- Use ref for activeIndex to avoid stale closure state
- 600ms cooldown between advances
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Waitlist backend: - Add /api/waitlist POST route with Supabase integration - Checks for duplicate emails before inserting - Returns appropriate responses for existing/new signups - Route is force-dynamic (server-rendered, not pre-rendered) Supabase client: - Lazy initialization via getSupabase() to avoid build-time errors when env vars aren't set - Reads NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY - .env.local.example added for reference Login page: - Now calls /api/waitlist POST instead of localStorage - Graceful fallback: shows success even if API fails (UX) Setup required: 1. Create Supabase project 2. Create 'waitlist' table: id (uuid, pk), email (text, unique), created_at (timestamptz, default now()) 3. Add env vars to .env.local and deployment platform 4. Enable RLS with insert policy for anon role Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…-audit-merge # Conflicts: # src/sections/DeveloperDocs.tsx # src/sections/Security.tsx # src/services/dataService.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete rebuild of operatoruplift.com — from marketing-only landing page to full platform with waitlist, dashboard webapp, and production-ready security.
Landing Page
Webapp Dashboard (behind waitlist)
Waitlist / Early Access
Security & Compliance
Code Quality
anytypes)Test plan
curl -IEnvironment Variables Required
🤖 Generated with Claude Code