Skip to content

A task with no transfer data shows no progress text - #1748

Merged
fog-workflows[bot] merged 1 commit into
working-1.6from
fix/task-progress-empty-cell
Sep 10, 2026
Merged

fog-workflows[bot] merged 1 commit into
working-1.6from
fix/task-progress-empty-cell

Conversation

@mastacontrola

Copy link
Copy Markdown
Member

What / why

The Active Tasks grid's column 8 render (fog.task.list.js) always built
timeElapsed / timeRemaining dataCopied of dataTotal (bpm/min) plus a
progress bar, whatever the task's state. A queued task, a snapin task, or
any other non-imaging task never populates the transfer fields, so the
cell rendered literally / of (/min) with an empty bar instead of
nothing. A forum reporter's screenshot showed this on two queued "All
Snapins" tasks.

The render now guards on row.dataTotal: when it is empty/falsy there is
no transfer to describe, so the cell returns '' instead of assembling
the string and the bar. Otherwise the output is unchanged.

Census

Grepped packages/web/management/js for the same ' of ' + '/min)'
renderer shape and for the field names it depends on
(dataCopied/dataTotal/timeElapsed/timeRemaining). Only one copy
exists: fog.task.list.js column 8. No other file (host Tasks tab,
dashboard, etc.) needed the same guard.

Gate test

Added tests/task-progress-cell-empty-without-data.test.php, modeled on
tests/module-state-select-is-legible.test.php. It pins that the
row.dataTotal guard runs before the ' of ' string is assembled.

Proved it's a gate by temporarily removing the guard and re-running:

FAIL (5 of 5):
  - the column 8 progress-cell render was found
  - row.dataTotal is checked
  - the ' of ' string is still built for the non-empty case
  - the dataTotal guard runs BEFORE the " of " string is assembled
  - the guard returns an empty string, not partial markup

Restored the guard and re-ran:

ok  5 checks passed

Other

  • FOG_BCACHE_VER bumped 365 -> 366 (JS changed).
  • Both phpstan passes clean, unscoped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F8UmmbQHjihkSkd3r94Jgw

The Active Tasks grid's column 8 render always built "timeElapsed /
timeRemaining dataCopied of dataTotal (bpm/min)" plus a progress bar,
whatever the task's state. A queued task, a snapin task, or any other
non-imaging task never populates the transfer fields, so the cell read
literally "/ of (/min)" with an empty bar instead of nothing. Reported
on the forum with a screenshot of two queued "All Snapins" tasks.

Guard the render on row.dataTotal: when it is empty/falsy there is no
transfer to describe, so the cell returns '' instead of assembling the
string and the bar. A census of packages/web/management/js for the same
' of ' + '/min)' shape found only this one copy.

Bump FOG_BCACHE_VER for the JS change, and add a gate test that pins the
guard running before the ' of ' string is built.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F8UmmbQHjihkSkd3r94Jgw
@fog-workflows
fog-workflows Bot enabled auto-merge September 10, 2026 10:25
@fog-workflows
fog-workflows Bot added this pull request to the merge queue Sep 10, 2026
Merged via the queue into working-1.6 with commit 0810558 Sep 10, 2026
11 checks passed
@fog-workflows
fog-workflows Bot deleted the fix/task-progress-empty-cell branch September 10, 2026 10:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant