Skip to content

Development

bash
git clone https://github.com/logfoxai/busker.git
cd busker
npm ci
npm run validate
ScriptWhat it does
npm run buildtscdist/
npm testkizu specs under c8 coverage
npm run linteslint --fix
npm run astro:devThe docs site at localhost:4321
npm run astro:buildThe docs site → docs-site/
npm run validateEverything CI runs, in the same order. Run it before you push.
PathWhat is in it
src/timeline.tsThe pure part: laying a routine out on a timeline, easing, interpolation, text.
src/busk.tsThe DOM part: the loop, clicks, observers, and classes.
src/types.tsThe public shape of a routine.
busker.cssOptional styling, shipped as-is.
src/content/docs/These guides. Same files serve GitHub and the site.
assets/Brand art. Also the docs site’s publicDir.

The split is deliberate: everything that can be tested without a DOM lives in timeline.ts and is tested exhaustively. busk.ts is tested through happy-dom with a hand-driven clock, for the behaviours that only exist in a browser — a scripted click not being mistaken for a visitor’s, a beat firing exactly once per pass, destroy() leaving nothing behind.

Guides are plain markdown with a # Title and no frontmatter, so they read correctly on GitHub and in the site from the same file. Relative ./page.md links are rewritten to site slugs at build time.

Merges to main release through autorel: the PR title’s conventional-commit type decides the version bump, and the docs site publishes in the same run. Use feat: and fix: for anything that ships, docs: for guides.