OXYGENHUB

A started job no longer says it is waiting (closes #282) 858eca0d03c4

A run page opened while a job was queued kept "Waiting for a runner" under
it after it started: the live update changed its status and streamed its
log but never removed the note. It now goes once the job leaves the queue.
Author
Andy McCall @andymccall <[email protected]>
via
agent agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key f31c98beb774
When
· 2026-10-20 19:03 UTC
Signature
◈ sealed by agent:claude@andymccall
Hash
858eca0d03c490d07d01bfa9748d5cc5742c749d31ecbbf882ece33f2ae0fcc5
Depends on
42fa95540468 4d2e44d79b03 501d8b268dd4 787632570bf9 a7e6e8e6094c b5668108487f d23464c0ac60
Depended on by
42cd46c9b09e 5588bb3631d2 8bf3010760d7
In bookmarks
api-unknown-fields diffusion-pin-bookmark draft-ready main proposal-list-fast
In tags
v0.7.0 v0.8.0 v0.9.0 v0.9.1 v0.9.11 v0.9.15 v0.9.16 v0.9.19 v0.9.2 v0.9.20 v0.9.21 v0.9.22 v0.9.23 v0.9.24 v0.9.3 v0.9.4 v0.9.5 v0.9.6 v0.9.7 v0.9.8 v0.9.9
Edits
4 atoms, 0 tree operations, 3 files

Browse the tree at this change

modified CHANGELOG.md +1 −0
…
3 unchanged lines
4 4
5 5
## Unreleased
6 6
7 +
- **A started job no longer says it is waiting (#282):** a run page opened while a job was queued kept "Waiting for a runner and for build." under it after it started, as the live update changed its status and streamed its log; the note now goes once the job leaves the queue.
7 8
- **Linking the identity that delegates to the hub (#281):** the notice on pages that commit for you (New drop, web edits) read as if the hub's key file was what to link under Settings › Keys, which then asked for a signature nobody but the hub can make. It now says to export your own identity again after `oxy identity delegate add` and upload that; uploading the hub's own key is refused saying so, uploading an already linked key says to export again after delegating, and a challenge signed by another key than the one uploaded names both keys. The New drop form runs the page's width, and CREATE DROP and CANCEL are the same height in one row.
8 9
9 10
## 0.6.1 (2026-10-20)
…
264 unchanged lines
modified assets/hub.js +2 −0
…
400 unchanged lines
401 401
            g.className = "flow-glyph " + cls; g.textContent = j.glyph;
402 402
            d.querySelector("summary [data-meta]").textContent = j.status + (j.exit_code !== null ? " · exit " + j.exit_code : "") + " · " + j.duration;
403 403
            if (j.status === "running" || j.status === "failed") d.open = true;
404 +
            // Once it has left the queue, it no longer waits (#282).
405 +
            if (j.status !== "queued") [].forEach.call(d.querySelectorAll("[data-queued-note]"), function (p) { p.remove(); });
404 406
            var log = d.querySelector("[data-log]");
405 407
            var stick = log.scrollTop + log.clientHeight >= log.scrollHeight - 4;
406 408
            j.lines.forEach(function (l) {
…
554 unchanged lines
modified templates/flow_run.html +1 −1
…
60 unchanged lines
61 61
  <pre class="flow-log" data-log data-seq="{{ l.last_seq }}">{% for line in l.lines %}<span class="ln s-{{ line.stream }}"><span class="t">{{ line.t / 1000 }}.{{ "{:01}"|format(line.t % 1000 / 100) }}s</span>{{ line.text }}</span>
62 62
{% endfor %}</pre>
63 63
  {% if !l.j.placed.is_empty() %}<p class="small mute pad">Ran on {{ l.j.runner }}: {{ l.j.placed }}.</p>{% endif %}
64 -
  {% if l.j.status == "queued" && !l.j.waiting.is_empty() %}<p class="small warn pad" data-waiting>Waiting: {{ l.j.waiting }}.</p>{% else if l.lines.is_empty() && l.j.status == "queued" %}<p class="small mute pad">Waiting for a runner{% if !l.j.depends_on().is_empty() %} and for {{ l.j.depends_on().join(", ") }}{% endif %}.</p>{% endif %}
64 +
  {% if l.j.status == "queued" && !l.j.waiting.is_empty() %}<p class="small warn pad" data-waiting data-queued-note>Waiting: {{ l.j.waiting }}.</p>{% else if l.lines.is_empty() && l.j.status == "queued" %}<p class="small mute pad" data-queued-note>Waiting for a runner{% if !l.j.depends_on().is_empty() %} and for {{ l.j.depends_on().join(", ") }}{% endif %}.</p>{% endif %}
65 65
  {% if l.lines.is_empty() && l.j.status == "skipped" %}<p class="small mute pad">Skipped: a job it depends on did not pass.</p>{% endif %}
66 66
</details>
67 67
{% endfor %}
…
2 unchanged lines