Collapse redundant timestamps in run detail header
Complete/failed runs now show \"queued <relative> · ran <duration>\"
instead of three near-identical relative timestamps. In-flight runs
show queued + started; pending runs show queued only. ISO timestamps
stay accessible via title hover.
Assisted-by: GLM-5.1 via pi
diff --git a/AGENTS.md b/AGENTS.md
index ddb0419..aadb93d 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -4,6 +4,8 @@
The backlog lives in the `ranger` CLI, not GitHub Issues. Use `ranger` to read and update tasks.
+The backlog shifts between sessions and even within a session — tasks get reordered, retitled, moved between states, closed, or added by the user without notice. Before acting on a task you remember (or one referenced earlier in the conversation), re-run `ranger task show <key>` and confirm state, ordering, and description against ground truth. Do not trust earlier `ranger task list` output to still be accurate; refetch when placement matters (e.g. moving to top/back of ready).
+
## Before committing
Always run `just all` and verify everything passes before committing. No exceptions — this is not optional. If you commit without running it, you will break the build.
diff --git a/src/quire/web/templates.rs b/src/quire/web/templates.rs
index 0fa797c..2e1cf62 100644
--- a/src/quire/web/templates.rs
+++ b/src/quire/web/templates.rs
@@ -164,6 +164,10 @@ impl DetailRun {
self.finished_at_ms.is_some()
}
+ pub fn is_terminal(&self) -> bool {
+ self.state == "complete" || self.state == "failed"
+ }
+
pub fn duration_display(&self) -> String {
format::format_duration(self.started_at_ms, self.finished_at_ms)
}
diff --git a/templates/ci/run_detail.html b/templates/ci/run_detail.html
index 9c5f16a..819e1c4 100644
--- a/templates/ci/run_detail.html
+++ b/templates/ci/run_detail.html
@@ -14,10 +14,15 @@
· <span class="ci-state-label {{ run.state_class() }}"><span class="ci-status-dot {{ run.state_class() }}"></span> {{ run.state }}</span>
</div>
<div class="ci-meta-secondary">
+ {% if run.is_terminal() %}
queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
- · started {% if run.has_started() %}<time title="{{ run.started_iso() }}">{{ run.started_display() }}</time>{% else %}{{ run.started_display() }}{% endif %}
- · finished {% if run.has_finished() %}<time title="{{ run.finished_iso() }}">{{ run.finished_display() }}</time>{% else %}{{ run.finished_display() }}{% endif %}
- · {{ run.duration_display() }}
+ · ran <span title="started {{ run.started_iso() }}\nfinished {{ run.finished_iso() }}">{{ run.duration_display() }}</span>
+ {% elif run.has_started() %}
+ queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
+ · started <time title="{{ run.started_iso() }}">{{ run.started_display() }}</time>
+ {% else %}
+ queued <time title="{{ run.queued_iso() }}">{{ run.queued_relative() }}</time>
+ {% endif %}
</div>
</div>