erikars_task-list-kanban/README.development.md
Erika Rice Scherpelz 9127d86c98 fix(build): type-check Svelte components and fix the surfaced errors
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>
2026-07-03 11:12:44 -07:00

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.