Watch
1
0
Fork
You've already forked souveraine
0

zone: the long swipe travels to home instead of back to the detent

settleTo gave home and overview the same end shift, so a release past the
multitasking detent animated *down* to it, held the overview fully present, and
teleported — the release never reached its end target. detent is the boundary
between the two (rail: pullTo(travel, missionAt)), and presence is built to
reach 0 at clock 2, which is where home lives.
This commit is contained in:
Fimeg 2026-08-15 22:59:24 -04:00
commit 68c353ad10

View file

@ -282,15 +282,29 @@ Singleton {
// Release the gesture at a named destination, travelling there first.
function settleTo(target) {
const endShift = (target === "last_zone") ? 0 : 1;
const from = root.shift;
// Where on the *clock* each destination lives not on `shift`, which
// saturates at 1 and cannot express home at all.
//
// `presence` two properties up is written to rise to the detent and then
// fall away "over the same distance", which puts home at clock 2. This
// settled it at 1 for both home and overview, so a long swipe ran the
// short swipe's motion, held the multitasking view fully present, and
// then teleported the release never travelled to its end target, which
// is the same defect `lineage-trebuchet`'s quickstep is cited for.
// Measured on the glass 2026-08-15: *"the long full swipe up is
// completely fucked, only the short swipe partially works."*
const endClock = target === "last_zone" ? 0 : target === "home" ? 2 : 1;
// The clock, not the clamped carry: past the detent `shift` is pinned at
// 1, so a release from a home-bound pull computed a duration for travel
// it had already done.
const from = root.clock;
settleAnim.stop();
root._settleTarget = target;
root.settling = true;
settleAnim.from = root.travel;
settleAnim.to = endShift * root.detent;
settleAnim.to = endClock * root.detent;
settleAnim.duration = Math.min(root.maxSwipeDuration,
Math.abs(Math.round((endShift - from)
Math.abs(Math.round((endClock - from)
* root.maxSwipeDuration * root.swipeDurationMultiplier)));
settleAnim.start();
}