Skip to content

Latest commit

 

History

History
69 lines (58 loc) · 3.58 KB

File metadata and controls

69 lines (58 loc) · 3.58 KB

Chromeyumm — Agent Map

Minimal Windows CEF browser for live installations. Renders web content across multiple displays via D3D11 GPU blitting, with Spout texture I/O for TouchDesigner/Resolume integration.

Quick Start

bun install
bun scripts/setup-vendors.ts # download CEF + Spout (first time / upgrade)
bun build.ts              # full build (C++ DLL + TS + CEF runtime)
bun build.ts --skip-native  # TS-only rebuild
bun build.ts --dev        # dev build (no minification)
dist/chromeyumm.exe       # run (from project root)
bun scripts/release.ts    # package release zip

Key Directories

Path Purpose
native/cef-wrapper.cpp Main C++ DLL: CEF, D3D11, Spout, NativeDisplayWindow
native/frame-output/ Frame transport module (DDP output, Spout sender, staging readback)
native/cef-helper.cpp CEF renderer process helper (Spout input V8 bindings)
native/shared/ Shared C++ headers
native/vendor/ CEF + Spout vendor dirs (gitignored, see scripts/setup-vendors.ts)
src/chromeyumm/ TypeScript framework layer (FFI bindings, BrowserWindow, etc.)
src/app/ Application entry point, config loader, Spout input lifecycle
src/components/ Reusable web components (debug panel, slot overlay, Spout receiver)
src/views/ Example views (Three.js, R3F, Spout demos) — served via dev servers, not bundled
build.ts Build script
scripts/release.ts Release packaging — version bump, zip, GitHub publish
.github/workflows/release.yml CI: build + release on v* tag push
display-config.json Display layout, canvas size, content URL, Spout settings

Environment

  • OS: Windows 10/11 x64 only
  • Runtime: Bun
  • C++ toolchain: Visual Studio 2022 with MSVC (C++ Desktop workload)
  • CEF: Chromium Embedded Framework (vendor drop-in, see native/README.md)
  • GPU: ANGLE d3d11 backend required; in-process-gpu: true required on Optimus
  • Spout: Optional — SpoutDX for GPU texture sharing (vendor, see native/README.md)

Architecture & Docs

Document Purpose
docs/ARCHITECTURE.md System context, data flow, domain boundaries
docs/DEVELOPMENT.md Deep C++ internals, GPU findings, project history
docs/COMMANDS.md All build/run/dev commands
docs/DESIGN.md Product and design principles
docs/FRONTEND.md Views, browser-side architecture
docs/BACKEND.md C++ DLL, FFI, native layer patterns
docs/PRODUCT_SENSE.md Users, value props, tradeoffs
docs/QUALITY_SCORE.md Quality rubric and current gaps
docs/RELIABILITY.md Failure modes, recovery patterns
docs/SECURITY.md Sandbox, permissions, registry writes
docs/design-docs/ Architecture decision records
docs/product-specs/ Feature specifications
docs/exec-plans/ Roadmap, active plans, tech debt
docs/references/ Implementation guides

Conventions

  • All FFI symbols declared in src/chromeyumm/ffi.ts; use native.symbols.* directly
  • cs() helper for FFI string conversion (not toCString())
  • No RPC system — nullCallback for bridge handlers
  • C++ exports verified via dumpbin /exports dist/libNativeWrapper.dll
  • Config via display-config.json (JSON with _comment fields, not JSONC)