Context
The published hamo package is lean — zero runtime deps, ESM-only, 16.8 kB packed. The remaining dependency weight in the repo is almost entirely the astro playground: ~500 of the ~566 packages in bun.lock come from astro + @astrojs/check (language server, vite, esbuild, sharp, shiki, …).
It's dev-only and not published, so it never reaches consumers — but it is the repo's staleness surface: every Dependabot/bun audit finding so far has originated in astro (the v1-prep pass had to bump astro and override yaml/esbuild just to get bun audit back to 0).
The playground only needs to render a few hook demos. Astro's SSR/content/image toolchain is far more than that requires.
Proposal
Replace the astro playground with a minimal Vite + React app.
- Same demo capability with a fraction of the dependencies → smaller lockfile, far less recurring advisory churn.
- The main demo (
playground/react/scroll-trigger-app.tsx) is already plain React .tsx and should port with little change.
- Keep it a
workspace:* consumer of packages/hamo (validates the published entry points during local dev).
Scope
Acceptance
bun audit stays at 0 without the astro-driven overrides.
- Lockfile package count drops substantially.
- Library, its CI, and the published artifact are untouched (playground is not published and not in the publish gate).
Notes
Context
The published
hamopackage is lean — zero runtime deps, ESM-only, 16.8 kB packed. The remaining dependency weight in the repo is almost entirely the astro playground: ~500 of the ~566 packages inbun.lockcome fromastro+@astrojs/check(language server, vite, esbuild, sharp, shiki, …).It's dev-only and not published, so it never reaches consumers — but it is the repo's staleness surface: every Dependabot/
bun auditfinding so far has originated in astro (the v1-prep pass had to bump astro and overrideyaml/esbuildjust to getbun auditback to 0).The playground only needs to render a few hook demos. Astro's SSR/content/image toolchain is far more than that requires.
Proposal
Replace the astro playground with a minimal Vite + React app.
playground/react/scroll-trigger-app.tsx) is already plain React.tsxand should port with little change.workspace:*consumer ofpackages/hamo(validates the published entry points during local dev).Scope
playground/on Vite + React (@vitejs/plugin-react), TypeScript 6.reactandscroll-trigger(incl. thehamo/scroll-trigger/debuggeroverlay).astro,@astrojs/react,@astrojs/checkand theyaml/esbuildroot overrides that only exist to patch astro's transitive tree.bun --filter playground buildgreen;bun run devserves the demos.astro dev --hostbound to 0.0.0.0).Acceptance
bun auditstays at 0 without the astro-driven overrides.Notes
1.0.0(feat: v1.0.0 hardening #12) — pure dev-tooling change, do it in a separate PR after v1 ships.