Skip to content

afx Tower UI: gate-action button uses checkmark icon even when the action isn't 'approve' #933

@amrmelsayed

Description

@amrmelsayed

What's wrong

In the afx Tower UI's builder list, each builder has a gate-action button next to it. The button currently uses a checkmark icon, which implies the action is always "approve."

But the button is actually contextual — depending on the builder's current state, clicking it can offer different options:

  • "Approve" (the obvious one)
  • "View plan" (when the builder is at plan-approval)
  • "Run Dev" (when the builder is at dev-approval — matches the canonical action label in VSCode's GATE_ACTIONS for cross-surface consistency)
  • Possibly others depending on the protocol's gate set

A checkmark is wrong for those non-approve actions. "View plan" especially — it's a read action, not an approve action — and using ✓ to label a read shortcut is misleading.

Why it matters

  • Cognitive load: the architect glances at a builder, sees a checkmark, mentally primes for "approve" — then has to pause and read the dropdown to remember it's actually "view plan" or whatever else. The icon's promise doesn't match the action.
  • Misclick risk: in a session with multiple builders at different gate states, an architect might tap the checkmark thinking they're approving and instead open a view (or worse — if the menu defaults to approve, accidentally approve when they meant to view).
  • Visual scanability: when scanning many builders, having different icons per actual action surface lets the architect's eye triage at a glance ("that one's ready to approve, that one wants my review, that one's awaiting builder work").

Proposed fix

Make the icon state-dependent, matching the actual gate action surfaced:

Builder state Icon Meaning
At spec-approval / plan-approval gate, no review action yet 📄 (or 👁) "View" — read the spec/plan first
At dev-approval gate 🛠 (or similar) "Run Dev" — start the dev server for the worktree (matches VSCode's canonical action label)
At pr-gate, PR ready "Approve" — the existing icon is correct here
Awaiting builder action (not at gate) (no button / dim) Nothing for architect to do

Or alternatively, a single neutral icon (like ▶ or ⚙) for "gate action available" and rely on the dropdown text to describe what the action is — but the per-state icon approach is more scannable.

Out of scope

  • Reshaping the dropdown content itself (this issue is about the affordance icon)
  • Backend gate-state inference (the UI presumably already knows which gate the builder is at — this is purely a label/icon choice)

Acceptance

  • Gate-action button icon reflects the actual action being offered, not always ✓
  • An architect glancing at the Tower UI can triage builder states at a glance without opening each dropdown
  • At minimum: differentiate "approve" (✓) from non-approve actions
  • Action labels match VSCode's canonical GATE_ACTIONS map (packages/vscode/src/notifications/gate-toast.ts:104) where defined: View Plan for plan-approval, Run Dev for dev-approval, Approve for pr-gate

Metadata

Metadata

Assignees

Labels

area/dashboardArea: Tower web dashboard package (@cluesmith/codev-dashboard, React app served by Tower)

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions