diff --git a/.editorconfig b/.editorconfig index e9712bf..96ed027 100644 --- a/.editorconfig +++ b/.editorconfig @@ -18,6 +18,3 @@ indent_size = 2 [*.{md,mdx}] indent_size = 2 trim_trailing_whitespace = false - -[Makefile] -indent_style = tab diff --git a/.gitattributes b/.gitattributes index 33eed04..c7a579d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,7 +4,6 @@ *.png binary *.gif binary *.webp binary -*.svg binary *.ico binary *.mp4 binary *.mov binary diff --git a/.gitignore b/.gitignore index 3c756b1..4074923 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ Thumbs.db node_modules/ .pnpm-store/ -# Build outputs +# Build output dist/ build/ @@ -18,13 +18,6 @@ build/ # Generated files vite.config.*.timestamp-* -# Generated AI assistant rules (source of truth: ai-rules/*.mdc) -.cursor/rules/ -.aiassistant/ -.rules -CLAUDE.md -.claude - # TypeScript *.tsbuildinfo @@ -35,12 +28,18 @@ playwright-report/ test-results/ .vitest/ +# Claude Code local settings +.claude/settings.local.json + # IDE and editor files .vscode/launch.json .vscode/*.code-workspace !.vscode/settings.json !.vscode/extensions.json .idea/ +*.iml +.zed/ +.cursor/ *.swp *.swo *~ @@ -52,6 +51,7 @@ pnpm-debug.log* # Cache .eslintcache .cache/ +.knip-output.json # Temporary folders tmp/ diff --git a/.husky/pre-push b/.husky/pre-push index 052a478..3a720fd 100755 --- a/.husky/pre-push +++ b/.husky/pre-push @@ -1,32 +1,23 @@ #!/bin/sh -# Load Node.js environment and ensure pnpm is available . "$(dirname "$0")/ensure-pnpm.sh" echo "Running pre-push checks..." +echo "" -# Run format check on entire project (same as CI) -echo "Checking formatting..." -pnpm format:check || { +echo "[1/2] Type checking..." +pnpm typecheck || { echo "" - echo "Formatting issues found. Run 'pnpm format' to fix them." + echo "[FAIL] Type errors found. Please fix them before pushing." exit 1 } -# Run lint check on entire project -echo "Linting..." +echo "[2/2] Linting..." pnpm lint || { echo "" - echo "Lint issues found. Run 'pnpm lint:fix' to fix them." + echo "[FAIL] Lint issues found. Run 'pnpm lint:fix' to fix them." exit 1 } -# Run spell check on entire project -echo "Spell checking..." -pnpm spellcheck || { - echo "" - echo "Spelling issues found. Please fix them." - exit 1 -} - -echo "Pre-push checks passed!" +echo "" +echo "Pre-push checks passed! Ready to push." diff --git a/.lintstagedrc.json b/.lintstagedrc.json index ecd655f..5f81e94 100644 --- a/.lintstagedrc.json +++ b/.lintstagedrc.json @@ -1,15 +1,17 @@ { "*.{ts,tsx}": [ - "biome check --write --no-errors-on-unmatched --files-ignore-unknown=true", - "eslint --fix --max-warnings=0", - "cspell --no-must-find-files", - "bash -c 'pnpm typecheck'" + "biome check --write --no-errors-on-unmatched", + "biome format --write --no-errors-on-unmatched", + "eslint --fix --max-warnings 0", + "cspell --no-progress --no-must-find-files" ], "*.{js,cjs,mjs}": [ - "biome check --write --no-errors-on-unmatched --files-ignore-unknown=true", - "eslint --fix --max-warnings=0" + "biome check --write --no-errors-on-unmatched", + "biome format --write --no-errors-on-unmatched", + "eslint --fix --max-warnings 0" ], - "*.{json,jsonc,css}": ["biome format --write --no-errors-on-unmatched --files-ignore-unknown=true"], - "*.{md,mdx}": ["prettier --write", "cspell --no-must-find-files"], - "*.{yml,yaml}": ["prettier --write"] + "*.{json,jsonc}": ["biome format --write --no-errors-on-unmatched"], + "*.css": ["biome format --write --no-errors-on-unmatched"], + "*.{md,mdx}": ["prettier --write", "cspell --no-progress --no-must-find-files"], + "*.{yaml,yml}": ["prettier --write"] } diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..28b94f6 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,13 @@ +{ + "default": true, + "MD013": { + "line_length": 120, + "heading_line_length": 120, + "code_block_line_length": 120, + "tables": false, + "headings": true, + "code_blocks": true + }, + "MD033": false, + "MD041": false +} diff --git a/.prettierignore b/.prettierignore index 550c3d4..420b78f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -27,8 +27,6 @@ vite.config.*.timestamp-* *.json # Generated files -CLAUDE.md -.rules CHANGELOG.md # Changesets (auto-generated) diff --git a/.zed/settings.json b/.zed/settings.json index f1970ac..0a297d5 100644 --- a/.zed/settings.json +++ b/.zed/settings.json @@ -1,25 +1,10 @@ { - "assistant": { - "version": "2", - "provider": { - "name": "anthropic", - "default_model": { - "model": "claude-sonnet-4-20250514" - } - } - }, - "context_servers": { - "rules-server": { - "command": { - "path": "cat", - "args": [".rules"] - } - } - }, "tab_size": 4, "hard_tabs": false, "preferred_line_length": 120, "format_on_save": "on", + "ensure_final_newline_on_save": true, + "wrap_guides": [120], "formatter": { "external": { "command": "biome", @@ -53,6 +38,24 @@ } } }, + "JSON": { + "tab_size": 2 + }, + "CSS": { + "tab_size": 4, + "preferred_line_length": 100, + "format_on_save": "on" + }, + "Markdown": { + "tab_size": 2, + "preferred_line_length": 120, + "formatter": "prettier" + }, + "YAML": { + "tab_size": 2, + "preferred_line_length": 120, + "formatter": "prettier" + }, "WGSL": { "tab_size": 4, "preferred_line_length": 120 @@ -62,12 +65,7 @@ "typescript-language-server": { "initialization_options": { "preferences": { - "importModuleSpecifierPreference": "relative", - "includeInlayParameterNameHints": "all", - "includeInlayFunctionParameterTypeHints": true, - "includeInlayVariableTypeHints": true, - "includeInlayPropertyDeclarationTypeHints": true, - "includeInlayFunctionLikeReturnTypeHints": true + "importModuleSpecifierPreference": "relative" } } } diff --git a/biome.json b/biome.json index 21f0bc8..f782d26 100644 --- a/biome.json +++ b/biome.json @@ -38,9 +38,8 @@ }, "css": { "parser": { - "cssModules": false, - "allowWrongLineComments": false, - "tailwindDirectives": true + "cssModules": true, + "allowWrongLineComments": false }, "formatter": { "indentWidth": 4, diff --git a/cspell.json b/cspell.json index 55734df..2a8986a 100644 --- a/cspell.json +++ b/cspell.json @@ -1,14 +1,11 @@ { "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", - "version": "0.2", "language": "en", "allowCompoundWords": true, "dictionaries": ["typescript", "node", "html", "css", "fonts", "npm", "softwareTerms"], "words": [ "ABGR", - "Ambilab", "antialiasing", - "atlases", "bindgroup", "bindgroups", "biomejs", @@ -24,19 +21,16 @@ "codecov", "commitlint", "daafu", - "dco", "dbaeumer", + "dco", "esbuild", "Fabrizio", - "framebuffer", "gamepad", "Hiero", "lerp", "millis", "mipmap", "nsis", - "onuncapturederror", - "palettized", "pnpm", "RBAPI", "rects", @@ -50,7 +44,6 @@ "spritesheet", "subsystem", "subsystems", - "texcoord", "timestep", "unorm", "Vančura", @@ -58,7 +51,6 @@ "Vitest", "Václav", "WebGPU", - "webstorm", "WGSL", "xadvance", "xoffset", @@ -72,7 +64,6 @@ ".git", ".pnpm-store", "CHANGELOG.md", - "CLAUDE.md", "coverage", "dist", "node_modules", diff --git a/eslint.config.js b/eslint.config.js index 9d7ea7b..5cb6c57 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -26,8 +26,6 @@ export default [ '.pnpm-store/**', '**/.pnpm-store/**', 'vite.config.ts.timestamp-*', - 'CLAUDE.md', - '.rules', ], },