Repository navigation
feat(web): right-click context menus on tree rows and grid rows - #385
Merged
Merged
Conversation
Contributor
🛑 Fix loop escalated — human attention neededThis PR has stayed red on the same commit through 6 automated 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: ui-smoke Raw failure evidence (from check-run annotations): Remove the |
Ctrl/Cmd+K opens a command palette that searches VMs, CTs, nodes, pools,
views and actions ("stop web-prod", "migrate db-prod", "create VM").
Items run from it are remembered in localStorage and rank first. The
palette is a native <dialog> with a combobox/listbox, so screen readers
follow the active result.
Single-key shortcuts, ignored while typing in a field or a console:
? shortcut overlay, / focus the new tree filter, c console, s start/stop,
g d datacenter. Read-only callers are offered no action that mutates,
and the Create CT button is now hidden from them like Create VM.
The ui-smoke "command-palette" check presses Ctrl+K, types a demo VM
name, presses Enter and asserts that VM is selected; it saves
command-palette.png and shortcuts.png, which the workflow uploads.
No build step and no new dependency (ADR-0004): palette.js is a native
ES module embedded with the rest of static/.
Hive-Run: #349
Hive-Plan: #349 web UI command palette
Hive-Spec: #349#acceptance-command-palette
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: James Reilly <jreilly1821@gmail.com>
After Escape the palette returns focus to an input, where ? is text and not a shortcut, so the overlay check failed intermittently on CI. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TexZnEN3jq4jRUi8T3zZuY Signed-off-by: hanthor <hanthor@users.noreply.github.com>
Add right-click and keyboard (ContextMenu key, Shift+F10) context menus to all tree rows (VMs, containers, nodes, namespaces, pools, hostpower) and grid rows (VM table, CT table, template table). The context menu follows each object's capabilities (start, stop, reboot, console, migrate, snapshot, clone, convert to template, tags, delete), positions itself within the viewport boundaries, is navigable with arrow keys / Home / End / Escape / Enter, and closes on Escape or an outside click. For nodes, the menu integrates with host-power plugins (power on/off) and surfaces cordon/drain items. For VMs, keyboard and menu equivalents for drag gestures (assign to pool, move to backend) are provided for accessibility. In read-only mode (body.read-only), all mutating actions are hidden/omitted. A smoke check in scripts/ui-smoke.mjs exercises the context menu against the demo fleet and verifies the state change. Closes #343 Hive-Run: #343 Hive-Plan: web-ui-context-menus Hive-Spec: web-ui#context-menus Signed-off-by: James Reilly <jreilly1821@gmail.com>
A poll re-render replaced the rows under an open menu. The smoke check
read disabled="" as enabled and tried to click a disabled Stop item, and
its has-text("Start") also matched Restart.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TexZnEN3jq4jRUi8T3zZuY
Signed-off-by: hanthor <hanthor@users.noreply.github.com>
Attach the VM menu to grid rows via a new mountGrid decorateRow hook, and read the row text in the smoke check because grid column order is user-configurable (the grid-columns check reorders it). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TexZnEN3jq4jRUi8T3zZuY Signed-off-by: hanthor <hanthor@users.noreply.github.com>
Contributor
✅ Escalation cleared — back in the automated laneCI is green on the current head — returning this PR to the automated lane. The |
hanthor
force-pushed
the
feat/web-context-menus-343
branch
from
October 2, 2026 00:55
5823aad to
b933718
Compare
hanthor
added a commit
to hanthor/corral-1
that referenced
this pull request
Oct 2, 2026
…ore bulk actions Rebuilds tuna-os#374 on top of the command palette (tuna-os#369), inventory grid (tuna-os#373) and context menus (tuna-os#385), which already cover the tree filter box, the shared tree/grid selection set and the pool/backend menu equivalents. What this adds: - Shift-click selects the visible range from the anchor, Ctrl/Cmd-click toggles; selected rows are marked and the grid follows. - The tree filter also matches tags and IP addresses. - Arrow/Home/End move focus between visible tree rows. - Bulk Snapshot, Tag and Delete next to Start/Stop/Restart. - A bulk-select smoke check. Fixes tuna-os#344 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TexZnEN3jq4jRUi8T3zZuY Signed-off-by: hanthor <hanthor@users.noreply.github.com>
hanthor
added a commit
that referenced
this pull request
Oct 2, 2026
Server View node rows become drop targets: dropping a VM opens the migrate picker with that node preselected and a live/offline note, and confirming runs the existing migrate endpoint. Drag and drop is unified in pools.js (makeDraggable/dropZone) with validity checks, so invalid drops (node not ready, already there, non-KubeVirt VM, pool it is already in, backend that cannot receive it) are refused with the reason as a tooltip and a red outline. Read-only mode disables dragging. The demo cluster now honours a migrate target: it records the nodeSelector patch, moves the VM on virtctl migrate, and answers get vmi, so the drag-migrate smoke check round-trips. Reworked from #384 on top of #385: menu entries come from #385, and the export picker, pickNode selectors and console pop-out are kept. Fixes #345 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TexZnEN3jq4jRUi8T3zZuY Signed-off-by: hanthor <hanthor@users.noreply.github.com>
Member
Author
|
Rebased onto #369 (stack order: #369 → #385 → #374 → #384 → #370). Fixes pushed:
🤖 Generated with Claude Code |
This was referenced Oct 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds right-click and keyboard context menus (Menu key / Shift+F10) on tree rows and grid rows across the Web UI:
Details & Accessibility
ArrowUp,ArrowDown,Home,End,Enter,Space), and close onEscape,Tab, or outside click.body.read-only), all mutating actions are omitted and hidden via CSS.context-menuacceptance check inscripts/ui-smoke.mjsverifying right-click menu trigger, Escape close, and stateful power action.Closes #343
— hive: backend=agy model=gemini-3.7-flash-high effort=low
🐝 Hive Agent:
contributor| SHA:e314736