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.

#195

Say what each change is waiting for in the list

merged · by keenan 4d ago · merged into web/issues-table-updated at 6813339b by keenan 4d ago

keenan opened this 4d ago

The changes list now answers “what is this waiting for?” in one column, and the rest of the row follows the issue list.

One status

Label When
Waiting on CI approval a contributor branch at this commit has not been allowed by a maintainer
Waiting on CI jobs a check for the commit is queued or running
CI failed a check failed or was canceled; the newest attempt per job decides
Waiting for review fewer current approvals than the base branch requires
Merge conflict the change no longer merges into its base cleanly
Ready to merge approvals are in (or none are required) and the checks passed
Merged / Closed terminal states

Each label carries an icon and a tooltip: the approval count, the ref that needs allowing, or the base it conflicts with. The order of the checks is the order of the next move, so a held run is not hidden behind “Waiting for review”.

The status is derived from facts a list can afford:

  • the approvals the page already counts;
  • one batched ForSHAs query for every head on the page (new runs(repo, sha, created) index) instead of one query per row;
  • one ref listing to find contributor tips whose CI is still held, following the same rule as the change page;
  • a merge check only for a row that would otherwise read as ready, so a page of rows waiting for review pays no merges. Nothing here moves a ref or queues a run; the full landing plan remains the detail page’s job.

The rest of the row

  • Author and opening time moved under the title, like the issue list, with the comment count last (hidden at zero).
  • The last column is Updated: the newest commit over requests/<id>/, which covers edits, comments, target changes and approvals. The incremental refresh reads the commit range’s paths, so an edit that cancels itself still counts.
  • The list sorts by Updated, newest first, with open changes ahead of merged and closed ones. The index uses the same order.
  • The Author, Approvals and Age columns are gone, and the state chip with them.

docs/change-requests.md gained a short section naming the statuses.

Tests

  • server/web: the classifier’s labels, priority and tooltips.
  • forge/index: a request’s Updated follows a comment and an approval, the commented change sorts first, and a full rebuild matches the incremental refresh.
  • ci/runs: ForSHAs groups per commit and skips commits nobody ran.
  • server: the rendered list has the four columns, the expected statuses for review/ready/merged/closed fixtures, author links under the title, and none of the removed columns.

gofmt, go vet, scripts/check-links.py, vole workflow check, and go test -race -count=1 -tags sqlite_fts5 ./... pass.

Discussion (0)

No discussion yet.