Skip to content

feat(web): add Stovepipe request status UI - #837

Merged
mnoah1 merged 1 commit into
mainfrom
mnoah1/stovepipe-web
Oct 14, 2026
Merged

mnoah1 merged 1 commit into
mainfrom
mnoah1/stovepipe-web

Conversation

@mnoah1

@mnoah1 mnoah1 commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Why?

Stovepipe exposes request lists, status summaries, and history through RPCs, but has no browser view for inspecting them. Add a basic UI mirroring the same structure as the SubmitQueue UI: a core component that can be deployed internally via FusionJS that includes the pages / contents, and a NextJS wrapper for external use.

Screen.Recording.2026-10-13.at.1.36.11.PM.mov

What?

  • Add web/stovepipe, a React library with a request list for each configured queue and a request page showing the backend status summary followed by request history.
  • Load the summary and events together through GetRequestHistoryByID. Request IDs link to /<queue>/request/<id>; change URIs remain displayed as text. Display the backend summary directly, including state, change and baseline URIs, timestamps, and outcome reason.
  • Provide manual refresh and optional polling, retaining successful sections when a refresh fails on the same page.
  • Add a thin Next.js host under web/service/stovepipe for authentication, configuration, server-side RPC transport, and logging, plus TypeScript bindings for the existing API and Bazel build/image targets.
  • Add the local Compose overlay and make local-stovepipe-web-start, along with library, component, host, and package tests.

Test Plan

Latest validation passed all 32 targets with ./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors, including real-backend coverage of request-ID navigation, status summaries, history, and refresh.

Frontend and package checks passed as part of the validation above, which also built the Stovepipe image. On this PR:

./tool/bazel test //web:check --test_output=errors
./tool/bazel build //web/service/stovepipe:image

For manual review, run make local-stovepipe-web-start, open the printed URL, and sign in with username test and password test (or the configured STOVEPIPE_WEB_TOKEN).

Stack

  1. refactor(web): extract shared UI and host packages #842 — shared-package refactoring
  2. feat(web): add Stovepipe request status UI #837 — Stovepipe frontend
  3. test(web): add Stovepipe coverage and align E2E suites #838 — browser coverage and E2E organization
  4. refactor(web): let hosts handle request logging #844 — host logging integration

This PR's diff contains the Stovepipe additions; review the preparatory refactoring in #842. Merge in this order.

@mnoah1
mnoah1 added this pull request to stack #839 October 12, 2026 14:22
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch 3 times, most recently from 0ba6160 to 6c46e8b Compare October 12, 2026 15:13
@mnoah1
mnoah1 removed this pull request from stack #839 October 12, 2026 15:29
@mnoah1
mnoah1 changed the base branch from main to mnoah1/web-shared-foundation October 12, 2026 15:29
@mnoah1
mnoah1 added this pull request to stack #843 October 12, 2026 15:29
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch from 6c46e8b to 9e836f4 Compare October 12, 2026 15:44
@mnoah1
mnoah1 marked this pull request as ready for review October 12, 2026 15:49
@mnoah1
mnoah1 requested review from a team, behinddwalls and sbalabanov as code owners October 12, 2026 15:49
@mnoah1
mnoah1 removed this pull request from stack #843 October 12, 2026 20:08
@mnoah1
mnoah1 added this pull request to stack #847 October 12, 2026 20:08
@mnoah1
mnoah1 marked this pull request as draft October 12, 2026 20:29
@mnoah1 mnoah1 changed the title feat(web): add Stovepipe change status UI [DRAFT/WIP] feat(web): add Stovepipe change status UI Oct 12, 2026
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch from 9e836f4 to 90f100c Compare October 13, 2026 13:41
@mnoah1 mnoah1 changed the title [DRAFT/WIP] feat(web): add Stovepipe change status UI [DRAFT/WIP] feat(web): add Stovepipe request status UI Oct 13, 2026
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch 2 times, most recently from 6de4054 to 6cda37f Compare October 13, 2026 17:24
@mnoah1 mnoah1 changed the title [DRAFT/WIP] feat(web): add Stovepipe request status UI feat(web): add Stovepipe request status UI Oct 13, 2026
@mnoah1
mnoah1 marked this pull request as ready for review October 13, 2026 17:38
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch from 6cda37f to 62c5954 Compare October 13, 2026 19:31
@mnoah1
mnoah1 added this pull request to the merge queue Oct 14, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 14, 2026
Base automatically changed from mnoah1/web-shared-foundation to main October 14, 2026 15:21
Add queue request lists and request-ID detail pages using the summary and events returned by GetRequestHistoryByID. Provide a thin reference host, shared native styling, refresh, authentication, and local Compose startup.

Builds on #842.
@mnoah1
mnoah1 force-pushed the mnoah1/stovepipe-web branch from 62c5954 to 45d22cc Compare October 14, 2026 15:21
@mnoah1
mnoah1 added this pull request to the merge queue Oct 14, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 14, 2026
@mnoah1
mnoah1 added this pull request to the merge queue Oct 14, 2026
Merged via the queue into main with commit 1a4b68a Oct 14, 2026
19 checks passed
@mnoah1
mnoah1 deleted the mnoah1/stovepipe-web branch October 14, 2026 16:00
DivyanshGarg380 pushed a commit to DivyanshGarg380/submitqueue that referenced this pull request Oct 14, 2026
## Why?

Much of the structure around the new SubmitQueue UI is reusable for a
Stovepipe UI as well. This PR pulls out common components into shared
packages that can be used across both services to minimize duplication.

## What?

- Move shared React navigation, polling, timestamp formatting,
path-segment helpers, and styles into `web/platform`
(`@submitqueue/web-platform`).
- Move common Basic auth, Node gRPC transport, Next.js navigation, and
readiness checks into `web/service/shared`
(`@submitqueue/web-service-shared`). Service-specific configuration
stays in the host.
- Update SubmitQueue to import the shared implementations directly,
preserving its public exports and existing behavior.
- Share the Bazel library build, packaging, and lint setup, and update
workspace and package-consumer checks.

## Test Plan

Shared-package checks and the existing SubmitQueue browser suite passed;
the latest rebased stack passed all 32 targets with `./tool/bazel test
//web:check //web/test/e2e/submitqueue:web_test
//web/test/e2e/stovepipe:web_test --test_output=errors`. To validate
this PR independently:

```sh
./tool/bazel test //web:check //web/test/e2e:web_test --test_output=errors
```

Repository formatting, lint, module tidy, and Gazelle checks also
passed.

## Revert Plan

Revert dependent PRs uber#844, uber#838, and uber#837 first if merged, then revert
this PR to restore the original SubmitQueue package layout.

## Stack

1. uber#842 — shared-package refactoring 
2. uber#837 — Stovepipe frontend 
3. uber#838 — browser coverage and E2E organization 
4. uber#844 — host logging integration
DivyanshGarg380 pushed a commit to DivyanshGarg380/submitqueue that referenced this pull request Oct 14, 2026
## Why?

The new Stovepipe UI needs browser coverage against a real backend, in
addition to its unit and component tests. Align both services' browser
suites under `web/test/e2e/<domain>` so they follow the repository
layout and reuse stack setup helpers.

## What?

- Move the existing SubmitQueue browser suite into
`web/test/e2e/submitqueue`, preserving its browser spec and Compose
overlay.
- Add `web/test/e2e/stovepipe` with real ingestion and seeded pagination
data. Cover queue navigation and cursors, request-ID links and reloads,
backend status summaries above history, refresh, empty queues, and
accessibility. A summary with a newer state than the history verifies
that the UI does not reconstruct status from events.
- Share image loading, schema application, and port lookup helpers. Both
browser runners use the Bazel-pinned Compose executable from uber#830.
- Update Bazel targets and visibility, workspace entries, runner
commands, and test documentation for the new layout. Tests emit queue
and request-page screenshots as Bazel test outputs.

## Test Plan

Latest validation passed all 32 targets, including both services'
real-stack browser suites:

```sh
./tool/bazel test //web:check //web/test/e2e/submitqueue:web_test //web/test/e2e/stovepipe:web_test --test_output=errors
```

Repository formatting, lint, module tidy, and Gazelle checks also
passed. Browser tests require a running Docker daemon; Bazel supplies
Compose and the browser.

## Stack

1. uber#842 — shared-package refactoring 
2. uber#837 — Stovepipe frontend
3. uber#838 — browser coverage and E2E organization
4. uber#844 — host logging integration
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