Consolidated tracker for the non-blocking items deferred from #12 (v1.0.0). None of these block the v1 release — they're refinements/decisions for a 1.x. Each is self-contained below; check off as they land.
1. Decouple lenis from the main entry
v1 ships lenis as a required peer because the root hamo entry statically re-exports useScrollTrigger, which statically imports lenis/react — so an optional peer wasn't a robust guarantee (could fail to resolve in Vite dev / SSR for consumers who skipped it). Make it genuinely optional again:
2. useRect: scroll offset coordinate space
3. useScrollTrigger: stale progress on resize without scroll
4. Upgrade playground to astro 7 (blocked on upstream regression)
Supersedes #15, #17, #18 (closed in favour of this single tracker). Related: #12 (v1.0.0).
Consolidated tracker for the non-blocking items deferred from #12 (v1.0.0). None of these block the v1 release — they're refinements/decisions for a 1.x. Each is self-contained below; check off as they land.
1. Decouple
lenisfrom the main entryv1 ships
lenisas a required peer because the roothamoentry statically re-exportsuseScrollTrigger, which statically importslenis/react— so an optional peer wasn't a robust guarantee (could fail to resolve in Vite dev / SSR for consumers who skipped it). Make it genuinely optional again:useScrollTrigger/useTransformbehind ahamo/scroll-triggersubpath (like the debugger already is) so the main entry never importslenis. Breaking import move — cheap now while the hooks are new.lenisinstalled — verify in Vite dev and SSR, not just a tree-shaken prod bundle (that path is what publint/attw/local builds miss, since lenis is in devDeps).2.
useRect: scroll offset coordinate spacescrollTop/scrollLeft(packages/hamo/src/use-rect/utils.ts) accumulate scroll past the intended wrapper boundary up to the document root. Pending a coordinate-space decision (wrapper-relative vs document-relative); current behavior is tested and intentional for v1. If wrapper-relative is correct, bound the traversal and lock it with tests.3.
useScrollTrigger: stale progress on resize without scrollupdate()is a stableuseEffectEventand its effects depend only on[lenis, update, ...deps], so a resize / geometry change without a subsequent scroll doesn't recompute progress until the next scroll/transform tick. Pre-existing since the feat: useScrollTrigger, useTransform, useEffectEvent #11 port (verified not a regression; surfaced by the cross-model review during v1 hardening). Decide whether to recompute on resize (add the derived start/end inputs to the effect deps, or recompute via the existinguseWindowSize/useRectsignals) or document it as intended.4. Upgrade playground to astro 7 (blocked on upstream regression)
@astrojs/react6 + vite 8 breaks dev-mode React-island hydration:[astro-island] ... react_jsx-runtime.js does not provide an export named 't'. The production build is fine, butbun run devrenders the islands blank (clearing the vite cache does not help — it's an interop bug, not staleness). Revisit once astro7.0.x/@astrojs/react6.0.xpatch the jsx-runtime interop, then re-verify dev hydration in-browser.Supersedes #15, #17, #18 (closed in favour of this single tracker). Related: #12 (v1.0.0).