Web UI queue dashboard hides empty-state copy during credential fail-closed state #458

Closed
opened 2026-07-07 14:52:04 -05:00 by jcwalker3 · 1 comment
Owner

Problem

The post-merge audit of PR #445 found that /queue correctly shows a "Queue unavailable" error when Gitea credentials are missing, but it also still renders "No open items." under Open pull requests and Open issues.

That is misleading: the queue was never fetched. The page must not imply an empty queue when it failed closed due to missing credentials.

Context

  • PR #445 merged successfully at ee8e9a0247d3c8a72e63f990d5d0a9ff21cb53cf.
  • Issue #429 is closed.
  • Post-merge audit passed overall; this is the one remaining low-severity UX defect.
  • Symptom: credential-missing state shows the error banner and the empty-state copy simultaneously.

Repro

  1. Run the web UI without Gitea credentials for gitea.prgs.cc.
  2. Open /queue, or call load_queue_snapshot with get_auth_header returning None.
  3. Observe:
    • "Queue unavailable: Gitea credentials unavailable…" is shown.
    • "No open items." is also shown under Open pull requests and Open issues.

Expected

  • If fetch_error is set, suppress the empty-queue copy and show pagination/inventory as unavailable or skipped.
  • Only show "No open items." when a successful fetch returns zero rows with pagination proof (e.g. inventory_complete: true).

Scope

  • webui/queue_views.py
  • tests/test_webui_queue_dashboard.py

Acceptance criteria

  1. Credential-missing path shows the fail-closed error.
  2. Credential-missing path does not show "No open items."
  3. Credential-missing path does not imply inventory was fetched.
  4. Successful empty inventory still shows "No open items."
  5. Successful empty inventory includes pagination/inventory proof.
  6. Existing queue-dashboard tests remain green.
  7. Add or update a test that fails on the current misleading fail-closed copy.
  8. No Gitea mutation, credential exposure, or live network behavior is introduced.

Non-goals

  • Do not redesign the queue dashboard.
  • Do not change queue classification logic.
  • Do not change Gitea authentication behavior.
  • Do not reopen #429.

Relation

Follow-up defect from #445 (Closes #429). Child of tracker #425.

## Problem The post-merge audit of PR #445 found that `/queue` correctly shows a "Queue unavailable" error when Gitea credentials are missing, but it **also still renders "No open items."** under *Open pull requests* and *Open issues*. That is misleading: the queue was never fetched. The page must not imply an empty queue when it failed closed due to missing credentials. ## Context - PR #445 merged successfully at `ee8e9a0247d3c8a72e63f990d5d0a9ff21cb53cf`. - Issue #429 is closed. - Post-merge audit passed overall; this is the one remaining **low-severity UX defect**. - Symptom: credential-missing state shows the error banner **and** the empty-state copy simultaneously. ## Repro 1. Run the web UI without Gitea credentials for `gitea.prgs.cc`. 2. Open `/queue`, or call `load_queue_snapshot` with `get_auth_header` returning `None`. 3. Observe: - "Queue unavailable: Gitea credentials unavailable…" is shown. - "No open items." is *also* shown under *Open pull requests* and *Open issues*. ## Expected - If `fetch_error` is set, suppress the empty-queue copy and show pagination/inventory as unavailable or skipped. - Only show "No open items." when a **successful** fetch returns zero rows with pagination proof (e.g. `inventory_complete: true`). ## Scope - `webui/queue_views.py` - `tests/test_webui_queue_dashboard.py` ## Acceptance criteria 1. Credential-missing path shows the fail-closed error. 2. Credential-missing path does not show "No open items." 3. Credential-missing path does not imply inventory was fetched. 4. Successful empty inventory still shows "No open items." 5. Successful empty inventory includes pagination/inventory proof. 6. Existing queue-dashboard tests remain green. 7. Add or update a test that fails on the current misleading fail-closed copy. 8. No Gitea mutation, credential exposure, or live network behavior is introduced. ## Non-goals - Do not redesign the queue dashboard. - Do not change queue classification logic. - Do not change Gitea authentication behavior. - Do not reopen #429. ## Relation Follow-up defect from #445 (Closes #429). Child of tracker #425.
jcwalker3 added the status:in-progress label 2026-07-07 15:06:53 -05:00
Author
Owner

Issue claim heartbeat

<!-- gitea-issue-claim-heartbeat:v1 --> **Issue claim heartbeat** - kind: claim - issue: #458 - branch: feat/issue-458-queue-fail-closed-copy - phase: claimed - profile: prgs-author - pr: none - blocker: none - next_action: create worktree and begin implementation
sysadmin removed the status:in-progress label 2026-07-07 15:19:15 -05:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Scaled-Tech-Consulting/Gitea-Tools#458