Provisioning job page header is crowded and phones show the basic facts last #86

Closed
opened 2026-10-08 19:11:23 -04:00 by goddard · 2 comments
Collaborator

Several rows of controls and status sit between the title and the outcome, while the requester and timing are in a sidebar card that ends up near the bottom on phones.

  • +page.svelte:104-107 shows the operation ID with a Copy button, a Back link and a Copy link button.
  • +page.svelte:109 shows "Live · Updates every 5 seconds" on every operation. The page polls every 5 seconds even after the operation finishes (+page.svelte:60), so a finished record always says Live.
  • +page.svelte:114 adds an "Operation outcome" label inside the outcome card.
  • Below 1000 px the context column stacks after the Activity log (+page.svelte:232). On a 390 px phone, the requester and times start about 2,550 px down a 3,200 px page.

Screenshots

From the synthetic UI preview. Progress records and a launch recipe were added to the disposable fixture database using the labels the worker records. "After" images are mockups made in an uncommitted copy.

Desktop: Before:
Desktop: Before

Desktop: After (mockup):
Desktop: After (mockup)

Phone: Before:
Phone: Before

Phone: After (mockup):
Phone: After (mockup)

Fix

  • Add one summary line under the title, e.g. "Requested by Maxis · 21:13 · took 1m 0s"
  • Show the freshness line only while the operation is active
  • Move the operation ID and copy buttons into a collapsed "Technical details" section, along with the agent command ID and related-work source IDs
  • Remove the "Operation outcome" label
Several rows of controls and status sit between the title and the outcome, while the requester and timing are in a sidebar card that ends up near the bottom on phones. - `+page.svelte:104-107` shows the operation ID with a Copy button, a Back link and a Copy link button. - `+page.svelte:109` shows "Live · Updates every 5 seconds" on every operation. The page polls every 5 seconds even after the operation finishes (`+page.svelte:60`), so a finished record always says Live. - `+page.svelte:114` adds an "Operation outcome" label inside the outcome card. - Below 1000 px the context column stacks after the Activity log (`+page.svelte:232`). On a 390 px phone, the requester and times start about 2,550 px down a 3,200 px page. **Screenshots** _From the synthetic UI preview. Progress records and a launch recipe were added to the disposable fixture database using the labels the worker records. "After" images are mockups made in an uncommitted copy._ Desktop: Before: ![Desktop: Before](https://gitea.thewrightserver.net/attachments/535723e4-c957-461a-9ae2-5e984f5b9f15) Desktop: After (mockup): ![Desktop: After (mockup)](https://gitea.thewrightserver.net/attachments/760569a3-3157-4e2d-8948-a489a71f2fdb) Phone: Before: ![Phone: Before](https://gitea.thewrightserver.net/attachments/e1982a8e-5d7a-479a-9192-c9c4833ec7d7) Phone: After (mockup): ![Phone: After (mockup)](https://gitea.thewrightserver.net/attachments/b3d79d12-2d6a-481f-8147-952d69e740b7) **Fix** - [x] Add one summary line under the title, e.g. "Requested by Maxis · 21:13 · took 1m 0s" - [x] Show the freshness line only while the operation is active - [x] Move the operation ID and copy buttons into a collapsed "Technical details" section, along with the agent command ID and related-work source IDs - [x] Remove the "Operation outcome" label
goddard added the
priority
low
type/ux
labels 2026-10-08 19:11:23 -04:00
josh was assigned by goddard 2026-10-08 19:11:23 -04:00
Author
Collaborator

Reviewed 56b4043b6e. All four fix items are done, so I'm closing this.

Checklist

  • Summary line under the title. It now reads "Requested by Maxis · Oct 9, 2026, 9:06:34 AM EDT · took 1m 0s" (+page.svelte:109), with the finish time in its tooltip.
  • Freshness only while active. The freshness line renders only for active operations (+page.svelte:117), and polling now runs only while the operation is active (+page.svelte:61). Finished records get a Retry button if an update fails.
  • Technical details. A collapsed section at the end of the sidebar now holds the operation ID, finish time, submission time, agent command ID, collection launch ID, source IDs and Copy link (+page.svelte:194-208). The command ID is gone from the host-agent step and the raw source ID from Related work, so each appears once.
  • "Operation outcome" label removed. The outcome card opens with the status badge (+page.svelte:124).

Review notes

  • Good extra: ui-patterns.md now documents the summary, Technical details and active-only polling, so other detail pages can follow it.
  • In the synthetic preview on a 390 px phone, the requester, start time and duration now sit directly under the title, and Technical details is a single closed row at the end.
  • The 3 related test files pass locally (233 tests), and npm run check reports 0 errors.
  • Minor and non-blocking: a failed watchdog restart can still change after it finishes. Its recovery can be released (recovery.ts:93-101) or handed to a rebuild (requests.ts:290-299). With polling stopped, the "Recovery capacity held" badge and the "View recovery operation" link only update on reload. Polling while progress.recovery.state is held would cover it.
  • Minor and non-blocking: the duration now shows twice, as "took 1m 0s" in the summary and "Recorded duration" in the outcome card (+page.svelte:152). The commit adds no tests for the new header, Technical details or the polling change.
Reviewed 56b4043b6e21663493c177c366e8f735cd03a437. All four fix items are done, so I'm closing this. **Checklist** - [x] **Summary line under the title.** It now reads "Requested by Maxis · Oct 9, 2026, 9:06:34 AM EDT · took 1m 0s" (`+page.svelte:109`), with the finish time in its tooltip. - [x] **Freshness only while active.** The freshness line renders only for active operations (`+page.svelte:117`), and polling now runs only while the operation is active (`+page.svelte:61`). Finished records get a Retry button if an update fails. - [x] **Technical details.** A collapsed section at the end of the sidebar now holds the operation ID, finish time, submission time, agent command ID, collection launch ID, source IDs and Copy link (`+page.svelte:194-208`). The command ID is gone from the host-agent step and the raw source ID from Related work, so each appears once. - [x] **"Operation outcome" label removed.** The outcome card opens with the status badge (`+page.svelte:124`). **Review notes** - Good extra: `ui-patterns.md` now documents the summary, Technical details and active-only polling, so other detail pages can follow it. - In the synthetic preview on a 390 px phone, the requester, start time and duration now sit directly under the title, and Technical details is a single closed row at the end. - The 3 related test files pass locally (233 tests), and `npm run check` reports 0 errors. - Minor and non-blocking: a failed watchdog restart can still change after it finishes. Its recovery can be released (`recovery.ts:93-101`) or handed to a rebuild (`requests.ts:290-299`). With polling stopped, the "Recovery capacity held" badge and the "View recovery operation" link only update on reload. Polling while `progress.recovery.state` is `held` would cover it. - Minor and non-blocking: the duration now shows twice, as "took 1m 0s" in the summary and "Recorded duration" in the outcome card (`+page.svelte:152`). The commit adds no tests for the new header, Technical details or the polling change.
Author
Collaborator

Reviewed ff589afe5e. This follow-up covers all three notes from my last review, so the issue stays closed.

Checklist

  • Held recovery stays current. provisioningNeedsRefresh (provisioning-presentation.ts:20) keeps the page polling for active operations, and for finished ones whose recovery is still held (+page.svelte:62). A release or a hand-off to a rebuild now appears without a reload, and the page isn't marked live while it waits.
  • Duration shown once. "Recorded duration" and "Total elapsed" are gone from the outcome card. The summary line shows "took …" or "… elapsed" (+page.svelte:113).
  • Tests. ui-provisioning-detail.test.ts covers the summary line, the closed Technical details, the duration rules, and the refresh policy for every state, including held recovery until it's released or transferred.

Review notes

  • The 5 affected test files pass locally (105 tests), the full suite passes (208 files, 2,625 tests), and npm run check reports 0 errors.
Reviewed ff589afe5e6ad916cc2421311f41f2cf22e59e1f. This follow-up covers all three notes from my last review, so the issue stays closed. **Checklist** - [x] **Held recovery stays current.** `provisioningNeedsRefresh` (`provisioning-presentation.ts:20`) keeps the page polling for active operations, and for finished ones whose recovery is still `held` (`+page.svelte:62`). A release or a hand-off to a rebuild now appears without a reload, and the page isn't marked live while it waits. - [x] **Duration shown once.** "Recorded duration" and "Total elapsed" are gone from the outcome card. The summary line shows "took …" or "… elapsed" (`+page.svelte:113`). - [x] **Tests.** `ui-provisioning-detail.test.ts` covers the summary line, the closed Technical details, the duration rules, and the refresh policy for every state, including held recovery until it's released or transferred. **Review notes** - The 5 affected test files pass locally (105 tests), the full suite passes (208 files, 2,625 tests), and `npm run check` reports 0 errors.
Sign in to join this conversation.