Skip to content

feat(ui): give the running session row an unmistakable working mark - #5522

Open
ggbdpq wants to merge 1 commit into
apache:mainfrom
ggbdpq:feat/session-row-working-mark
Open

ggbdpq wants to merge 1 commit into
apache:mainfrom
ggbdpq:feat/session-row-working-mark

Conversation

@ggbdpq

@ggbdpq ggbdpq commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes #5519

The session rail's only in-progress cue was the 8px StatusDot's opacity breathe — too subtle to read as "running" (the issue's own analysis), and prefers-reduced-motion removed even that, leaving a running row visually identical to a settled one.

The signal gutter now wraps the dot in a spinning accent arc while a turn is working:

  • Driven by a new data-working attribute on the existing maka-session-row-signal span, set from the same isPulsing fact that already drives the pulse — so live responding and the persisted running fallback both get it, with no changes to sessionRowSignals or the status vocabulary.
  • The rotation reuses the existing maka-spin keyframe and var(--accent); no new palette decisions.
  • Under prefers-reduced-motion the animation drops and the arc remains as a static ring — the non-motion fallback the issue asks for.
  • The arc is absolutely positioned inside the existing fixed gutter (inset: -3px around the 8px dot), so rows do not shift and the one-column rail reading is untouched. The dot's colour semantics stay exactly as they are.

No design-system package change needed (@astryxdesign/core is untouched); everything lives in @maka/ui.

Verification

Check Result
New session-history-working-mark.test.tsx (responding / persisted-running / settled) red before the change (attribute absent), green after
Full @maka/ui suite (test:dist) 536/536
biome format/lint on the three touched files clean
npm run check:asf-headers pass
Visual check of the animation itself not verifiable in headless tests — the arc's geometry/legibility at 8px+3px deserves a human glance (storybook or a dev-app session run) before merge

Not run: the desktop app itself (renderer smoke needs a display session); CI covers the renderer build.

AI use

Analysis, patch, and tests done with GLM-5.3-Flash (ZCode) under human review.

Checklist

  • Reuses existing vocabulary (isPulsing), keyframes (maka-spin), and tokens (var(--accent))
  • Reduced-motion fallback is a static mark, not just "no animation"
  • Regression test fails before the change and passes after
  • No new dependency, no design-system package change, no ledger impact (@maka/ui is a sanctioned migration target)
  • ASF headers intact; biome clean on touched files

The session rail's only in-progress cue was the 8px StatusDot's opacity
breathe - too subtle to read as "running", especially in peripheral
vision, and `prefers-reduced-motion` removed even that, leaving a running
row visually identical to a settled one.

The signal gutter now wraps the dot in a spinning accent arc while a turn
is working (`data-working`, set from the same `isPulsing` fact that
already drives the pulse, so live responding and the persisted running
fallback both get it). The rotation reuses the existing `maka-spin`
keyframe; under reduced motion the animation drops and the arc stays as
a static ring, which keeps a motion-independent mark on the row. The dot,
its colour vocabulary, and the row's one-dot design are untouched; the
arc is absolutely positioned in the existing fixed gutter, so rows do not
shift.

Fixes apache#5519

Generated-by: GLM-5.3-Flash (ZCode)
@github-actions github-actions Bot added the effort/M Under 500 readable lines label Sep 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(desktop): make the running-session indicator clearly in-progress — the blue status dot pulse is too subtle

1 participant