1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
{% extends "_base.html" %}
{% block title %}{{ repo }}{% endblock %}
{% block nav %}
{% include "_nav.html" %}
{% endblock %}
{% block fullpage %}
{# ── Section nav + position token ───────────────────────────── #}
<nav class="repo-section-nav">
{% include "_repo_section_nav.html" %}
{% if let Some(h) = head %}
<span class="repo-position">
<span class="bookmark-glyph">※</span>
<span class="bookmark-name">{{ h.bookmark }}</span>
<span class="repo-meta-sep">→</span>
<a class="change-id" href="/{{ repo }}/commits/{{ h.id.sha }}" title="commit {{ h.id.sha_short() }}">
<span class="change-head">{{ h.id.head() }}</span><span class="change-tail">{{ h.id.tail() }}</span>
</a>
<span class="commit-id-secondary">{{ h.id.sha_short() }}</span>
<span class="repo-meta-dot">·</span>
<span class="repo-position-age">{{ h.age }}</span>
{% if !recent_runs.is_empty() %}
<span class="repo-meta-dot">·</span>
<span class="ci-inline">
<span class="ci-status-dot {{ self.latest_ci_state_class() }}"></span>
<span>ci {{ self.latest_ci_state() }}</span>
</span>
{% endif %}
</span>
{% endif %}
</nav>
{# ── Two-column body ─────────────────────────────────────────── #}
<div class="repo-body">
{# Left column: README #}
<article class="repo-readme">
{% if let Some(html) = readme_html %}
<div class="readme-content">{{ html|safe }}</div>
{% else %}
<p class="readme-empty">no readme</p>
{% endif %}
</article>
{# Right column: sidebar stack #}
<aside class="repo-sidebar">
<div class="side-block">
<div class="side-block-title">Clone</div>
<div class="clone-url">https://quire.local/{{ repo }}.git</div>
</div>
{% if !recent_runs.is_empty() %}
<div class="side-block">
<div class="side-block-title">CI</div>
<div class="ci-mini-list">
{% for run in recent_runs %}
<div class="ci-mini-row">
<span class="ci-status-dot {{ run.state_class() }}"></span>
<a class="ci-mini-link" href="/{{ repo }}/ci/{{ run.id }}">{{ run.sha_short() }}</a>
<span class="ci-mini-branch">{{ run.branch_short() }}</span>
<span class="ci-mini-age"><time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time></span>
<span class="ci-mini-dur">{{ run.duration_display() }}</span>
</div>
{% endfor %}
</div>
<a class="side-more" href="/{{ repo }}/ci">all runs →</a>
</div>
{% endif %}
{% if !recent_changes.is_empty() %}
<div class="side-block side-block--last">
<div class="side-block-title">Recent changes</div>
<div class="change-mini-list">
{% for ch in recent_changes %}
<div class="change-mini-row">
<div class="change-mini-header">
<a class="change-id" href="{{ ch.commit_url }}" title="commit {{ ch.id.sha_full() }}">
<span class="change-head">{{ ch.id.head() }}</span><span class="change-tail">{{ ch.id.tail() }}</span>
</a>
<span class="change-mini-age">{{ ch.age }}</span>
</div>
<div class="change-mini-desc">
<a class="change-mini-desc-link" href="{{ ch.commit_url }}">
{% if ch.description.is_empty() %}<span class="no-desc">(no description set)</span>{% else %}{{ ch.description }}{% endif %}
</a>
</div>
</div>
{% endfor %}
</div>
<a class="side-more" href="/{{ repo }}/log">full log →</a>
</div>
{% endif %}
</aside>
</div>
{% endblock %}