This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm start- Run the app in development mode with GPU sandbox disablednpm run watch- Watch for changes and restart automaticallynpm run css- Compile SCSS styles
npm test- Run Playwright testsnpm run lint- Run ESLint on all source filesnpm run lint:src- Lint only source directorynpm run depcheck- Check for unused dependencies and circular dependencies
npm run build- Build for current platformnpm run build:all- Build for Windows and Linux (32-bit and 64-bit)npm run build:mac- Build for macOS (arm64 and x64)npm run build:win- Build for Windows (32-bit and 64-bit)npm run build:linux- Build for Linux (32-bit and 64-bit)
npm run release- Create a new release (on release branch)
- Electron 14 - Cross-platform desktop framework
- Node.js 18.18.2+ - JavaScript runtime
- SCSS - Stylesheet preprocessing
- Playwright - End-to-end testing
- electron-builder - Build and distribution
-
Main Process (
src/main/) - Electron backend handling window management, IPC, system integrationmain.js- Entry point and app initializationcrossover.js- Core crosshair window logicwindows.js- Window creation and managementpreferences.js- Settings management via electron-preferenceskeyboard.js- Global hotkey handlingiohook.js- Mouse/keyboard hook integration
-
Renderer Process (
src/renderer/) - UI and frontend logicrenderer.js- Main window rendererchooser.js- Crosshair selection interfacepreload.js- Preload script for context isolation
-
Configuration (
src/config/) - App constants and utilitiesconfig.js- Core configuration values (window sizes, defaults)
- Crosshair Overlay - Transparent, click-through window positioned above other apps
- Global Hotkeys - Default: Ctrl+Alt+Shift+[Key] combinations for all actions
- Multiple Monitors - Support for moving crosshair between displays
- Shadow Windows - Up to 14 duplicate crosshair windows
- Mouse Following - Optional crosshair tracking of mouse cursor
- Hide Triggers - Hide crosshair on specific mouse/keyboard events
- ESLint configured with XO style guide
- Indentation: Tabs
- Semicolons: None (enforced by ESLint)
- Spacing: Always use spaces in arrays, objects, and parentheses
- Imports: Sorted alphabetically
- Tests located in
test/directory - Uses Playwright for Electron app testing
- Test files named
*.spec.js - Run with
npm test
- Application uses Electron 14 (not latest) for stability
- GPU sandbox is disabled in development (
--disable-gpu-sandbox) - Supports Windows 7+, macOS 10.10+, Linux
- Uses
electron-preferencesfor settings management - Global hotkeys implemented via
uiohook-napi