Skip to content

Name the rerun controls after what they rerun - #1179

Merged
skipi merged 2 commits into
mainfrom
mk/front/rerun-labels
Aug 14, 2026
Merged

skipi merged 2 commits into
mainfrom
mk/front/rerun-labels

Conversation

@skipi

@skipi skipi commented Aug 14, 2026 •

Copy link
Copy Markdown
Collaborator

What

The two rerun controls on the workflow page describe themselves in ways that invert their actual scope. The header button reads Rerun but starts a completely new workflow from the same commit. The button on a failed pipeline row reads Rebuild Pipeline but is the narrow one — it re-runs only what did not pass inside that single pipeline. Reading the labels, "Rebuild Pipeline" is the one that sounds like a full restart, so people reach for whichever button is nearest and get the scope they did not want. That is the confusion reported in #686.

This renames both controls after what they rerun and makes the difference legible without a click:

  • Header: Rerun → Rerun Workflow, tooltip "Starts a fresh run of the whole workflow from this commit". Same on the job page header, where the tooltip also keeps the "including this job" note.
  • Pipeline row: Rebuild Pipeline → Rerun Failed Jobs, tooltip "Reruns only the jobs in this pipeline that did not pass, keeping the ones that did. Use Rerun Workflow above for a fresh run of everything."

That row tooltip previously existed as a plain title attribute and did not surface in the tree. It now uses data-tippy-content, the mechanism the rest of the app uses: app.js binds those on page load, and Pollman already destroys and rebinds tooltips around each partial refresh, so the tooltip survives the tree's polling. Button sizes are unchanged — the row keeps btn-tiny, matching Stop Pipeline next to it.

Follow-through so the rename does not leave stale copy behind: the tree JS in-flight label (Rebuilding... → Rerunning...) and its error-restore label, the workflow editor's rerun-granularity section (which named the button in its explanatory line), and the docs passage describing both buttons — that passage additionally claimed the header button "restarts the whole pipeline from the beginning", which is wrong; it restarts the workflow.

Routes, permissions, feature gating and behaviour are untouched. The row button still renders only behind ui_partial_ppl_rebuild, so organizations without that feature see a single unambiguous Rerun Workflow.

Scope

This is a deliberate low-effort interim step: it fixes the vocabulary, not the layout. The larger piece of work — collapsing both controls into one pipeline-scoped Rerun menu that enumerates the pipelines with failures — is being explored separately (#1178 carries the playground it is designed in). The vocabulary picked here is the vocabulary that design lands on, so this rename is not thrown away when the menu ships.

Verification

Copy-only change; no spec asserts any of the renamed strings. The guest-path assertion in workflow_controller_test.exs that refutes the presence of a rerun button is unaffected — anonymous and guest viewers render workflow/_workflow.html.eex, which has no rerun control at all. Relying on CI for compile, format, lint and the front suites.

Left for a follow-up

docs/docs/using-semaphore/pipelines.md embeds img/rerun-pipeline.jpg, a screenshot showing the old labels. It needs to be retaken once this is deployed. The versioned CE/EE docs are intentionally not touched — released versions still ship the old labels.

Stop Pipeline, in the same row, still has no tooltip at all.

The workflow header button and the pipeline-row button did the opposite of
what their labels suggested: the header "Rerun" starts a whole new workflow,
while "Rebuild Pipeline" only re-runs what did not pass in that one pipeline.
Users reading the labels reached for the wrong one (#686).

Rename both to say their scope — "Rerun Workflow" and "Rerun Failed Jobs" —
add tooltips that spell out the difference and point at the other control,
and raise the pipeline-row button from btn-tiny to btn-small so the
pipeline-scoped action is not the smallest thing in the row.

Follow-through on the rename: the in-flight and error-restore labels in the
tree JS, the workflow editor's rerun-granularity copy that names the button,
and the docs passage describing both buttons (which also claimed the header
button restarts a pipeline rather than the workflow).

Behaviour, routes and permissions are unchanged.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Raising the pipeline-row rerun button to btn-small made the tree rows read
wrong, so it goes back to btn-tiny alongside Stop Pipeline.

The tooltip on that button was a plain title attribute, which is not the
mechanism the app uses and did not surface in the tree. Switch it to
data-tippy-content: app.js binds those at page load, and Pollman already
destroys and rebinds tooltips around every partial refresh, so the tree
keeps its tooltip across polls.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@skipi
skipi marked this pull request as ready for review August 14, 2026 10:15
@skipi
skipi enabled auto-merge (squash) August 14, 2026 10:15
@skipi
skipi merged commit 18a3e5a into main Aug 14, 2026
2 checks passed
@skipi
skipi deleted the mk/front/rerun-labels branch August 14, 2026 10:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants