Skip to content

✨ dashboard: merged ledger rolls like an odometer and the rising glyph eases slower - #15249

Merged
hivecommons-hive[bot] merged 1 commit into
v5from
feat/merged-counter-odometer
Oct 29, 2026
Merged

hivecommons-hive[bot] merged 1 commit into
v5from
feat/merged-counter-odometer

Conversation

@clubanderson

Copy link
Copy Markdown
Member

Fixes #15248

What

  • Odometer roll. 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 an aria-hidden overlay 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 = 900 ms, 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).
  • Slower flight. STAGE_TRACKER_CELEBRATE_FLY_MS 900 → 2000 with cubic-bezier(0.22, 0.61, 0.36, 1); STAGE_TRACKER_CELEBRATE_PIN_MS 2500 → 3500 so the merged row outlasts the landing. Reduced motion keeps the fade-in-place path.
  • Docs (dashboard-sections.md, the ⚙ hint) and a changed- changelog fragment.

Tests

  • New 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).
  • TestStageTrackerCelebrateNode had a hard-coded tick(2000) for the old 1.35 s fallback; it now ticks FLY_MS * 1.5 + 1 like its siblings.
  • Verified visually in headless Chrome: the overlay's final frame aligns with the static digits and the pill width is identical before, during and after the roll (scratch harness not committed).

…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>
@kubestellar-prow kubestellar-prow Bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Oct 29, 2026
@kubestellar-prow

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign clubanderson for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubestellar-prow kubestellar-prow Bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Oct 29, 2026
@hivecommons-hive

Copy link
Copy Markdown
Contributor

@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.

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Open PR overlap check

Base branch: v5

Conflicts are checked with every PR merged onto the current tip of v5, so a PR that only needs a rebase is not reported as conflicting with its siblings.

PR Title Relation Files
#15267 🐛 tracker: closed superseded PRs no longer render as rows same files src/pkg/dashboard/static/index.html
#15256 🐛 clanker PRs with a human changes-requested review show Returned to contributor, not Sentinel alert same files src/docs/dashboard-sections.md
src/pkg/dashboard/static/index.html
#15270 🐛 fix(kick-logs): archive kick log when the turn ends, not only at the next rotation point same files src/pkg/dashboard/static/index.html
#15240 🐛 Never adopt a person's PR: owner/human-authored PRs return to their author instead of the contributor-offline lane same files src/pkg/dashboard/static/index.html
#15216 🐛 Sentinel: a dashboard Approve releases the head for good; skip Prow-rejected /lgtm + /approve same files src/docs/dashboard-sections.md
#15122 🐛 Write-back containment: per-kind gate for every unsolicited GitHub write, with backfill guard same files src/pkg/dashboard/static/index.html
#15251 🐛 tracker: show Merging in the merge gate for at least the toast lifetime before ✓ same files src/docs/dashboard-sections.md
src/pkg/dashboard/stage_tracker_cues_test.go
src/pkg/dashboard/static/index.html
#15186 🐛 Activity Monitor: one coherent post-decision state for Let hive decide rows; 060 reviewed in CI / Review same files src/docs/dashboard-sections.md
src/pkg/dashboard/static/index.html
#15104 🐛 Activity Monitor: Rebase, then merge as maintainer; fixer owns parked conflicting PRs; dismiss self-inflicted changes_requested same files src/docs/dashboard-sections.md
src/pkg/dashboard/stage_tracker_cues_test.go
src/pkg/dashboard/static/index.html
#15134 🐛 Delegated decision on a capability gap: model the blocker, stop the un-park/re-park loop, name the missing App permission same files src/docs/dashboard-sections.md
src/pkg/dashboard/static/index.html
#15253 🐛 decision toast: issue decisions no longer read as 'approved for merge' same files src/pkg/dashboard/static/index.html
#15219 🐛 fix: preserve human and owner PRs during delegated decisions same files src/pkg/dashboard/static/index.html

@hivecommons-hive hivecommons-hive Bot added author/human A person pushed this PR themselves dco All commits are DCO signed-off role/trusted Author is trusted for unattended merge (trusted-author role or registry/claim tier in require_tiers) stage/050-review-pending Review swarm requested; awaiting a verdict for the current head labels Oct 29, 2026
This was referenced Oct 29, 2026

@hivecommons-hive hivecommons-hive Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)%10 walk gives 7→12 = [' ','1'],['7',…,'2'] and 199→200 the three wrapping columns the test asserts; falls, equal text, and changed static runs return null, so only rises roll.
  • stageTrackerOdometerSet keeps the real value in textContent / data-odo-value and only overlays an aria-hidden span, so width, screen readers and existing textContent assertions 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:7356 on v5), so data-odo-value persists across stageTrackerMergedCountDraw calls and the first-draw-is-instant path only fires once per page load.
  • --cue-fly-ms is set from STAGE_TRACKER_CELEBRATE_FLY_MS (index.html:19359 on v5), so the CSS fallback change to 2000ms and the JS constant stay in step; PIN_MS is read through the constant at its two call sites (19271, 19332), and dashboard-sections.md now 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 via stageTrackerReducedMotion() (index.html:16164).

No findings.

— hive: agent=reviewer backend=copilot model=claude-fable-5.1 copilot=1.0.88

@hivecommons-hive hivecommons-hive Bot added stage/095-pre-merge-soak Lane admitted; the pre-merge soak window is running before the merge is attempted stage/060-reviewed Review swarm verdict approve; a gate is still pending (CI running, soak not started) and removed stage/050-review-pending Review swarm requested; awaiting a verdict for the current head stage/095-pre-merge-soak Lane admitted; the pre-merge soak window is running before the merge is attempted labels Oct 29, 2026
@hivecommons-hive

Copy link
Copy Markdown
Contributor

stage 095-pre-merge-soak → 060-reviewed: required-check-pending:Sign-off survives the squash

@hivecommons-hive hivecommons-hive Bot added stage/095-pre-merge-soak Lane admitted; the pre-merge soak window is running before the merge is attempted stage/060-reviewed Review swarm verdict approve; a gate is still pending (CI running, soak not started) and removed stage/060-reviewed Review swarm verdict approve; a gate is still pending (CI running, soak not started) stage/095-pre-merge-soak Lane admitted; the pre-merge soak window is running before the merge is attempted labels Oct 29, 2026
@hivecommons-hive
hivecommons-hive Bot merged commit c12596b into v5 Oct 29, 2026
91 of 105 checks passed
@kubestellar-prow
kubestellar-prow Bot deleted the feat/merged-counter-odometer branch October 29, 2026 03:01
@hivecommons-hive

Copy link
Copy Markdown
Contributor
Evidence bundle `#1524963b59fa` sha256:a5277f02ea5c23ce7eb99bbeef12e08f430a2980dc113de2eda25dd35cbd2e30 — download from the dashboard or `hivectl review evidence #15249`.

@hivecommons-hive

Copy link
Copy Markdown
Contributor

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.

@github-actions

Copy link
Copy Markdown
Contributor

Thank you for your contribution! Your PR has been merged.

We'd love to hear how your experience was: share feedback

@hivecommons-hive hivecommons-hive Bot removed role/trusted Author is trusted for unattended merge (trusted-author role or registry/claim tier in require_tiers) stage/060-reviewed Review swarm verdict approve; a gate is still pending (CI running, soak not started) labels Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author/human A person pushed this PR themselves dco All commits are DCO signed-off dco-signoff: yes Indicates the PR's author has signed the DCO. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ dashboard: Merged ledger should roll like an odometer and the rising glyph should ease slower

1 participant