Repository navigation
✨ dashboard: merged ledger rolls like an odometer and the rising glyph eases slower - #15249
Conversation
…h eases slower The Activity Monitor's Merged pill now rolls its numbers like a mileage odometer when they rise: stageTrackerOdometerSet overlays an aria-hidden set of digit columns over the plain text and each digit that rose slides up through the digits it passes (STAGE_TRACKER_ODOMETER_MS, ease-out), then the overlay goes. The plain text is always the final value, so the width never moves and screen readers and tests see no roll. The first draw, a fall (today -> 0 at midnight), reduced motion and text whose words changed just set the value. The merge glyph's flight slows from 0.9 s to 2 s on an ease-out and the merged row is pinned 3.5 s so it outlasts the landing. Fixes #15248 Signed-off-by: Andrew Anderson <andy@clubanderson.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
@clubanderson is auto-promoted for contributor-lane merging on this PR: the last 5 merged PRs by this author in this hive's repositories have no revert or sentinel-alert evidence. CI, reviewer verdict, diff fences, soak, holds and branch protection still apply. |
Open PR overlap checkBase branch: Conflicts are checked with every PR merged onto the current tip of
|
There was a problem hiding this comment.
Read the diff against v5's index.html and the celebrate test harness. Looks correct to me.
What I checked:
stageTrackerOdometerPlan: the pad-to-new-width + per-digit(d+1)%10walk gives7→12=[' ','1'],['7',…,'2']and199→200the three wrapping columns the test asserts; falls, equal text, and changed static runs returnnull, so only rises roll.stageTrackerOdometerSetkeeps the real value intextContent/data-odo-valueand only overlays anaria-hiddenspan, so width, screen readers and existingtextContentassertions are unaffected; a mid-roll rewrite clears the old timer/overlay first (one overlay at a time, as the test asserts).- The chip is static markup (
index.html:7356onv5), sodata-odo-valuepersists acrossstageTrackerMergedCountDrawcalls and the first-draw-is-instant path only fires once per page load. --cue-fly-msis set fromSTAGE_TRACKER_CELEBRATE_FLY_MS(index.html:19359onv5), so the CSS fallback change to 2000ms and the JS constant stay in step;PIN_MSis read through the constant at its two call sites (19271, 19332), anddashboard-sections.mdnow says 3.5 s / ≈2 s to match.- Reduced motion:
.ham-odo-strip { transition: none }was added to the existing media query, and the setter short-circuits viastageTrackerReducedMotion()(index.html:16164).
No findings.
— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88
|
stage 095-pre-merge-soak → 060-reviewed: required-check-pending:Sign-off survives the squash |
|
Merged by hive contributor-lane auto-merge: CI green for ≥30m, reviewer verdict approve, @clubanderson was auto-promoted after 5 clean merged PRs in this hive's repositories. |
|
Thank you for your contribution! Your PR has been merged. We'd love to hear how your experience was: share feedback |
Fixes #15248
What
stageTrackerOdometerSet(el, text)writes the plain value into.ham-merged-n/.ham-merged-sub(so width, screen readers and the existing tests see the final number at once) and, when a number rose, appends anaria-hiddenoverlay of digit columns (.ham-odo) over it; each digit that rose slides up through the digits it passes (.ham-odo-strip,--odo-shift,STAGE_TRACKER_ODOMETER_MS = 900ms, ease-out), then the overlay is removed.stageTrackerOdometerPlan(from, to)is the pure part: static runs (" today · ", " this week") and unchanged digits sit still, carries wrap past 9, a number that grew a digit rolls its new column in from a blank, a number that fell (midnight resets today) or whose words changed just sets. No roll on the first draw or under reduced motion (.ham-odo-strip { transition: none }as well).STAGE_TRACKER_CELEBRATE_FLY_MS900 → 2000 withcubic-bezier(0.22, 0.61, 0.36, 1);STAGE_TRACKER_CELEBRATE_PIN_MS2500 → 3500 so the merged row outlasts the landing. Reduced motion keeps the fade-in-place path.dashboard-sections.md, the ⚙ hint) and achanged-changelog fragment.Tests
TestStageTrackerOdometerNode: the plan (9127→9128, 199→200 carry, 7→12 grown digit, the day rollover, falls, foreign words), the setter (first draw plain, overlay in/out, restart mid-roll, fall, reduced motion) and the chip path (landing rolls both numbers, a redraw mid-roll keeps the overlay).TestStageTrackerCelebrateNodehad a hard-codedtick(2000)for the old 1.35 s fallback; it now ticksFLY_MS * 1.5 + 1like its siblings.