Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

A free and open-source forge that lives in your Git repo.

#86

List a change's linked issues in a Details section

merged · by keenan 10d ago · merged into main at 707dfd10 by keenan 10d ago

keenan opened this 10d ago

#78 asked for a change request’s linked issues to be a Details section, using the overview’s recent-issue rows and offering controls for adding and removing links.

The conversation sidebar used to show the links as one line of issue numbers. It now lists each issue with its title, author and age in the same compact rows as the overview. While the change is open, its author or a maintainer can link another issue by number or id, or remove one. Both controls use the same SetRequestCloses writer as vole change update --closes, so the browser and the CLI produce the same closes list. A merged or closed change keeps the list as a record and offers no controls.

The section updates in place over HTMX, and a refused link (unknown issue, a change number, a duplicate, a closed change) leaves the review visible with the reason beside the controls. The old Closes … when merged line is gone because the Details section now carries that information.

Checks

  • ./vole workflow run verify — formatting, vet, build, govulncheck, packages, markdown links, and go test -race ./...
  • New integration test TestChangeLinksIssuesFromTheDetailsSection covers the initial list, add by number, remove, duplicate link, and the closed-request refusal.

Discussion (7)

keenan 10d ago

Review follow-up: the section is now titled Issues, and removal is a small unlink icon whose accessible name still names the issue. The change title and description still say Details because they were fixed when the change was opened. vole workflow run verify passes at 018df20.

keenan 10d ago

The link field is now a search box: it filters issues by title, #number, or ULID prefix, and clicking a result links it in place. Already linked issues are left out of the results. Search uses the issue index and the new SearchIssues query; vole workflow run verify passes at bddac4a.

keenan 10d ago

Rebased onto current main to resolve the conflict with the incremental issue index; the new tip is 838f282 and the combined result is now a clean fast-forward. vole workflow run verify passes.

keenan 10d ago

Fixed the search-result layout: the shared button rule was centring each row at its max-content width, so titles and authors could drift off the sidebar. Search rows now stretch to the sidebar’s width and use normal weight, matching the linked-issue rows. CI is green at 451332d.

keenan 10d ago

The search results now open as a real popover: raised background, border, rounded corners and a shadow, overlaid below the search field instead of blending into the sidebar. Clearing the field removes the panel. CI is green at bb541fd.

keenan 10d ago

The sidebar poll now pauses while the issue search field has a value, not only while focus is inside the aside. A typed query and its results survive the 20-second refresh; clearing the field lets polling resume. CI is green at 9f5efa3.

keenan 10d ago

Refactored the change sidebar into explicit live regions. The 20-second poll now returns out-of-band updates for review status, changes, approvals, checks, combined result and the merge note, with hx-swap="none" on the coordinator. The target picker, issue search and composers are outside every polled swap, so no guard conditions are needed. Approval and the other multi-region writes use the same OOB group; the page actions refresh without replacing unrelated state. The pattern is documented in docs/ui-plan.md under Dynamic regions. CI is green at 707dfd1.