Skip to content

feat(web): bottom dock with Tasks / Cluster log / Events tabs (#342) - #386

Open
hanthor wants to merge 3 commits into
mainfrom
feat/web-bottom-dock-342
Open

hanthor wants to merge 3 commits into
mainfrom
feat/web-bottom-dock-342

Conversation

@hanthor

@hanthor hanthor commented Sep 30, 2026

Copy link
Copy Markdown
Member

Summary

Implements the Proxmox-style bottom dock with multi-tab support for Tasks, Cluster log, and Events (#342).

What's Changed

  • Multi-Tab Dock:
    • Tasks: Active and recent operations with started time, user, action, object target links, duration, status pills, error log inspection button, and task cancellation for running tasks.
    • Cluster log: Comprehensive cluster activity log streamed from /api/tasklog with timestamps, users, actions, target links, and failure diagnostics.
    • Events: Live Kubernetes events for the active selection (e.g. selected VM) or cluster context, highlighting warning events.
  • Task Cancellation & Diagnostics:
    • Registered POST /api/tasks/{id}/cancel endpoint and task cancellation handlers in Go backend.
    • Added modal dialog (<dialog id="task-log-dialog">) to inspect full failure and execution logs for failed tasks.
    • Gated mutating actions (such as cancel) so read-only callers (body.read-only) cannot perform mutations.
  • Collapsed Dock Badges:
    • Displays running and failed count badges on the dock header while collapsed.
  • Smoke Tests:
    • Added named check dock-tasks in scripts/ui-smoke.mjs verifying tab switching, task creation on VM state transitions, completion into history, target link navigation, and screenshot capture.

Closes #342

β€” hive: backend=agy model=gemini-3.7-flash-high effort=low


🐝 Hive Agent: contributor | SHA: fcf4907

Add Proxmox-style bottom dock hosting Tasks, Cluster log, and Events
tabs with live progress, cancel support, object target navigation,
failed task log inspection modal, and collapsed badge counts.

- pkg/web/tasklog.go: add User, Log, Cancelable fields to TaskEntry,
  support cancelable tasks with cancellation callbacks, and caller logging
- pkg/web/server.go: add POST /api/tasks/{id}/cancel handler
- pkg/web/static/index.html & app.js: add multi-tab dock with Tasks,
  Cluster log, and Events views, object links on targets, task log dialog,
  live task event stream, and collapsed status badges
- pkg/web/static/style.css: dock tabs, badges, target links, and read-only gating
- scripts/ui-smoke.mjs: add dock-tasks acceptance check and screenshot

Fixes #342

Hive-Run: #342
Hive-Plan: web-bottom-dock
Hive-Spec: web-ui#bottom-dock
Signed-off-by: James Reilly <jreilly1821@gmail.com>
@hanthor-hive-agent

Copy link
Copy Markdown
Contributor

πŸ›‘ Fix loop escalated β€” human attention needed

This PR has stayed red on the same commit through 6 delivered fix re-dispatches with no new commit pushed (1 distinct red head seen). The hive has stopped dispatching further automated fixes for it.

Failing checks: lint

Raw failure evidence (from check-run annotations):

lint: Error return value of `(*encoding/json.Decoder).Decode` is not checked (errcheck)
lint: Error return value of `r2.Body.Close` is not checked (errcheck)
lint: Error return value of `cResp.Body.Close` is not checked (errcheck)
lint: Error return value of `resp.Body.Close` is not checked (errcheck)

Remove the needs-human label after addressing the root cause to return the PR to the automated fix lane.

hanthor and others added 2 commits October 3, 2026 07:55
golangci-lint errcheck (new-code gate) flagged the unchecked
resp.Body.Close and json Decode calls in TestTaskCancel.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: James Reilly <jreilly1821@gmail.com>
@hanthor

hanthor commented Oct 3, 2026

Copy link
Copy Markdown
Member Author

Addressed the escalation:

  • lint (errcheck): TestTaskCancel in pkg/web/tasklog_test.go now checks the Body.Close and json.Decode errors (ad5e298), using the defer func() { _ = resp.Body.Close() }() pattern already in local_test.go. Locally, golangci-lint v2.13.2 reports 0 issues for both CI gates: repo-wide without errcheck, and errcheck with --new-from-merge-base=origin/main.
  • Merge conflict with main (4fa8ffb): style.css keeps main's read-only selectors plus .task-actions button.danger, and drops this branch's copy of the Multiview block because main already has it. ui-smoke.mjs keeps the dock check and main's bulk-select and dashboard-layout checks. The dock screenshot now goes to ${SHOTS}/. demo_test.go keeps this branch's longer list of host-dependent doctor checks.
  • go test ./... passes. CI will run ui-smoke on the new head.

The needs-human label can come off once CI is green.

πŸ€– Generated with Claude Code


🐝 Hive Agent: contributor | SHA: ad5e298

@hanthor-hive-agent

Copy link
Copy Markdown
Contributor

βœ… Escalation cleared β€” back in the automated lane

CI is green on the current head β€” returning this PR to the automated lane.

The needs-human label has been removed; the fix loop owns this PR again.

1 similar comment
@hanthor-hive-agent

Copy link
Copy Markdown
Contributor

βœ… Escalation cleared β€” back in the automated lane

CI is green on the current head β€” returning this PR to the automated lane.

The needs-human label has been removed; the fix loop owns this PR again.

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.

Web UI: bottom dock with Tasks / Cluster log / Events tabs (live progress, cancel, history)

1 participant