Skip to content

feat(scheduler): add reusable Jelly spring - #2

Merged
Xuepoo merged 5 commits into
mainfrom
carryctx/ctx-0002-jelly-spring
Aug 1, 2026
Merged

feat(scheduler): add reusable Jelly spring#2
Xuepoo merged 5 commits into
mainfrom
carryctx/ctx-0002-jelly-spring

Conversation

@Xuepoo

@Xuepoo Xuepoo commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

What and why

Bakudan needs a real renderer-agnostic squash/stretch contract before its Jelly control can ship. This adds deterministic spring state to preallocated pool slots without introducing UI, Canvas, DOM, or per-frame allocations.

Changes

  • add preallocated/reset jellyScaleX, jellyScaleY, and jellyVelocity slot state
  • add bounded Scheduler.exciteJelly() and showcaseJelly integration
  • excite new comments and pointer repulsion while preserving existing preset motion
  • document the public API and add a minor changeset

Public API and behavior compatibility

New required PoolSlot fields and Scheduler controls are additive. Jelly is disabled by default; disabled schedulers reset active slots to exact neutral state. Existing preset position, rotation, and opacity semantics remain unchanged.

Verification

  • bun run format:check
  • bun run lint
  • bun test — 47 pass, 0 fail, 504 assertions
  • bun run build
  • npm pack --dry-run

Checklist

  • Added a Changeset for a public package/API/behavior change.
  • Updated README.md.
  • Added deterministic pool, scheduler, and preset tests.
  • Kept the package renderer-agnostic and independent from VectoJS, Canvas, DOM, and browser layers.
  • Wrote documentation and non-obvious code comments in English.

@Xuepoo
Xuepoo merged commit ea5c9bc into main Aug 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant