Skip to content

UX direction A: review route, side peek, palette verbs - #168

Merged
epheo merged 6 commits into
mainfrom
feat/ux-direction-a
Sep 2, 2026
Merged

UX direction A: review route, side peek, palette verbs#168
epheo merged 6 commits into
mainfrom
feat/ux-direction-a

Conversation

@epheo

@epheo epheo commented Sep 2, 2026

Copy link
Copy Markdown
Owner

One PR for the agreed direction: keep the familiar anatomy (tree, tabs, right-click, task dock), change the interaction layer.

Review changes is a route. /changes replaces the drawer: staged items with a field diff and an Impact block (restart plane, capacity delta), the PR lane with checks + approval state read from the forge, per-project history + revert. Review happens in dotvirt; approval and merge stay in Forgejo — the one affordance is the deep link, and the semantic summary + impact now travel in the PR description so the forge reviewer never needs the YAML diff.

Side peek. A grid row click inspects the VM in a 400px inspector (?peek=, replaceState); Enter or the expand icon opens the full page, Esc closes. Pure cache read off the streamed inventory.

Palette verbs. The masthead search takes a leading verb (migrate web, restart db-1, ...) and lists the registry action on matching enabled VMs; runtime verbs run on pick, host verbs open the VM page carrying the intent.

Next actions everywhere. Summary cards carry their action (Console/Edit); the task dock starts collapsed with the latest task inline; the header gains a labeled Review-changes button counting drafts + open PRs.

Backend: Change.Restart (KubeVirt apply-timing, one table in manifest), prBody on propose, Proposal.{Approvals,RequiredApprovals,Checks} via three new forge reads (best-effort, refresher-paced). Registry actions dispatch through one shared dispatchVMAction.

e2e: row-click specs move to the name link, drawer flows to the route; new peek/changes specs; fixture carries restart flags + review state; vm-peek joins the shot set. 45/45 hermetic, go + svelte-check + vitest green.

Live validation on hetznet: pending (preview image building); results will be posted here before merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01B2CJp2mhGv61yHsQQqstGP

epheo and others added 6 commits September 2, 2026 09:45
Master-detail: staged items with field diff + impact (restart plane,
capacity delta), PR lane with checks/approval state and the one forge
deep link, per-project history + revert. Header gains a labeled
Review-changes button; every Review affordance routes there.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B2CJp2mhGv61yHsQQqstGP
Row click inspects in place (?peek=, replaceState); Enter/expand opens
the full page, Esc closes. Registry actions dispatch through one shared
dispatchVMAction. Pure cache read off the streamed inventory.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B2CJp2mhGv61yHsQQqstGP
Search box takes a leading verb (migrate/restart/console/...) and lists
the registry action on matching enabled VMs. Summary cards carry their
next action; the task dock starts collapsed with the latest task inline.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B2CJp2mhGv61yHsQQqstGP
Row-click specs move to the name link (a row click peeks now); drawer
flows move to /changes; fixture carries restart flags and PR review
state; new peek/changes specs; vm-peek joins the CI shot set.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B2CJp2mhGv61yHsQQqstGP
@epheo

epheo commented Sep 2, 2026

Copy link
Copy Markdown
Owner Author

Live validation on hetznet, dev image quay.io/epheo/dotvirt@sha256:6c2c0e… (preview workflow build of c05c518, pinned via Dotvirt spec.image):

  • Smoke suite 6/6 green.
  • New surfaces live: side peek opens off a row click with live facts, Enter lands on the VM page; /changes renders lanes + history against the real forge; palette verb (console …) lists enabled registry actions.
  • GitOps roundtrip through the NEW /changes propose flow: create -> PR -> merge -> Synced -> delete -> PR -> merge -> gone, browser-observed in 13.0s.
  • Semantic PR body verified in Forgejo: merged PRs Feat/event bus state tracking #12/release v0.0.7 #13 in demo carry the field summary ("Instance type: + u1.medium", "lifecycle: - demo/…") and attribution.
  • Review-state pills: no branch protection/CI on demo, so no pills render (the intended unknown-shows-nothing behavior); pill rendering is covered by the fixture suite.

One environment fix along the way: e2e/helpers.ts had the pre-operator forge host as its default, which 503'd every merge; default now follows the operator-managed route (45d65cc).

hetznet keeps the dev digest pinned so it can be clicked through; rollback to the released image is
kubectl -n dotvirt-operator patch dotvirt dotvirt --type json -p '[{"op":"remove","path":"/spec/image"}]'.

Temp e2e SA + binding deleted; no residue in the demo project (probe VMs created and pruned via merged PRs).

@epheo
epheo merged commit f6ec76f into main Sep 2, 2026
7 checks passed
@epheo
epheo deleted the feat/ux-direction-a branch September 2, 2026 09:01
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.

1 participant