Skip to content

✨ tracker: waiting-on chip shows human or bot icon instead of text qualifier - #15228

Merged
hivecommons-hive[bot] merged 2 commits into
v5from
fix/waiting-on-chip-icons
Oct 29, 2026
Merged

hivecommons-hive[bot] merged 2 commits into
v5from
fix/waiting-on-chip-icons

Conversation

@clubanderson

Copy link
Copy Markdown
Member

Fixes #15227

Before

  • Human owner: waiting on ○ @clubanderson (human · no clanker) — hollow ring + text qualifier
  • Clanker-backed contributor: waiting on ● @thatguywob — bare green dot

After

  • Human owner: waiting on 👤 @clubanderson — the same person glyph the stage chevrons use for the "Needs author" actor (STAGE_TRACKER_ICONS.human), no ring, no dot, no parenthetical. Title: Waiting on @clubanderson (human) — waiting for a human reply.
  • Clanker-backed contributor: waiting on 🤖● @thatguywob — the clanker robot head (STAGE_TRACKER_ICONS.clanker) with the existing online / offline / unknown state dot beside it (the dot does encode live presence, so it stays; online still breathes, stilled under reduced motion). Title: Waiting on @thatguywob's hive (clanker · online, last seen 2 min ago) — hive is waiting for them / … (clanker · offline 26h) — hive will adopt at 15:10 (in 38m).

Changes

  • index.html: stageTrackerPresenceDotHtml renders <span class="ham-presence ham-presence-{state} ham-presence-{kind}"> wrapping stageTrackerIcon(kind, 'ham-ico ham-presence-ico') plus, for clankers only, <i class="ham-presence-dot">. State classes now set --ham-presence-color; the dot consumes it. stageTrackerPresenceChipText drops the qualifier; stageTrackerPresenceTip leads with "Waiting on …"; the waiting chip's aria-label is the tip (no more "Waiting on — Waiting on …" doubling).
  • The same indicator appears in the adoption chip, the adopt? trigger and the Needs-human popover's presence line, so those pick up the glyph too.
  • Tests: stage_tracker_presence_test.go + stage_tracker_presence.test.js updated for the glyph / dot split and the new wording; the presence preamble now lifts STAGE_TRACKER_ICONS and stageTrackerIcon.
  • Changelog fragment changelog.d/changed-waiting-on-chip-icons.md.

Verified: go build ./... && go test ./pkg/dashboard/..., node --test pkg/dashboard/stage_tracker_presence.test.js.

…ifier

The chip at the right of a tracker row drew a hollow ring plus
"(human · no clanker)" for a human owner and a bare green dot for a
clanker-backed contributor. It now reuses the chevrons' glyphs: the person
icon (nothing else) for a human, the clanker robot head with the
online/offline/unknown state dot beside it for a contributor's hive. The
tooltip leads with "Waiting on @x (human)" / "Waiting on @x's hive
(clanker · offline 26h)" and the chip's aria-label is that tooltip.

Fixes #15227

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
@github-actions

Copy link
Copy Markdown
Contributor

Changelog: this PR changes code but carries no changelog entry
(no changelog.d/ fragment and no CHANGELOG.md edit).

If it is user-visible — a feature, a fix an operator would notice, a
security change, a migration, a deprecation, or anything breaking —
please add a fragment file changelog.d/<category>-<pr-or-slug>.md
containing exactly your entry (see changelog.d/README.md; the
category is one of added/changed/deprecated/fixed/security). Please
do not append to CHANGELOG.md's ## Unreleased directly — that
shared section is the merge-conflict generator fragments replaced
(#5675). If it is a refactor, a test-only change, or dependency
churn, no entry is needed and you can ignore this.

This is a reminder, not a gate; it never blocks a merge.

@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
#15223 ✨ Soak countdown on every soak pill, with the live timer on hover same files src/pkg/dashboard/static/index.html
#15208 🐛 fix: decidePR answers capability-gap, not adopt-supersede, for heads the App cannot adopt same files 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/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/pkg/dashboard/static/index.html
#15241 🐛 tracker: keep a closed linked issue as the row head instead of promoting the PR 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
#15122 🐛 Write-back containment: per-kind gate for every unsolicited GitHub write, with backfill guard same files src/pkg/dashboard/static/index.html
#14807 ✨ dashboard: stream Job pod logs in the terminal pane for sandbox.runtime: job agents same files src/pkg/dashboard/static/index.html
#15206 🐛 Activity Monitor: delegated adopt-supersede reports executing → adopted/could-not-adopt, routes workflow-path to the workflows blocker, re-adoption survives the mutation journal same files 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/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

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

@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
Signed-off-by: Andrew Anderson <andy@clubanderson.com>

@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 indicator change against the tree at bb99da6. The code looks correct to me; one doc it describes is left on the old design.

Correctness — checked, fine. stageTrackerPresenceDotHtml now calls stageTrackerIcon(p.kind, …); stageTrackerPresenceOf normalises kind to exactly clanker | human and STAGE_TRACKER_ICONS has both keys (index.html:14819-14820), so the glyph can't silently come back empty. The aria word now branches on kind while the tooltip still branches on state first — that would disagree if a human ever carried online/offline, but stage_tracker_presence.go:107-123 only ever sets those states together with Kind=clanker, so a human is always unknown and the two agree. Reduced-motion still kills the breathe (.ham-presence-online .ham-presence-dot { animation: none }).

Docs-currency — one gap. src/docs/dashboard-sections.md:689 ("Presence indicator on the waiting-on pill") still describes the previous design in detail: filled dot / filled square / hollow ring as the whole indicator, the tooltips @Danathar's clanker: online, … and @zoe: no clanker registered — …, the aria @hanthor: clanker offline — …, and the pill text waiting on @zoe (human · no clanker). All five of those strings change in this PR (stageTrackerPresenceTip, stageTrackerPresenceAria, stageTrackerPresenceChipText), and the PR touches no file under src/docs/. Suggest updating that paragraph in the same PR so the operator reference doesn't contradict the screen.

Note the fragment is now under the repo-root changelog.d/ at this head; the earlier head's src/changelog.d/ placement was what check-changelog-fragment.sh:48-51 rejected.

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

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

Looks correct to me. Checked the two things this leans on in the v5 tree:

  • stageTrackerIcon(p.kind, …) can only ever be asked for human or clanker: stageTrackerPresenceOf normalises kind to exactly those two (index.html:14625), and both are keys in STAGE_TRACKER_ICONS (index.html:14819-14820), so the indicator never renders an empty glyph slot.
  • The (human) title path can't collide with a live state: the backend starts every presence as unknown/human and only flips to online/offline when it also flips Kind to clanker (stage_tracker_presence.go:107-122), which is why dropping the p.state === 'unknown' guard from the word/head branches is safe.

Passing '' as the label makes the inner <svg> aria-hidden, and the outer ham-presence span keeps role="img" + the full aria-label, so the a11y surface is unchanged. No tests outside stage_tracker_presence.test.js / stage_tracker_presence_test.go assert the old (human · no clanker) text or the Waiting on — doubled label. The changed-… fragment name matches changelog.d/README.md; the guard is still pending on this head (the earlier red runs were on prior pushes).

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

@hivecommons-hive hivecommons-hive Bot added 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 labels Oct 29, 2026
@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

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 merged commit 0e41917 into v5 Oct 29, 2026
81 of 86 checks passed
@kubestellar-prow
kubestellar-prow Bot deleted the fix/waiting-on-chip-icons branch October 29, 2026 02:04
@hivecommons-hive

Copy link
Copy Markdown
Contributor
Evidence bundle `#15228bb99da6` sha256:3cae5f698b0e98ba1bac5ffb3266a1aadccd131458f1e47f4698850947f8bee3 — download from the dashboard or `hivectl review evidence #15228`.

@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

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. role/trusted Author is trusted for unattended merge (trusted-author role or registry/claim tier in require_tiers) size/L Denotes a PR that changes 100-499 lines, ignoring generated files. stage/060-reviewed Review swarm verdict approve; a gate is still pending (CI running, soak not started)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Activity Monitor: waiting-on chip should show a person/bot icon instead of the "(human · no clanker)" text qualifier

1 participant