vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Give the issue list the same status shape as the change list
6813339b80d1e54e171e110f115ace68bba608a9 · Keenan Nemetz · 4d ago · parent 5899ae25
Give the issue list the same status shape as the change list The two lists sat side by side with different status treatments: changes had an icon and a sentence, issues had an uppercase pill. The issue list now uses the same markup and class, so the shared style is called row-status rather than pointing at one of the pages that happens to use it. Closed issues keep a check rather than the change list's cross: closed is where an issue ends, not where a change was dropped. The page headers keep the state pill, as they do on both detail pages, so those two still agree.
server/issues_changes_test.go +11−4
| @@ -903,6 +903,11 @@ func TestIssueAndChangeListsReturnFragmentsForHtmx(t *testing.T) { | |||
| 903 | 903 | if !strings.Contains(body, "Closed thing") || strings.Contains(body, "Open thing") { | |
| 904 | 904 | t.Fatalf("issues fragment did not apply the state filter:\n%s", body) | |
| 905 | 905 | } | |
| 906 | // The list uses the same status shape as the change list, not the state pill | ||
| 907 | // the page headers still use. | ||
| 908 | if !strings.Contains(body, `class="row-status closed"`) || strings.Contains(body, `class="state closed"`) { | ||
| 909 | t.Fatalf("the closed issue does not use the list status style:\n%s", body) | ||
| 910 | } | ||
| 906 | 911 | if !strings.Contains(body, `hx-target="#issue-list"`) { | |
| 907 | 912 | t.Fatal("issues fragment lost its HTMX target") | |
| 908 | 913 | } | |
| @@ -1464,6 +1469,8 @@ func TestIssueListShowsActivityColumnsAndSortsByUpdated(t *testing.T) { | |||
| 1464 | 1469 | } | |
| 1465 | 1470 | for _, want := range []string{ | |
| 1466 | 1471 | "<th>Status</th><th>Issue</th><th>Labels</th><th>Assignees</th><th>Updated</th>", | |
| 1472 | `<span class="row-status open">`, | ||
| 1473 | `>Open</span>`, | ||
| 1467 | 1474 | `<span>1 comment</span>`, | |
| 1468 | 1475 | `<span class="label">bug</span>`, | |
| 1469 | 1476 | `opened by <a class="user" href="/u/keenan">keenan</a>`, | |
| @@ -1537,14 +1544,14 @@ func TestChangeListShowsOneStatus(t *testing.T) { | |||
| 1537 | 1544 | `<code>main</code>`, | |
| 1538 | 1545 | `pinned to</span> <span class="sha"`, | |
| 1539 | 1546 | `title="the branch this request follows">feature-one</code>`, | |
| 1540 | `class="change-status review"`, | ||
| 1547 | `class="row-status review"`, | ||
| 1541 | 1548 | `title="0 of 1 required approvals."`, | |
| 1542 | 1549 | "Waiting for review", | |
| 1543 | `class="change-status ready"`, | ||
| 1550 | `class="row-status ready"`, | ||
| 1544 | 1551 | "Ready to merge", | |
| 1545 | `class="change-status merged"`, | ||
| 1552 | `class="row-status merged"`, | ||
| 1546 | 1553 | "Merged", | |
| 1547 | `class="change-status closed"`, | ||
| 1554 | `class="row-status closed"`, | ||
| 1548 | 1555 | "Closed", | |
| 1549 | 1556 | `opened by <a class="user" href="/u/keenan">keenan</a>`, | |
| 1550 | 1557 | `opened by <a class="user" href="/u/wilbur">wilbur</a>`, | |