tsc only checks .ts files, so the Svelte components were never type-checked. Add svelte-check (gated on errors) to npm run build and fix the 23 errors it surfaced across 7 components. Three were real bugs: activating "+ Task" via keyboard crashed the file picker by passing no event, the tag swimlane drop passed non-string bucket values to updateSwimlaneTag, and board cell lookups were unchecked (now via a getBoardCell helper). The rest were narrowing fixes, including using the isColumnTag type predicate directly instead of a boolean alias. Also documents the new check and corrects the stack description (Svelte 5 in v4 compat mode) in README.development.md. Assisted-by: Claude Fable 5 <noreply@anthropic.com> Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1.3 KiB
Development Guide
Tech Stack
- Language: TypeScript (strict mode)
- UI Framework: Svelte 5 (compiled in Svelte 4 component-API compatibility mode)
- Build Tool: ESBuild
- Testing: Vitest
- Plugin Framework: Obsidian API
- Package Manager: npm
Build & Development Commands
Development
npm run dev
Starts ESBuild in watch mode for live development. Built files go to root directory.
Build (Production)
npm run build
Runs TypeScript type checking (tsc -noEmit -skipLibCheck), then Svelte component type checking (npm run check:svelte, i.e. svelte-check gated on errors), then builds the optimized bundle with ESBuild. Always run this before releasing to catch type errors — tsc alone does not check .svelte files.
Test
npm test
Runs the Vitest test suite. Tests are located in src/ alongside source files.
Version Bump
npm run version
Automated script that updates version in manifest.json and versions.json, then stages the files for commit.
Testing
Run tests before every commit. Only commit if tests pass. Never disable tests to get them to pass. Only modifiy tests to get them to pass if you are SURE the failure is expected due to the PR. Otherwise, fix the non-test code or check with the human operator.