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.

Show run durations and lazy step logs

c765ae2e18691b3f98d93b00b4eb418ce781e3f1 · Keenan Nemetz · 13d ago · parent bdf6a0de

server/web/static/vole.css +88

@@ -20,6 +20,7 @@
20 20 code browser and file tree the persistent tree beside the pane
21 21 syntax highlighting chroma classes
22 22 repository overview sidebar compact commit and run rows
23 run detail summary cards, step timing and lazy logs
23 24 issues and changes list pages, thread, forms, metadata sidebar
24 25 icons inline SVG sizing
25 26 activity feed event rows for one repository and the instance
@@ -1212,6 +1213,93 @@ details[open] > summary .tree-chevron { transform: rotate(90deg); }
1212 1213 .side-run-top { display: flex; align-items: baseline; gap: 6px; min-width: 0; }
1213 1214 .side-run-top .status { flex: 0 0 auto; }
1214 1215
1216 /* ---------- run detail ---------- */
1217
1218 /* A run's summary is four facts, not a paragraph: how long it took, how long it
1219 waited, what it ran on, and which commit it tested. */
1220 .run-summary {
1221 display: grid;
1222 grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
1223 gap: 10px;
1224 margin: 16px 0;
1225 }
1226 .run-summary .card {
1227 margin: 0;
1228 display: flex;
1229 flex-direction: column;
1230 gap: 3px;
1231 min-width: 0;
1232 }
1233 .run-summary-label {
1234 display: flex;
1235 align-items: center;
1236 gap: 5px;
1237 color: var(--fg-faint);
1238 font-size: 10.5px;
1239 font-weight: 500;
1240 letter-spacing: 0.04em;
1241 text-transform: uppercase;
1242 }
1243 .run-summary-label .icon { width: 12px; height: 12px; }
1244 .run-summary strong {
1245 font-size: 16px;
1246 font-weight: 600;
1247 font-variant-numeric: tabular-nums;
1248 overflow-wrap: anywhere;
1249 }
1250 .run-summary .status-note { margin: 0; }
1251 .run-summary code { font-size: 10.5px; overflow-wrap: anywhere; }
1252
1253 /* Step logs are loaded on demand. The details element is the trigger; the pre is
1254 the target, and htmx uses textContent so a log can never become markup. */
1255 .run-log {
1256 margin: 4px 0;
1257 background: var(--bg-panel);
1258 border: 1px solid var(--border);
1259 border-radius: var(--radius);
1260 overflow: hidden;
1261 }
1262 .run-log > summary {
1263 display: flex;
1264 align-items: center;
1265 gap: 6px;
1266 padding: 6px 10px;
1267 color: var(--fg-muted);
1268 font-size: 12px;
1269 cursor: pointer;
1270 list-style: none;
1271 }
1272 .run-log > summary::-webkit-details-marker { display: none; }
1273 .run-log > summary:hover { color: var(--fg); background: var(--bg-hover); }
1274 .run-log > summary .icon { width: 12px; height: 12px; color: var(--fg-faint); }
1275 .run-log[open] > summary {
1276 color: var(--fg);
1277 border-bottom: 1px solid var(--border);
1278 }
1279 .run-log-text {
1280 margin: 0;
1281 padding: 10px 12px;
1282 border: 0;
1283 border-radius: 0;
1284 background: var(--bg);
1285 color: var(--fg);
1286 font-size: 12px;
1287 line-height: 1.5;
1288 max-height: 34rem;
1289 min-height: 2.5rem;
1290 overflow: auto;
1291 white-space: pre;
1292 }
1293 .run-step-log td { padding: 0 8px 8px; }
1294 .run-logbar {
1295 display: flex;
1296 flex-wrap: wrap;
1297 align-items: center;
1298 gap: 10px;
1299 margin: 8px 0;
1300 font-size: 12px;
1301 }
1302
1215 1303 /* ---------- issues and changes ---------- */
1216 1304
1217 1305 .page-head {