A terminal-first agentic coding harness. Built in the open, run it in your repository.
This is the landing page and documentation site for Furnace.
- Vite — build tooling
- React — UI library
- React Router — client-side routing
- Tailwind CSS v4 — styling
npm ci
npm run devThe dev server starts at http://localhost:5173.
npm run build # production bundle in dist/
npm run preview # serve the production bundle
npm test # Vitest unit/component suite
npm run test:watch # Vitest watch mode
npm run test:e2e # full Playwright suite
npm run check # unit tests, then production buildThe changelog reads src/releases.json directly from the Furnace GitHub
repository at runtime and shows an explicit error if GitHub is unavailable.
docs/ # Markdown documentation sources
e2e/ # Playwright route, interaction, and asset tests
public/
assets/
background/ # Global WebGL normal map
brand/ # Furnace logo
contributors/ # Contributor coin normal maps
features/ # Feature images and matching normal maps
fonts/ # Self-hosted font files and @font-face styles
src/
components/
docs/ # Docs shell, Markdown renderer, and noise layer
effects/ # Canvas/WebGL effects and lifecycle utilities
features/ # Shared feature grid and card renderer
site/ # Global chrome and footer
data/ # Feature content and asset paths
hooks/ # Theme and clipboard state
pages/ # Home, Features, Changelog, and Docs routes
test/ # Shared Vitest setup
App.jsx # Routing and persistent site layers
index.css # Tailwind entry, theme tokens, and global styles
main.jsx # React entry point
App.jsx keeps the global background and chrome mounted while React Router
switches page content. Documentation imports Markdown as build-time raw text.
Files under public/ retain root-relative URLs because WebGL textures and
feature data load them dynamically.
Canvas effects share one reference-counted pointer listener. Their render loops pause when hidden or offscreen, respect reduced motion, redraw on relevant theme/resize activity, recover WebGL context loss, and release observers, listeners, texture loads, and GPU resources on unmount.
Before behavior-preserving cleanup, read
.cursor/skills/code-simplification/SKILL.md and work review-first: understand
callers and tests, make only verified simplifications, and verify each change.
The skill is vendored from an immutable upstream revision; provenance and
update instructions are in .cursor/skills/code-simplification/UPSTREAM.md.
MIT