Skip to content

Commit 90f100c

Browse files
committed
feat(web): add Stovepipe request status UI
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.
1 parent 6e66329 commit 90f100c

64 files changed

Lines changed: 2921 additions & 8 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Makefile‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ SUBMITQUEUE_LOCAL_PROJECT = submitqueue
1515

1616
# Stovepipe compose file (single Ping-only service)
1717
STOVEPIPE_COMPOSE_FILE = $(abspath service/stovepipe/docker-compose.yml)
18+
STOVEPIPE_WEB_COMPOSE_FILE = $(abspath web/service/stovepipe/docker-compose.yml)
1819
STOVEPIPE_DEBUG_COMPOSE_FILE = $(abspath service/stovepipe/docker-compose.debug.yml)
1920

2021
# Fixed project name for local manual testing (tests use unique random names)
@@ -568,7 +569,7 @@ local-submitqueue-stop: ## Stop the SubmitQueue stack (keeps PROVIDER=git's sand
568569
local-stop: ## Stop every local stack — SubmitQueue, Stovepipe, and Runway
569570
@echo "Stopping all services..."
570571
@$(COMPOSE) -f $(COMPOSE_FILE) -f $(PROVIDER_COMPOSE_FILE) -f $(WEB_COMPOSE_FILE) -p $(SUBMITQUEUE_LOCAL_PROJECT) down
571-
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) down
572+
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -f $(STOVEPIPE_WEB_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) down
572573
@$(COMPOSE) -f $(RUNWAY_COMPOSE_FILE) -p $(RUNWAY_LOCAL_PROJECT) down
573574
@echo "Services stopped. Anonymous database volumes are not reused on the next start."
574575

@@ -586,7 +587,7 @@ local-stovepipe-debug-start: build-stovepipe-linux-debug ## Start Stovepipe unde
586587
@echo "Delve: 127.0.0.1:2345 — run launch config \"Debug: attach (dlv in docker)\""
587588

588589
local-stovepipe-logs: ## View logs from the running Stovepipe service
589-
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) logs -f
590+
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -f $(STOVEPIPE_WEB_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) logs -f
590591

591592
local-stovepipe-start: build-stovepipe-linux ## Start Stovepipe service (gRPC service + MySQL storage + MySQL queue)
592593
@echo "Starting Stovepipe service with compose..."
@@ -602,9 +603,15 @@ local-stovepipe-start: build-stovepipe-linux ## Start Stovepipe service (gRPC se
602603

603604
local-stovepipe-stop: ## Stop the Stovepipe service
604605
@echo "Stopping Stovepipe service..."
605-
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) down
606+
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -f $(STOVEPIPE_WEB_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) down
606607
@echo "Stovepipe service stopped."
607608

609+
local-stovepipe-web-start: local-stovepipe-start ## Start Stovepipe and its web UI on free ports
610+
@$(BAZEL) run //web/service/stovepipe:image_load
611+
@$(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -f $(STOVEPIPE_WEB_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) up -d --no-build --wait web-service
612+
@echo "Web UX: http://localhost:$$($(COMPOSE) -f $(STOVEPIPE_COMPOSE_FILE) -f $(STOVEPIPE_WEB_COMPOSE_FILE) -p $(STOVEPIPE_LOCAL_PROJECT) port web-service 3000 | sed 's/.*://')"
613+
@echo "Web username: test; password: $${STOVEPIPE_WEB_TOKEN:-test}"
614+
608615
# go generate does not walk the module; every tree with a //go:generate directive is listed here.
609616
GO_GENERATE_PACKAGES := \
610617
./platform/consumer/... \
@@ -698,12 +705,12 @@ tidy-go: ## Run go mod tidy
698705
@echo "Running go mod tidy..."
699706
@$(BAZEL) run @rules_go//go -- mod tidy -e
700707

701-
web-build: ## Build the web packages and deployable Next.js image with Bazel
702-
@$(BAZEL) build //web/submitqueue:pkg //web/service/submitqueue:image
708+
web-build: ## Build the web packages and deployable Next.js images with Bazel
709+
@$(BAZEL) build //web/stovepipe:pkg //web/submitqueue:pkg //web/service/submitqueue:image //web/service/stovepipe:image
703710

704711
web-check: ## Run web generation, packaging, lint, type, unit, and image checks with Bazel
705712
@$(BAZEL) test //web:check --test_output=errors
706-
@$(BAZEL) build //web/service/submitqueue:image
713+
@$(BAZEL) build //web/service/submitqueue:image //web/service/stovepipe:image
707714

708715
web-e2e-test: ## Run the Bazel-managed real-stack Playwright and axe web test
709716
@$(BAZEL) test //web/test/e2e:web_test --test_output=errors

‎web/BUILD.bazel‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,14 @@ test_suite(
2626
"//web/service/shared:lint",
2727
"//web/service/shared:test",
2828
"//web/service/shared:typecheck_typecheck_test",
29+
"//web/service/stovepipe:lint",
30+
"//web/service/stovepipe:test",
31+
"//web/service/stovepipe:typecheck_typecheck_test",
32+
"//web/stovepipe:lint",
33+
"//web/stovepipe:test",
34+
"//web/stovepipe:typecheck_typecheck_test",
2935
"//web/submitqueue:lint",
36+
"//web/test/package:stovepipe_pack_contents_test",
3037
":e2e_typecheck_typecheck_test",
3138
],
3239
)

‎web/api/BUILD.bazel‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ load("//web/tool:generate_api.bzl", "generate_web_api")
1212
package(default_visibility = [
1313
"//web:__pkg__",
1414
"//web/service/submitqueue:__pkg__",
15+
"//web/service/stovepipe:__pkg__",
1516
"//web/test/e2e:__pkg__",
1617
])
1718

@@ -29,6 +30,7 @@ generate_web_api(
2930
"//api/base/change/proto:change.proto",
3031
"//api/base/mergestrategy/proto:mergestrategy.proto",
3132
"//api/submitqueue/gateway/proto:gateway.proto",
33+
"//api/stovepipe/proto:stovepipe.proto",
3234
],
3335
)
3436

‎web/api/package.json‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818
"./submitqueue/gateway": {
1919
"types": "./dist/api/submitqueue/gateway/proto/gateway_pb.d.ts",
2020
"import": "./dist/api/submitqueue/gateway/proto/gateway_pb.js"
21+
},
22+
"./stovepipe": {
23+
"types": "./dist/api/stovepipe/proto/stovepipe_pb.d.ts",
24+
"import": "./dist/api/stovepipe/proto/stovepipe_pb.js"
2125
}
2226
},
2327
"scripts": {

0 commit comments

Comments
 (0)