Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
나는 스스로 동작하는 시스템을 만든다·자율 에이전트 인프라·실제 금액이 흐르는 실시간 분석 제품·2500만 조회수의 감독 영화 포함
I build systems that run without me. Autonomous agent infrastructure, a live analytics product with real money on it, and 25M views of directed film.
기타JavaScript · CSSGitHub @DareDev256온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A desktop operating system in a browser tab: draggable windows, GPU glass, a Three.js lock screen, a command palette and client-side routing. Vanilla JS, Vite as the only build step. Live demo.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Desktop Operating System in the Browser — Zero Frameworks, Pure Web Standards
A fully interactive desktop environment — draggable windows, GPU-composited glass UI, Three.js cyberspace, Spotlight-style command palette — running entirely in the browser. No UI framework: the DOM is built by hand. The browser bundle carries one dependency, @vercel/analytics; the two serverless routes under api/ use @anthropic-ai/sdk.
Built by James Olusoga — AI Solutions Engineer & Creative Technologist, Toronto.
Every number below is reproducible from a clean clone. No figure in this README is typed by hand.README 전문 보기 ↗A fully interactive desktop environment — draggable windows, GPU-composited glass UI, Three.js cyberspace, Spotlight-style command palette — running entirely in the browser. No UI framework: the DOM is built by hand. The browser bundle carries one dependency, @vercel/analytics; the two serverless routes under api/ use @anthropic-ai/sdk.
Built by James Olusoga — AI Solutions Engineer & Creative Technologist, Toronto.
Every number below is reproducible from a clean clone. No figure in this README is typed by hand.
| Figure | Reproduce it |
|---|---|
| 665 tests across 42 files | npm test |
| 89 JavaScript modules | git ls-files 'js/*.js' | wc -l |
| 50 stylesheets | git ls-files '*.css' | wc -l |
| 2 runtime dependencies | node -p "Object.keys(require('./package.json').dependencies).length" |
| Figure | Reproduce it |
|---|---|
| 658 tests across 41 files | npm test |
| 86 JavaScript modules | git ls-files 'js/*.js' | wc -l |
| 50 stylesheets | git ls-files '*.css' | wc -l |
| 2 runtime dependencies | node -p "Object.keys(require('./package.json').dependencies).length" |
This repository builds three independent pages from one Vite config. Count them
yourself with grep -c "resolve(import.meta.dirname" vite.config.js, or read
build.rollupOptions.input in that file:
| Route | Entry | What it is |
|---|---|---|
/ | index.html + css/system.css | THE SYSTEM — the hiring surface. A static scrolling page: status panel, Passion Agent snapshot, cleared gates, contact. No framework, no OS code. |
/os | os/index.html + js/main.js | Passion OS — the desktop environment this README documents. Everything below describes this surface. |
/coldopen | coldopen/index.html | COLD OPEN — the writeup of the artist-site engine at github.com/DareDev256/coldopen. Added in 4.21.0. |
The three are deliberately kept apart in type, palette, layout skeleton and motion
signature; css/system.css carries the divergence record at the top of the file.
Client services and the client roster live on
tdotssolutionsz.com, not here.
Every public number on / comes from public/data/figures.json, written by
npm run figures (tools/build-figures.mjs) and committed. Sources: GitHub, PyPI,
the MediaWiki API, the system snapshot, and, since 4.60.0, the Bodies In Boxes game
counters (read from ~/.local/state/passion-cron/panels/bib.json, which
passion-cron/bib-panel.py writes from the game's database). The generator refuses a
missing, failed or day-old bib panel. The page prints an "as of" stamp beside those counts
and adds the age once they are 3 days old. Re-run bib-panel.py, then npm run figures,
then commit the data files and deploy.
A gate can be deep linked by its template name, for example /#bodies-in-boxes.
Prerequisites: Node.js 18+ and npm 9+.
git clone https://github.com/DareDev256/portfolio-os.git
cd portfolio-os
npm install
npm run dev
Open http://localhost:5173 for the hiring surface, or http://localhost:5173/os/ for the desktop. Click the lock screen to enter the OS.
clip-path: circle()) that opens from center to reveal the creative director's identity. James Olusoga's name appears in muted gold Playfair Display serif with staggered letter-spacing animation, a gold divider line draws itself, and the role tagline fades in amethyst. Below, the "Ascending Core" — a rotating CSS 3D obsidian crystal with internal amethyst glow — fractures apart on scroll. The "Amethyst Code" glitch effect resolves to unveil the section title. An "Obsidian Veil" monolith overlay fractures into six polygon shards with amethyst edge-glow before scattering apart. Featured projects display as cinematic scroll-snap chapters with forcefield reveal, gilded gold shimmer on titles, staggered animations, dot navigation, and syntax-highlighted code snippets with copy-to-clipboard. CTA buttons feature "Opulent Interface" micro-interactions: embossed depth, animated gold border trace, and letter-spacing breathe on hover. Each chapter has a "Catalyst Aura" — a mouse-reactive amethyst-gold glow with hexagonal crystal lens that follows the cursor.Cmd+K / Ctrl+K opens a Spotlight-style fuzzy-search launcher across all apps and system toggles./about, /work, /resume, /terminal) via History API.backdrop-filter frosted panels on windows, top bar, dock, and desktop icons — GPU-optimized with reduced blur radii.prefers-reduced-motion.--transition-fast/medium/slow, --ease-decel/accel/spring) instead of hardcoded values. Entry animations decelerate, exits accelerate, emphasis bounces — no generic ease defaults.will-change, JS mouse tracking for intensity. Respects prefers-reduced-motion.will-change GPU compositing. Scroll the hero to pull layers apart at different rates. Respects prefers-reduced-motion.prefers-reduced-motion.| Icon | Type | What It Does |
|---|---|---|
| ABOUT_ME.exe | Window | Bio, role, location, color-coded skills grid |
| RESUME | Window | PDF viewer |
| CONNECT | Window | Contact form with validation |
| External | Opens LinkedIn profile | |
| SKILLS_MATRIX | Window | Interactive skills visualization |
| GITHUB_OPS | Window | Live GitHub API integration |
| PORTFOLIO | Window | Curated 5-project featured showcase with tech badges, live demo links, and rich cards |
| APPLICATIONS | Window | 33 real projects across 7 categories with DEPLOYED/SOURCE badges, Lab Notes click-to-reveal diagnostics, and classified dossier declassification reveals (scan-line sweep + ACCESS GRANTED stamp). Top category surfaces hackathon submissions and other selected credentials. |
| DEV_TERMINAL | Window | Fake terminal with 18 sass commands (neofetch, cowsay, matrix...) |
| Vibe_Coder.exe | External | Browser-based game — deployed project link |
| IMG_GEN.ai | External | AI image generation tool — deployed project link |
| TYPEMASTER | External | Typing speed game — deployed project link |
| SHOWCASE.mp4 | Lightbox | Featured video showcase |
| MUSIC_VIDEOS | External | Music video portfolio |
| SETTINGS | Window | Theme, wallpaper, sound, cursor trail toggles |
| NOTES | Window | Sticky notes with 5 color themes, localStorage persistence, auto-save |
| FOCUS_TIMER | Window | Pomodoro timer with canvas ring, 3 presets (25/50/90 min), session stats |
innerHTML routed through DOMPurify (SRI hash on CDN) — including window content, titlebar icons, taskbar icons, and start menu itemsState.setWallpaper() validates URLs through Sanitize.url() before localStorage persistence — prevents stored CSS injection via localStorage poisoning; gradient tokens validated against an explicit allowlist; data:image/ URIs restricted to safe MIME types (png, jpeg, gif, webp)Sanitize.attr() allowlists only safe raster data:image/ MIMEs (png, jpeg, gif, webp) — blocks svg+xml, Flash, and all non-image data: URIs; returns control-char-stripped output to prevent validation/output mismatch (CWE-116)Sanitize.url() enforced on all href/src attributes sourced from external data (project links, media posters, GitHub avatars, lightbox images) — blocks blob:, ftp:, and other dangerous URI schemesSanitize.cssUrl() strips CSS-breaking characters (', ", (, ), ;, \) from URLs embedded in CSS url('...') contexts — prevents stored CSS injection via crafted backup importslocalStorage reads — loadJSON() strips __proto__/constructor/prototype + legacy mutation methods (__defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__) from every parsed value; depth-limited to 20 levels to prevent stack overflow DoS (CWE-674)Sanitize.setHTML() (defense-in-depth against future template injection)connect-src allowlists only known API origins (GitHub, Open-Meteo, Passion API) — stale wildcards removedAbortController timeout (8s) via shared fetchWithTimeout — prevents frozen interfaces on slow/unreachable APIsJSON.parse wrapped in try/catch with fallbacksimg-src locked to explicit GitHub asset domainsaria-live regions for screen reader announcementsprefers-reduced-motion respected globallyvisibilitychange API)CustomEvent observer patternbackdrop-filter on desktop icons (pure GPU cost, zero visual payoff on dark backgrounds)| Shortcut | Action |
|---|---|
? | Show keyboard shortcuts overlay |
Cmd+K / Ctrl+K | Open command palette |
ESC | Close active overlay (priority: modal > lightbox > tour > window) |
← → | Navigate lightbox images |
Tab / Shift+Tab | Cycle focus within trapped overlays |
↑↓ Enter | Navigate and select in command palette |
Ctrl+Shift+V | System info easter egg |
↑↑↓↓←→←→BA | Konami code easter egg |
| Triple-click desktop | Glitch pulse effect |
Type 418 | I'm a teapot |
| Metric | Value |
|---|---|
| Test Coverage | 607 tests across 33 files (vitest + jsdom) |
| Security | DOMPurify on all innerHTML, 10 HTTP headers, CSP, SRI |
| Accessibility | WCAG focus trapping, aria-live, skip-link, reduced-motion |
| Performance | Lazy-loaded modules, RAF pausing, 30fps-throttled FX |
| Lint | 0 ESLint warnings, Prettier-formatted |
| Bundle | 132 kB main chunk, code-split lazy modules |
icon-tilt.js)The desktop icons respond to cursor proximity with a gyroscopic 3D perspective tilt — a small module (83 LOC) that punches well above its weight in perceived polish. Here's how it works under the hood.
Every icon tracks its center relative to the viewport. On mousemove, the cursor position is normalized to a −1…1 coordinate space:
−1
│
−1 ──────┼────── +1 nx = (clientX − centerX) / halfWidth
│ ny = (clientY − centerY) / halfHeight
+1
These normalized values drive two things:
rotateY(nx × 18°) and rotateX(−ny × 18°). The Y-axis tracks horizontal movement, X-axis tracks vertical (inverted so the icon tilts toward the cursor, not away).::before pseudo-element renders a radial-gradient spotlight. Its center shifts opposite to the tilt (50% + n × 30%), simulating overhead lighting — when the icon tilts left, the light appears to come from the right. This sells the 3D illusion.The JS never touches transform directly. Instead it writes four CSS custom properties:
| Property | Default | Range | Purpose |
|---|---|---|---|
--tilt-x | 0deg | ±18° | X-axis rotation |
--tilt-y | 0deg | ±18° | Y-axis rotation |
--bloom-x | 50% | 20–80% | Light bloom horizontal |
--bloom-y | 50% | 20–80% | Light bloom vertical |
CSS consumes them via transform: perspective(600px) rotateX(var(--tilt-x)) rotateY(var(--tilt-y)) on .desktop-icon-box, and radial-gradient(circle at var(--bloom-x) var(--bloom-y), ...) on the ::before pseudo-element. This separation means the effect is entirely CSS-removable — delete the custom properties and the icons fall back to flat, zero-breakage.
perspective(600px) — Close enough to create visible depth without fisheye distortion. Values below 400px warp aggressively; above 800px the tilt becomes imperceptible.will-change: transform — Promotes the element to its own compositor layer. The GPU handles the 3D transform instead of triggering layout/paint cycles.ease-out transition on transform — The icon follows the cursor with slight inertia on the way in, then springs back smoothly on mouseleave when all properties reset to defaults.MutationObserver — Auto-wires icons added dynamically to the DOM, so no manual re-init is needed when the desktop grid changes.The module checks prefers-reduced-motion: reduce at init and listens for live changes via matchMedia.addEventListener('change'). When reduced motion is active, handleMove early-returns — icons remain static. The bloom and tilt custom properties stay at their defaults, so the frosted glass appearance is preserved without any motion.
| File | Role |
|---|---|
js/icon-tilt.js | Mouse tracking, coordinate math, custom property writes |
css/styles.css:1068–1111 | .desktop-icon-box transform + ::before bloom gradient |
css/glass.css:464–465 | Glass system integration (tilt vars in glass transforms) |
Not ideology. Proof of depth.
Routing, state management, component lifecycle, lazy loading, accessibility — everything you'd expect from a React/Next.js build — implemented against the raw DOM API. 76 hand-written modules that prove understanding of what frameworks abstract away.
The constraint is the point. Anyone can npx create-next-app. Building a desktop OS with draggable windows, GPU-composited glass, and WebGL backgrounds from scratch is a different conversation.
js/ # 76 ES modules, zero framework imports
├── main.js # Entry — orchestrates boot, lazy-loads FX
├── boot.js # Cinematic boot sequence
├── login.js # Lock screen + 3D wheel init
├── desktop.js # Icon grid, context menus, app launchers
├── windows.js # Window manager (drag, resize, z-index)
├── state.js # localStorage persistence + CustomEvent bus
├── router.js # History API deep-linkable routing
├── command-palette.js # Cmd+K fuzzy-search launcher
├── data-loader.js # Centralized JSON fetcher with caching
├── dom-helpers.js # Shared utilities (PALETTE, initDesktopCanvas, createPointerTracker, isPageHidden, prefersReducedMotion, shouldSkipDesktopEffects, createDecorativeEl, getElementCenter, isElementVisible, isInViewport, openExternal, animateCounter, loadJSON, saveJSON, downloadJSON, loadBool, saveBool, createRevealSystem, createThrottledLoop, resizeCanvasDPR, bootstrapCanvasEffect, setCanvasEffectEnabled)
├── sanitize.js # DOMPurify wrapper
├── notifications.js # Toast notification queue system
├── shortcuts-overlay.js # Press ? to show all keyboard shortcuts
├── modal.js # Prompt/alert dialogs with focus trapping
├── focus-trap.js # WCAG focus trapping utility
├── lightbox.js # Image/video viewer (YouTube, Vimeo, MP4)
├── terminal.js # Dev terminal with 18 sass commands
├── github.js # Live GitHub API integration
├── skills.js # Interactive skills visualization
├── sticky-notes.js # Persistent sticky notes with color themes
├── pomodoro-timer.js # Focus timer with canvas ring + work/break cycles
├── calculator.js # Glass calculator with keyboard input + expression chaining
├── system-monitor.js # Live FPS, heap, DOM count dashboard
├── galaxy-background.js # Three.js MMBN cyberspace grid
├── mahoraga-wheel-3d.js # Three.js 3D wheel (60fps/30fps adaptive)
├── aurora.js # Aurora visual effects (~24fps throttled)
├── fx.js # Visual FX layer (~30fps throttled)
├── glyphs.js # Glyph rendering system
├── warp.js # Warp tunnel transition effect
├── loader.js # DOM-safe loading states
├── welcome.js # First-visit welcome overlay
├── tour.js # Interactive guided tour
├── mobile.js # Touch detection + responsive injection
├── startmenu.js # Start menu + system tray
├── admin.js # No-code content editor (console-only)
├── audiofx.js # Audio effects system
├── version.js # Single source of truth for app version
├── scroll-reveal.js # IntersectionObserver scroll-triggered animations
├── parallax.js # Parallax depth engine (mouse + scroll + ambient drift)
├── dock-magnify.js # macOS-style dock icon magnification
├── ambient-system.js # Live system telemetry simulation
├── weather.js # Geolocation weather widget (Open-Meteo)
├── achievements.js # Achievement state tracking + unlock logic
├── achievement-viewer.js # Trophy display window renderer
├── code-viewer.js # Syntax-highlighted code panel renderer
├── gauntlet.js # About Me multi-stage scroll reveal (Unveiling Gauntlet)
├── galaxy-init.js # Three.js scene bootstrap + lazy-load orchestrator
├── digivice-intro.js # Digivice-themed lock screen intro animation
├── purple-haze.js # Purple Rain reveal curtain transition
├── passion-chat.js # Passion AI chat integration
├── passion-live.js # Live status indicator
├── passion-ambient.js # Ambient Passion API telemetry overlay
├── icon-tilt.js # 3D gyroscopic icon tilt (±18°) with light bloom
├── glitch-text.js # Chromatic aberration hover on window titles
├── catalyst-pulse.js # Breathing energy field behind lock screen hero
├── sonar-pulse.js # Click-to-ping concentric ring effect
├── spectral-echo.js # Window open materialization burst
├── phantom-reticle.js # Spring-physics HUD targeting reticle
├── whispers.js # Ambient floating HUD data fragments
├── cipher-decode.js # Holographic code materialization on scroll
├── neural-link.js # Luminous connection traces between icons
├── pulse-grid.js # Reactive ambient floor grid (canvas)
├── ambient-drift.js # Luminous floating orbs (canvas)
├── cosmic-dust.js # Twinkling star-field particles (canvas)
├── interactions/
│ ├── engine.js # Orchestrator (30fps throttled)
│ ├── cursor-trail.js # Particle cursor effects
│ ├── cursor-tracker.js # Mouse position tracking
│ ├── cursor-reactive.js # Reactive cursor animations
│ ├── sound-manager.js # UI sound effects
│ ├── easter-eggs.js # Konami, 418, glitch pulse
│ └── micro-interactions.js # Hover/click micro-animations
│
css/ # 50 modular stylesheets
├── variables.css # Design tokens (colors, spacing, fonts, motion easing, transition shorthands)
├── reset.css # Normalize + base resets
├── styles.css # Core layout, dock, desktop, icons
├── glass.css # Glassmorphism + backdrop-filter
├── windows.css # Window chrome, animations, states
├── galaxy.css # MMBN cyberspace theme
├── modal.css # Dialog overlays
├── forms.css # Input, button, validation styles
├── accessibility.css # WCAG, reduced-motion, skip-link
├── mobile.css # Responsive breakpoints, touch targets
├── interactions.css # Cursor, hover, micro-animation styles
├── command-palette.css # Cmd+K launcher
├── system-monitor.css # Performance dashboard gauges
├── notifications.css # Toast notification queue
├── shortcuts-overlay.css # Keyboard shortcuts overlay
├── sticky-notes.css # Sticky notes card grid
├── pomodoro-timer.css # Focus timer ring and controls
├── calculator.css # Calculator glass keypad and display
├── portfolio.css # Featured project showcase cards
├── welcome.css # First-visit overlay
├── tour.css # Guided tour steps
├── loading.css # Boot sequence, spinners
└── admin.css # Content editor panel
├── achievements.css # Trophy display and unlock animations
├── code-viewer.css # Syntax-highlighted panel styles
├── gauntlet.css # Unveiling Gauntlet multi-stage scroll
├── purple-haze.css # Purple Rain reveal curtain
├── passion.css # Passion AI integration styles
├── weather.css # Weather widget conditions + forecast
├── signature-accents.css # Gold HUD corner brackets + focus flash
├── whispers.css # Ambient floating HUD fragments
├── sonar-pulse.css # Click-to-ping concentric rings
├── catalyst-pulse.css # Breathing energy field glow
├── phantom-reticle.css # Spring-physics targeting reticle
├── glitch-text.css # Chromatic aberration title hover
├── spectral-echo.css # Window open materialization burst
├── cipher-decode.css # Holographic code materialization
├── neural-link.css # Icon connection traces
├── pulse-grid.css # Reactive floor grid canvas container
├── ambient-drift.css # Floating orbs canvas container
├── cosmic-dust.css # Star-field canvas container
│
tests/ # 607 vitest tests across 33 files
├── sanitize.test.js # XSS sanitization (54 tests)
├── state.test.js # State persistence + events (17 tests)
├── state-toggles.test.js # Auto-generated boolean toggles (14 tests)
├── data-loader.test.js # JSON fetch + cache (9 tests)
├── router.test.js # Path validation + routing (12 tests)
├── focus-trap.test.js # Tab cycling + cleanup (7 tests)
├── lightbox.test.js # Video ID validation + sandbox (20 tests)
├── dom-helpers.test.js # openExternal, animateCounter, loadJSON, saveJSON, downloadJSON (21 tests)
├── dom-helpers-edge.test.js # el(), visibility, viewport, protocol edges (27 tests)
├── modal.test.js # Dialog init, dismiss, prompt, alert (18 tests)
├── command-palette.test.js # Fuzzy search, keyboard nav, ARIA, execute (22 tests)
├── mobile.test.js # Device detection, viewport meta, mobile styles (11 tests)
├── github.test.js # API response validation (7 tests)
├── github-stats.test.js # GitHub stats display + error handling (12 tests)
├── windows.test.js # Window manager, titlebar, cascade, content (65 tests)
├── desktop-utils.test.js # Desktop utilities + DOMPurify fallback (23 tests)
├── scroll-reveal.test.js # IntersectionObserver, MutationObserver, WeakSet dedup (9 tests)
├── notifications.test.js # Toast queue, auto-dismiss, hover pause/resume, a11y (17 tests)
├── calculator.test.js # Glass calculator input + expression chaining (12 tests)
├── terminal.test.js # Terminal command parsing + sass responses (15 tests)
├── dock-magnify.test.js # Dock magnification Gaussian falloff (8 tests)
├── icon-tilt.test.js # 3D tilt coordinate math + reduced-motion (10 tests)
├── glitch-text.test.js # Chromatic aberration wiring + MutationObserver (9 tests)
├── phantom-reticle.test.js # Reticle spring physics + element snapping (11 tests)
├── desktop-effects.test.js # v3.59–v3.63 surface FX logic cores (31 tests)
└── smoke.test.js # Critical path integration: DOM, routing, contact form, responsive (27 tests)
| Layer | Technology |
|---|---|
| Core | HTML5, CSS3 (custom properties, glassmorphism), JavaScript ES6 modules |
| 3D | Three.js (galaxy background, Mahoraga wheel) |
| Security | DOMPurify 3.0.8 (SRI), 10 Vercel security headers |
| Build | Vite 7.x |
| Test | Vitest 4.x, jsdom |
| Lint | ESLint 9.x, Prettier |
| Deploy | Vercel (SPA routing, security headers) |
| Fonts | Tomorrow, Orbitron, JetBrains Mono (Google Fonts) |
Zero framework dependencies. Vanilla JavaScript core — Three.js for 3D, DOMPurify for XSS protection.
Chrome 61+ · Firefox 60+ · Safari 11+ · Edge 79+
npm run dev # Vite dev server (localhost:5173)
npm run build # Production build to dist/
npm run preview # Preview production build
npm run test # Run vitest (607 tests / 33 files)
npm run lint # ESLint
npm run format # Prettier
The project uses Vite for dev/build, Vitest + jsdom for testing, and ESLint + Prettier for code quality. package.json lists two runtime dependencies: @vercel/analytics, imported by js/main.js into the browser bundle, and @anthropic-ai/sdk, used only by the serverless routes in api/. Everything else is dev tooling.
Passion OS is deployed on Vercel at jamesdare.com. Every push to main triggers an automatic production deployment.
# Install the Vercel CLI
npm i -g vercel
# Link to the project (first time only)
vercel link
# Deploy to preview
vercel
# Deploy to production
vercel --prod
The project ships with a vercel.json that configures:
/os and /os/* fall through to os/index.html for the OS router; everything except /resume/* falls through to the landing page at index.htmlno-cache on sw.js to prevent stale worker versionsCache-Control with stale-while-revalidate on /data/*A record to 76.76.21.21 (or use the CNAME Vercel provides)npm run build # Vite build → dist/
npm run preview # Serve dist/ on localhost:4173
.env file required — the app has zero server-side secretssw.js) caches assets locally with network-first for navigation and LRU eviction at 150 entries| Document | Description |
|---|---|
| DOCUMENTATION.md | Complete user guide — desktop apps, keyboard shortcuts, customization, deployment |
| ADMIN_DASHBOARD_GUIDE.md | No-code content editor (console-only) |
| EASTER_EGGS_GUIDE.md | All hidden easter eggs and secret interactions |
| CHANGELOG.md | Full version history from v1.0 to present |
| docs/ARCHITECTURE.md | System architecture — all 76 modules, dependency graph, init sequence |
| docs/GLOSSARY.md | Terminology and codebase glossary |
| docs/TROUBLESHOOTING.md | Common issues and solutions |
| docs/anthropic-claude-code-marketing-ops.md | Case study: Anthropic's marketing team using Claude Code for ad ops |
| docs/research-bloomberg-terminal-analogy.md | Bloomberg Terminal analogy for AI-assisted development |
| docs/research-cursor-poach-boomerang.md |
MIT — v3.63.4
No frameworks. No dependencies. No excuses.
prefers-reduced-motionSECTOR CLEAR, SIGNAL NOMINAL, etc.). Three staggered rings alternate gold/amethyst with decreasing opacity. Debounced to prevent spam. Desktop-only, respects prefers-reduced-motion.translateX animation with ease-decel fade-out. Respects prefers-reduced-motion.prefers-reduced-motion.prefers-reduced-motion.prefers-reduced-motion.translateZ), staggered child animations, gold divider sweeps with spring easing, and an SVG "auric signature" monogram that draws itself via stroke-dashoffset as each stage enters view. Built on a dedicated Gauntlet IntersectionObserver module that auto-wires new windows via MutationObserver.prefers-reduced-motion.clip-path insets, shifting left/right in stepped keyframes before resolving cleanly. MutationObserver auto-wires new windows, keeps data-text synced on breadcrumb navigation. Pure CSS animation, JS only for attribute wiring. Respects prefers-reduced-motion.prefers-reduced-motion.mix-blend-mode: screen. Respects prefers-reduced-motion..cv-panel scrolls into view, every syntax token scrambles through hex/glyph noise before resolving left-to-right in a wavefront pattern, while a gold scan line sweeps across the code block. Characters flash gold on resolve before settling to their syntax color. IntersectionObserver-triggered, MutationObserver auto-wires dynamically added panels. Respects prefers-reduced-motion.stroke-dashoffset animation, glow with dual drop-shadow halos (gold + amethyst), and fade smoothly on hover end. SVG overlay layer, MutationObserver for dynamic icons. Respects prefers-reduced-motion.requestAnimationFrame. Pauses when tab hidden. Desktop-only, respects prefers-reduced-motion.screen blend mode, edge-fade for seamless wrapping. Pauses when tab hidden. Desktop-only, respects prefers-reduced-motion.prefers-reduced-motion.drop-shadow on clip-path shapes, then shards fly apart with staggered delays and directional rotation while gold/amethyst scatter particles bloom from the fracture intersection points. Two-phase scroll-driven choreography (glow at 50%, shatter at 70%) sequences after the crystal fracture for layered dramatic impact. CSS-only animation, zero extra JS modules. Respects prefers-reduced-motion.clip-path: circle() animation opens from center to reveal the creative director's identity — gold serif name, self-drawing divider, amethyst role tagline — with 6-stage staggered timing that layers with the existing glitch animations. Brushed-metal texture overlay. Respects prefers-reduced-motion.prefers-reduced-motion.@property animated rotation, while four corner energy nodes pulse at staggered intervals. The effect activates on window focus and deactivates on blur, making window switching feel like powering up terminals in a sci-fi command center. CSS mask-composite: exclude carves the gradient into a thin border ring — zero JS animation loops. MutationObserver for dynamic windows. Respects prefers-reduced-motion.--drift-x), and fade through blur. Gold/amethyst two-tone palette, JetBrains Mono font, 60ms cooldown with a 6-element pool cap to prevent GPU saturation. Only fires on printable keys outside inputs/textareas/contentEditable regions. Respects prefers-reduced-motion.mix-blend-mode: screen, blueprint corner markers illuminate with gold glow, and cards spring back with --ease-decel on leave. Uses relatedTarget-aware mouseleave handling to prevent flicker when crossing internal child element boundaries. Event-delegation-based for dynamic cards. Desktop-only, respects prefers-reduced-motion.aria-live screen reader support.Ctrl+Shift+V for system info, 18 terminal sass commands.| CALC.exe | Window | Cyberpunk calculator with keyboard input, expression chaining, glass UI |
| WEATHER | Window | Live weather with geolocation, current conditions, 3-day forecast via Open-Meteo |
| SYS_MONITOR | Window | Live FPS graph, heap usage, DOM count, network info, uptime |
| TROPHIES.exe | Window | Achievement system — 10 unlockable trophies for exploring the OS (explorer, speed demon, night owl, completionist...) |
<video> sources validated through Sanitize.url() — blocks javascript:, data:, blob: URI schemes from admin-editable media entriessandbox="allow-scripts allow-same-origin allow-presentation" on all video embeds — blocks top-navigation, form submission, and popupsrel="noopener noreferrer" on all target="_blank" links — prevents tabnappingSanitize.*() inputs capped at 500KB (MAX_INPUT_LENGTH) — prevents ReDoS and algorithmic-complexity attacks on sanitization functions (CWE-400)cat command uses Object.hasOwn() instead of bracket-notation — prevents prototype property leakage (CWE-1321)openExternal() rejects URLs exceeding 2048 characters — caps input before window.open() processingSanitize.hexColor() for colors, Sanitize.text() for labels/IDs, Sanitize.url() for SVG icon paths (defense-in-depth against stored XSS via localStorage-backed desktop items)| Cursor poached Claude Code's leads; Anthropic hired them back in 14 days |