studio-engine 0.109.0.rc1 → 0.109.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/app/assets/tailwind/studio_engine/engine.css +4 -3
- data/app/javascript/studio/nav_collapse.js +13 -10
- data/lib/studio/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5b95e4cc7f8aeaf2e359866325e0b92a1c9e8b9423887926e1ebc95ffc17daa4
|
|
4
|
+
data.tar.gz: 4b07cea968a230a4aef384bbf736a3bf8f681ad6fd971fcd52502d31239b2fa8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e4853fe48dac32f64fcb454ddac47980b21f0c1d81847232a29e308a9c945028626a9e69645efbd1a8014f1fe6f5ebbc6586bc1b4d7a88b9cd862d1e6ab44d07
|
|
7
|
+
data.tar.gz: 6632118e62c5194f70bee1ddbd8680513dd73142506b3657b093c4df3826bd56cfc72ae1d74cbab1caac61c0a453596a88497c85ca940e35884ea610fa76be09
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ The format is [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). This pro
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- **A held navbar eases its collapse again.** 0.108.0 held the header's
|
|
10
|
+
footprint so the page never moves, and with it let the header follow the
|
|
11
|
+
scroll position exactly. On a hard flick that crossed the whole ramp in a
|
|
12
|
+
frame or two, the header then snapped full to compact (or back) in one frame,
|
|
13
|
+
which read as a jerk on the hub's `/deployments`. The `--nav-max-step` cap
|
|
14
|
+
(5px of header travel per frame) now applies to held headers too, so a flick
|
|
15
|
+
plays as a short animation of about 8-9 frames. The page still never moves:
|
|
16
|
+
the hold keeps the document's height whatever `--nav-p` is. After a hard
|
|
17
|
+
flick to the top, page background shows between the header and the content
|
|
18
|
+
for those frames while the header grows back. A slow scroll is unchanged.
|
|
19
|
+
|
|
7
20
|
## 0.109.0 — 2026-10-15
|
|
8
21
|
|
|
9
22
|
### Added
|
|
@@ -630,9 +630,10 @@ body.modal-open .studio-app-banner {
|
|
|
630
630
|
single frame on a flick — measured 39px in turf-monster, the full
|
|
631
631
|
178 -> 139. navCollapse() converts this to --nav-p units off
|
|
632
632
|
--nav-ramp's 3x relation to the collapse total, so one number covers
|
|
633
|
-
every band. It
|
|
634
|
-
|
|
635
|
-
|
|
633
|
+
every band. It eases every header, held or not: a held header cannot
|
|
634
|
+
move the page (studio/nav_collapse, the hold), so for it the cap only
|
|
635
|
+
shapes the header's own motion, and a flick plays as a short animation
|
|
636
|
+
rather than a one-frame jump. */
|
|
636
637
|
--nav-max-step: 5px;
|
|
637
638
|
--nav-pad: calc(1.5rem - 1rem * var(--nav-p, 0)); /* py-6 -> py-2 */
|
|
638
639
|
--nav-logo-size: calc(3rem - 1rem * var(--nav-p, 0)); /* 48px -> 32px */
|
|
@@ -35,12 +35,17 @@
|
|
|
35
35
|
// finger moved it, and only the header itself changes size. A header that
|
|
36
36
|
// is not in flow (fixed or absolute) is left alone: it never moved the page.
|
|
37
37
|
//
|
|
38
|
-
// (Held, the
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
38
|
+
// (Held, the short-page guard below is off: the document no longer
|
|
39
|
+
// shortens, so the flap it prevents cannot happen. The per-frame CAP stays
|
|
40
|
+
// on. It was written to stop a flick dragging the page, and the hold already
|
|
41
|
+
// does that; what it buys a held header is the header's own motion. With the
|
|
42
|
+
// cap off, a flick that crossed the ramp in one frame snapped the header
|
|
43
|
+
// from full to compact in one frame, which read as a jerk on the hub's
|
|
44
|
+
// /deployments (2026-10-15). Capped, the header eases over a few frames, and
|
|
45
|
+
// the page under it still holds, because the hold keeps the document's
|
|
46
|
+
// height whatever --nav-p is. Easing open after a flick to the top leaves
|
|
47
|
+
// page background between the header and the content for those frames, the
|
|
48
|
+
// space the header is growing back into.)
|
|
44
49
|
//
|
|
45
50
|
// passive + rAF: the listener never blocks the compositor and coalesces a
|
|
46
51
|
// burst of scroll events (iOS momentum fires far above 60Hz) into one write
|
|
@@ -85,7 +90,7 @@ export const DEFAULT_MAX_STEP = 5;
|
|
|
85
90
|
// innerHeight window.innerHeight
|
|
86
91
|
// reduce prefers-reduced-motion matches
|
|
87
92
|
// held the header holds its footprint (see the hold above): no
|
|
88
|
-
// short-page guard
|
|
93
|
+
// short-page guard; the per-frame cap still eases the header
|
|
89
94
|
//
|
|
90
95
|
// Answers { p, settling }: the progress to publish, and whether the frame
|
|
91
96
|
// clamp left it short of where the scroll position wants it (so the caller
|
|
@@ -107,8 +112,6 @@ export function collapseFrame({ y, p, ramp, maxPx, scrollHeight, innerHeight, re
|
|
|
107
112
|
} else {
|
|
108
113
|
var t = Math.min(1, y / ramp);
|
|
109
114
|
target = t * t * (3 - 2 * t);
|
|
110
|
-
// Held, the progress IS the scroll position: nothing to cap.
|
|
111
|
-
if (held) snap = true;
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
// THE RATE LIMIT: how far the collapse may travel in ONE frame.
|
|
@@ -139,7 +142,7 @@ export function collapseFrame({ y, p, ramp, maxPx, scrollHeight, innerHeight, re
|
|
|
139
142
|
if (snap) {
|
|
140
143
|
// A guard refusal and a reduced-motion state are DECISIONS, not
|
|
141
144
|
// motion; ramping them would animate the very thing each exists to
|
|
142
|
-
// avoid.
|
|
145
|
+
// avoid.
|
|
143
146
|
next = target;
|
|
144
147
|
} else {
|
|
145
148
|
var maxStep = (3 * maxPx) / ramp;
|
data/lib/studio/version.rb
CHANGED