diff --git a/.cursorrules b/.cursorrules index 2197aded..2fb568aa 100644 --- a/.cursorrules +++ b/.cursorrules @@ -24,3 +24,13 @@ PHP 8.2 + Laravel 12 | TypeScript + Vue 3 + Vuexy/Vuetify | Pinia + TanStack Que ## Tests - PHPUnit feature test per controller, minimum: 200 + 401 + 403 + +## Formatter + +ESLint is the ONLY formatter for TS/Vue/JS files in this repo. Prettier +is intentionally disabled — `pnpm lint:fix` (or save-on-format with +ESLint extension) is the single source of truth for formatting. + +Save-on-format requires the `dbaeumer.vscode-eslint` extension to be +installed and the editor's default formatter set to it (configured in +`.vscode/settings.json`). diff --git a/.vscode/settings.json b/.vscode/settings.json index a6934100..1e607b84 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,37 +1,57 @@ { "editor.formatOnSave": true, "editor.tabSize": 2, - - "[php]": { - "editor.defaultFormatter": "bmewburn.vscode-intelephense-client", - "editor.tabSize": 4 + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit" }, - - "[vue]": { - "editor.defaultFormatter": "Vue.volar" - }, - - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - - "typescript.preferences.importModuleSpecifier": "relative", - "typescript.suggest.autoImports": true, - - "files.associations": { - "*.php": "php", - ".env*": "dotenv" - }, - - "search.exclude": { - "**/node_modules": true, - "**/vendor": true, - "**/dist": true - }, - + + "eslint.format.enable": true, + "eslint.validate": [ + "javascript", + "typescript", + "vue" + ], "eslint.workingDirectories": [ { "directory": "apps/admin", "changeProcessCWD": true }, { "directory": "apps/app", "changeProcessCWD": true }, { "directory": "apps/portal", "changeProcessCWD": true } - ] + ], + + "prettier.enable": false, + + "[php]": { + "editor.defaultFormatter": "bmewburn.vscode-intelephense-client", + "editor.tabSize": 4 + }, + + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + + "[typescriptreact]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + + "[javascript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + + "[vue]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.suggest.autoImports": true, + + "files.associations": { + "*.php": "php", + ".env*": "dotenv" + }, + + "search.exclude": { + "**/node_modules": true, + "**/vendor": true, + "**/dist": true + } }