@@ -44,7 +44,7 @@ const ACTION_BUTTON_STYLES = [
4444] . join ( ' ' )
4545
4646/**
47- * The running hatch: the squares' own rhythm, sheared right , scrolling.
47+ * The running hatch: the squares' own rhythm, sheared left , scrolling.
4848 *
4949 * Indeterminate, not a progress fill — it spans the whole run and the pattern
5050 * marches (`animate-running-hatch-scroll` shifts the background by exactly one
@@ -61,15 +61,15 @@ const ACTION_BUTTON_STYLES = [
6161 * One element spanning the row has one gradient and therefore one phase, which
6262 * is what lets the 24/2 rhythm hold all the way along.
6363 *
64- * Stops are measured along the 105 ° axis rather than horizontally, so both carry
65- * a `sin(105 °)` factor: 24px of mark is 23.18px of stop, and the 26px pitch is
64+ * Stops are measured along the 75 ° axis rather than horizontally, so both carry
65+ * a `sin(75 °)` factor: 24px of mark is 23.18px of stop, and the 26px pitch is
6666 * 25.11px of period. Writing 24/26 directly would render ~3.5% wide and drift
6767 * out of the squares' rhythm across the row.
6868 *
6969 * `--surface-2` is the same fill the slots used; only where it is painted moved.
7070 */
7171const RUNNING_FILL =
72- 'bg-[repeating-linear-gradient(105deg ,var(--surface-2)_0_23.18px,transparent_23.18px_25.11px)]'
72+ 'bg-[repeating-linear-gradient(75deg ,var(--surface-2)_0_23.18px,transparent_23.18px_25.11px)]'
7373
7474/** Left edge of the fill: clears the run/stop button, which stays live mid-run. */
7575const RUNNING_FILL_INSET_SWELL = 'left-[42px]'
@@ -333,15 +333,19 @@ export const ActionBar = memo(
333333 isSwell &&
334334 actionId === 'delete' &&
335335 "!w-[40px] [clip-path:path('M16.25_0A8_8_0_0_1_22.4_2.88L36.59_19.9A2.5_2.5_0_0_1_34.66_24L4_24A4_4_0_0_1_0_20L0_4A4_4_0_0_1_4_0Z')] [&_svg]:-translate-x-[6px] [&_svg]:translate-y-px" ,
336+ /*
337+ * A bystander card's actions dim mid-run because they are not available
338+ * — but `run` is Stop while the workflow runs, and `canStopWorkflow` is
339+ * true on every card, running or not. Dimming it styled a live control
340+ * as a dead one: it recovered full opacity only once the pointer was
341+ * already on it, so it read as unclickable right up until you clicked.
342+ * It keeps the ordinary resting and hover chrome instead.
343+ */
336344 isWorkflowRunning &&
337- ! isRunning && [
345+ ! isRunning &&
346+ actionId !== 'run' && [
338347 '!bg-transparent !opacity-25' ,
339- actionId === 'run'
340- ? [
341- 'hover-hover:!bg-[var(--surface-2)] hover-hover:!text-[var(--text-primary)] hover-hover:!opacity-100' ,
342- 'focus-visible:!bg-[var(--surface-2)] focus-visible:!text-[var(--text-primary)] focus-visible:!opacity-100' ,
343- ]
344- : 'hover-hover:!bg-transparent dark:hover-hover:!bg-transparent' ,
348+ 'hover-hover:!bg-transparent dark:hover-hover:!bg-transparent' ,
345349 ] ,
346350 /* The hatch is painted across the row, not per slot — a slot only clears
347351 itself out of its way. */
0 commit comments