Skip to content

Redesign queue pages and fix issue #244#253

Merged
marcpope merged 2 commits intomarcpope:mainfrom
c0dr1ver:redesign-queue-pages
May 6, 2026
Merged

Redesign queue pages and fix issue #244#253
marcpope merged 2 commits intomarcpope:mainfrom
c0dr1ver:redesign-queue-pages

Conversation

@c0dr1ver
Copy link
Copy Markdown
Contributor

@c0dr1ver c0dr1ver commented May 6, 2026

Summary

Redesigns the Queue list and Queue detail pages so they visually align with the Schedules page treatment.

Changes

  • Adds a compact queue shell with schedule-style pills, gradient card headers, and accented metric cards on /queue.
  • Reworks the completed-job duration bar into a laser-style progress indicator that keeps duration informative by width.
  • Uses a red laser variant for failed jobs in Recently Completed.
  • Refreshes /queue/{id} with a summary hero, meta pills, gradient section headers, and matching active-progress panel.
  • Keeps the PR scope limited to:
    • src/Views/queue/index.php
    • src/Views/queue/detail.php
Screenshot from 2026-05-06 16-59-46 Screenshot from 2026-05-06 16-59-53 Screenshot from 2026-05-06 17-06-44

Validation

  • php -l src/Views/queue/index.php
  • php -l src/Views/queue/detail.php
  • git diff --check -- src/Views/queue/index.php src/Views/queue/detail.php

Testing

  • Tested on Docker
  • Tested on bare metal

@marcpope marcpope merged commit 4b2b67c into marcpope:main May 6, 2026
marcpope added a commit that referenced this pull request May 7, 2026
- Admin summary API: filter latest backup to terminal statuses only;
  was reporting in-flight queued/sent/running jobs as last_backup_result
  and ordering by COALESCE(completed/started/queued) which actively
  preferred in-flight jobs over the last truly finished one.
- Queue page: header counters and metric tiles now refresh from
  /queue/json alongside the tables. Previously the slot counters,
  24h totals, and avg-duration drifted to stale values within 10s
  of page load while the live tables below them updated.
- Schedules: when the latest failure for a plan happened in a prior
  week, fall back to the most recent past block in the current week
  so the error state stays visible after the week rolls over. The
  strict 'scheduled before failure' rule was silently dropping the
  marker because every current-week block's scheduled_at_utc sat
  after the failure timestamp.
marcpope added a commit that referenced this pull request May 7, 2026
#244 black box: drop h-100 on Job Details/Stats cards so each sizes to
its own content. The cards were forcing equal height, leaving phantom
dark filler at the bottom of whichever side had fewer rows. Also remove
the dead inline 'background-color: #2c3e50' on the active progress
panel (the .queue-progress-panel gradient was already overriding it
with !important) and the now-unused dark-mode .queue-stats-panel rule.

#254 summary endpoint: rewrite the latest-job lookup as ROW_NUMBER()
over a derived table instead of a per-row correlated subquery; expose
plan.enabled, repository_id, and repository_name so consumers can tell
disabled plans apart and correlate to a repo without a second call.

#251 schedule controller: bound both the median-duration query and
the latest-terminal-job query to the last 30 days and limit results
via window functions; previously each page load scanned every
historical job for every plan ever scheduled. Failed schedule blocks
on today's lane now keep a clickable minimum width — they were
previously allowed to shrink to a 1-pixel sliver as time elapsed.

#253 cosmetics: humanize task_type ('s3 sync' instead of 's3_sync')
and escape it in both server-rendered and JS-built rows; restore
.bg-opacity-10 utility on metric tile icon backgrounds for
consistency with the dashboard; drop the hardcoded .queue-pill
'active' class which was decorative-only and didn't track the
in-page section.
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.

2 participants