A vibe coded tangled fork which supports pijul.
at 5bf28708dcf8972c724fb0c33fcab1281cbc3f27 87 lines 3.8 kB view raw
1{{ define "title" }} change {{ .Change.Hash }} &middot; {{ .RepoInfo.FullName }} {{ end }} 2 3{{ define "repoContent" }} 4{{ $repo := .RepoInfo.FullName }} 5{{ $change := .Change }} 6 7<section class="dark:text-white"> 8 <h1 class="mt-2">{{ $change.Message }}</h1> 9 10 <div class="flex items-center gap-3 py-3"> 11 {{ if $change.Authors }} 12 {{ $author := index $change.Authors 0 }} 13 {{ placeholderAvatar "md" }} 14 <div class="flex flex-col"> 15 <div> 16 {{ range $idx, $a := $change.Authors }} 17 {{ if gt $idx 0 }}, {{ end }} 18 {{ $a.Name }}{{ if $a.Email }} &lt;{{ $a.Email }}&gt;{{ end }} 19 {{ end }} 20 </div> 21 {{ if $change.HasTimestamp }} 22 <div class="text-sm text-gray-500 dark:text-gray-400"> 23 {{ template "repo/fragments/time" $change.Timestamp }} 24 </div> 25 {{ end }} 26 <div class="font-mono text-sm text-gray-500 dark:text-gray-400 break-all">{{ $change.Hash }}</div> 27 </div> 28 {{ else }} 29 {{ placeholderAvatar "md" }} 30 <div class="text-gray-500">unknown</div> 31 {{ end }} 32 </div> 33 34 <h2 class="mt-6 text-sm uppercase text-gray-600 dark:text-gray-400">Dependencies</h2> 35 <ul class="mt-2"> 36 {{ if $change.Dependencies }} 37 {{ range $change.Dependencies }} 38 <li class="font-mono text-sm break-all"> 39 <a class="no-underline hover:underline" href="/{{ $repo }}/change/{{ . }}">{{ . }}</a> 40 </li> 41 {{ end }} 42 {{ else }} 43 <li class="text-sm text-gray-500">none</li> 44 {{ end }} 45 </ul> 46 47 <h2 class="mt-8 text-sm uppercase text-gray-600 dark:text-gray-400">Change contents</h2> 48 {{ if $change.HasDiff }} 49 {{ if $change.DiffLines }} 50 <div class="overflow-x-auto text-sm bg-gray-50 dark:bg-gray-900 p-3 rounded mt-2 font-mono"> 51 {{ $lineNrStyle := "min-w-[3.5rem] flex-shrink-0 select-none text-right bg-white dark:bg-gray-800" }} 52 {{ $lineNrSepStyle1 := "" }} 53 {{ $lineNrSepStyle2 := "pr-2 border-r border-gray-200 dark:border-gray-700" }} 54 {{ $containerStyle := "inline-flex w-full items-center" }} 55 {{ range $change.DiffLines }} 56 {{ if eq .Kind "section" }} 57 <div class="whitespace-pre text-xs uppercase tracking-wide text-gray-600 dark:text-gray-300 mt-3">{{ .Text }}</div> 58 {{ else if eq .Kind "meta" }} 59 <div class="whitespace-pre text-gray-500 dark:text-gray-400">{{ .Text }}</div> 60 {{ else }} 61 {{ $lineClass := "bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400" }} 62 {{ if eq .Kind "add" }} 63 {{ $lineClass = "bg-green-100 dark:bg-green-800/30 text-green-700 dark:text-green-400" }} 64 {{ else if eq .Kind "del" }} 65 {{ $lineClass = "bg-red-100 dark:bg-red-800/30 text-red-700 dark:text-red-400" }} 66 {{ end }} 67 <div class="{{ $containerStyle }} {{ $lineClass }}"> 68 <div class="{{ $lineNrStyle }} {{ $lineNrSepStyle1 }}"> 69 {{ if .HasOld }}{{ .OldLine }}{{ else }}<span aria-hidden="true" class="invisible">0</span>{{ end }} 70 </div> 71 <div class="{{ $lineNrStyle }} {{ $lineNrSepStyle2 }}"> 72 {{ if .HasNew }}{{ .NewLine }}{{ else }}<span aria-hidden="true" class="invisible">0</span>{{ end }} 73 </div> 74 <div class="w-5 flex-shrink-0 select-none text-center">{{ .Op }}</div> 75 <div class="px-2 whitespace-pre">{{ .Body }}</div> 76 </div> 77 {{ end }} 78 {{ end }} 79 </div> 80 {{ else }} 81 <pre class="overflow-x-auto text-sm bg-gray-50 dark:bg-gray-900 p-3 rounded mt-2 font-mono whitespace-pre">{{ $change.Diff }}</pre> 82 {{ end }} 83 {{ else }} 84 <div class="text-sm text-gray-500 mt-2">no diff available</div> 85 {{ end }} 86</section> 87{{ end }}