feat(stdlib): motion binding — animateMini/tween/spring/ease (bindings #4 → ●)#436
Merged
Merged
Conversation
🔍 Hypatia Security ScanFindings: 81 issues detected
View findings[
{
"reason": "Action actions/checkout@v6 needs attention",
"type": "unpinned_action",
"file": "publish-jsr.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action denoland/setup-deno@v2 needs attention",
"type": "unpinned_action",
"file": "publish-jsr.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in affine-vscode-publish.yml",
"type": "unknown",
"file": "affine-vscode-publish.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
…#4 → ●) Promotes bindings #4 (motion) from ◐ scaffold to ● usable by adding the four deferred surfaces flagged in docs/bindings-roadmap.adoc: - motionAnimateMini — lightweight variant (no autoplay / no thenable). - motionTween — one-shot from/to interpolation. - motionSpring — physics-based spring with stiffness/damping/mass. - motionEase — easing-function constructor + opaque Easing type. stdlib/Motion.affine gains the four extern fns plus the new opaque `Easing` type. The Deno-ESM codegen prelude gains `__as_motionAnimateMini` / `__as_motionTween` / `__as_motionSpring` / `__as_motionEase` runtime helpers (each resolves the host method on globalThis.__as_motion at call time so a partial mock still works); the lowering table gains the four matching extern entries. The motion_smoke fixture is extended (same .affine + .harness.mjs pair — no new files) with smokeAnimateMini / smokeTween / smokeSpring / smokeEase wrappers and arg-routing + return-value assertions for each. All 8 codegen-deno harnesses pass locally. The bindings-roadmap row #4 flips ◐ → ● and the rationale lists the full surface; remaining follow-ups (typed keyframe shapes, typed transform properties, migration to a dedicated affinescript-motion package) are explicitly out of scope for the ● promotion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
02515ac to
e7dd3de
Compare
🔍 Hypatia Security ScanFindings: 81 issues detected
View findings[
{
"reason": "Action actions/checkout@v6 needs attention",
"type": "unpinned_action",
"file": "publish-jsr.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action denoland/setup-deno@v2 needs attention",
"type": "unpinned_action",
"file": "publish-jsr.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in affine-vscode-publish.yml",
"type": "unknown",
"file": "affine-vscode-publish.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in casket-pages.yml",
"type": "unknown",
"file": "casket-pages.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "unknown",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Promotes bindings roadmap row #4 (motion) from
◐ scaffoldto● usableby landing the four deferred surfaces flagged indocs/bindings-roadmap.adoc:motionAnimateMini— lightweight variant of animate (no autoplay, no built-in thenable).motionTween— one-shot interpolation between explicitfrom/tovalues.motionSpring— physics-based spring animation (stiffness/damping/mass).motionEase+ opaqueEasingtype — easing-function constructor by canonical motion name.Changes
stdlib/Motion.affine: 4 newextern fndeclarations + the newextern type Easingopaque carrier; module docstring updated to reflect the now-comprehensive surface.lib/codegen_deno.ml: 4 new runtime helpers (__as_motionAnimateMini/__as_motionTween/__as_motionSpring/__as_motionEase) inserted right after__as_motionCancelin the prelude; 4 matching lowering-table entries inserted afterb "motionCancel". Each helper resolves the host method onglobalThis.__as_motionlazily, so partial mocks still work for the rest of the surface.tests/codegen-deno/motion_smoke.{affine,harness.mjs}: extended in place withsmokeAnimateMini/smokeTween/smokeSpring/smokeEasewrappers + arg-routing and return-value assertions for every new extern (the original animate + cancel assertions are preserved).docs/bindings-roadmap.adoc: row ci: Bump actions/cache from 5.0.2 to 5.0.4 #4 status◐ scaffold→● usable; rationale lists the full extern surface, calls out the smoke fixture, and notes the remaining (out-of-scope-for-●) follow-ups (typed keyframe shapes, typed transform-property surface, migration to a dedicatedaffinescript-motionpackage).Test plan
dune build bin/main.execlean.bash tools/run_codegen_deno_tests.sh— all 8 harnesses pass, including the extendedmotion_smokewith 4 new wrappers and full ease/spring/tween/animateMini coverage.Notes for reviewers
lib/codegen_deno.mlto keep rebase-against-bindings-ci: Bump dtolnay/rust-toolchain from f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 to efa25f7f19611383d5b0ccf2d1c8914531636bf9 #2/ci: Bump softprops/action-gh-release from 2.5.0 to 2.6.1 #3 trivial.Closes part of bindings roadmap #4.
🤖 Generated with Claude Code