A drop's page is centred and its header clearer (closes #283) 8bf3010760d7
The page ran the full width with everything against the left edge. It is centred like other pages: title, description and details on the left, EDIT and DELETE together on the right (DELETE only for whoever may delete it), the clone line with a copy button under them, and a Markdown file filling its box.
- Author
- Andy McCall @andymccall <[email protected]>
- via
- agent
agent:claude@andymccall <[email protected]> · keyless, under your grant for changes,refs,seal · key 70449aa2a2e5
- When
- · 2026-10-20 19:15 UTC
- Signature
- ◈ sealed by agent:claude@andymccall
- Hash
8bf3010760d73eb57dfeb99535f4eb3677f8d40a284e795c7f69a24e965b9b70- Depends on
- 166f6e9bf4f1 858eca0d03c4 a7e6e8e6094c b5668108487f d23464c0ac60
- Depended on by
- 84e3c09656b2 8ac2aa4ca6d1 ca0c443c30cf c419455a82dd adbc38e7ea09 367f34b8e590
- 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
- 5 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 drop's page is centred and its header clearer (#283):** the page ran the full width with everything against the left edge; it is now centred like other pages, with the title, description and details on the left, EDIT and DELETE together on the right (DELETE only for whoever may delete it), the clone line with a copy button under them, and a Markdown file filling its box. |
|
| 7 | 8 | - **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. |
|
| 8 | 9 | - **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. |
|
| 9 | 10 | ||
| … | 265 unchanged lines |
modified templates/drop.html +8 −7
| … | 2 unchanged lines |
||
| 3 | 3 | {% block title %}{{ title }} · {{ repo.owner }}'s drop{% endblock %} |
|
| 4 | 4 | {% block bodyattrs %} data-repo="{{ repo.url }}"{% endblock %} |
|
| 5 | 5 | {% block tabs %}{% call m::tabs(repo, "code") %}{% endblock %} |
|
| 6 | - | {% block mainclass %} class="wide"{% endblock %} |
|
| 7 | 6 | {% block content %} |
|
| 8 | - | <div class="head"><h1>{{ title }}{% if !at_default %} <small>at {{ target }}</small>{% endif %}</h1> |
|
| 9 | - | {% if can_edit || can_delete %}<div class="choice">{% if can_edit %}<a class="go" href="{{ repo.url }}/edit">EDIT</a>{% endif %} |
|
| 10 | - | <form class="inline" method="post" action="{{ repo.url }}/delete" data-confirm="Delete this drop and its history? Its address stops working."><input type="hidden" name="_csrf" value="{{ shell.csrf }}"><button type="submit" class="danger-btn">DELETE</button></form></div>{% endif %} |
|
| 7 | + | <div class="drop-head"> |
|
| 8 | + | <div class="drop-id"> |
|
| 9 | + | <h1>{{ title }}{% if !at_default %} <small>at {{ target }}</small>{% endif %}</h1> |
|
| 10 | + | {% if !description.is_empty() %}<p class="drop-desc">{{ description }}</p>{% endif %} |
|
| 11 | + | <p class="small mute">A drop by <a href="/{{ repo.owner }}">{{ repo.owner }}</a> · {{ files.len() }} file{% if files.len() != 1 %}s{% endif %} · created <time title="{{ created_ms|when_i }}">{{ created_ms|ago_i }}</time> · updated <time title="{{ updated_ms|when_i }}">{{ updated_ms|ago_i }}</time> · <a href="{{ repo.url }}/changes/{{ repo.default_bookmark }}">history</a></p> |
|
| 12 | + | </div> |
|
| 13 | + | {% if can_edit || can_delete %}<div class="drop-actions">{% if can_edit %}<a class="go" href="{{ repo.url }}/edit">EDIT</a>{% endif %}{% if can_delete %}<form class="inline" method="post" action="{{ repo.url }}/delete" data-confirm="Delete this drop and its history? Its address stops working."><input type="hidden" name="_csrf" value="{{ shell.csrf }}"><button type="submit" class="danger-btn">DELETE</button></form>{% endif %}</div>{% endif %} |
|
| 11 | 14 | </div> |
|
| 12 | - | {% if !description.is_empty() %}<p>{{ description }}</p>{% endif %} |
|
| 13 | - | <p class="small mute">A drop by <a href="/{{ repo.owner }}">{{ repo.owner }}</a> · {{ files.len() }} file{% if files.len() != 1 %}s{% endif %} · created <time title="{{ created_ms|when_i }}">{{ created_ms|ago_i }}</time> · updated <time title="{{ updated_ms|when_i }}">{{ updated_ms|ago_i }}</time> · <a href="{{ repo.url }}/changes/{{ repo.default_bookmark }}">history</a></p> |
|
| 14 | 15 | {% if secret %}<div class="strip">Secret: this drop is listed nowhere, but anyone with its address can read it.</div>{% endif %} |
|
| 15 | - | <p class="small"><label for="clone">Clone</label> <input type="text" id="clone" class="code" readonly value="oxy clone {{ clone_url }}" data-select size="60"></p> |
|
| 16 | + | <div class="drop-clone"><label for="clone">Clone</label><input type="text" id="clone" class="code" readonly value="oxy clone {{ clone_url }}" data-select><button type="button" class="small" data-copy="oxy clone {{ clone_url }}">copy</button></div> |
|
| 16 | 17 | {% if files.is_empty() %}<p class="empty">No files.</p>{% endif %} |
|
| 17 | 18 | {% for f in files %} |
|
| 18 | 19 | <section class="filebox drop-filebox" id="{{ f.anchor }}"> |
|
| … | 18 unchanged lines |
modified templates/style.css +15 −0
| … | 1394 unchanged lines |
||
| 1395 | 1395 | ||
| 1396 | 1396 | /* Drops (oxygenhub#279). */ |
|
| 1397 | 1397 | .drop-filebox { margin-bottom: 16px; } |
|
| 1398 | + | /* A drop's page (#283): what it is on the left, what you can do on the |
|
| 1399 | + | right, the clone line under them; a Markdown file fills its box. */ |
|
| 1400 | + | .drop-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px 24px; flex-wrap: wrap; margin: 6px 0 14px; padding-bottom: 12px; border-bottom: 2px solid var(--band); border-image: linear-gradient(90deg, var(--acc), var(--acc-2)) 1; } |
|
| 1401 | + | .drop-id { flex: 1 1 320px; min-width: 0; } |
|
| 1402 | + | .drop-id h1 { font-size: 30px; font-weight: 300; color: var(--ink); margin: 0 0 6px; overflow-wrap: anywhere; } |
|
| 1403 | + | .drop-id h1 small { font-size: 13px; color: var(--acc); font-weight: 400; } |
|
| 1404 | + | .drop-id .drop-desc { margin: 0 0 6px; font-size: 15px; } |
|
| 1405 | + | .drop-id p.small { margin: 0; } |
|
| 1406 | + | .drop-actions { display: flex; gap: 8px; align-items: stretch; } |
|
| 1407 | + | .drop-actions form { margin: 0; display: flex; } |
|
| 1408 | + | .drop-actions a.go { display: inline-flex; align-items: center; } |
|
| 1409 | + | .drop-clone { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; font-size: 13px; } |
|
| 1410 | + | .drop-clone label { color: var(--mute); } |
|
| 1411 | + | .drop-clone input { flex: 0 1 640px; min-width: 0; } |
|
| 1412 | + | .drop-filebox article.doc { max-width: none; margin: 0; border: 0; } |
|
| 1398 | 1413 | .drop-file { border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; margin: 0 0 12px; } |
|
| 1399 | 1414 | .drop-file-actions { display: flex; align-items: flex-end; justify-content: flex-end; } |