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/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/web/static/vole.css +13−11

@@ -1864,9 +1864,10 @@ details[open] > summary .tree-chevron { transform: rotate(90deg); }
1864 1864 color: var(--fg-faint);
1865 1865 }
1866 1866
1867 /* The one word a change list says about where a change is. The icon carries the
1868 colour, the label the meaning, and the title attribute the reason. */
1869 .change-status {
1867 /* The one word a list says about where a row is: a change's waiting state, or an
1868 issue's open/closed. The icon carries the colour, the label the meaning, and,
1869 where there is one, the title attribute the reason. */
1870 .row-status {
1870 1871 display: inline-flex;
1871 1872 align-items: center;
1872 1873 gap: 5px;
@@ -1874,14 +1875,15 @@ details[open] > summary .tree-chevron { transform: rotate(90deg); }
1874 1875 color: var(--fg-muted);
1875 1876 white-space: nowrap;
1876 1877 }
1877 .change-status .icon { width: 13px; height: 13px; flex: 0 0 auto; }
1878 .change-status.merged { color: var(--merged); }
1879 .change-status.ready { color: var(--good); }
1880 .change-status.failed,
1881 .change-status.conflict { color: var(--bad); }
1882 .change-status.waiting,
1883 .change-status.review { color: var(--warn); }
1884 .change-status.closed { color: var(--fg-faint); }
1878 .row-status .icon { width: 13px; height: 13px; flex: 0 0 auto; }
1879 .row-status.open,
1880 .row-status.ready { color: var(--good); }
1881 .row-status.merged { color: var(--merged); }
1882 .row-status.failed,
1883 .row-status.conflict { color: var(--bad); }
1884 .row-status.waiting,
1885 .row-status.review { color: var(--warn); }
1886 .row-status.closed { color: var(--fg-faint); }
1885 1887
1886 1888 /* A search snippet is the sentence the query matched, with the matched words
1887 1889 marked. It sits under the row title, quieter than the title and smaller than