diff --git a/.github/workflows/x-tests.yml b/.github/workflows/x-tests.yml index 9e8b1c7d..c08c4095 100644 --- a/.github/workflows/x-tests.yml +++ b/.github/workflows/x-tests.yml @@ -34,6 +34,12 @@ jobs: - name: Run apps/x Vitest suites run: npm test + # Typechecks with the dev tsconfigs, which include test files — + # the build tsconfigs exclude them and vitest strips types without + # checking, so this is the only gate that sees type errors in tests. + - name: Typecheck apps/x packages + run: npm run typecheck + apps-x-electron-package: name: apps/x Electron package smoke test runs-on: ubuntu-latest diff --git a/CLAUDE.md b/CLAUDE.md index e0989688..a5fe24c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -139,6 +139,7 @@ Long-form docs for specific features. Read the relevant file before making chang ### Verify compilation ```bash cd apps/x && npm run deps && npm run lint +cd apps/x && npm run typecheck # dev tsconfigs — the only gate that typechecks *.test.ts ``` ## Tech Stack diff --git a/apps/x/apps/renderer/package.json b/apps/x/apps/renderer/package.json index 0a8c9f9f..c0ad3480 100644 --- a/apps/x/apps/renderer/package.json +++ b/apps/x/apps/renderer/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "vite", "build": "tsc -b && vite build", + "typecheck": "tsc -b", "lint": "eslint .", "preview": "vite preview", "test": "vitest run", diff --git a/apps/x/package.json b/apps/x/package.json index d0931dc7..fbead12c 100644 --- a/apps/x/package.json +++ b/apps/x/package.json @@ -16,7 +16,11 @@ "test": "npm run shared && npm run test:shared && npm run test:core && npm run test:renderer", "test:shared": "cd packages/shared && npm test", "test:core": "cd packages/core && npm test", - "test:renderer": "cd apps/renderer && npm test" + "test:renderer": "cd apps/renderer && npm test", + "typecheck": "npm run shared && npm run typecheck:shared && npm run typecheck:core && npm run typecheck:renderer", + "typecheck:shared": "cd packages/shared && npm run typecheck", + "typecheck:core": "cd packages/core && npm run typecheck", + "typecheck:renderer": "cd apps/renderer && npm run typecheck" }, "devDependencies": { "@eslint/js": "^9.39.2", diff --git a/apps/x/packages/core/package.json b/apps/x/packages/core/package.json index 5bd6d9b5..80b5b54d 100644 --- a/apps/x/packages/core/package.json +++ b/apps/x/packages/core/package.json @@ -7,6 +7,7 @@ "scripts": { "build": "rm -rf dist && tsc -p tsconfig.build.json", "dev": "tsc -w -p tsconfig.build.json", + "typecheck": "tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest", "inspect-turn": "node dist/runtime/turns/inspect-cli.js", diff --git a/apps/x/packages/shared/package.json b/apps/x/packages/shared/package.json index 31f99cdd..982f99dc 100644 --- a/apps/x/packages/shared/package.json +++ b/apps/x/packages/shared/package.json @@ -7,6 +7,7 @@ "scripts": { "build": "rm -rf dist && tsc -p tsconfig.build.json", "dev": "tsc -w", + "typecheck": "tsc --noEmit -p tsconfig.json", "test": "vitest run", "test:watch": "vitest" },