aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cgit.css861
-rwxr-xr-xfilters/syntax-highlighting.py2
-rw-r--r--ui-diff.c2
-rw-r--r--ui-log.c14
-rw-r--r--ui-refs.c16
-rw-r--r--ui-repolist.c10
-rw-r--r--ui-shared.c2
-rw-r--r--ui-stats.c12
-rw-r--r--ui-summary.c12
-rw-r--r--ui-tree.c8
10 files changed, 455 insertions, 484 deletions
diff --git a/cgit.css b/cgit.css
index dfa144d..ddedb24 100644
--- a/cgit.css
+++ b/cgit.css
@@ -1,895 +1,862 @@
1:root {
2 --fg: #191724;
3 --fg-light: #555169;
4 --bg: #eee9e6;
5 --bg-light: #9893a5;
6 --cyan: #56949f;
7 --pink: #d7827e;
8 --gold: #ea9d34;
9 --pine: #286983;
10 --base: #faf4ed;
11 --rose: #ebbcba;
12 --subtle: #6e6a86
13}
14
15::selection {
16 color: var(--fg);
17 background: var(--cyan)
18}
19
1div#cgit { 20div#cgit {
2 padding: 0em; 21 margin: 2em;
3 margin: 0em; 22 font-family: sans-serif;
4 font-family: sans-serif; 23 font-size: 10pt
5 font-size: 10pt;
6 color: #333;
7 background: white;
8 padding: 4px;
9} 24}
10 25
11div#cgit a { 26div#cgit a {
12 color: blue; 27 color: var(--pink);
13 text-decoration: none; 28 text-decoration: none
14} 29}
15 30
16div#cgit a:hover { 31div#cgit a:hover,div#cgit div.footer a:hover {
17 text-decoration: underline; 32 text-decoration: underline
18} 33}
19 34
20div#cgit table { 35div#cgit table {
21 border-collapse: collapse; 36 border-collapse: collapse
22} 37}
23 38
24div#cgit table#header { 39div#cgit table#header {
25 width: 100%; 40 width: 100%;
26 margin-bottom: 1em; 41 margin-bottom: 1em
27} 42}
28 43
29div#cgit table#header td.logo { 44div#cgit table#header td.logo {
30 width: 96px; 45 width: 96px;
31 vertical-align: top; 46 vertical-align: top
32} 47}
33 48
34div#cgit table#header td.main { 49div#cgit table#header td.main {
35 font-size: 250%; 50 font-size: 2.5em;
36 padding-left: 10px; 51 padding-left: 10px;
37 white-space: nowrap; 52 white-space: nowrap
53}
54
55div#cgit table#header td.main::after {
56 content: '';
57 display: inline-block;
58 width: 100%;
59 height: 100%;
60 border-bottom: 12px ridge var(--rose);
61 margin-left: 1em
38} 62}
39 63
40div#cgit table#header td.main a { 64div#cgit,div#cgit table#header td.main a,div#cgit table.blob td.linenumbers a:hover,div#cgit table.ssdiff td.lineno a:hover {
41 color: #000; 65 color: var(--fg)
42} 66}
43 67
44div#cgit table#header td.form { 68div#cgit table#header td.form {
45 text-align: right; 69 text-align: right;
46 vertical-align: bottom; 70 vertical-align: bottom;
47 padding-right: 1em; 71 padding-right: 1em;
48 padding-bottom: 2px; 72 padding-bottom: 2px;
49 white-space: nowrap; 73 white-space: nowrap
50} 74}
51 75
52div#cgit table#header td.form form, 76div#cgit table#header td.form form,div#cgit table#header td.form input,div#cgit table#header td.form select,div#cgit table.tabs td.form input,div#cgit table.tabs td.form select {
53div#cgit table#header td.form input, 77 font-size: 90%
54div#cgit table#header td.form select {
55 font-size: 90%;
56} 78}
57 79
58div#cgit table#header td.sub { 80div#cgit table#header td.sub {
59 color: #777; 81 color: var(--fg-light);
60 border-top: solid 1px #ccc; 82 padding-left: 10px
61 padding-left: 10px;
62} 83}
63 84
64div#cgit table.tabs { 85div#cgit table.tabs {
65 border-bottom: solid 3px #ccc; 86 border: 0;
66 border-collapse: collapse; 87 margin-top: 2em;
67 margin-top: 2em; 88 margin-bottom: 2em;
68 margin-bottom: 0px; 89 width: 100%
69 width: 100%;
70} 90}
71 91
72div#cgit table.tabs td { 92div#cgit table.tabs td {
73 padding: 0px 1em; 93 padding: 0 1em;
74 vertical-align: bottom; 94 vertical-align: bottom
75} 95}
76 96
77div#cgit table.tabs td a { 97div#cgit table.tabs td a {
78 padding: 2px 0.75em; 98 padding: .75em;
79 color: #777; 99 color: var(--fg-light);
80 font-size: 110%; 100 font-size: 110%
101}
102
103div#cgit table.tabs td a:hover {
104 color: var(--fg);
105 text-decoration: none;
106 border-bottom: 2px solid var(--fg-light)
81} 107}
82 108
83div#cgit table.tabs td a.active { 109div#cgit table.tabs td a.active {
84 color: #000; 110 color: var(--gold)
85 background-color: #ccc;
86} 111}
87 112
88div#cgit table.tabs a[href^="http://"]:after, div#cgit table.tabs a[href^="https://"]:after { 113div#cgit table.tabs a[href^="http://"]:after,div#cgit table.tabs a[href^="https://"]:after {
89 content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgAhcJDQY+gm2TAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAABbSURBVAhbY2BABs4MU4CwhYHBh2Erww4wrGFQZHjI8B8IgUIscJWyDHcggltQhI4zGDCcRwhChPggHIggP1QoAVmQkSETrGoHsiAEsACtBYN0oDAMbgU6EBcAAL2eHUt4XUU4AAAAAElFTkSuQmCC); 114 content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfgAhcJDQY+gm2TAAAAHWlUWHRDb21tZW50AAAAAABDcmVhdGVkIHdpdGggR0lNUGQuZQcAAABbSURBVAhbY2BABs4MU4CwhYHBh2Erww4wrGFQZHjI8B8IgUIscJWyDHcggltQhI4zGDCcRwhChPggHIggP1QoAVmQkSETrGoHsiAEsACtBYN0oDAMbgU6EBcAAL2eHUt4XUU4AAAAAElFTkSuQmCC);
90 opacity: 0.5; 115 opacity: .5;
91 margin: 0 0 0 5px; 116 margin: 0 0 0 5px
92} 117}
93 118
94div#cgit table.tabs td.form { 119div#cgit table.tabs td.form {
95 text-align: right; 120 text-align: right
96} 121}
97 122
98div#cgit table.tabs td.form form { 123div#cgit table.tabs td.form form {
99 padding-bottom: 2px; 124 padding-bottom: 2px;
100 font-size: 90%; 125 font-size: 90%;
101 white-space: nowrap; 126 white-space: nowrap
102}
103
104div#cgit table.tabs td.form input,
105div#cgit table.tabs td.form select {
106 font-size: 90%;
107} 127}
108 128
109div#cgit div.path { 129div#cgit div.path {
110 margin: 0px; 130 margin: 0;
111 padding: 5px 2em 2px 2em; 131 padding: 5px 2em 2px;
112 color: #000; 132 color: #000;
113 background-color: #eee; 133 background-color: #eee
114} 134}
115 135
116div#cgit div.content { 136div#cgit div.content {
117 margin: 0px; 137 margin: 0;
118 padding: 2em; 138 padding: 2em
119 border-bottom: solid 3px #ccc;
120} 139}
121 140
122
123div#cgit table.list { 141div#cgit table.list {
124 width: 100%; 142 width: 100%;
125 border: none; 143 border: 0;
126 border-collapse: collapse; 144 border-collapse: collapse
127} 145}
128 146
129div#cgit table.list tr { 147div#cgit,div#cgit table.list tr {
130 background: white; 148 background: #fff
131} 149}
132 150
133div#cgit table.list tr.logheader { 151div#cgit table.list tr.logheader {
134 background: #eee; 152 background: #eee
135} 153}
136 154
137div#cgit table.list tr:nth-child(even) { 155div#cgit table.list tr:nth-child(even) {
138 background: #f7f7f7; 156 background: #white
139}
140
141div#cgit table.list tr:nth-child(odd) {
142 background: white;
143}
144
145div#cgit table.list tr:hover {
146 background: #eee;
147}
148
149div#cgit table.list tr.nohover {
150 background: white;
151}
152
153div#cgit table.list tr.nohover:hover {
154 background: white;
155} 157}
156 158
157div#cgit table.list tr.nohover-highlight:hover:nth-child(even) { 159div#cgit table.list tr.nohover-highlight:hover:nth-child(even),div#cgit table.list tr.nohover-highlight:hover:nth-child(odd),div#cgit table.list tr:nth-child(odd) {
158 background: #f7f7f7; 160 background: #fff
159} 161}
160 162
161div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) { 163div#cgit table.list tr.nohover,div#cgit table.list tr.nohover:hover {
162 background: white; 164 background: #fff
163} 165}
164 166
165div#cgit table.list th { 167div#cgit table.list th {
166 font-weight: bold; 168 font-weight: 700;
167 /* color: #888; 169 color: var(--fg);
168 border-top: dashed 1px #888; 170 padding: .1em .5em .05em;
169 border-bottom: dashed 1px #888; 171 vertical-align: baseline
170 */
171 padding: 0.1em 0.5em 0.05em 0.5em;
172 vertical-align: baseline;
173} 172}
174 173
175div#cgit table.list td { 174div#cgit table.list td {
176 border: none; 175 border: 0;
177 padding: 0.1em 0.5em 0.1em 0.5em; 176 padding: .5em .5em .1em
178} 177}
179 178
180div#cgit table.list td.commitgraph { 179div#cgit table.list td.commitgraph {
181 font-family: monospace; 180 font-family: monospace;
182 white-space: pre; 181 white-space: pre;
183} 182 color: var(--fg)
184
185div#cgit table.list td.commitgraph .column1 {
186 color: #a00;
187}
188
189div#cgit table.list td.commitgraph .column2 {
190 color: #0a0;
191}
192
193div#cgit table.list td.commitgraph .column3 {
194 color: #aa0;
195}
196
197div#cgit table.list td.commitgraph .column4 {
198 color: #00a;
199} 183}
200 184
201div#cgit table.list td.commitgraph .column5 { 185div#cgit table.list td a,div#cgit table.list td span.hint,div#cgit table.list td.commitgraph .column1,div#cgit table.list td.commitgraph .column2,div#cgit table.list td.commitgraph .column3,div#cgit table.list td.commitgraph .column4,div#cgit table.list td.commitgraph .column5,div#cgit table.list td.commitgraph .column6 {
202 color: #a0a; 186 color: var(--fg-light)
203}
204
205div#cgit table.list td.commitgraph .column6 {
206 color: #0aa;
207} 187}
208 188
209div#cgit table.list td.logsubject { 189div#cgit table.list td.logsubject {
210 font-family: monospace; 190 font-family: monospace;
211 font-weight: bold; 191 font-weight: 700
212} 192}
213 193
214div#cgit table.list td.logmsg { 194div#cgit table.list td.logmsg {
215 font-family: monospace; 195 font-family: monospace;
216 white-space: pre; 196 white-space: pre;
217 padding: 0 0.5em; 197 padding: 0 .5em
218}
219
220div#cgit table.list td a {
221 color: black;
222} 198}
223 199
224div#cgit table.list td a.ls-dir { 200div#cgit table.list td a.ls-dir {
225 font-weight: bold; 201 font-weight: 700;
226 color: #00f; 202 color: var(--cyan)
227} 203}
228 204
229div#cgit table.list td a:hover { 205div#cgit table.list td a:hover {
230 color: #00f; 206 text-decoration: none;
207 background: var(--bg)
231} 208}
232 209
233div#cgit img { 210div#cgit img {
234 border: none; 211 border: 0;
212 scale: 80%
235} 213}
236 214
237div#cgit input#switch-btn { 215div#cgit input#switch-btn {
238 margin: 2px 0px 0px 0px; 216 margin: 2px 0 0
239} 217}
240 218
241div#cgit td#sidebar input.txt { 219div#cgit td#sidebar input.txt {
242 width: 100%; 220 width: 100%;
243 margin: 2px 0px 0px 0px; 221 margin: 2px 0 0
222}
223
224div#cgit input[type=search],div#cgit input[type=submit] {
225 border: 1px solid var(--pine);
226 font-family: monospace;
227 background-color: var(--bg);
228 padding: .25em 1em
229}
230
231div#cgit select {
232 border: 1px solid var(--pine);
233 background-color: var(--rose);
234 padding: .25em 1em
244} 235}
245 236
246div#cgit table#grid { 237div#cgit table#grid {
247 margin: 0px; 238 margin: 0
248} 239}
249 240
250div#cgit td#content { 241div#cgit td#content {
251 vertical-align: top; 242 vertical-align: top;
252 padding: 1em 2em 1em 1em; 243 padding: 1em 2em 1em 1em;
253 border: none; 244 border: 0
254} 245}
255 246
256div#cgit div#summary { 247div#cgit div#summary {
257 vertical-align: top; 248 vertical-align: top;
258 margin-bottom: 1em; 249 margin-bottom: 1em
259} 250}
260 251
261div#cgit table#downloads { 252div#cgit table#downloads {
262 float: right; 253 float: right;
263 border-collapse: collapse; 254 border-collapse: collapse;
264 border: solid 1px #777; 255 border: solid 1px #777;
265 margin-left: 0.5em; 256 margin-left: .5em;
266 margin-bottom: 0.5em; 257 margin-bottom: .5em
267} 258}
268 259
269div#cgit table#downloads th { 260div#cgit table#downloads th {
270 background-color: #ccc; 261 background-color: #ccc
271} 262}
272 263
273div#cgit div#blob { 264div#cgit div#blob {
274 border: solid 1px black; 265 border: solid 1px #000
275} 266}
276 267
277div#cgit div.error { 268div#cgit div.error {
278 color: red; 269 color: red;
279 font-weight: bold; 270 font-weight: 700;
280 margin: 1em 2em; 271 margin: 1em 2em
281} 272}
282 273
283div#cgit a.ls-blob, div#cgit a.ls-dir, div#cgit .ls-mod { 274div#cgit .ls-mod,div#cgit a.ls-blob,div#cgit a.ls-dir,div#cgit select {
284 font-family: monospace; 275 font-family: monospace
285} 276}
286 277
287div#cgit td.ls-size { 278div#cgit td.ls-size {
288 text-align: right; 279 text-align: right
289 font-family: monospace;
290 width: 10em;
291} 280}
292 281
293div#cgit td.ls-mode { 282div#cgit td.ls-mode,div#cgit td.ls-size {
294 font-family: monospace; 283 font-family: monospace;
295 width: 10em; 284 width: 10em
296} 285}
297 286
298div#cgit table.blob { 287div#cgit table.blob {
299 margin-top: 0.5em; 288 margin-top: .5em;
300 border-top: solid 1px black; 289 border-top: solid 1px #000
301} 290}
302 291
303div#cgit table.blob td.hashes, 292div#cgit table.blob td.hashes,div#cgit table.blob td.lines {
304div#cgit table.blob td.lines { 293 margin: 0;
305 margin: 0; padding: 0 0 0 0.5em; 294 padding: 0 0 0 .5em;
306 vertical-align: top; 295 vertical-align: top;
307 color: black; 296 color: #000
308} 297}
309 298
310div#cgit table.blob td.linenumbers { 299div#cgit table.blob td.linenumbers {
311 margin: 0; padding: 0 0.5em 0 0.5em; 300 margin: 0;
312 vertical-align: top; 301 padding: 0 .5em;
313 text-align: right; 302 vertical-align: top;
314 border-right: 1px solid gray; 303 text-align: right;
304 border-right: 1px solid var(--bg)
315} 305}
316 306
317div#cgit table.blob pre { 307div#cgit table.blob pre {
318 padding: 0; margin: 0; 308 padding: 0;
319} 309 margin: 0
320
321div#cgit table.blob td.linenumbers a,
322div#cgit table.ssdiff td.lineno a {
323 color: gray;
324 text-align: right;
325 text-decoration: none;
326} 310}
327 311
328div#cgit table.blob td.linenumbers a:hover, 312div#cgit table.blob td.linenumbers a,div#cgit table.ssdiff td.lineno a {
329div#cgit table.ssdiff td.lineno a:hover { 313 color: #888;
330 color: black; 314 text-align: right;
315 text-decoration: none
331} 316}
332 317
333div#cgit table.blame td.hashes, 318div#cgit table.blame td.hashes,div#cgit table.blame td.linenumbers,div#cgit table.blame td.lines {
334div#cgit table.blame td.lines, 319 padding: 0
335div#cgit table.blame td.linenumbers {
336 padding: 0;
337} 320}
338 321
339div#cgit table.blame td.hashes div.alt, 322div#cgit table.blame td.hashes div.alt,div#cgit table.blame td.lines div.alt {
340div#cgit table.blame td.lines div.alt { 323 padding: 0 .5em
341 padding: 0 0.5em 0 0.5em;
342} 324}
343 325
344div#cgit table.blame td.linenumbers div.alt { 326div#cgit table.blame td.linenumbers div.alt {
345 padding: 0 0.5em 0 0; 327 padding: 0 .5em 0 0
346} 328}
347 329
348div#cgit table.blame div.alt:nth-child(even) { 330div#cgit table.blame div.alt:nth-child(even) {
349 background: #eee; 331 background: #eee
350} 332}
351 333
352div#cgit table.blame div.alt:nth-child(odd) { 334div#cgit table.blame div.alt:nth-child(odd) {
353 background: white; 335 background: #fff
354} 336}
355 337
356div#cgit table.blame td.lines > div { 338div#cgit table.blame td.lines>div {
357 position: relative; 339 position: relative
358} 340}
359 341
360div#cgit table.blame td.lines > div > pre { 342div#cgit table.blame td.lines>div>pre {
361 padding: 0 0 0 0.5em; 343 padding: 0 0 0 .5em;
362 position: absolute; 344 position: absolute;
363 top: 0; 345 top: 0
364} 346}
365 347
366div#cgit table.bin-blob { 348div#cgit table.bin-blob {
367 margin-top: 0.5em; 349 margin-top: .5em;
368 border: solid 1px black; 350 border: solid 1px #000
369} 351}
370 352
371div#cgit table.bin-blob th { 353div#cgit table.bin-blob th {
372 font-family: monospace; 354 font-family: monospace;
373 white-space: pre; 355 white-space: pre;
374 border: solid 1px #777; 356 border: solid 1px #777;
375 padding: 0.5em 1em; 357 padding: .5em 1em
376} 358}
377 359
378div#cgit table.bin-blob td { 360div#cgit table.bin-blob td {
379 font-family: monospace; 361 font-family: monospace;
380 white-space: pre; 362 white-space: pre;
381 border-left: solid 1px #777; 363 border-left: solid 1px #777;
382 padding: 0em 1em; 364 padding: 0 1em
383} 365}
384 366
385div#cgit table.nowrap td { 367div#cgit table.nowrap td {
386 white-space: nowrap; 368 white-space: nowrap
387} 369}
388 370
389div#cgit table.commit-info { 371div#cgit table.commit-info {
390 border-collapse: collapse; 372 border-collapse: collapse;
391 margin-top: 1.5em; 373 margin-top: 1.5em
392} 374}
393 375
394div#cgit div.cgit-panel { 376div#cgit div.cgit-panel {
395 float: right; 377 float: right;
396 margin-top: 1.5em; 378 margin-top: 1.5em
397} 379}
398 380
399div#cgit div.cgit-panel table { 381div#cgit div.cgit-panel table,div#cgit table.diffstat {
400 border-collapse: collapse; 382 border-collapse: collapse;
401 border: solid 1px #aaa; 383 border: solid 1px #aaa;
402 background-color: #eee; 384 background-color: #eee
403} 385}
404 386
405div#cgit div.cgit-panel th { 387div#cgit div.cgit-panel th {
406 text-align: center; 388 text-align: center
407} 389}
408 390
409div#cgit div.cgit-panel td { 391div#cgit div.cgit-panel td {
410 padding: 0.25em 0.5em; 392 padding: .25em .5em
411} 393}
412 394
413div#cgit div.cgit-panel td.label { 395div#cgit div.cgit-panel td.label {
414 padding-right: 0.5em; 396 padding-right: .5em
415} 397}
416 398
417div#cgit div.cgit-panel td.ctrl { 399div#cgit div.cgit-panel td.ctrl {
418 padding-left: 0.5em; 400 padding-left: .5em
419} 401}
420 402
421div#cgit table.commit-info th { 403div#cgit table.commit-info th {
422 text-align: left; 404 text-align: left;
423 font-weight: normal; 405 vertical-align: top
424 padding: 0.1em 1em 0.1em 0.1em;
425 vertical-align: top;
426} 406}
427 407
428div#cgit table.commit-info td { 408div#cgit table.commit-info td,div#cgit table.commit-info th,div#cgit table.diffstat th {
429 font-weight: normal; 409 font-weight: 400;
430 padding: 0.1em 1em 0.1em 0.1em; 410 padding: .1em 1em .1em .1em
431} 411}
432 412
433div#cgit div.commit-subject { 413div#cgit div.commit-subject {
434 font-weight: bold; 414 font-weight: 700;
435 font-size: 125%; 415 font-size: 125%;
436 margin: 1.5em 0em 0.5em 0em; 416 margin: 1.5em 0 .5em;
437 padding: 0em; 417 padding: 0
438} 418}
439 419
440div#cgit div.commit-msg { 420div#cgit div.commit-msg {
441 white-space: pre; 421 white-space: pre;
442 font-family: monospace; 422 font-family: monospace
443} 423}
444 424
445div#cgit div.notes-header { 425div#cgit div.notes-header {
446 font-weight: bold; 426 font-weight: 700;
447 padding-top: 1.5em; 427 padding-top: 1.5em
448} 428}
449 429
450div#cgit div.notes { 430div#cgit div.notes {
451 white-space: pre; 431 white-space: pre;
452 font-family: monospace; 432 font-family: monospace;
453 border: solid 1px #ee9; 433 border: solid 1px #ee9;
454 background-color: #ffd; 434 background-color: #ffd;
455 padding: 0.3em 2em 0.3em 1em; 435 padding: .3em 2em .3em 1em;
456 float: left; 436 float: left
457} 437}
458 438
459div#cgit div.notes-footer { 439div#cgit div.notes-footer {
460 clear: left; 440 clear: left
461} 441}
462 442
463div#cgit div.diffstat-header { 443div#cgit div.diffstat-header {
464 font-weight: bold; 444 font-weight: 700;
465 padding-top: 1.5em; 445 padding-top: 1.5em
466}
467
468div#cgit table.diffstat {
469 border-collapse: collapse;
470 border: solid 1px #aaa;
471 background-color: #eee;
472} 446}
473 447
474div#cgit table.diffstat th { 448div#cgit table.diffstat th {
475 font-weight: normal; 449 text-align: left;
476 text-align: left; 450 text-decoration: underline;
477 text-decoration: underline; 451 font-size: 100%
478 padding: 0.1em 1em 0.1em 0.1em;
479 font-size: 100%;
480} 452}
481 453
482div#cgit table.diffstat td { 454div#cgit table.diffstat td {
483 padding: 0.2em 0.2em 0.1em 0.1em; 455 padding: .2em .2em .1em .1em;
484 font-size: 100%; 456 font-size: 100%;
485 border: none; 457 border: 0
486} 458}
487 459
488div#cgit table.diffstat td.mode { 460div#cgit table.diffstat td.mode {
489 white-space: nowrap; 461 font: monospace;
462 white-space: nowrap
490} 463}
491 464
492div#cgit table.diffstat td span.modechange { 465div#cgit table.diffstat td span.modechange {
493 padding-left: 1em; 466 padding-left: 1em;
494 color: red; 467 color: red
495} 468}
496 469
497div#cgit table.diffstat td.add a { 470div#cgit table.diffstat td.add a {
498 color: green; 471 color: green
499} 472}
500 473
501div#cgit table.diffstat td.del a { 474div#cgit table.diffstat td.del a {
502 color: red; 475 color: red
503} 476}
504 477
505div#cgit table.diffstat td.upd a { 478div#cgit table.diffstat td.upd a {
506 color: blue; 479 color: var(--pine)
507} 480}
508 481
509div#cgit table.diffstat td.graph { 482div#cgit table.diffstat td.graph {
510 width: 500px; 483 width: 500px;
511 vertical-align: middle; 484 vertical-align: middle
512} 485}
513 486
514div#cgit table.diffstat td.graph table { 487div#cgit table.diffstat td.graph table {
515 border: none; 488 border: 0
516} 489}
517 490
518div#cgit table.diffstat td.graph td { 491div#cgit table.diffstat td.graph td {
519 padding: 0px; 492 padding: 0;
520 border: 0px; 493 border: 0;
521 height: 7pt; 494 height: 7pt
522} 495}
523 496
524div#cgit table.diffstat td.graph td.add { 497div#cgit table.diffstat td.graph td.add {
525 background-color: #5c5; 498 background-color: #5c5
526} 499}
527 500
528div#cgit table.diffstat td.graph td.rem { 501div#cgit table.diffstat td.graph td.rem {
529 background-color: #c55; 502 background-color: #c55
530} 503}
531 504
532div#cgit div.diffstat-summary { 505div#cgit div.diffstat-summary {
533 color: #888; 506 color: #888;
534 padding-top: 0.5em; 507 padding-top: .5em
535} 508}
536 509
537div#cgit table.diff { 510div#cgit table.diff {
538 width: 100%; 511 width: 100%
539} 512}
540 513
541div#cgit table.diff td { 514div#cgit table.diff td {
542 font-family: monospace; 515 font-family: monospace;
543 white-space: pre; 516 white-space: pre
544} 517}
545 518
546div#cgit table.diff td div.head { 519div#cgit table.diff td div.head {
547 font-weight: bold; 520 font-weight: 700;
548 margin-top: 1em; 521 margin-top: 1em;
549 color: black; 522 color: #000
550} 523}
551 524
552div#cgit table.diff td div.hunk { 525div#cgit table.diff td div.hunk {
553 color: #009; 526 color: #009
554} 527}
555 528
556div#cgit table.diff td div.add { 529div#cgit table.diff td div.add {
557 color: green; 530 color: green
558} 531}
559 532
560div#cgit table.diff td div.del { 533div#cgit table.diff td div.del {
561 color: red; 534 color: red
562} 535}
563 536
564div#cgit .oid { 537div#cgit .oid {
565 font-family: monospace; 538 font-family: monospace;
566 font-size: 90%; 539 font-size: 90%
567} 540}
568 541
569div#cgit .left { 542div#cgit .left {
570 text-align: left; 543 text-align: left
571} 544}
572 545
573div#cgit .right { 546div#cgit .right {
574 text-align: right; 547 text-align: right
575} 548}
576 549
577div#cgit table.list td.reposection { 550div#cgit table.list td.reposection {
578 font-style: italic; 551 padding-top: .5rem;
579 color: #888; 552 color: var(--subtle)
553}
554
555div#cgit table.list td.reposection::after {
556 content: " / ";
557 font-style: italic;
558 color: var(--fg-light)
580} 559}
581 560
582div#cgit a.button { 561div#cgit a.button {
583 font-size: 80%; 562 font-size: 80%;
584 padding: 0em 0.5em; 563 padding: 0 .5em
585} 564}
586 565
587div#cgit a.primary { 566div#cgit a.primary {
588 font-size: 100%; 567 font-size: 100%
589} 568}
590 569
591div#cgit a.secondary { 570div#cgit a.secondary {
592 font-size: 90%; 571 font-size: 90%
593} 572}
594 573
595div#cgit td.toplevel-repo { 574div#cgit table.list td.sublevel-repo a:hover::after,div#cgit table.list td.toplevel-repo a:hover::after {
596 575 content: " / ";
576 font-style: italic;
577 color: var(--fg-light);
578 position: absolute;
579 padding-left: .25em
597} 580}
598 581
599div#cgit table.list td.sublevel-repo { 582div#cgit table.list td.sublevel-repo {
600 padding-left: 1.5em; 583 padding-left: 1.5em
584}
585
586div#cgit table.list td.sublevel-repo a:hover::after {
587 color: var(--rose)
601} 588}
602 589
603div#cgit ul.pager { 590div#cgit ul.pager {
604 list-style-type: none; 591 list-style-type: none;
605 text-align: center; 592 text-align: center;
606 margin: 1em 0em 0em 0em; 593 margin: 1em 0 0;
607 padding: 0; 594 padding: 0
608} 595}
609 596
610div#cgit ul.pager li { 597div#cgit ul.pager li {
611 display: inline-block; 598 display: inline-block;
612 margin: 0.25em 0.5em; 599 margin: .25em .5em
613} 600}
614 601
615div#cgit ul.pager a { 602div#cgit ul.pager a {
616 color: #777; 603 color: #777
617} 604}
618 605
619div#cgit ul.pager .current { 606div#cgit ul.pager .current {
620 font-weight: bold; 607 font-weight: 700
621} 608}
622 609
623div#cgit span.age-mins { 610div#cgit span.age-mins {
624 font-weight: bold; 611 font-weight: 700;
625 color: #080; 612 color: #080
626} 613}
627 614
628div#cgit span.age-hours { 615div#cgit span.age-hours {
629 color: #080; 616 color: #080
630} 617}
631 618
632div#cgit span.age-days { 619div#cgit span.age-days {
633 color: #040; 620 color: #040
634} 621}
635 622
636div#cgit span.age-weeks { 623div#cgit span.age-weeks {
637 color: #444; 624 color: #444
638} 625}
639 626
640div#cgit span.age-months { 627div#cgit span.age-months {
641 color: #888; 628 color: #888
642} 629}
643 630
644div#cgit span.age-years { 631div#cgit span.age-years {
645 color: #bbb; 632 color: #bbb
646} 633}
647 634
648div#cgit span.insertions { 635div#cgit span.insertions {
649 color: #080; 636 color: #080
650} 637}
651 638
652div#cgit span.deletions { 639div#cgit span.deletions {
653 color: #800; 640 color: #800
654} 641}
655 642
656div#cgit div.footer { 643div#cgit div.footer {
657 margin-top: 0.5em; 644 margin-top: .5em;
658 text-align: center; 645 text-align: center;
659 font-size: 80%; 646 font-size: 80%;
660 color: #ccc; 647 color: #ccc
661} 648}
662 649
663div#cgit div.footer a { 650div#cgit div.footer a {
664 color: #ccc; 651 color: #ccc;
665 text-decoration: none; 652 text-decoration: none
666}
667
668div#cgit div.footer a:hover {
669 text-decoration: underline;
670} 653}
671 654
672div#cgit a.branch-deco { 655div#cgit a.branch-deco {
673 color: #000; 656 color: #000;
674 margin: 0px 0.5em; 657 margin: 0 .5em;
675 padding: 0px 0.25em; 658 padding: 0 .25em;
676 background-color: #88ff88; 659 background-color: #8f8;
677 border: solid 1px #007700; 660 border: solid 1px #070
678} 661}
679 662
680div#cgit a.tag-deco { 663div#cgit a.tag-deco {
681 color: #000; 664 color: var(--cyan)!important;
682 margin: 0px 0.5em; 665 margin: 0 .5em;
683 padding: 0px 0.25em; 666 padding: 0 .25em;
684 background-color: #ffff88; 667 font-weight: 700
685 border: solid 1px #777700;
686} 668}
687 669
688div#cgit a.tag-annotated-deco { 670div#cgit a.tag-annotated-deco {
689 color: #000; 671 font-weight: 700
690 margin: 0px 0.5em; 672}
691 padding: 0px 0.25em; 673
692 background-color: #ffcc88; 674div#cgit a.deco,div#cgit a.remote-deco,div#cgit a.tag-annotated-deco {
693 border: solid 1px #777700; 675 color: var(--cyan)!important;
676 margin: 0 .5em;
677 padding: 0 .25em
694} 678}
695 679
696div#cgit a.remote-deco { 680div#cgit a.remote-deco {
697 color: #000; 681 background-color: #ccf;
698 margin: 0px 0.5em; 682 border: solid 1px #007
699 padding: 0px 0.25em;
700 background-color: #ccccff;
701 border: solid 1px #000077;
702} 683}
703 684
704div#cgit a.deco { 685div#cgit a.deco {
705 color: #000; 686 font-weight: 700
706 margin: 0px 0.5em;
707 padding: 0px 0.25em;
708 background-color: #ff8888;
709 border: solid 1px #770000;
710} 687}
711 688
712div#cgit div.commit-subject a.branch-deco, 689div#cgit div.commit-subject a.branch-deco,div#cgit div.commit-subject a.deco,div#cgit div.commit-subject a.remote-deco,div#cgit div.commit-subject a.tag-annotated-deco,div#cgit div.commit-subject a.tag-deco {
713div#cgit div.commit-subject a.tag-deco, 690 margin-left: 1em;
714div#cgit div.commit-subject a.tag-annotated-deco, 691 font-size: 75%
715div#cgit div.commit-subject a.remote-deco,
716div#cgit div.commit-subject a.deco {
717 margin-left: 1em;
718 font-size: 75%;
719} 692}
720 693
721div#cgit table.stats { 694div#cgit table.stats {
722 border: solid 1px black; 695 border: solid 1px #000;
723 border-collapse: collapse; 696 border-collapse: collapse
724} 697}
725 698
726div#cgit table.stats th { 699div#cgit table.stats th {
727 text-align: left; 700 text-align: left;
728 padding: 1px 0.5em; 701 padding: 1px .5em;
729 background-color: #eee; 702 background-color: #eee;
730 border: solid 1px black; 703 border: solid 1px #000
731} 704}
732 705
733div#cgit table.stats td { 706div#cgit table.stats td {
734 text-align: right; 707 text-align: right;
735 padding: 1px 0.5em; 708 padding: 1px .5em;
736 border: solid 1px black; 709 border: solid 1px #000
737} 710}
738 711
739div#cgit table.stats td.total { 712div#cgit table.stats td.total {
740 font-weight: bold; 713 font-weight: 700;
741 text-align: left; 714 text-align: left
742} 715}
743 716
744div#cgit table.stats td.sum { 717div#cgit table.stats td.sum {
745 color: #c00; 718 color: #c00;
746 font-weight: bold; 719 font-weight: 700
747/* background-color: #eee; */
748} 720}
749 721
750div#cgit table.stats td.left { 722div#cgit table.stats td.left {
751 text-align: left; 723 text-align: left
752} 724}
753 725
754div#cgit table.vgraph { 726div#cgit table.vgraph {
755 border-collapse: separate; 727 border-collapse: separate;
756 border: solid 1px black; 728 border: solid 1px #000;
757 height: 200px; 729 height: 200px
758} 730}
759 731
760div#cgit table.vgraph th { 732div#cgit table.hgraph th,div#cgit table.vgraph th {
761 background-color: #eee; 733 background-color: #eee;
762 font-weight: bold; 734 font-weight: 700;
763 border: solid 1px white; 735 border: solid 1px #fff;
764 padding: 1px 0.5em; 736 padding: 1px .5em
765} 737}
766 738
767div#cgit table.vgraph td { 739div#cgit table.vgraph td {
768 vertical-align: bottom; 740 vertical-align: bottom;
769 padding: 0px 10px; 741 padding: 0 10px
770} 742}
771 743
772div#cgit table.vgraph div.bar { 744div#cgit table.vgraph div.bar {
773 background-color: #eee; 745 background-color: #eee
774} 746}
775 747
776div#cgit table.hgraph { 748div#cgit table.hgraph {
777 border: solid 1px black; 749 border: solid 1px #000;
778 width: 800px; 750 width: 800px
779} 751}
780 752
781div#cgit table.hgraph th { 753div#cgit table.hgraph th {
782 background-color: #eee; 754 border: solid 1px #000
783 font-weight: bold;
784 border: solid 1px black;
785 padding: 1px 0.5em;
786} 755}
787 756
788div#cgit table.hgraph td { 757div#cgit table.hgraph td {
789 vertical-align: middle; 758 vertical-align: middle;
790 padding: 2px 2px; 759 padding: 2px
791} 760}
792 761
793div#cgit table.hgraph div.bar { 762div#cgit table.hgraph div.bar {
794 background-color: #eee; 763 background-color: #eee;
795 height: 1em; 764 height: 1em
796} 765}
797 766
798div#cgit table.ssdiff { 767div#cgit table.ssdiff {
799 width: 100%; 768 width: 100%
800} 769}
801 770
802div#cgit table.ssdiff td { 771div#cgit table.ssdiff td {
803 font-size: 75%; 772 font-size: 75%;
804 font-family: monospace; 773 font-family: monospace;
805 white-space: pre; 774 white-space: pre;
806 padding: 1px 4px 1px 4px; 775 padding: 1px 4px;
807 border-left: solid 1px #aaa; 776 border-left: solid 1px #aaa;
808 border-right: solid 1px #aaa; 777 border-right: solid 1px #aaa
809} 778}
810 779
811div#cgit table.ssdiff td.add { 780div#cgit table.ssdiff td.add {
812 color: black; 781 color: #000;
813 background: #cfc; 782 background: #cfc;
814 min-width: 50%; 783 min-width: 50%
815} 784}
816 785
817div#cgit table.ssdiff td.add_dark { 786div#cgit table.ssdiff td.add_dark {
818 color: black; 787 color: #000;
819 background: #aca; 788 background: #aca;
820 min-width: 50%; 789 min-width: 50%
821} 790}
822 791
823div#cgit table.ssdiff span.add { 792div#cgit table.ssdiff span.add {
824 background: #cfc; 793 background: #cfc;
825 font-weight: bold; 794 font-weight: 700
826} 795}
827 796
828div#cgit table.ssdiff td.del { 797div#cgit table.ssdiff td.del {
829 color: black; 798 color: #000;
830 background: #fcc; 799 background: #fcc;
831 min-width: 50%; 800 min-width: 50%
832} 801}
833 802
834div#cgit table.ssdiff td.del_dark { 803div#cgit table.ssdiff td.del_dark {
835 color: black; 804 color: #000;
836 background: #caa; 805 background: #caa;
837 min-width: 50%; 806 min-width: 50%
838} 807}
839 808
840div#cgit table.ssdiff span.del { 809div#cgit table.ssdiff span.del {
841 background: #fcc; 810 background: #fcc;
842 font-weight: bold; 811 font-weight: 700
843} 812}
844 813
845div#cgit table.ssdiff td.changed { 814div#cgit table.ssdiff td.changed {
846 color: black; 815 color: #000;
847 background: #ffc; 816 background: #ffc;
848 min-width: 50%; 817 min-width: 50%
849} 818}
850 819
851div#cgit table.ssdiff td.changed_dark { 820div#cgit table.ssdiff td.changed_dark {
852 color: black; 821 color: #000;
853 background: #cca; 822 background: #cca;
854 min-width: 50%; 823 min-width: 50%
855} 824}
856 825
857div#cgit table.ssdiff td.lineno { 826div#cgit table.ssdiff td.lineno {
858 color: black; 827 color: #000;
859 background: #eee; 828 background: #eee;
860 text-align: right; 829 text-align: right;
861 width: 3em; 830 width: 3em;
862 min-width: 3em; 831 min-width: 3em
863} 832}
864 833
865div#cgit table.ssdiff td.hunk { 834div#cgit table.ssdiff td.hunk {
866 color: black; 835 color: #000;
867 background: #ccf; 836 background: var(--bg-light)
868 border-top: solid 1px #aaa;
869 border-bottom: solid 1px #aaa;
870} 837}
871 838
872div#cgit table.ssdiff td.head { 839div#cgit table.ssdiff td.head,div#cgit table.ssdiff td.hunk {
873 border-top: solid 1px #aaa; 840 border-top: solid 1px #aaa;
874 border-bottom: solid 1px #aaa; 841 border-bottom: solid 1px #aaa
875} 842}
876 843
877div#cgit table.ssdiff td.head div.head { 844div#cgit table.ssdiff td.head div.head {
878 font-weight: bold; 845 font-weight: 700;
879 color: black; 846 color: #000
880} 847}
881 848
882div#cgit table.ssdiff td.foot { 849div#cgit table.ssdiff td.foot {
883 border-top: solid 1px #aaa; 850 border-top: solid 1px #aaa;
884 border-left: none; 851 border-left: none;
885 border-right: none; 852 border-right: none;
886 border-bottom: none; 853 border-bottom: none
887} 854}
888 855
889div#cgit table.ssdiff td.space { 856div#cgit table.ssdiff td.space {
890 border: none; 857 border: 0
891} 858}
892 859
893div#cgit table.ssdiff td.space div { 860div#cgit table.ssdiff td.space div {
894 min-height: 3em; 861 min-height: 3em
895} 862}
diff --git a/filters/syntax-highlighting.py b/filters/syntax-highlighting.py
index b877644..078dca5 100755
--- a/filters/syntax-highlighting.py
+++ b/filters/syntax-highlighting.py
@@ -34,7 +34,7 @@ sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace
34sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace') 34sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
35data = sys.stdin.read() 35data = sys.stdin.read()
36filename = sys.argv[1] 36filename = sys.argv[1]
37formatter = HtmlFormatter(style='stata-light', nobackground=True) 37formatter = HtmlFormatter(style='igor')
38 38
39try: 39try:
40 lexer = guess_lexer_for_filename(filename, data) 40 lexer = guess_lexer_for_filename(filename, data)
diff --git a/ui-diff.c b/ui-diff.c
index 5ed5990..d014043 100644
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -194,7 +194,7 @@ static void cgit_print_diffstat(const struct object_id *old_oid,
194 int i; 194 int i;
195 195
196 html("<div class='diffstat-header'>"); 196 html("<div class='diffstat-header'>");
197 cgit_diff_link("Diffstat", NULL, NULL, ctx.qry.head, ctx.qry.oid, 197 cgit_diff_link("diffstat", NULL, NULL, ctx.qry.head, ctx.qry.oid,
198 ctx.qry.oid2, NULL); 198 ctx.qry.oid2, NULL);
199 if (prefix) { 199 if (prefix) {
200 html(" (limited to '"); 200 html(" (limited to '");
diff --git a/ui-log.c b/ui-log.c
index 20774bf..22f9ca1 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -459,26 +459,26 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
459 if (commit_graph) 459 if (commit_graph)
460 html("<th></th>"); 460 html("<th></th>");
461 else 461 else
462 html("<th class='left'>Age</th>"); 462 html("<th class='left'>age</th>");
463 html("<th class='left'>Commit message"); 463 html("<th class='left'>commit message");
464 if (pager) { 464 if (pager) {
465 html(" ("); 465 html(" (");
466 cgit_log_link(ctx.qry.showmsg ? "Collapse" : "Expand", NULL, 466 cgit_log_link(ctx.qry.showmsg ? "collapse" : "expand", NULL,
467 NULL, ctx.qry.head, ctx.qry.oid, 467 NULL, ctx.qry.head, ctx.qry.oid,
468 ctx.qry.vpath, ctx.qry.ofs, ctx.qry.grep, 468 ctx.qry.vpath, ctx.qry.ofs, ctx.qry.grep,
469 ctx.qry.search, ctx.qry.showmsg ? 0 : 1, 469 ctx.qry.search, ctx.qry.showmsg ? 0 : 1,
470 ctx.qry.follow); 470 ctx.qry.follow);
471 html(")"); 471 html(")");
472 } 472 }
473 html("</th><th class='left'>Author</th>"); 473 html("</th><th class='left'>author</th>");
474 if (rev.graph) 474 if (rev.graph)
475 html("<th class='left'>Age</th>"); 475 html("<th class='left'>age</th>");
476 if (ctx.repo->enable_log_filecount) { 476 if (ctx.repo->enable_log_filecount) {
477 html("<th class='left'>Files</th>"); 477 html("<th class='left'>files</th>");
478 columns++; 478 columns++;
479 } 479 }
480 if (ctx.repo->enable_log_linecount) { 480 if (ctx.repo->enable_log_linecount) {
481 html("<th class='left'>Lines</th>"); 481 html("<th class='left'>lines</th>");
482 columns++; 482 columns++;
483 } 483 }
484 html("</tr>\n"); 484 html("</tr>\n");
diff --git a/ui-refs.c b/ui-refs.c
index 456f610..ced72ac 100644
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -84,10 +84,10 @@ static int print_branch(struct refinfo *ref)
84 84
85static void print_tag_header(void) 85static void print_tag_header(void)
86{ 86{
87 html("<tr class='nohover'><th class='left'>Tag</th>" 87 html("<tr class='nohover'><th class='left'>tag</th>"
88 "<th class='left'>Download</th>" 88 "<th class='left'>download</th>"
89 "<th class='left'>Author</th>" 89 "<th class='left'>author</th>"
90 "<th class='left' colspan='2'>Age</th></tr>\n"); 90 "<th class='left' colspan='2'>age</th></tr>\n");
91} 91}
92 92
93static int print_tag(struct refinfo *ref) 93static int print_tag(struct refinfo *ref)
@@ -148,10 +148,10 @@ void cgit_print_branches(int maxcount)
148 struct reflist list; 148 struct reflist list;
149 int i; 149 int i;
150 150
151 html("<tr class='nohover'><th class='left'>Branch</th>" 151 html("<tr class='nohover'><th class='left'>branch</th>"
152 "<th class='left'>Commit message</th>" 152 "<th class='left'>commit message</th>"
153 "<th class='left'>Author</th>" 153 "<th class='left'>author</th>"
154 "<th class='left' colspan='2'>Age</th></tr>\n"); 154 "<th class='left' colspan='2'>age</th></tr>\n");
155 155
156 list.refs = NULL; 156 list.refs = NULL;
157 list.alloc = list.count = 0; 157 list.alloc = list.count = 0;
diff --git a/ui-repolist.c b/ui-repolist.c
index 529a203..9a9c1a2 100644
--- a/ui-repolist.c
+++ b/ui-repolist.c
@@ -143,13 +143,13 @@ static void print_sort_header(const char *title, const char *sort)
143static void print_header(void) 143static void print_header(void)
144{ 144{
145 html("<tr class='nohover'>"); 145 html("<tr class='nohover'>");
146 print_sort_header("Name", "name"); 146 print_sort_header("name", "name");
147 print_sort_header("Description", "desc"); 147 print_sort_header("description", "desc");
148 if (ctx.cfg.enable_index_owner) 148 if (ctx.cfg.enable_index_owner)
149 print_sort_header("Owner", "owner"); 149 print_sort_header("owner", "owner");
150 print_sort_header("Idle", "idle"); 150 print_sort_header("idle", "idle");
151 if (ctx.cfg.enable_index_links) 151 if (ctx.cfg.enable_index_links)
152 html("<th class='left'>Links</th>"); 152 html("<th class='left'>links</th>");
153 html("</tr>\n"); 153 html("</tr>\n");
154} 154}
155 155
diff --git a/ui-shared.c b/ui-shared.c
index acd8ab5..a7e40c3 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -838,7 +838,7 @@ void cgit_print_docend(void)
838 htmlf("<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit %s</a> " 838 htmlf("<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit %s</a> "
839 "(<a href='https://git-scm.com/'>git %s</a>) at ", cgit_version, git_version_string); 839 "(<a href='https://git-scm.com/'>git %s</a>) at ", cgit_version, git_version_string);
840 html_txt(show_date(time(NULL), 0, cgit_date_mode(DATE_ISO8601))); 840 html_txt(show_date(time(NULL), 0, cgit_date_mode(DATE_ISO8601)));
841 html("</div>\n"); 841 html(" with beautiful colours of <a href='https://rosepinetheme.com/'>Rosé Pine</a></div>\n");
842 } 842 }
843 html("</div> <!-- id=cgit -->\n"); 843 html("</div> <!-- id=cgit -->\n");
844 html("</body>\n</html>\n"); 844 html("</body>\n</html>\n");
diff --git a/ui-stats.c b/ui-stats.c
index 09b3625..8b7e70c 100644
--- a/ui-stats.c
+++ b/ui-stats.c
@@ -309,13 +309,13 @@ static void print_authors(struct string_list *authors, int top,
309 for (i = 1; i < period->count; i++) 309 for (i = 1; i < period->count; i++)
310 period->dec(&tm); 310 period->dec(&tm);
311 311
312 html("<table class='stats'><tr><th>Author</th>"); 312 html("<table class='stats'><tr><th>author</th>");
313 for (j = 0; j < period->count; j++) { 313 for (j = 0; j < period->count; j++) {
314 tmp = period->pretty(&tm); 314 tmp = period->pretty(&tm);
315 htmlf("<th>%s</th>", tmp); 315 htmlf("<th>%s</th>", tmp);
316 period->inc(&tm); 316 period->inc(&tm);
317 } 317 }
318 html("<th>Total</th></tr>\n"); 318 html("<th>total</th></tr>\n");
319 319
320 if (top <= 0 || top > authors->nr) 320 if (top <= 0 || top > authors->nr)
321 top = authors->nr; 321 top = authors->nr;
@@ -348,7 +348,7 @@ static void print_authors(struct string_list *authors, int top,
348 print_combined_authorrow(authors, top, authors->nr - 1, 348 print_combined_authorrow(authors, top, authors->nr - 1,
349 "Others (%ld)", "left", "", "sum", period); 349 "Others (%ld)", "left", "", "sum", period);
350 350
351 print_combined_authorrow(authors, 0, authors->nr - 1, "Total", 351 print_combined_authorrow(authors, 0, authors->nr - 1, "total",
352 "total", "sum", "sum", period); 352 "total", "sum", "sum", period);
353 html("</table>"); 353 html("</table>");
354} 354}
@@ -393,14 +393,14 @@ void cgit_show_stats(void)
393 cgit_add_hidden_formfields(1, 0, "stats"); 393 cgit_add_hidden_formfields(1, 0, "stats");
394 html("<table><tr><td colspan='2'/></tr>"); 394 html("<table><tr><td colspan='2'/></tr>");
395 if (ctx.repo->max_stats > 1) { 395 if (ctx.repo->max_stats > 1) {
396 html("<tr><td class='label'>Period:</td>"); 396 html("<tr><td class='label'>period:</td>");
397 html("<td class='ctrl'><select name='period' onchange='this.form.submit();'>"); 397 html("<td class='ctrl'><select name='period' onchange='this.form.submit();'>");
398 for (i = 0; i < ctx.repo->max_stats; i++) 398 for (i = 0; i < ctx.repo->max_stats; i++)
399 html_option(fmt("%c", periods[i].code), 399 html_option(fmt("%c", periods[i].code),
400 periods[i].name, fmt("%c", period->code)); 400 periods[i].name, fmt("%c", period->code));
401 html("</select></td></tr>"); 401 html("</select></td></tr>");
402 } 402 }
403 html("<tr><td class='label'>Authors:</td>"); 403 html("<tr><td class='label'>authors:</td>");
404 html("<td class='ctrl'><select name='ofs' onchange='this.form.submit();'>"); 404 html("<td class='ctrl'><select name='ofs' onchange='this.form.submit();'>");
405 html_intoption(10, "10", top); 405 html_intoption(10, "10", top);
406 html_intoption(25, "25", top); 406 html_intoption(25, "25", top);
@@ -413,7 +413,7 @@ void cgit_show_stats(void)
413 html("</td></tr></table>"); 413 html("</td></tr></table>");
414 html("</form>"); 414 html("</form>");
415 html("</div>"); 415 html("</div>");
416 htmlf("<h2>Commits per author per %s", period->name); 416 htmlf("<h2>commits per author per %s", period->name);
417 if (ctx.qry.path) { 417 if (ctx.qry.path) {
418 html(" (path '"); 418 html(" (path '");
419 html_txt(ctx.qry.path); 419 html_txt(ctx.qry.path);
diff --git a/ui-summary.c b/ui-summary.c
index 947812a..1b65462 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -28,16 +28,20 @@ static void print_url(const char *url)
28 28
29 if (urls++ == 0) { 29 if (urls++ == 0) {
30 htmlf("<tr class='nohover'><td colspan='%d'>&nbsp;</td></tr>", columns); 30 htmlf("<tr class='nohover'><td colspan='%d'>&nbsp;</td></tr>", columns);
31 htmlf("<tr class='nohover'><th class='left' colspan='%d'>Clone</th></tr>\n", columns); 31 htmlf("<tr class='nohover'><th class='left' colspan='%d'>clone</th></tr>\n", columns);
32 } 32 }
33 33
34 htmlf("<tr><td colspan='%d'><a rel='vcs-git' href='", columns); 34 html("<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js'></script>");
35 htmlf("<tr><td colspan='%d'><a class='copy' rel='vcs-git' href='", columns);
35 html_url_path(url); 36 html_url_path(url);
36 html("' title='"); 37 html("' title='");
37 html_attr(ctx.repo->name); 38 html_attr(ctx.repo->name);
38 html(" Git repository'>"); 39 html(" git repository'>");
39 html_txt(url); 40 html_txt(url);
40 html("</a></td></tr>\n"); 41 html("</a><span class='hint'> (click to copy)</span></td></tr>\n");
42 html("<script>\n");
43 html("$(document).ready(function() { $('.copy').click(function(e) { var tmp = $('<input>'); $('body').append(tmp); tmp.val($(this).text()).select(); document.execCommand('copy'); tmp.remove(); e.preventDefault(); }); });\n");
44 html("</script>");
41} 45}
42 46
43void cgit_print_summary(void) 47void cgit_print_summary(void)
diff --git a/ui-tree.c b/ui-tree.c
index b61f6f5..fbaaa32 100644
--- a/ui-tree.c
+++ b/ui-tree.c
@@ -213,7 +213,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base,
213 if (!S_ISGITLINK(mode)) { 213 if (!S_ISGITLINK(mode)) {
214 type = oid_object_info(the_repository, oid, &size); 214 type = oid_object_info(the_repository, oid, &size);
215 if (type == OBJ_BAD) { 215 if (type == OBJ_BAD) {
216 htmlf("<tr><td colspan='3'>Bad object: %s %s</td></tr>", 216 htmlf("<tr><td colspan='3'>bad object: %s %s</td></tr>",
217 name, 217 name,
218 oid_to_hex(oid)); 218 oid_to_hex(oid));
219 free(name); 219 free(name);
@@ -264,9 +264,9 @@ static void ls_head(void)
264 cgit_print_layout_start(); 264 cgit_print_layout_start();
265 html("<table summary='tree listing' class='list'>\n"); 265 html("<table summary='tree listing' class='list'>\n");
266 html("<tr class='nohover'>"); 266 html("<tr class='nohover'>");
267 html("<th class='left'>Mode</th>"); 267 html("<th class='left'>mode</th>");
268 html("<th class='left'>Name</th>"); 268 html("<th class='left'>name</th>");
269 html("<th class='right'>Size</th>"); 269 html("<th class='right'>size</th>");
270 html("<th/>"); 270 html("<th/>");
271 html("</tr>\n"); 271 html("</tr>\n");
272} 272}