-
-
Notifications
You must be signed in to change notification settings - Fork 4
Home
This wiki documents the v5.5.3 stable release of ChessVision. It reflects the state of the master branch only. Forward-looking development happens on develop; that work is intentionally not described here and will be incorporated when it ships.
- Setup — Prerequisites, installation, development workflow, and production build.
-
Features — The complete stable feature set on
master, inventoried from source. - Maintenance — How to report bugs, request features, and contribute.
ChessVision is a browser-based chess diagram generator. It renders chess positions from FEN notation and produces high-resolution, print-ready image exports. The application is entirely client-side: there is no server, no account requirement, and no remote persistence on the stable line.
The product serves players, coaches, content creators, and developers who need accurate and reproducible board renderings.
ChessVision v5.5.3 is a single-page React application built with Vite. The architecture is organized along the following lines:
-
React 19 with
react-router-dom7 for client-side routing. - All eight top-level routes are split with
React.lazyand wrapped inSuspense. - Route transitions are animated with
framer-motion(AnimatePresence).
- FEN parsing and validation live in
src/utils/fenParser.tsandsrc/utils/validation.js. Input length is hard-capped atMAX_FEN_LENGTH = 93. - The interactive board editor is built on
react-dndwith both the HTML5 and Touch backends, so drag-and-drop works on desktop and touch devices. - Board rendering goes through
src/utils/canvasRenderer.js, which targets an off-screenHTMLCanvasElement.
- PNG and JPEG export run through
canvasExporter.js, with physical-dimension targeting (centimeters to pixels) computed inimageOptimizer.js. - Large canvases are produced through chunked main-thread rendering in
advancedExport.js. - SVG export is handled by
svgExporter.js. - Batch export from the Advanced FEN page is assembled into a ZIP through
archiveManager.js. - A shared cancel / pause / resume state machine governs every long-running export.
- Three React contexts:
FENBatchContext,LayoutContext,ThemeSettingsContext. - Persistence is
localStorageonly. All untrusted-string reads go throughsafeJSONParseinsrc/utils/validation.js. - The FEN history persists through
useFENHistorywith a 300 ms debounce on writes.
- pnpm 10 workspace (
packageManager: pnpm@10.33.0). - Vite 8, Tailwind 4, TypeScript 6 (the codebase is predominantly
.jsx/.js; TypeScript coverage is partial in v5.x). - ESLint 9 with React, React Hooks, and React Refresh plugins. CI enforces
--max-warnings=0for production. - Prettier, Husky,
lint-staged, commitlint, and Conventional Commits. -
semantic-releaseis configured against themasterbranch.
For the authoritative source-tree inventory and known limitations, see ROADMAP.md on master.