Skip to content

[4/4] feat(web): templates, dashboard, and node views - #79

Closed
immanuel-peter wants to merge 5 commits into
kvcache-ai:mainfrom
immanuel-peter:feat/web-4-templates-dashboard-nodes
Closed

[4/4] feat(web): templates, dashboard, and node views#79
immanuel-peter wants to merge 5 commits into
kvcache-ai:mainfrom
immanuel-peter:feat/web-4-templates-dashboard-nodes

Conversation

@immanuel-peter

@immanuel-peter immanuel-peter commented Jul 29, 2026

Copy link
Copy Markdown

What

Complete the control-plane console with template build/list/detail, cluster dashboard panels, and node inventory/detail pages. After this PR, the tree matches the full feat/agentenv-webui reference.

Why

Templates, dashboard, and nodes share dashboard formatting helpers and admin-token-gated node APIs; shipping them together finishes issue #6 without bloating the earlier auth/sandbox reviews.

Related issue

Closes #6

Scope and non-goals

In scope

  • Template list/build/detail + build log viewer
  • Dashboard overview panels
  • Node list/detail (admin-token gated; degrades when token absent)

Non-goals (v1)

  • Browser terminal, filesystem browser, or in-sandbox process execution
  • Node drain/delete/scheduling configuration
  • Scheduler gRPC access (Gateway HTTP only)

Design and behavior changes

  • Dashboard aggregates Gateway sandbox/template/snapshot/node reads with manual/optional refresh
  • Node pages require admin token; other console pages remain usable without it
  • Reuses shared helpers (LocalTime, copy button, formatters) from earlier stack PRs

Compatibility and operations

  • Public API or generated protocol: N/A
  • Configuration or defaults: N/A beyond earlier stack PRs
  • Snapshot manifest, artifact layout, or storage format: N/A
  • Upgrade and rollback: additive UI-only
  • Host requirements, permissions, ports, or dependencies: same as prior stack PRs

Validation

  • make fmt
  • make clippy
  • make test-unit
  • Relevant Rust integration tests
  • make -C services test (deploy path touched in PR 1; run on full stack)
  • Generated clients/server regenerated with the documented make target
  • Documentation updated
  • Benchmarks or performance comparison completed

Commands and results:

# Validated on the full reference tip / each stacked branch build:
make fmt                                 # pass
make clippy                              # pass
make test-unit PROFILE=debug             # pass
make -C services fmt-check vet test build # pass
cd web && pnpm install --frozen-lockfile && pnpm lint && pnpm build  # pass
docker build -f deploy/docker/Dockerfile.web -t agentenv-web:validate web  # pass
mdbook build docs                        # pass

Skipped checks and reasons:

  • Rust integration tests: no **.rs / Cargo changes
  • Generated clients/server: no OpenAPI/codegen source changes
  • Benchmarks: UI-only change

Risks and reviewer notes

Stack

Merge order: #76#77#78#79

Checklist

  • The PR contains one coherent change and no unrelated formatting or refactoring.
  • New behavior is covered by tests, or I explained why testing is impractical.
  • Logs and examples contain no credentials, tokens, or private registry information.
  • I did not manually edit generated code without updating its source and regenerating it.

immanuel-peter and others added 4 commits July 29, 2026 21:30
Add the Next.js app shell, shadcn UI kit, Compose/Kubernetes web service,
and getting-started docs. Feature routes are stubs until later PRs in the
stack land connection and resource views.

Co-authored-by: Cursor <cursoragent@cursor.com>
Store Gateway URL, API key, and optional admin token in httpOnly session
cookies, validate connectivity through the Next.js connection routes, and
replace the Settings stub with the real form.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the sandbox/snapshot stubs with list, detail, create, and
lifecycle actions against the Gateway HTTP API.

Co-authored-by: Cursor <cursoragent@cursor.com>
Complete the control-plane console with template build/list/detail,
cluster dashboard panels, and node inventory/detail pages.

Co-authored-by: Cursor <cursoragent@cursor.com>
Refuse redirect-following with auth headers, require a fresh API key when
the Gateway URL changes, and return JSON errors from connection routes
instead of unhandled 500s.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

Add a Web UI for the AgentENV control plane

2 participants