Skip to content

Decisions Log

Micro-decisions that don't warrant a full ADR. Ordered newest-first.


[2026-03-16] — tsgolint alpha: disable tsconfig-error rule

Context: Oxlint type-aware linting via oxlint-tsgolint triggered a false positive on baseUrl in all four app tsconfig files (apps/api, apps/web, apps/worker, apps/mobile). The error message "Option 'baseUrl' has been removed" is a tsgolint alpha bug (tracked in oxc-project/tsgolint#351).

Decision: Removed baseUrl from all four tsconfig files (TypeScript 5+ supports paths without it). Also disabled the tsconfig-error rule override in .oxlintrc.json as a safety net.

Impact: apps/*/tsconfig.json — removed baseUrl: "." from compilerOptions. Typecheck still passes.


[2026-03-16] — Oxlint unicorn/no-useless-undefined disabled for test files

Context: The mergeJsonField test explicitly passes undefined to test that code path. Oxlint's unicorn/no-useless-undefined rule flagged it as unnecessary, but in this context it is intentional — we are testing a specific parameter value, not omitting it by accident.

Decision: Added an .oxlintrc.json override to disable unicorn/no-useless-undefined for *.test.ts / *.spec.ts files.

Impact: .oxlintrc.json overrides section. Affects all future test files.


[2026-03-16] — Oxlint runs at workspace root, not per-package

Context: The old ESLint setup used turbo run lint (per-package). Oxlint can run at the root and lint the entire monorepo in one pass (~200ms), making the turbo approach unnecessary.

Decision: pnpm lintoxlint . from workspace root. The turbo lint task remains in turbo.json for per-package dev convenience (pnpm --filter @decksmith/api lint) but the root command no longer goes through turbo.

Impact: package.json root scripts. CI lint job no longer needs Prisma generate.


[2026-03-16] — vitest installed at workspace root + per-package (not catalog)

Context: Vitest is a devDependency needed by packages/config (for the shared base config) and each package that has tests. Adding it to the pnpm catalog would be correct long-term, but since only apps/api has tests today, installing directly avoids premature catalog entries.

Decision: Vitest pinned in root devDependencies and apps/api devDependencies. Will move to catalog once 2+ packages use it.

Impact: package.json, apps/api/package.json, packages/config/package.json.

Built with VitePress